ВНУТРЕННЕЕ ПРЕДСКАЗАНИЕ ИЗ ПРЕДСКАЗЫВАЮЩЕГО БЛОКА
INTERNAL PREDICTION FROM PREDICTIVE BLOCK

[0001] Эта заявка испрашивает приоритет каждой из следующих предварительных заявок на патент США, все содержимое каждой из которых включено в настоящее описание по ссылке:
предварительной заявки на патент США № 61/838,209, поданной 21 июня 2013;
предварительной заявки на патент США № 61/847,549, поданной 17 июля 2013;
предварительной заявки на патент США № 61/866,965, поданной 16 августа 2013;
предварительной заявки на патент США № 61/870,050, поданной 26 августа 2013;
предварительной заявки на патент США № 61/883,612, поданной 27 сентября 2013;
предварительной заявки на патент США № 61/887,115, поданной 4 октября 2013;
предварительной заявки на патент США № 61/893,539, поданной 21 октября 2013;
предварительной заявки на патент США № 61/896,013, поданной 25 октября 2013; и
предварительной заявки на патент США № 61/923,698, поданной 5 января 2014.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее раскрытие относится к кодированию видео и, более конкретно, к предсказанию блоков видео на основании других блоков видео.
УРОВЕНЬ ТЕХНИКИ
[0003] Цифровые возможности видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDAs), ноутбуки или настольные компьютеры, планшетные компьютеры, устройства чтения электронных книг, цифровые камеры, цифровые устройства записи, цифровые медиаплееры, устройства видеоигр, пульты видеоигр, сотовые или спутниковые радио-телефоны, так называемые “смартфоны,” видео устройства организации телеконференций, устройства потоковой передачи видео и т.п.. Цифровые устройства видео реализуют методы сжатия видео, например, как те, что описаны в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, Advanced Video Coding (AVC), стандарт High Efficient Video Coding (HEVC), развиваемый в настоящее время и расширениях таких стандартов. Видео устройства могут передавать, принимать, кодировать, декодировать, и/или хранить цифровую информацию видео более эффективно, реализовывая такие методы сжатия видео.
[0004] Способы сжатия видео выполняют пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую видео последовательностям. Для основанного на блоках кодирования видео, видео вырезка (то есть, видео кадр или часть видео кадра) может быть разделена на блоки видео, которые могут также упоминаться как блоки дерева, единицы кодирования (CUs) и/или узлы кодирования. Блоки видео во внутренне кодированной (I) вырезке картинки кодируют, используя пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке. Блоки видео во внешне кодированной (P или B) вырезке картинки могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке или временное предсказание относительно опорных выборок в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры.
[0005] Пространственное или временное предсказание приводит к предсказывающему блоку для блока, который должен быть закодирован. Остаточные данные представляют пиксельные разности между первоначальным блоком, который должен быть закодирован, и предсказывающим блоком. Внешне кодированный блок кодируют согласно вектору движения, который указывает на блок опорных выборок, формирующих предсказывающий блок, и остаточные данные указывают различие между закодированным блоком и предсказывающим блоком. Внутренне кодированный блок кодируют согласно режиму внутреннего кодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, приводя к остаточным коэффициентам, которые затем могут быть квантованы. Квантованные коэффициенты, первоначально размещенные в двумерном массиве, могут сканироваться, чтобы сформировать одномерный вектор коэффициентов, и энтропийное кодирование может быть применено, чтобы достигнуть даже большей степени сжатия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В целом, настоящее раскрытие описывает способы для того, чтобы выполнить внутреннее предсказание для кодирования видео. Более подробно, настоящее раскрытие описывает способы для того, чтобы кодировать видео данные, которые включают в себя режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки. Внутреннее предсказание блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки может быть упомянуто здесь как копирование внутри блока (IntraBC) или внутренняя компенсация движения (IntraMC).
[0007] Способы IntraBC или IntraMCа настоящего раскрытия могут включать в себя идентификацию предсказывающего блока данных видео для текущего блока данных видео, при этом предсказывающий блок данных видео является восстановленным блоком данных видео в пределах той же картинки, что и текущий блок данных видео. Предсказывающий блок данных видео может быть из предназначенной области, которая находится в пределах картинки, например, области выше, выше справа, выше слева, и/или слева от текущего блока данных видео. Предсказывающий блок данных видео не ограничен тем, который находится выше или слева от текущего блока видео и, следовательно, вектор, использованный для идентификации предсказывающего блока относительно текущего блока, не является обязательным и одномерным вектором. Вместо этого, чтобы идентифицировать или определить предсказывающий блок данных видео, видео кодировщик может закодировать один или более элементов синтаксиса, которые определяют двумерный вектор, который включает в себя компонент горизонтального смещения и компонент вертикального смещения относительно текущего блока данных видео. Двумерный вектор может упоминаться как вектор блока или вектор движения.
[0008] Способы настоящего раскрытия могут улучшить эффективность и точность предсказания текущих блоков видео на основании ранее кодированных блоков видео на одной и той же картинке, используя IntraBC, которая может упоминаться как IntraMC, рассматривая дополнительные восстановленные блоки данных видео как возможные предсказывающие блоки для текущего блока данных видео, например, посредством не ограничения предсказывающих блоков теми, что находятся выше или слева от текущего блока. В некоторых примерах способы настоящего раскрытия могут улучшить эффективность и точность предсказания текущих блоков видео на основании ранее закодированных блоков видео на одной и той же картинке, используя IntraBC, определяя предназначенную область как включающую в себя восстановленные выборки без внутриконтурного фильтрования, такого как удаление блочности и фильтрование с адаптивным смещением выборок (SAO). В некоторых примерах способы настоящего раскрытия могут улучшить эффективность и точность предсказания текущих блоков видео на основании ранее закодированных блоков видео на одной и той же картинке, используя IntraBC, разрешая видео кодировщику идентифицировать и кодировать предсказывающий двумерный вектор или текущий двумерный вектор, например, вектор блока или вектор движения, текущего блока данных видео.
[0009] В одном примере способ декодирования данных видео, включающий в себя режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, содержит прием, в закодированном потоке битов видео, одного или более элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора, и остаточный блок для текущего блока данных видео, и декодирование одного или более элементов синтаксиса. Способ также содержит определение предсказывающего блока данных видео для текущего блока данных видео на основании декодированных элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора, при этом предсказывающий блок данных видео является восстановленным блоком данных видео в пределах той же картинки, что и текущий блок данных видео, и восстановление текущего блока данных видео на основании предсказывающего блока данных видео и остаточного блока.
[0010] В другом примере раскрыт способ кодирования данных видео, включающих в себя режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, причем способ содержит выбор предсказывающего блока данных видео для текущего блока данных видео из набора ранее закодированных блоков данных видео в пределах той же картинки, что и текущий блок данных видео. Способ также содержит определение двумерного вектора, двумерный вектор имеет компонент горизонтального смещения и компонент вертикального смещения, при этом компонент горизонтального смещения представляет горизонтальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео, и компонент вертикального смещения представляет вертикальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео. Способ также содержит определение остаточного блока на основании текущего блока данных видео и предсказывающего блока данных видео, и кодирование, в закодированном потоке битов видео, одного или более элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора и остаточного блока.
[0011] В другом примере устройство содержит видео декодер, сконфигурированный, чтобы декодировать видео данные, используя режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки. Видео декодер содержит память, конфигурируемую, чтобы сохранить закодированный поток битов видео, который содержит один или более элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора, и остаточный блок для текущего блока данных видео, и один или более процессоров. Один или более процессоров конфигурируются, чтобы декодировать один или более элементов синтаксиса, и определить предсказывающий блок данных видео для текущего блока данных видео на основании декодированных элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора, при этом предсказывающий блок данных видео является восстановленным блоком данных видео в пределах той же картинки, что и текущий блок данных видео. Один или более процессоров далее конфигурируются, чтобы восстановить текущий блок данных видео на основании предсказывающего блока данных видео и остаточного блока.
[0012] В другом примере устройство содержит видео кодер, сконфигурированный, чтобы закодировать видео данные, используя режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки. Видео кодер содержит память, сконфигурированную, чтобы сохранить закодированный поток битов видео, и один или более процессоров. Один или более процессоров конфигурируются, чтобы выбрать предсказывающий блок данных видео для текущего блока данных видео из набора ранее закодированных блоков данных видео в пределах той же картинки, что и текущий блок данных видео. Один или более процессоров далее конфигурируются, чтобы определить двумерный вектор, причем двумерный вектор имеет компонент горизонтального смещения и компонент вертикального смещения, при этом компонент горизонтального смещения представляет горизонтальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео, и компонент вертикального смещения представляет вертикальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео. Один или более процессоров далее конфигурируются, чтобы определить остаточный блок на основании текущего блока данных видео и предсказывающего блока данных видео, и закодировать, в закодированном потоке битов видео, один или более элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора и остаточный блок.
[0013] В другом примере устройство содержит видео кодировщик, сконфигурированный, чтобы закодировать видео данные, используя режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки. Видео кодировщик содержит средство для того, чтобы кодировать поток битов видео, который включает в себя один или более элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора и остаточный блок для текущего блока данных видео, и средство для того, чтобы определить предсказывающий блок данных видео для текущего блока данных видео. Компонент горизонтального смещения двумерного вектора представляет горизонтальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео, и компонент вертикального смещения двумерного вектора представляет вертикальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео. Предсказывающий блок данных видео является восстановленным блоком данных видео в пределах той же картинки, что и текущий блок данных видео, и остаточный блок определяется на основании текущего блока данных видео и предсказывающего блока данных видео.
[0014] В другом примере невременный считываемый компьютером запоминающий носителя имеет сохраненные на нем инструкции для того, чтобы кодировать видео данные, включая режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, которые, когда выполняются, заставляют один или более процессоров кодировать поток битов видео, который включает в себя один или более элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора и остаточный блок для текущего блока данных видео, и определяют предсказывающий блок данных видео для текущего блока данных видео. Компонент горизонтального смещения двумерного вектора представляет горизонтальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео, и компонент вертикального смещения двумерного вектора представляет вертикальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео. Предсказывающий блок данных видео является восстановленным блоком данных видео в пределах той же картинки, что и текущий блок данных видео, и остаточный блок определяется на основании текущего блока данных видео и предсказывающего блока данных видео.
[0015] Подробности одного или более примеров сформулированы в сопровождающих чертежах и описании ниже. Другие признаки, задачи и преимущества будут очевидны из описания и чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0016] ФИГ. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать способы, описанные в этом раскрытии.
[0017] ФИГ. 2 является концептуальной диаграммой, иллюстрирующей примерный предсказывающий блок данных видео в пределах текущей картинки для того, чтобы предсказать текущий блок данных видео в пределах текущей картинки согласно способам настоящего раскрытия.
[0018] ФИГ. 3 является концептуальной диаграммой, иллюстрирующей примерный способ для того, чтобы определить предназначенную область, из которой может быть выбран предсказывающий блок данных видео.
[0019] ФИГ. 4A-4C являются концептуальными диаграммами, иллюстрирующими границы для того, чтобы определить предназначенную область относительно выборок данных видео, которые подвергнуты фильтрации удаления блочности в соседней наибольшей единице кодирования.
[0020] ФИГ. 5A-5C являются концептуальными диаграммами, иллюстрирующими границы для того, чтобы определить предназначенную область относительно выборок данных видео, которые подвергнуты фильтрации удаления блочности и фильтрации с адаптивным смещением выборок (SAO) в соседней наибольшей единице кодирования.
[0021] ФИГ. 6 является концептуальной диаграммой, иллюстрирующей границу для того, чтобы определить предназначенную область относительно выборок данных видео, которые подвергнуты фильтрации удаления блочности в соседней наибольшей единице кодирования.
[0022] ФИГ. 7 является концептуальной диаграммой примерного текущего блока данных видео и соседних блоков данных видео, из которых могут быть выведены предсказывающие векторы - кандидаты для текущего блока данных видео.
[0023] ФИГ. 8 является блок-схемой, иллюстрирующей примерный кодер видео, который может реализовать способы, описанные в этом раскрытии.
[0024] ФИГ. 9 является блок-схемой, иллюстрирующей примерный декодер видео, который может реализовать способы, описанные в этом раскрытии.
[0025] ФИГ. 10 является блок-схемой, иллюстрирующей примерный способ для того, чтобы кодировать видео данные, включая режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки.
[0026] ФИГ. 11 является блок-схемой, иллюстрирующей примерный способ для того, чтобы декодировать видео данные, включая режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки.
[0027] ФИГ. 12 является блок-схемой, иллюстрирующей примерный способ, который включает в себя выведение двумерного вектора для блока данных видео цветности из двумерного вектора соответствующего блока данных видео яркости.
[0028] ФИГ. 13 является блок-схемой, иллюстрирующей примерный способ, кодирующий видео данные, включая режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, который включает в себя определение предсказывающих двумерных векторов.
[0029] ФИГ. 14 является блок-схемой, иллюстрирующей примерный способ, декодирующий видео данные, включая режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, который включает в себя определение предсказывающих двумерных векторов.
[0030] ФИГ. 15 является блок-схемой, иллюстрирующей примерный способ для того, чтобы определить предсказывающие двумерные векторы кандидаты для текущего блока данных видео.
ПОДРОБНОЕ ОПИСАНИЕ
[0031] Видео последовательность в целом представляется как последовательность картинок. Как правило, основанные на блоках способы кодирования используются для кодирования каждой из индивидуальных картинок. Таким образом, каждая картинка разделяется на блоки, и каждый из блоков индивидуально кодируется. Кодирование блока данных видео вообще включает в себя формирование предсказанного значения для блока и кодирование остаточного значения, то есть, разности между первоначальным блоком и предсказанным значением. В частности, первоначальный блок данных видео включает в себя матрицу пиксельных значений, и предсказанное значение включает в себя матрицу предсказанных пиксельных значений. Остаточное значение соответствует по-пиксельным разностям между пиксельными значениями первоначального блока и предсказанными пиксельными значениями.
[0032] Способы предсказания для блока данных видео обычно категоризируются как внутреннее предсказание или внешнее предсказание. Внутреннее предсказание, или пространственное предсказание, обычно включает в себя предсказание блока из соседних пиксельных значений, которые являются частью ранее закодированных блоков. Внешнее предсказание, или временное предсказание, обычно включает в себя предсказание блока из пиксельных значений ранее закодированных картинок (например, кадров или вырезок).
[0033] Многие применения, такие как удаленные компьютеры, удаленные игры, беспроводные отображения, автомобильная развлекательно - информационная передача, облачные вычисления и другие, становятся обычными в повседневной жизни. Видео контенты в этих применениях обычно являются комбинациями естественного контента, текста, искусственной графики, и других контентов. В тексте и искусственных графических областях часто существуют повторяющиеся шаблоны (такие как персонажи, изображения, символы, или подобное).
[0034] Внутреннее предсказание блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, которое может упоминаться как внутриблочная копия (IntraBC) или внутренняя компенсация движения (IntraMC), является способом, который может разрешить видео кодировщику удалить такую избыточность и улучшить эффективность внутрикадрового кодирования. В некоторых способах кодирования видео кодировщики видео могут использовать блоки ранее восстановленных данных видео, которые находятся или непосредственно выше или ниже или непосредственно горизонтально в линии с текущим блоком данных видео на одной и той же картинке для предсказания текущего блока видео. Другими словами, если картинка или кадр данных видео наложены на 2D сетку, каждый блок данных видео может занять уникальный диапазон x-значений и y-значений. Соответственно, некоторые видео кодировщики могут предсказать текущий блок данных видео на основании блоков ранее закодированных данных видео в одной и той же картинке, которые совместно используют только один и тот же набор x-значений (то есть, вертикально по линии с текущим блоком видео) или один и тот же набор y-значений (то есть, горизонтально по линии с текущим блоком видео).
[0035] Может быть выгодно для видео кодировщика предсказывать текущий блок видео из ранее восстановленного блока данных видео в пределах одного и того же кадра, то есть одной и той же картинки, которая является не обязательно непосредственно выше или слева (или непосредственно справа или ниже), текущего блока данных видео. Посредством включения большего количества блоков видео в предсказывающий набор, видео кодировщик может достигнуть более точного предсказания текущего блока видео, таким образом увеличивая эффективность кодирования.
[0036] Вообще, настоящее раскрытие описывает способы для того, чтобы кодировать видео данные, которые включают в себя режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, которая может упоминаться как режим IntraBC или IntraMCа. Способы IntraBC или IntraMCа из настоящего раскрытия могут включать в себя идентификацию предсказывающего блока данных видео для текущего блока данных видео, при этом предсказывающий блок данных видео является восстановленным блоком данных видео в пределах той же картинки, что и текущий блок данных видео. Предсказывающий блок данных видео может быть взять изнутри предназначенной области, которая находится в пределах картинки, например, области выше, выше справа, выше слева, и/или слева от текущего блока данных видео. Предсказывающий блок данных видео не ограничен тем, чтобы быть или выше или слева от текущего блока видео и, следовательно, вектор, использованный для идентификации предсказывающего блока относительно текущего блока не является обязательным и одномерным вектором. Вместо этого, чтобы идентифицировать или определить предсказывающий блок данных видео, видео кодировщик может закодировать один или более элементов синтаксиса, которые определяют двумерный вектор, который включает в себя компонент горизонтального смещения и компонент вертикального смещения относительно текущего блока данных видео. Двумерный вектор может упоминаться как вектор блока или вектор движения.
[0037] Способы настоящего раскрытия могут улучшить эффективность и точность предсказания текущих блоков видео на основании ранее закодированных блоков видео в одной и той же картинке, используя IntraBC или IntraMC, рассматривая дополнительные восстановленные блоки данных видео как возможные предсказывающие блоки для текущего блока данных видео, например, не ограничивая предсказывающие блоки тем, которые находятся выше или слева от текущего блока. В некоторых примерах способы настоящего раскрытия могут улучшить эффективность и точность предсказания текущих блоков видео на основании ранее закодированных блоков видео в одной и той же картинке, используя IntraBC, определяя предназначенную область, чтобы включать в себя восстановленные выборки без фильтрования в контуре, такие как удаление блочности и фильтрование с адаптивным смещением выборок (SAO). В некоторых примерах способы настоящего раскрытия могут улучшить эффективность и точность предсказания текущих блоков видео на основании ранее закодированных блоков видео в одной и той же картинке, используя IntraBC, разрешая видео кодировщику идентифицировать и закодировать предсказывающий двумерный вектор текущий двумерный вектор, например, вектор блока или вектор движения, текущего блока данных видео.
[0038] ФИГ. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может реализовать один или более способов, описанных в настоящем раскрытии. Как используется здесь, термин "видео кодировщик" относится в общем и к видео кодерам и к видео декодерам. В этом раскрытии термины "кодирование видео" или "кодирование" могут относиться в общем к кодированию видео или видео декодированию.
[0039] Как показано на фиг. 1, система 10 включает в себя исходное устройство 12, которое выдает закодированные видео данные, которые должны быть декодированы устройством 14 назначения. В частности исходное устройство 12 выдает видео данные устройству 14 назначения через считываемый компьютером носитель 16. Исходное устройство 12 и устройство 14 назначения могут содержать любое из широкого диапазона устройств, включая настольные компьютеры, портативные компьютеры (то есть, ноутбуки), планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые "интеллектуальные" телефоны, так называемые "интеллектуальные" клавиатуры, телевизоры, камеры, устройства отображения, цифровые медиаплееры, пульты видео игр, устройство потоковой передачи видео, или подобное. В некоторых случаях исходное устройство 12 и устройство 14 назначения могут быть оборудованы для беспроводной связи.
[0040] Устройство 14 назначения может принять закодированные видео данные, которые должны быть декодированы, через считываемый компьютером носитель 16. Считываемый компьютером носитель 16 может содержать любой тип носителя или устройства, способного к перемещению закодированных данных видео от исходного устройства 12 к устройству 14 назначения. В одном примере считываемый компьютером носитель 16 может содержать коммуникационный носитель, чтобы разрешить исходному устройству 12 передавать закодированные видео данные непосредственно к устройству 14 назначения в реальном времени. Закодированные видео данные могут модулироваться согласно стандарту связи, такому как протокол беспроводной связи, и переданы к устройству 14 назначения. Коммуникационный носитель может содержать любой беспроводной или проводной коммуникационный носитель, такой как линии передачи радиочастотного (RF, РЧ) спектра или одну или более физических линий передачи. Коммуникационный носитель может быть частью основанной на пакетной передаче сети, такой как локальная сеть, региональная сеть, или глобальная сеть, такая как Интернет. Коммуникационный носитель может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть полезным, чтобы облегчить связь от исходного устройства 12 к устройству 14 назначения.
[0041] В некоторых примерах считываемый компьютером носитель 16 может содержать устройство хранения, и исходное устройство может выводить закодированные видео данные через интерфейс 22 вывода на это устройство хранения. Аналогично, к закодированным данным можно получить доступ от устройства хранения через интерфейс 28 ввода. Устройство хранения может включать в себя любое из множества распределенных или локальных запоминающих носителей данных, таких как накопитель на жестких дисках, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память, или любые другие подходящие цифровые запоминающие носители для того, чтобы хранить закодированные видео данные. Например, вычислительное устройство оборудования по производству носителей, такого как средство штамповки дисков, может принять закодированные видео данные от исходного устройства 12 и произвести диск, содержащий закодированные видео данные. Поэтому считываемый компьютером носитель 16 можно понимать как включающий в себя один или более считываемых компьютером носителей различных форм, в различных примерах. В другом примере устройство хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, которое может сохранить закодированное видео, генерируемое исходным устройством 12. Устройство 14 назначения может получить доступ к хранимым видео данным от устройства хранения через потоковую передачу или загрузку. Файловый сервер может быть любым типом сервера, способного к тому, чтобы хранить закодированные видео данные и передавать эти закодированные видео данные к устройству 14 назначения. Файловые серверы, например, включают в себя web-сервер (например, для вебсайта), сервер FTP, устройства сетевого хранилища данных (NAS), или локальный накопитель на дисках. Устройство 14 назначения может получить доступ к закодированным видео данным через любое стандартное соединение данных, включая интернет-соединение. Это может включать в себя беспроводный канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.) или комбинацию обоих, которая подходит для того, чтобы получить доступ к закодированным видео данным, хранящимся на файловом сервере. Передача закодированных данных видео от устройства хранения может быть потоковой передачей, передачей загрузки, или их комбинацией.
[0042] Способы настоящего раскрытия не обязательно ограничены беспроводными приложениями или параметрами настройки. Способы могут быть применены к кодированию видео в поддержку любого из множества мультимедийных приложений, таких как эфирное телевидение, передачи кабельного телевидения, передачи спутникового телевидения, Интернет, потоковой передачи видео, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое закодировано на запоминающем носителе данных, декодирование цифрового видео, сохраненного на запоминающем носителе данных, или других приложениях. В некоторых примерах система 10 может конфигурироваться, чтобы поддерживать одностороннюю или двухстороннюю передачу видео, чтобы поддерживать приложения, такие как потоковая передача видео, воспроизведение видео, вещание видео, и/или видео телефония.
[0043] ФИГ. 1 является просто примером, и способы настоящего раскрытия могут относиться к параметрам настройки кодирования видео (например, кодирования видео или декодирования видео), которые не обязательно включают в себя какую-либо передачу данных между устройствами кодирования и декодирования. В других примерах данные извлекают из локальной памяти, передают в виде потока по сети или подобное. Устройство кодирования видео может закодировать и сохранить данные в памяти, и/или устройство декодирования видео может извлечь и декодировать данные из памяти. Во многих примерах кодирование и декодирование выполняют устройствами, которые не обмениваются друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
[0044] В примере согласно ФИГ. 1 исходное устройство 12 включает в себя видео источник 18, видео кодер 20 и интерфейс 22 вывода. Устройство 14 назначения включает в себя интерфейс 28 ввода, видео декодер 30, и устройство 32 отображения. В других примерах исходное устройство и устройство назначения могут включать в себя другие компоненты или компоновки. Например, исходное устройство 12 может принять видео данные из внешнего видео источника 18, такого как внешняя камера. Аналогично, устройство 14 назначения может соединяться с внешним устройством 32 отображения, вместо включения интегрированного устройства 32 отображения.
[0045] Иллюстрированная система 10 из ФИГ. 1 является просто одним примером. Любое цифровое устройство кодирования и/или декодирования видео может выполнять способы, описанные в настоящем описании. Хотя вообще способы настоящего раскрытия выполняются устройством кодирования видео, способы могут также быть выполнены видео кодером/декодером, типично называемым "кодек". Кроме того, способы настоящего раскрытия могут также быть выполнены препроцессором видео. Исходное устройство 12 и устройство 14 назначения является просто примерами таких устройств кодирования, в которых исходное устройство 12 генерирует закодированные видео данные для передачи к устройству 14 назначения. В некоторых примерах устройства 12, 14 могут работать по существу симметричным способом таким образом, что каждое из устройств 12, 14 включают в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю или двухстороннюю передачу видео между видео устройствами 12, 14, например, для потоковой передачи видео, воспроизведения видео, вещания видео, или видео телефонии.
[0046] Видео источник 18 из исходного устройства 12 может включать в себя устройство захвата видео, такое как видео камера, видео архив, содержащий ранее захваченное видео, и/или интерфейс подачи видео, чтобы принять видео от поставщика видео контента. Как дальнейшая альтернатива, видео источник 18 может генерировать основанные на компьютерной графике данные в качестве исходного видео или комбинации живого видео, заархивированного видео и генерируемое компьютером видео. В некоторых случаях, если видео источник 18 является видео камерой, исходное устройство 12 и устройство 14 назначения может сформировать так называемые камерофоны или видео телефоны. Как упомянуто выше, однако, способы, описанные в этом раскрытии, могут быть применимыми к кодированию видео вообще, и могут быть применены к беспроводным и/или проводным приложениям. В каждом случае захваченное, предварительно захваченное или генерируемое компьютером видео может быть закодировано видео кодером 20. Закодированная видео информация может затем быть выведена интерфейсом 22 вывода на считываемый компьютером носитель 16. В некоторых примерах интерфейс 22 вывода может включать в себя модулятор/демодулятор (модем) и/или передатчик.
[0047] Интерфейс 28 ввода из устройства 14 назначения принимает информацию из считываемого компьютером носителя 16. В некоторых примерах интерфейс 28 ввода включает в себя приемник и/или модем. Информация считываемого компьютером носителя 16 может включать в себя закодированный поток битов видео, который может включать в себя закодированные видео данные и другую информацию синтаксиса, определенную видео кодером 20, которая используется видео декодером 30, и которая описывает характеристики и/или обработку блоков и других закодированных блоков, например, вырезок, картинок, групп картинок (GOPs), или видео данные. Устройство 32 отображения отображает декодированные видео данные пользователю, и может содержать любое из множества устройств отображения, такие как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих (OLED) диодах, или другой тип устройства отображения.
[0048] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любое из множества подходящих схемы кодера, например, один или более микропроцессоров, цифровых сигнальных процессоров (DSPs), специализированных интегральных схем (ASICs), программируемых пользователем вентильных матриц (FPGAs), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратных средств или любых их комбинаций. Когда способы реализованы частично в программном обеспечении, устройство может сохранить инструкции для программного обеспечения в подходящем невременном считываемом компьютером носителе и выполнить инструкции в аппаратном обеспечении, используя один или более процессоров, чтобы выполнить способы настоящего раскрытия. Каждый видео кодер 20 и видео декодер 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного кодера/декодера (кодек) в соответствующем устройстве. Хотя не показано на фиг. 1, в некоторых аспектах видео кодер 20 и видео декодер 30 могут каждый интегрироваться с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX, или другое аппаратное обеспечение и программное обеспечение, чтобы обрабатывать кодирование и аудио и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
[0049] Настоящее раскрытие может в целом относится к видео кодеру 20, "сигнализирующему" некоторую информацию на другое устройство, такое как видео декодер 30. Термин "сигнализация" может в целом относится к передаче элементов синтаксиса, и/или других данных, использованных для декодирования сжатых видео данных. Такая передача может произойти в реальном или почти реальном времени. Альтернативно, такая передача может произойти в промежутке времени, например, может произойти при сохранении элементов синтаксиса на считываемом компьютером запоминающем носителе в закодированном потоке битов во время кодирования, которые затем могут быть извлечены устройством декодирования в любое время, будучи сохраненным в этом носителе.
[0050] Видео кодер 20 и видео декодер 30 описаны в этом раскрытии в целях иллюстрации, как конфигурируемые, чтобы работать согласно одному или более стандартам кодирования видео. Однако, способы настоящего раскрытия не обязательно ограничены любым конкретным стандартом кодирования, и могут применяться для множества различных стандартов кодирования.
[0051] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту кодирования видео, такому как стандарт высокоэффективного кодирования видео (HEVC), развиваемого в настоящее время, включая любые расширения, модификации, или дополнения, и могут соответствовать тестовой модели HEVC (HM). Альтернативно, видео кодер 20 и видео декодер 30 могут работать согласно другим составляющим собственность стандартам или стандартам промышленности, таким как стандарт ITU-T H.264, альтернативно названный MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC), или расширения таких стандартов. Способы настоящего раскрытия, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры стандартов кодирования видео включают в себя MPEG-2 и ITU-T H.263.
[0052] Примеры других составляющих собственность стандартов или стандартов промышленности включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включая его расширения Масштабируемого кодирования видео (SVC) и Кодирования видео с множественными видами (MVC), или расширения, модификации, или дополнения к таким стандартам. Кроме того, имеется продолжающееся усилие генерировать расширения кодирования трехмерного видео (3DV) к H.264/AVC, а именно, основанное на AVC 3DV. Другими словами, примерные стандарты кодирования видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включая его расширения Масштабируемого кодирования видео (SVC) и Кодирования видео с множественными видами (MVC). Стандарт H.264 описан в Рекомендации H.264 ITU-T, Усовершенствованное видео кодирование для обобщенных аудиовизуальных услуг, Группой по изучению ITU-T, и датирован мартом 2005, который может быть упомянут здесь как стандарт H.264 или спецификация H.264, или стандарт или спецификация H.264/AVC. Объединенная Команда Видео (JVT) продолжает работать над расширениями к H.264/MPEG-4 AVC. Недавний объединенный проект MVC описан в “Усовершенствованном видео кодировании для обобщенных аудиовизуальных услуг,” Рекомендация H.264 ITU-T, март 2010.
[0053] Кроме того, имеется новый развитый стандарт кодирования видео, а именно, высокоэффективное кодирование видео (HEVC), развитый Объединенной Командой Сотрудничества по Кодированию видео (JCT-VC) Группы Экспертов по Кодированию видео ITU-T (VCEG) и ISO/IEC Группы экспертов по движущимся изображениям (MPEG). В примере согласно ФИГ. 1, видео кодер 20 и видео декодер 30 могут работать согласно HEVC. Bross et al., “High Efficiency Video Coding (HEVC) text specification draft 10 (for FDIS & Last Call), Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 12th Meeting: Geneva, CH, 14–23 Jan. 2013, document JCTVC-L1003_v34, которой на 17 октября 2013 доступен по: http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip, в дальнейшем, "JCTVC-L1003-v34", все содержимое которого включено по ссылке, является недавним проектом HEVC. Версия HEVC, определенного в JCTVC-L1003-v34, может упоминаться как версия 1 HEVC или “HEVC v1.” McCann и др., .” McCann et al., “High Efficiency Video Coding (HEVC) Test Model 12 (HM 12) Encoder Description”, документ JCTVC-N1002, доступный по http://phenix.int-evry.fr/jct/doc_end_user/current_document.php? id=8143, все содержимое которого включено по ссылке, является недавним описанием кодера HEVC.
[0054] Два расширения HEVC, поддерживающие услуги 3D были разработаны Объединенной Командой Сотрудничества по Кодированию 3D видео (JCT-3V) Группы Экспертов по Кодированию видео ITU-T (VCEG) и ISO/IEC Группы экспертов по движущимся изображениям (MPEG). Эти два расширения являются MV-HEVC и 3D-HEVC, соответственно. В примере согласно ФИГ. 1, видео кодер 20 и видео декодер 30 могут работать согласно MV-HEVC и/или 3D-HEVC.
[0055] MV-HEVC поддерживает кодирование множественных (текстур) видов, не изменяя структуру блочного уровня. Tech et al., “MV-HEVC Draft Text 5,” Joint Collaborative Team on 3D Video Coding Extension Development of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, document no. JCT3V-E1004-v6, доступные по <http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V-E1004-v6.zip>, все содержимое которого включено по ссылке, является недавним проектом MV-HEVC.
[0056] 3D-HEVC кодирует формат видео с множественными видами плюс глубина, и включает в себя новые инструменты кодирования, встроенные в дополнение к модулям HEVC кодирования. Недавно введенные кодирования инструменты применимы и для кодирования текстуры и для кодирования глубины. Tech et al., “3D-JEVC Draft Text 1,” Joint Collaborative Team on 3D Video Coding Extension Development of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 5th Meeting: Vienna, AT, 27 Jul. –2 Aug. 2013, document no. JCT3V-E1001-v3, доступный от http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V-E1001-v3.zip, все содержимое которого включено по ссылке, является недавним проектом 3D-HEVC. Недавнее программное обеспечение 3D-HTM для 3D-HEVC может быть загружено по следующей ссылке:
<https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-8.0/>
[3D-HTM версия 8.0]: . Недавнее описание программного обеспечения, Zhang et al., “3D-HEVC Test Model 5,” Joint Collaborative Team on 3D Video Coding Extension Development of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 5th Meeting: Vienna, AT, 27 Jul. –2 Aug. 2013, document number: JCT3V-E1005, все содержимое которого включено по ссылке, доступен по: http://phenix.it-sudparis.eu/jct2/doc_end_user/current_document.php? id=1360.
[0057] Дополнительное развитие и расширения стандарта HEVC включают в себя Расширения Диапазона HEVC. Пример Расширений Диапазона HEVC описан в Flynn et al., "High Efficiency Video Coding (HEVC) Range Extensions text specification: Draft 4,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, Document JCTVC-N1005_v3, 13th Meeting: Incheon, KR, 18–26 April 2013, который включен здесь по ссылке полностью, и доступен по:
http://phenix.int-evry.fr/jct/doc_end_user/current_document.php? id=8139.
L
Cb
Cr
L
Cb
Cr
[0058] В HEVC и других спецификациях кодирования видео, видео последовательность типично включает в себя последовательность картинок. Картинки могут также упоминаться "как кадры". Картинка может включать в себя три типовых массива, обозначенных S, S и S. S - двумерный массив (то есть, блок) выборок яркости. S - двумерный массив выборок цветности Cr. S - двумерный массив выборок насыщенности цвета Cr. Выборки насыщенности цвета могут также быть упомянуты здесь как выборки "цветности". В других случаях картинка может быть монохромной и может только включать в себя массив выборок яркости.
[0059] Усилия по стандартизации HEVC основаны на развивающейся модели устройства кодирования видео, называемой тестовой моделью HEVC (HM). HM предполагает несколько дополнительных способностей устройств кодирования видео относительно существующих устройств согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM может обеспечить целых тридцать три режима кодирования с внутренним предсказанием.
[0060] В целом рабочая модель HM описывает, что видео кодер 20 может разделить видео кадр или картинку в последовательность блоков дерева кодирования (CTUs), также называемых наибольшими единицами кодирования (LCUs) или блоками дерева. Каждая из CTU может содержать блок дерева кодирования (CTB) выборок яркости, два соответствующих блока дерева кодирования выборок цветности, и структуры синтаксиса, использованные для кодирования выборок блоков дерева кодирования. На монохромной картинке или картинке, содержащей отдельные цветные плоскости, CTU может содержать единственный блок дерева кодирования и структуры синтаксиса, используемые для кодирования выборок единственного блока дерева кодирования.
[0061] Данные синтаксиса в пределах потока битов могут определять размер для CTU, которая является наибольшей единицей кодирования в терминах количества пикселей. CTU может быть блоком из NxN выборок. Единицы CTU в HEVC могут в целом аналогичны макроблокам других стандартов кодирования видео, таких как H.264/AVC. Однако, CTU не обязательно ограничена конкретным размером и может включать в себя одну или более единиц кодирования (CUs).
[0062] Видео кадр или картинка могут быть разделены на одну или более вырезок. Вырезка включает в себя ряд последовательных CTU в порядка кодирования или сканирования. Каждая CTU может быть разделена на единицы кодирования (CUs) согласно квадродереву. CU может быть блоком из NxN выборок. Вообще, структура данных квадродерева включает в себя один узел для каждой CU, с корневым узлом, соответствующим блоку дерева. Если CU разделена на четыре суб-CU, узел, соответствующий CU, включает в себя четыре листовых узла, каждый из которых соответствует одной из суб-CU. CU или суб-CU, которая может также упоминаться как CU, могут содержать блок кодирования выборок яркости и два соответствующих блока кодирования выборок цветности картинки, которая имеет массив выборок яркости, массив выборок Cr, и массив выборок Cr, и структуры синтаксиса, используемые для кодирования выборок блоков кодирования. На монохромной картинке или картинке, содержащей отдельные цветные плоскости, CU может содержать единственный блок кодирования и структуры синтаксиса, используемые для кодирования выборок единственного блока кодирования.
[0063] Каждый узел структуры данных квадродерева может обеспечить данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, указывающий, разделена ли CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть определены рекурсивно, и могут зависеть от того, разделена ли CU на суб-CU. Если CU не разделяется далее, она называется как листовая CU. В этом раскрытии четыре суб-CU листовой CU будут также упоминаться как листовые CU, даже если не будет никакого явного разделения первоначальной листовой CU. Например, если CU с размером 16x16 не будет разделена далее, то четыре суб-CU 8x8 будут также упоминаться как листовые CU, хотя CU 16x16 никогда не разделяется. Данные синтаксиса, ассоциированные с закодированным потоком битов, могут определять максимальное количество раз, сколько блок дерева может быть разделен, называемый максимальной глубиной CU, и может также определить минимальный размер узлов кодирования. Соответственно, поток битов может также определить наименьшую единицу кодирования (SCU).
[0064] CU включает в себя узел кодирования и единицы предсказания (PU), и единицы преобразования (TU), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен быть квадратным по форме. Размер CU может ранжироваться от 8x8 пикселей до размера блока дерева с максимум 64x64 пикселей или более. Вообще, видео кодер 20 и видео декодер 30 кодируют каждую CU с одним режимом, например, внутренним предсказанием или внешним предсказанием.
[0065] Каждая CU может содержать одну или более единиц PU и одну или более единиц TU. Данные синтаксиса, ассоциированные с CU, могут описывать, например, разделение CU на одну или более единиц PU. Режимы разделения могут отличаться между тем, является ли CU закодированной в режиме пропуска или прямом, закодированной в режиме внутреннего предсказания, или закодированной в режиме внешнего предсказания. Единицы PU могут быть разделены, чтобы быть неквадратными (например, прямоугольными) по форме. Данные синтаксиса, ассоциированные с CU, могут также описывать, например, разделение CU на одну или более единиц TU согласно квадродереву. TU может быть квадратной или неквадратной (например, прямоугольной) по форме.
[0066] Единицы PU и единицы TU в CU могут содержать блок предсказания выборок яркости, два соответствующих блока предсказания выборок цветности картинки, и структуры синтаксиса, используемые для предсказания выборок блока предсказания. Видео кодер 20 может генерировать предсказывающие блоки предсказания яркости, Cb, и блоки Cr для яркости, Cr, и Cr каждой PU в CU. На монохромной картинке или картинке, содержащей отдельные цветные плоскости, PU может содержать единственный блок предсказания и структуры синтаксиса, использованные для предсказания единственного блока предсказания.
[0067] Видео кодер 20 и видео декодер 30 могут поддерживать единицы PU, имеющие различные размеры. Предполагая, что размер конкретной CU равен 2Nx2N, видео кодер 20 и видео декодер 30 могут поддерживать внутреннее предсказание в размерах PU, равных 2Nx2N или NxN, и внешнее предсказание в симметричных размерах PU, равных 2Nx2N, 2NxN, Nx2N, или NxN. Видео кодер 20 и видео декодер 30 могут также поддерживать асимметричное разделение для внешнего предсказания в размерах PU, равных 2NxnU, 2NxnD, nLx2N, и nRx2N. В асимметричном разделении одно направление CU не разделяется, в то время как другое направление разделяется на 25% и 75%. Часть CU, соответствующая 25%-ому разделению, обозначена “n”, сопровождаемая индикацией «верхний», «нижний», "левый", или "правый". Таким образом, например, “2NxnU” относится к CU размером 2Nx2N, которая разделена горизонтально с PU 2Nx0.5N сверху и PU 2Nx1.5N внизу. В HEVC наименьшие размеры PU равны 8x4 и 4x8.
[0068] В этом раскрытии “NxN” и “N на N” может использоваться взаимозаменяемо, чтобы ссылаться к пиксельным измерениям блока видео в терминах вертикального и горизонтального измерений, например, 16x16 пикселей или 16 на 16 пикселей. Вообще, блок 16x16 имеет 16 пикселей в вертикальном направлении (y = 16) и 16 пикселей в горизонтальном направлении (x = 16). Аналогично, блок NxN вообще имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целочисленное значение. Пиксели в блоке могут быть размещены в рядах и колонках. Кроме того, блоки должен не обязательно иметь то же количество пикселей в горизонтальном направлении, что и в вертикальном направлении. Например, блоки могут содержать NxM пикселей, где М не обязательно равно N.
[0069] Вообще, PU представляет пространственную область, соответствующую всей или части соответствующей CU, и может включать в себя данные для того, чтобы извлечь опорную выборку для PU. Кроме того, PU включает в себя данные, относящиеся к предсказанию. Например, когда PU является закодированной во внутреннем режиме, данные для PU могут описывать режим внутреннего предсказания для блока предсказания, соответствующего PU.
[0070] В качестве другого примера, когда PU является закодированной во внешнем режиме, PU может включать в себя данные, определяющие один или более векторов движения для PU. Данные, определяющие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешения для вектора движения (например, пиксельную точность в одну четверть или пиксельная точность в одну восьмую). PU может также включать данные, идентифицирующие опорную картинку, на которую вектор движения указывает, такие как индекс, в список опорных картинок, который включает в себя опорную картинку.
[0071] Внешнее предсказание может быть однонаправленным (то есть, предсказанием в одном направлении) или двунаправленным (то есть, bi-предсказанием). Чтобы выполнить предсказание в одном направлении или bi-предсказание, видео кодер, 20 и видео декодер могут генерировать первый список опорных картинок (RefPicList0) и второй список опорных картинок (RefPicList1) для текущей картинки. Каждый из списков опорных картинок может включать в себя одну или более опорных картинок. После того, как список опорных картинок построен (а именно, RefPicList0 и RefPicList1, если доступны), опорный индекс к списку опорных картинок может быть использован для идентификации любой опорной картинки, включенной в список опорных картинок.
[0072] Опорная картинка может быть предыдущей картинкой во временном, например, для отображения, порядке, будущей картинкой или комбинацией предсказаний из двух или более ранее закодированных картинок. Видео кодировщики, например, видео кодер 20 и видео декодер 30 используют счет по порядку картинки (POC), чтобы идентифицировать временной порядок картинки. Видео кодировщики также используют значения POC картинок для построения списка опорных картинок и масштабирования векторов движения. Видео кодер 20 или видео декодер 30 могут сохранить опорные картинки в памяти опорных картинок, например, памяти 368 опорных картинок (ФИГ. 8) и памяти 396 опорных картинок (ФИГ. 9).
[0073] Когда текущий блок видео, например, PU, кодируется, используя IntraBC согласно способам настоящего раскрытия, данные, определяющие двумерный вектор (который может упоминаться как вектор блока, вектор движения, или вектор смещения) для блока может описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешения для вектора движения (например, пиксельную точность в одну четверть или пиксельную точность в одну восьмую). Однако, данные PU, предсказанные, используя IntraBC согласно способам настоящего раскрытия, не должны идентифицировать опорную картинку, на которую указывает вектор движения, когда опорный блок находится в пределах того же самого кадра или картинок, что и текущий блок видео.
[0074] После того, как видео кодер 20 генерирует предсказывающие блоки яркости, Cb, и Cr для одной или более единиц PU в CU, видео кодер 20 может генерировать блок остатка яркости для CU. Каждая выборка в блоке остатка яркости CU указывает разность между выборкой яркости в предсказывающем блоке яркости PU в CU и соответствующей выборкой в первоначальном блоке кодирования яркости CU. Кроме того, видео кодер 20 может генерировать остаточный блок Cr для CU. Каждая выборка в остаточном блоке Cr в CU может указывать разность между выборкой Cr в предсказывающем блоке Cr PU в CU и соответствующей выборкой в первоначальном блоке кодирования Cb в CU. Видео кодер 20 может также генерировать остаточный блок Cr для CU. Каждая выборка в остаточном блоке Cr CU может указывать разность между выборкой Cr в предсказывающем блоке Cr в PU в CU и соответствующей выборкой в первоначальном блоке кодирования Cr в CU.
[0075] Листовая CU, имеющая одну или более единиц PU, может также включать в себя одну или более единиц преобразования (единиц TU). TU в CU может содержать блоке преобразования выборок яркости, два соответствующих блока преобразования выборок цветности, и синтаксические структуры, используемые для преобразования выборок блока преобразования. Видео кодер 20 может преобразовать значения пиксельной разности в пределах остаточных блоков, ассоциированных с единицами TU, чтобы сформировать коэффициенты преобразования, которые могут быть квантованы. Видео кодер 20, например, может применить дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет преобразование, или концептуально подобное преобразование к остаточным видео данным.
[0076] Единицы TU могут быть определены, используя RQT (также называемую структурой квадродерева TU), как описано выше. Например, флаг разделения может указывать, разделена ли листовая CU на четыре единицы преобразования. Затем, каждая единица преобразования может быть разделена далее в следующие суб-единицы TU. Когда TU не разделяется далее, она может упоминаться как листовая TU. TU не обязательно ограничена размером PU. Таким образом, единицы TU могут быть больше или меньше, чем PU. Для внутреннего кодирования PU может быть совместно расположена с соответствующей листовой TU для одной и той же CU. В некоторых примерах максимальный размер листовой TU может соответствовать размеру соответствующей листовой CU. Вообще, настоящее раскрытие использует термины CU и TU, чтобы ссылаться на листовую CU и листовую TU, соответственно, если не отмечено иначе.
[0077] Настоящее раскрытие может использовать термин “видео блок,” “блок видео,” или “блок данных видео”, чтобы ссылаться на любой один или более блоков выборок и структур синтаксиса, использованных для кодирования выборок одного или более блоков выборок, как описано в настоящем описании. Примерные типы блоков видео могут включать в себя единицы CTU, единицы CU, единицы PU или единицы TU в контексте HEVC, или подобные структуры данных в контексте других стандартов (например, макроблоки или разделения их макроблоков в H.264/AVC).
n
n
м
[0078] После любых преобразований, чтобы сформировать коэффициенты преобразования, видео кодер 20 может выполнять квантование коэффициентов преобразования. Квантование вообще относится к процессу, в котором коэффициенты преобразования квантуются, чтобы возможно уменьшить объем данных, использованных для представления коэффициентов, обеспечивая дальнейшее сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, значение -бит может быть округлено в меньшую сторону до m-битного значения во время квантования, где больше чем .
[0079] После квантования видео кодер может сканировать коэффициенты преобразования, формируя одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть построено, чтобы поместить коэффициенты более высокой энергии (и поэтому более низкой частоты) впереди массива и поместить коэффициенты более низкой энергии (и поэтому более высокой частоты) в конце массива. В некоторых примерах видео кодер 20 может использовать заранее заданный порядок сканирования, чтобы сканировать квантованные коэффициенты преобразования, чтобы сформировать преобразованный в последовательную форму вектор, который может быть энтропийно кодирован. В других примерах видео кодер 20 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы сформировать одномерный вектор, видео кодер 20 может энтропийно кодировать одномерный вектор, например, согласно контекстно-адаптивному кодированию с переменной длиной кода (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), основанному на синтаксисе контекстно-адаптивному двоичному арифметическому кодированию (SBAC), кодированию энтропии с разделением интервала вероятности (PIPE) или другим способам энтропийного кодирования. Видео кодер 20 может также энтропийно кодировать элементы синтаксиса, ассоциированные с закодированными видео данными для использования видео декодером 30 при декодировании данных видео.
[0080] Чтобы выполнить CABAC, видео кодер 20 может назначить контекст в пределах контекстной модели символу, который должен быть передан. Контекст может относиться, например, к тому, являются ли соседние значения символа ненулевыми или нет. Чтобы выполнить CAVLC, видео кодер 20 может выбрать код с переменной длиной слова для символа, который должен быть передан. Кодовые слова в VLC могут быть построены таким образом, что относительно более короткие коды соответствуют более вероятным символам, в то время как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может достигнуть экономии битов, например, используя ключевые слова равной длины для каждого символа, который должен быть передан. Определение вероятности может быть основано на контексте, назначенном на символ.
[0081] Кроме того, видео кодер 20 может декодировать закодированные картинки, например, посредством обратного квантования и обратного преобразования остаточных данных, и объединить остаточные данные с данными предсказания. Этим способом видео кодер 20 может эмулировать процесс декодирования, выполненный видео декодером 30. Видео кодер 20 и видео декодер 30, поэтому, будут иметь доступ к по существу одним и тем же декодированным видео данным, например, картинкам или блокам из картинок, для использования в предсказание внутри картинки, между картинками, или IntraBC.
[0082] Видео кодер 20 может выводить закодированный поток битов видео, который включает в себя последовательность битов, которые формируют представление закодированных картинок и ассоциированные данные, включающие в себя элементы синтаксиса. Поток битов может содержать последовательность блоков уровня абстракции сети (NAL). Каждая из единиц NAL может включать в себя заголовок единицы NAL и может инкапсулировать необработанные полезные данные последовательности байтов (RBSP). Заголовок единицы NAL может включать в себя элемент синтаксиса, который указывает код типа единицы NAL. Код типа единицы NAL, определенный заголовком единицы NAL единицы NAL, указывает тип единицы NAL. RBSP может содержать структуру синтаксиса, содержащую целое число байтов, которые инкапсулированы в пределах единицы NAL. В некоторых случаях RBSP включает в себя нулевые биты.
[0083] Различные типы единиц NAL могут инкапсулировать различные типы RBSPs. Например, первый тип единицы NAL может инкапсулировать RBSP для набора параметров, второй тип единицы NAL может инкапсулировать RBSP для закодированной вырезки, третий тип единицы NAL может инкапсулировать RBSP для дополнительной информации расширения (SEI), и так далее. Единицы NAL, которые инкапсулируют RBSPs для данных кодирования видео (в противоположность RBSPs для наборов параметров и сообщений SEI) могут упоминаться как уровень кодирования видео (VCL) единицы NAL. Единица NAL, которая инкапсулирует закодированную вырезку, может быть упомянута здесь как закодированная единица NAL вырезки. RBSP для закодированной вырезки может включать в себя заголовок вырезки и данные вырезки.
[0084] Видео кодер 20 может включать в закодированный поток битов видео, в дополнение к закодированным видео данным, элементы синтаксиса, которые сообщают видео декодеру как декодировать конкретный блок данных видео, или группирование их. Видео кодер 20 может включать элементы синтаксиса во множество структур синтаксиса, например, в зависимости от типа видео структуры (например, последовательность, картинка, вырезка, блок), к которой он относится, и как часто его значение может изменяться. Например, видео кодер 20 может включать элементы синтаксиса в наборы параметров, такие как набор параметров видео (VPS), набор параметров последовательности (SPS) или набор параметров картинки (PPS). В качестве других примеров, видео кодер 20 может включать элементы синтаксиса в сообщения SEI и заголовки вырезки.
[0085] Обычно видео декодер 30 может выполнять процесс декодирования, который является инверсией процесса кодирования, выполненного видео кодером. Например, видео декодер 30 может выполнять энтропийное декодирование, используя инверсию способов энтропийного кодирования, используемых видео кодером, чтобы энтропийно кодировать квантованные видео данные. Видео декодер 30 может далее обратно квантовать видео данные, используя инверсию способов квантования, используемых видео кодером 20, и может выполнять инверсию преобразования, используемого видео кодером 20, чтобы сформировать коэффициенты преобразования, которые квантованы. Видео декодер 30 может затем применить получающиеся остаточные блоки к смежным опорным видео данным (внутреннее предсказание), предсказывающим блокам от другой картинки (внешнее предсказание), или предсказывающим блокам от одной и той же картинки (IntraBC), чтобы сформировать блок видео для возможного отображения. Видео декодер 30 может быть сконфигурирован, проинструктирован, управляться или предписан, чтобы выполнить инверсию различных процессов, выполненных видео кодером 20, на основании элементов синтаксиса, предоставленных видео кодером 20 с закодированными видео данными в потоке битов, принятом видео декодером 30.
[0086] Каждая картинка может содержать компонент яркости и один или более компонентов цветности. Соответственно, основанные на блоках операции кодирования и декодирования, описанные в настоящем раскрытии, могут быть одинаково применимыми к блокам, например, единицам CU, единицам PU и единицам TU, включая ассоциированные с пиксельными значениями цветности или яркости.
th
[0087] IntraMC (также называемый IntraBC) является специализированным способом, который позволяет удалить внутри картинки избыточность и улучшить эффективность кодирования внутри кадра, как сообщается в Budagavi et al., “AHG8: Video coding using Intra motion compensation,” Document: JCTVC-M0350, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13 Meeting: Incheon, KR, 18-26 Apr. 2013 (в дальнейшем, “JCT-VC M0350”). JCT-VC M0350 включен здесь по ссылки полностью, и доступен для загрузки по адресут <http://phenix.int-evry.fr/jct/doc_end_user/current_document.php? id=7601>. Согласно JCT-VC M0350, IntraMC включает в себя кодирование: (1) одномерного смещения или вектора смещения (также названный здесь вектор блока, вектор движения, или “MV”), который указывает позицию сигнала предсказания, например, блока в пределах одного и того же кадра или картинки, смещенной от текущего блока видео, например, CU, вместе с (2) остаточным сигналом. Для единиц CU или других блоков, которые используют IntraMC, сигналы предсказания получают из уже восстановленной области в одной и той же картинке.
[0088] Существуют некоторые ограничения и проблемы, ассоциированные с существующими предложениями для IntraMCе или IntraBC, например, как представлено в JCT-VC M0350. Например, согласно способам IntraMCа, представленным в JCT-VC M0350, предсказывающий блок данных видео должен быть или непосредственно выше или непосредственно слева от текущего блока данных видео, то есть, диапазон поиска для предсказывающего блока только включает в себя блоки непосредственно выше или непосредственно слева от текущего блока данных видео. Следовательно, согласно способам IntraMCа, представленным в JCT-VC M0350, видео кодер только сигнализирует информацию, определяющую одномерный вектор блока, к видео декодеру. Вектор блока является или горизонтальным смещением или вертикальным смещением, и видео кодер кодирует флаг, чтобы сигнализировать направление к видео декодеру.
[0089] В качестве другого примера, согласно способам IntraMCа, представленным в JCT-VC M0350, вектор движения может указывать на местоположение вне текущей LCU или CTU, что может усложнить структуру системы, когда конвейерная обработка уровня LCU должна быть поддержана. Например, когда параллельное кодирование выполняется на уровне LCU, другие единицы LCU в той же картинке, что и текущая LCU, не будут восстановлены во время кодирования текущей CU. Таким образом, единицы CU в пределах такой единицы LCU будет недоступны, чтобы обеспечить сигнал предсказания для предсказания согласно IntraMCа. Дополнительно, согласно способам IntraMCа, представленным в JCT-VC M0350, вектора движения кодируют с помощью кодирования кодом с фиксированной длиной (FLC), которое может быть не очень эффективным.
[0090] Как описано выше, может быть выгодно для видео кодировщика, например, видео кодер 20 и/или видео декодер 30, предсказывать текущий блок видео из большего набора ранее восстановленных блоков данных видео в пределах одного и того же кадра, то есть, одной и той же картинки, а не только вертикальных или горизонтальных соседних блоков, идентифицированных с одномерными векторами. Посредством включения большего количества блоков видео в предсказывающий набор видео кодировщик может достигнуть более точного предсказания текущего блока видео, таким образом увеличивая эффективность кодирования. В некоторых примерах видео кодировщик, например, видео кодер 20 и/или видео декодер 30, может реализовать способы настоящего раскрытия, чтобы улучшить эффективность и точность предсказания текущих блоков видео на основании ранее закодированных блоков видео в одной и той же картинке, используя IntraBC, посредством определения предназначенной области таким образом, которая включает в себя доступные восстановленные выборки и, в некоторых случаях, выборки, для которых не было выполнено фильтрование в контуре, такое как удаление блочности и фильтрование с адаптивным смещением выборок (SAO). В некоторых примерах способы настоящего раскрытия могут улучшить эффективность и точность предсказания текущих блоков видео на основании ранее закодированных блоков видео в одной и той же картинке, используя IntraBC, разрешая видео кодировщику идентифицировать и закодировать предсказывающий двумерный вектор текущего двумерного вектора, например, вектора блока или вектора движения, текущего блока данных видео. Дополнительно, в некоторых примерах видео кодер 20 и/или видео декодер 30 могут улучшить эффективность и точность предсказания текущих блоков видео на основании ранее закодированных блоков видео в одной и той же картинке, используя IntraBC, при использовании различных данных способов кодирования и декодирования, которые могут быть адаптивными на основании размера блока, позиции блока, или множества других факторов.
[0091] ФИГ. 2 является концептуальной диаграммой, иллюстрирующей примерный способ для того, чтобы предсказывать текущий блок данных 102 видео в пределах текущей картинки 103 согласно режиму для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки согласно этому раскрытию, например, согласно режиму IntraBC в соответствии с способами настоящего раскрытия. ФИГ. 2 иллюстрирует предсказывающий блок данных 104 видео в пределах текущей картинки 103. Видео кодировщик, например, видео кодер 20 и/или видео декодер 30, может использовать предсказывающий блок 104 видео, чтобы предсказывать текущий блок 102 видео согласно режиму IntraBC в соответствии с способами настоящего раскрытия.
[0092] Видео кодер 20 выбирает предсказывающий блок 104 видео для того, чтобы предсказывать текущий блок 102 видео из набора ранее восстановленных блоков данных видео. Видео кодер 20 восстанавливает блоки данных видео посредством обратного квантования и обратного преобразования видео данных, которые также включены в закодированный поток битов видео, и суммирования получающихся остаточных блоков с предсказывающими блоками, использованными для предсказания восстановленных блоков данных видео. В примере согласно ФИГ. 4, предназначенная область 108 в пределах картинки 103, которая может также упоминаться как “предназначенная область” или “растровая область,” включает в себя набор ранее восстановленных блоков видео. Видео кодер 20 может определить предназначенную область 108 в пределах картинки 103 множеством путей, как описано более подробно ниже. Видео кодер 20 может выбрать предсказывающий блок 104 видео, чтобы предсказывать текущий блок 102 видео из числа блоков видео в предназначенной области 108 на основании анализа относительной эффективности и точности предсказания, и кодировать текущий блок 102 видео на основании различных блоков видео в пределах предназначенной области 108.
[0093] Видео кодер 20 определяет двумерный вектор 106, представляющий местоположения или смещения предсказывающего блока 104 видео относительно текущего блока 102 видео. Двумерный вектор 106 движения включает в себя компонент 112 горизонтального смещения и компонент 110 вертикального смещения, которые соответственно представляют горизонтальное и вертикальное смещение предсказывающего блока 104 видео относительно текущего блока 102 видео. Видео кодер 20 может включать в себя один или более элементов синтаксиса, которые идентифицируют или определяют двумерный вектор 106 движения, например, которые определяют компонент 112 горизонтального смещения и компонент 110 вертикального смещения, в закодированном потоке битов видео. Видео декодер 30 может декодировать один или более элементов синтаксиса, чтобы определить двумерный вектор 106 движения, и использовать определенный вектор, чтобы идентифицировать предсказывающий блок 104 видео для текущего блока 102 видео.
[0094] В некоторых примерах разрешение двумерного вектора 106 движения может быть целочисленным пикселем, например, быть ограничен так, чтобы иметь целочисленное пиксельное разрешение. В таких примерах разрешение компонента 112 горизонтального смещения и компонента 110 вертикального смещения будет целочисленным пикселем. В таких примерах видео кодер 20 и видео декодер 30 не должны интерполировать пиксельные значения предсказывающего блока 104 видео, чтобы определить предиктор для текущего блока 102 видео.
[0095] В других примерах разрешение одного или обоих из компонента 112 горизонтального смещения и компонента 110 вертикального смещения могут быть субпикселбным. Например, один из компонентов 112 и 114 может иметь целочисленное пиксельное разрешение, в то время как другой имеет субпиксельное разрешение. В некоторых примерах разрешение обоих из компонента 112 горизонтального смещения и компонента 110 вертикального смещения может быть субпиксельным, но компонент 112 горизонтального смещения и компонент 110 вертикального смещения могут иметь различные разрешения.
[0096] В некоторых примерах видео кодировщик, например, видео кодер 20 и/или видео декодер 30, адаптирует разрешение компонента 112 горизонтального смещения и компонента 110 вертикального смещения на основании конкретного уровня, например, уровня блоков, уровня вырезки, или адаптации уровня картинок. Например, видео кодер 20 может сигнализировать флаг на уровне вырезки, например, в заголовке вырезки, который указывает, является ли разрешение компонента 112 горизонтального смещения и компонента 110 вертикального смещения целочисленным пиксельным разрешением или не является целочисленным пиксельным разрешением. Если флаг указывает, что разрешение компонента 112 горизонтального смещения и компонента 110 вертикального смещения не является целочисленным пиксельным разрешением, видео декодер 30 может логически вывести, что разрешение является субпиксельным разрешением. В некоторых примерах один или более элементов синтаксиса, которые являются не обязательно флагом, могут быть переданы для каждой вырезки или другого блока данных видео, чтобы указывать коллективные или индивидуальные разрешения горизонтальных компонентов смещения 112 и/или вертикальных компонентов смещения 110.
[0097] В еще других примерах, вместо флага или элемента синтаксиса, видео кодер 20 может установить на основании, и видео декодер 30 может логически вывести разрешение компонента 112 горизонтального смещения и/или компонента 110 вертикального смещения из контекстной информации разрешения. Контекстная информация разрешения может включать в себя, в качестве примеров, цветовое пространство (например, YUV, RGB, или подобное), специфический цветовой формат (например, 4:4:4, 4:2:2, 4:2:0, или подобное), размер кадра, частота кадров, или параметр квантования (QP) для картинки или последовательности картинок, которые включают в себя текущий блок 102 видео. По меньшей мере в некоторых примерах видео кодировщик может определить разрешение компонента 112 горизонтального смещения и/или компонента 110 вертикального смещения на основании информации, относящейся к ранее закодированным кадрам или картинкам. В этом способе разрешение компонента 112 горизонтального смещения и разрешение для компонента 110 вертикального смещения могут быть заранее определены, сигнализированы, могут быть логически выведены из другой, побочной информации (например, контекстной информации разрешения), или могут быть основаны на уже закодированных кадров.
[0098] Текущим блоком 102 видео может быть CU, или PU в CU. В некоторых примерах видео кодировщик, например, видео кодер 20 и/или видео декодер 30, может разделить CU, которая предсказана согласно IntraBC, на ряд единиц PU. В таких примерах видео кодировщик может определить соответствующий (например, различный) двумерный вектор 106 для каждой из единиц PU в CU. Например, видео кодировщик может разделить 2Nx2N CU на две единиц 2NxN PU, две единицы PU Nx2N, или четыре единицы PU NxN. В качестве других примеров, видео кодировщик может разделить 2Nx2N CU на ((N/2) xN+(3N/2)xN) единиц PU, ((3N/2) xN+(N/2)xN) единиц PU, (Nx(N/2)+Nx (3N/2)) единиц PU, (Nx (3N/2)+Nx (N/2)) единиц PU, четыре (N/2x2N единицы PU, или четыре 2Nx(N/2) единицы PU. В некоторых примерах видео кодировщик может предсказывать 2Nx2N CU, используя 2Nx2N PU.
[0099] Текущий блок 102 видео может быть блоком видео яркости, или блоком цветности видео, соответствующим блоку яркости видео. В некоторых примерах видео кодер 20 может закодировать только один или более элементов синтаксиса, определяющих двумерные векторы 106 для блоков видео яркости, в закодированный поток битов видео. В таких примерах видео декодер 30 может выводить двумерные векторы 106 для каждого из одного или более блоков цветности, соответствующих блокам яркости, на основании двумерного вектора, сигнализированного для блока яркости.
[0100] В зависимости от цветового формата, например, формата выборок цвета, или формата выборок цветности, видео кодировщик может выполнять понижающую дискретизацию соответствующих блоков видео цветности относительно блока видео яркости. Цветовой формат 4:4:4 не включает в себя понижающую дискретизацию, означая, что блоки цветности включают в себя то же количество выборок в горизонтальном и вертикальном направлениях, как и блок яркости. Цветовой формат 4:2:2 является подвергнутым понижающей дискретизации в горизонтальном направлении, означая, что имеется половина выборок в горизонтальном направлении в блоках цветности относительно блока яркости. Цветовой формат 4:2:0 является подвергнутым понижающей дискретизации в горизонтальном и вертикальном направлениях, означая, что имеется половина выборок в горизонтальном и вертикальном направлениях в блоках цветности относительно блока яркости.
[0101] В примерах, в которых видео кодировщики определяют векторы 106 для блоков видео цветности, на основании векторов 106 для соответствующих блоков яркости, видео кодировщики могут требовать модифицировать вектор яркости. Например, если вектор яркости 106 имеет целочисленное разрешение с компонентом 112 горизонтального смещения и/или компонентом 110 вертикального смещения, являющимся нечетным числом пикселей, и цветовой формат 4:2:2 или 4:2:0, то преобразованный вектор яркости не будет указывать целочисленное пиксельное местоположение в соответствующем блоке цветности. В таких примерах видео кодировщики могут масштабировать вектор яркости для использования в качестве вектора цветности, чтобы предсказывать соответствующий блок цветности. В некоторых примерах видео кодер 20 может определить предназначенную область 108 или масштабировать преобразованный вектор таким образом, что преобразованный вектор яркости 106 используемый для того, чтобы предсказывать блок цветности, не будет указывать на предсказывающие блоки цветности, которые не являются восстановленными, или которые подвергнуты контурному фильтрованию.
[0102] ФИГ. 3 является концептуальной диаграммой, иллюстрирующей примерный способ для того, чтобы определить предназначенную область, из которой видео кодер 20 может выбрать предсказывающий блок данных видео, чтобы предсказывать текущий блок данных видео. В примере, иллюстрированном ФИГ. 3, видео кодер 20 предсказывает и кодирует текущий блок 122 данных видео. Видео кодер 20 выбирает предсказывающий блок 124 данных видео в пределах предназначенной области 128, чтобы предсказывать текущий блок 122 видео. Видео кодер 20 определяет двумерный вектор 126, который включает в себя компонент 132 горизонтального смещения и компонент 130 вертикального смещения, который указывает смещение предсказывающего блока 124 видео относительно текущего блока 122 видео. Видео кодер 20 кодирует один или более элементов синтаксиса в закодированном потоке битов видео, определяющем двумерный вектор 126.
[0103] В некоторых примерах видео кодер 20 определяет предназначенную область 128, например, определяет размер предназначенной области, например, высоту, ширину или другое измерение, таким образом что реализация и сложность обработки, особенно в видео декодере 30, могут быть уменьшены. При этом видео кодер 20 ограничивает размер двумерного вектора 126, например, ограничивает размер компонента 130 вертикального смещения и/или компонента 132 горизонтального смещения. В некоторых примерах видео кодер 20 ограничивает предназначенную область 128, чтобы облегчить параллельную обработку видео данных видео кодером 20 и видео декодером 20. В некоторых примерах видео кодер 20 ограничивает предназначенную область 128, чтобы облегчить использование предсказывающих блоков видео без фильтрования в контуре, такого как удаление блочности и фильтрование с адаптивным смещением выборок (SAO), и, без ненужного наложения требования к памяти видео кодировщика или задержки применения такого фильтрования в контуре.
[0104] Как иллюстрировано на фиг. 3, текущий блок 122 видео находится в пределах текущей LCU 134. ФИГ. 3 также иллюстрирует соседнюю слева (левую) LCU 136 из текущих LCU. Левая LCU 136 иллюстрирована на фиг. 3, потому что блоки видео картинки типично кодируются в порядке сканирования растра от верхнего левого до правого нижнего. В примерах, в которых блоки видео картинки закодированы в другом порядке, следующее описание относительно левой LCU 136 может относиться к другой, соседней LCU текущей LCU 134.
[0105] В некоторых примерах видео кодер 20 может ограничить предназначенную область 128 таким образом, что извлеченный предсказывающий блок видео 124 находится в пределах той же LCU что и текущий блок 122 видео, то есть, в пределах текущей LCU 134. Ограничение предназначенной области 128 до текущей LCU 134 может облегчить параллельную обработку единиц LCU видео кодировщиками, потому что блоки обработки видео кодировщика не будут запрашивать информацию из другой LCU, кодируя блок текущей LCU.
[0106] В некоторых примерах, в которых предназначенная область 128 ограничена текущей LCU 134, двумерный вектор 126 может быть ограничен горизонтальным вектором, если текущий блок 122 видео является самым верхним блоком текущей LCU 134, и вертикальным вектором, если текущий блок 122 видео является крайним левым блоком текущей LCU 134. В таких примерах видео кодер 20 может закодировать один или более элементов синтаксиса, определяющих компонент 132 горизонтального смещения из двумерного вектора 126, и не должен кодировать один или более элементов синтаксиса, определяющих компонент 130 вертикального смещения из двумерного вектора 126, который должен быть нулем, если текущий блок 122 видео является самым верхним блоком текущей LCU 134. Аналогично, видео кодер 20 может закодировать один или более элементов синтаксиса, определяющих компонент 130 вертикального смещения из двумерного вектора 126, и не должен кодировать один или более элементов синтаксиса, определяющих компонент 132 горизонтального смещения из двумерного вектора 126, который должен быть нолем, если текущий блок 122 видео является крайним левым блоком текущей LCU 134. Аналогично, если предназначенная область 128 ограничена текущей LCU 134, и текущий блок 122 видео является левым верхним блоком текущей LCU 134, как горизонтальный так и вертикальный компоненты 130, 132 из двумерного вектора 126 должны быть нолем. В некоторых примерах, в которых сталкиваются с этой ситуацией, видео кодер 20 может не выполнять IntraBC, и нуждаться не в единственном любом элементе синтаксиса для IntraBC, таких как элементы синтаксиса для указания двумерного вектора 126, или любой флаг, указывающий, предсказан ли текущий блок 122 видео согласно IntraBC.
[0107] Эти способы для уменьшения сигнализации для IntraBC, когда предназначенная область ограничена текущей LCU и текущим блоком видео, находится в пределах некоторых позиций в текущей LCU, может также быть применена для способов IntraBC, ограниченных одномерными векторами движения, например, также предложенными в JCT-VC M0350. Например, если вектор вертикального движения ограничен, чтобы быть в пределах текущей LCU, и текущий блок является самым верхним блоком, нет необходимости сигнализировать, является ли движение вертикальным или горизонтальным.
[0108] В некоторых примерах видео кодер 20 может ограничить предназначенную область 128, чтобы быть в пределах текущей LCU 134, и части восстановленной области в одной или более соседних единиц LCU, например, левой LCU 136, как иллюстрировано на фиг. 3. В этом способе видео кодер 20 ограничивает двумерные векторы 126 таким образом, что они могут относиться, в дополнение к восстановленным блокам в текущей LCU 134, только к блокам в восстановленной области одной или более соседних единиц LCU, таких как левая LCU 136, как иллюстрировано на фиг. 3.
[0109] В некоторых примерах видео кодер 20 ограничивает размер предназначенной области 128 на основании размера текущей LCU 134. Например, как иллюстрировано на фиг. 3, видео кодер 20 может ограничить высоту 138 из предназначенной области 128 на основании высоты (или верхний вертикальный предел) текущей LCU 134, таким образом что предназначенная область 128 не простирается вертикально вне текущей LCU 134 и левой LCU 136. Размер LCU (или CTB) может быть сигнализирован видео кодером 20 к видео декодеру 30 в закодированном потоке битов видео, например, через заголовок вырезки, набор параметров, или сообщение SEI, и таким образом ограничение в отношении предназначенной области на основании размера LCU может также быть эффективно сигнализировано к видео декодеру 30. В некоторых примерах видео кодер 20 ограничивает размер, например, высоту 138 или ширину 140 слева от текущего блока 122 видео, предназначенной области 128 на основании целого числа пикселей. Например, видео кодер 20 может ограничить ширину 140 слева от текущего блока 122 видео до целого числа пикселей, такого как 64, которое может соответствовать ширине единиц LCU 134 и 136.
[0110] Видео кодер 20 может ограничить предназначенную область 128, чтобы включать восстановленные блоки видео без фильтрования в контуре, такого как удаление блочности и фильтрование с адаптивным смещением выборок (SAO). В этом способе видео кодер 20 может ограничить двумерные векторы для IntraBC таким образом, что они могут относиться, в дополнение к текущей LCU 134, только к блокам в восстановленной области соседней LCU, такой как левая LCU 136, для которых не было выполнено фильтрование в контуре. Видео кодер 20 мог увеличить размер предназначенной области 128, но такие увеличения могут задержать фильтрование в контуре и дальнейшую обработку блоков видео в предназначенной области, или потребовать дополнительной памяти для хранения выборок до фильтрования в контуре. Соответственно, видео кодер 20 может ограничить предназначенную область 128, например, как описано в настоящем описании, чтобы достигнуть баланса между точностью предсказания и эффективностью.
[0111] ФИГ. 4A-4C являются концептуальными диаграммами, иллюстрирующими границы для того, чтобы определить предназначенную область 128 относительно выборок данных видео, которые подвергнуты фильтрации удаления блочности в соседней LCU. Согласно HEVC, видео кодировщики могут применять фильтрование удаления блочности для каждого 8x8 блока и, когда применяется, затрагиваются только три линии выборок вдоль краев. Поэтому в некоторых примерах видео кодер 20 может расширить предназначенную область и увеличить размер вектора двумерного блока, чтобы ссылаться вне текущей LCU, но ограничить предназначенную область и размер вектора блока до области, которая не была фильтрована в контуре в ранее закодированной соседней LCU.
[0112] ФИГ. 4A иллюстрирует текущую LCU 150 и левую соседнюю LCU 152. На ФИГ. 4A фильтрованные для удаления блочности пиксели 154 в левой LCU 152, иллюстрированы закрашенными кругами. Не фильтрованные для удаления блочности пиксели 156, которые не будут фильтрованы для удаления блочности, потому что они не являются ближайшими к краю левой LCU 152, и поэтому не затрагиваются горизонтальным или вертикальным фильтрованием удаления блочности, показаны на фиг. 4A как затемненные круги. Не фильтрованные для удаления блочности пиксели 158, которые еще не были фильтрованы для удаления блочности, потому что, хотя они являются ближайшими к краю левой LCU 152, правая или нижняя LCU не доступны, показаны на фиг. 4A как пустые круги. Линия 160 иллюстрирует примерную границу предназначенной области и ограничение размера вектора двумерного блока, который может быть применен видео кодером 20 при кодировании блоков данных видео в пределах текущей LCU 150.
[0113] ФИГ. 4B иллюстрирует текущую LCU 161 и левую соседнюю LCU 162. На ФИГ. 4B фильтрованные для удаления блочности пиксели 164 в левой LCU 162, иллюстрированы закрашенными кругами. Не фильтрованные для удаления блочности пиксели 166, которые не будут фильтрованы для удаления блочности, потому что они не являются ближайшими к краю левой LCU 162, и поэтому не затрагиваются горизонтальным или вертикальным фильтрованием удаления блочности, показаны на фиг. 4B как затемненные круги. Не фильтрованные для удаления блочности пиксели 168, которые еще не были фильтрованы для удаления блочности, потому что, хотя они являются ближайшими к краю левой LCU 162, правая или нижняя LCU не доступна, показаны на фиг. 4B как пустые круги.
[0114] Видео кодировщик может выполнять горизонтальное фильтрование удаления блочности с последующим вертикальным фильтрованием удаления блочности. Поэтому, видео кодировщик может горизонтально фильтровать пиксели в более нижней левой части левой LCU 162 до вертикального фильтрования пикселей вдоль низа левой LCU 162, когда более нижние соседние единицы LCU становятся доступными. Чтобы облегчить такое горизонтальное фильтрование, видео кодер 20 может ограничить предназначенную область в пределах левой LCU 162, например, на основании вертикальной линии 169, иллюстрированной на фиг. 4B, чтобы обеспечить горизонтальное фильтрование этих пикселей.
[0115] ФИГ. 4C иллюстрирует текущую LCU 170 и верхнюю соседнюю LCU 172. На ФИГ. 4C, фильтрованные для удаления блочности 174 в верхней соседней LCU 172 иллюстрированы закрашенными кругами. Не фильтрованные для удаления блочности пиксели 176, которые не будут фильтрованы для удаления блочности, потому что они не являются ближайшими к краю верхней LCU 172, и поэтому не затрагиваются горизонтальным или вертикальным фильтрованием удаления блочности, показаны на фиг. 4C как затемненные круги. Не фильтрованные для удаления блочности пиксели 178, которые еще не были фильтрованы для удаления блочности, показаны на фиг. 4C как пустые круги.
[0116] В случае верхней соседней LCU 172 видео кодер 20 может ограничить предназначенную область и векторы двумерного блока, как иллюстрировано линией 180 на фиг. 4C. Однако, в случае верхней соседней LCU 172, ограничение, иллюстрированное линией 180, может привести к задержке горизонтального фильтрования удаления блочности пикселей в области ниже линии 180. Чтобы обеспечить горизонтальное фильтрование удаления блочности этой области, видео кодер 20 может определить вертикальный предел предназначенной области и вектора блоков, чтобы быть в пределах текущей LCU, или не превышать верхнюю границу текущей LCU, например, как иллюстрировано на фиг. 3.
[0117] ФИГ. 5A-5C являются концептуальными диаграммами, иллюстрирующими границы для того, чтобы определить предназначенную область относительно выборок данных видео, которые подвергнуты фильтрации удаления блочности и фильтрации с адаптивным смещением выборок (SAO) в соседней LCU. ФИГ. 5A иллюстрирует текущую LCU 190 и левую соседнюю LCU 192. На ФИГ. 5A фильтрованные для удаления блочности пиксели 194 в левой LCU 152 иллюстрированы закрашенными кругами. Не фильтрованные для удаления блочности пиксели 196, который не будут фильтрованы для удаления блочности, показаны на фиг. 5A как затемненные круги. Не фильтрованные для удаления блочности пиксели 198, которые еще не были фильтрованы для удаления блочности, показаны на фиг. 5A как пустые круги.
[0118] Дополнительно, пиксели 200, которые не были фильтрованы для удаления блочности, но были SAO-фильтрованы, иллюстрированы на фиг. 5A как заштрихованные круги. Линия 202 иллюстрирует примерную границу предназначенной области и ограничение размера вектора двумерного блока, который может быть применен видео кодером 20 при кодировании блоков данных видео в пределах текущей LCU 190. Как иллюстрировано линией 202, видео кодер 20 может ограничить предназначенную область, чтобы избежать SAO-фильтрованных пикселей 200. Соответственно, линия 202 и соответствующая граница предназначенной области, могут быть перемещены относительно линии 160 из ФИГ. 4A.
[0119] ФИГ. 5B иллюстрирует текущую LCU 210 и левую соседнюю LCU 212. На ФИГ. 5B фильтрованные для удаления блочности пиксели 214 в левой LCU 212, иллюстрированы закрашенными кругами. Не фильтрованные для удаления блочности пиксели 216, которые не будут фильтрованы для удаления блочности, показаны на фиг. 5B как затемненные круги. Не фильтрованные для удаления блочности пиксели 218, которые еще не были фильтрованы для удаления блочности, показаны на фиг. 5B как пустые круги. Дополнительно, пиксели 220, которые не были фильтрованы для удаления блочности, но были SAO-фильтрованы, иллюстрированы на фиг. 5B как заштрихованные круги.
[0120] Как описано выше, видео кодировщик может выполнять горизонтальное фильтрование удаления блочности, сопровождаемое вертикальным фильтрованием удаления блочности, например, может горизонтально фильтровать пиксели в более нижней левой части левой LCU 212 до вертикального фильтрования пикселей вдоль низа левой LCU 162, когда более нижние соседние единицы LCU становятся доступными. Чтобы облегчить такое горизонтальное фильтрование, видео кодер 20 может ограничить предназначенную область в пределах левой LCU 212, например, на основании вертикальной линии 222, иллюстрированной на фиг. 5B, чтобы обеспечить горизонтальное фильтрование этих пикселей. Дополнительно, как иллюстрировано линией 222, видео кодер 20 может ограничить предназначенную область, чтобы избежать SAO-фильтрованных пикселей 220. Соответственно, линия 202 и соответствующая граница предназначенной области могут быть перемещены относительно линии 169 из ФИГ. 4B.
[0121] ФИГ. 5C иллюстрирует текущую LCU 230 и верхнюю соседнюю LCU 232. На ФИГ. 5C фильтрованные для удаления блочности фильтрованные пиксели 234 в верхней соседней LCU 232, иллюстрированы закрашенными кругами. Не фильтрованные для удаления блочности пиксели 236, которые не будут фильтрованы для удаления блочности, показаны на фиг. 5C как затемненные круги. Не фильтрованные для удаления блочности пиксели 238, которые еще не были фильтрованы для удаления блочности, показаны на фиг. 5C как пустые круги. Дополнительно, пиксели 240, которые не были фильтрованы для удаления блочности, но были SAO-фильтрованы, иллюстрированы на фиг. 5C как заштрихованные круги.
[0122] В случае верхней соседней LCU 232, видео кодер 20 может ограничить предназначенную область и векторы двумерного блока, чтобы избежать удаления блочности и SAO-фильтрованных пикселей, как иллюстрировано линией 242 на фиг. 5C, которые могут быть в другой позиции, чем линия 180 на фиг. 4C. Однако, как описано выше, расширение предназначенной области в верхней соседней LCU может привести к задержке горизонтального фильтрования удаления блочности пикселей в верхней соседней LCU. Чтобы обеспечить горизонтальное фильтрование для удаления блочности этой области, видео кодер 20 может определить вертикальное ограничение предназначенной области и векторы блоков, чтобы быть в пределах текущей LCU, или не превышать верхнюю границу текущей LCU, например, как иллюстрировано на фиг. 3.
[0123] ФИГ. 6 является концептуальной диаграммой, иллюстрирующей границу для того, чтобы определить предназначенную область относительно выборок данных видео, которые фильтрованы для удаления блочности в соседней наибольшей единице кодирования. ФИГ. 6 иллюстрирует текущую LCU 250 и левую соседнюю LCU 252. ФИГ. 6 также иллюстрирует фильтрованные для удаления блочности пиксели 254 сплошными кругами, и пиксели 256, которые не были фильтрованы для удаления блочности - пустыми кругами.
[0124] В некоторых примерах видео кодер 20 может ограничить предназначенную область и горизонтальный компонент вектора двумерного блока таким образом, что только часть левой LCU 252, которая находится справа от линии 258, может использоваться как предназначенная область. Так как горизонтальное удаление блочности левой границы левой LCU 252 может затронуть только эти три самые левые колонки пикселей в левой LCU 252, кодирование текущей LCU 250 и удаление блочности левой границы левой LCU 252 может быть выполнено в одно и то же время.
[0125] Хотя описано в контексте векторов двумерного блока, способы для определения предназначенной области, описанные со ссылками на ФИГ. 3, 4A-4C, 5A-5C, и 6, могут быть применены к IntraBC, использующему векторы одномерного блока, например, такому как IntraBC, использующему векторы одномерного блока, описанные в JCT-VC M0350. Например, выполняя IntraBC, использующее векторы одномерного блока, вместо того, чтобы ограничить вектор вертикального движения текущей LCU, вектору вертикального движения может быть разрешено простираться на четыре дополнительных самых нижних линии от верхней соседней LCU.
[0126] Хотя видео кодер 20 может определить предназначенную область, чтобы исключить фильтрованные в контуре блоки видео, видео кодировщики, например, видео кодер 20 и/или видео декодер 30, могут в конечном счете фильтровать в контуре такие блоки видео и текущий блок видео, который был закодирован с режимом IntraBC. В некоторых примерах видео кодировщики применяют фильтр удаления блочности, который также применен к блокам видео, например, единицам CU, закодированным с режимом Intra к блокам видео, например, единицам CU, закодированным с использованием режима IntraBC, как описано в настоящем описании. В некоторых примерах видео кодировщики применяют фильтр удаления блочности, который также применен к блокам видео, например, единицам CU, закодированным во внешнем режиме, к блокам видео, например, единицам CU, закодированным с использованием режима IntraBC, как описано в настоящем описании. В некоторых примерах использование фильтра удаления блочности из внутреннего режима или внешнего режима или использование любого другого фильтра удаления блочности для режима IntraBC может быть избирательным, например, на основании блока, вырезки, картинки, или последовательности.
[0127] Видео кодер 20 может также определить предназначенную область для текущего блока данных видео на основании включения/выключения и длины интерполяционного фильтра. Вообще интерполяция для пикселей в субпиксельной позиции (например, 1/2) нуждается в пикселях в соседних целочисленных позициях (например, …,-k..,-1, 0, 1.. k+1). В HEVC, k=3 для пикселей яркости и k=1 для пикселей цветности.
[0128] В случае пикселей цветности, чтобы удостовериться, что вертикально извлеченный пиксель цветности находится в предназначенной области, например, ниже вертикальной границы текущей LCU, видео кодер 20 может ограничить минимальный (например, самый отрицательный, или соответствующий наивысшей позиции от вершины границы картинки) вертикальный компонент вектора движения цветности MVc_y, чтобы указывать строку k (то есть, первая строка есть строка 0) текущей LCU. Видео кодер 20 может ограничить максимальный (например, наименее отрицательный, или соответствующий наинизшей позиции от вершины границы картинки) вектор движения цветности MVc_y, равным CU_height_chroma - k. Причина для таких ограничений в отношении предназначенной области заключается в том, что если MVc_y= -CU_height_chroma, предсказывающий блок является непосредственно верхним соседом текущей CU. Следовательно, если MVc_y есть -CU_height_chroma-0.5, видео кодировщик должен интерполировать предсказывающий блок, используя соседние целочисленные позиции, включающие в себя k пикселей в текущей CU, которые не доступны во время предсказания текущей CU.
[0129] Аналогично, чтобы удостовериться, что горизонтально извлеченные пиксели цветности находятся в предназначенной области, например, текущей LCU и левой LCU, MVc_x может быть ограничен 1. Минимальный MVc_x указывает на колонку k (первая колонка является колонкой 0) левой LCU. 2. Максимальный MVc_x=-CU_width_chroma - k.
[0130] Кроме того, видео кодер 20 может ограничить предназначенную область таким образом, что горизонтально извлеченные пиксели цветности находятся в предназначенной области, включающей в себя текущую LCU и N самых правых колонок левой соседней LCU. В качестве примеров, N может быть равно 2 для цветности и 4 для яркости, если цветовой формат есть 4:2:2 или 4:2:0, и 4 и для цветности и для яркости, если цветовой формат есть 4:4:4. N самых правых колонок левой соседней LCU могут быть обозначенными колонками x, x+1 … x+N-1 левой LCU. В некоторых примерах видео кодер 20 может ограничить MVc_x таким образом, что минимальный MVc_x указывает на колонку x+k левой LCU. Если левая соседняя LCU имеет только K колонок, где K<=x+k, минимальный MVc_x указывает на x+k-K в текущей LCU. В некоторых примерах видео кодер 20 может ограничить MVc_x таким образом что максимальный MVc_x = -CU_width_chroma - k.
[0131] Хотя описано прежде всего относительно пикселей цветности, эти способы для видео кодера 20, чтобы определить максимальные и минимальные значения горизонтального и вертикального компонентов векторов движения, которые также упоминаются как векторы блока или двумерные векторы, могут быть применены к пикселям яркости. Кроме того, как описано выше, в некоторых примерах видео кодер 20 может кодировать только один или более элементов синтаксиса, определяющих двумерные векторы для блоков видео яркости в закодированном потоке битов видео, и видео декодер 30 может выводить двумерные векторы 106 для каждого из одного или более блоков цветности, соответствующих блокам яркости, на основании двумерного вектора, сигнализированного для блока яркости. В таких примерах видео кодировщикам может потребоваться модифицировать, например, масштабировать или выполнять понижающую дискретизацию, вектор яркости для использования в качестве вектора цветности. В некоторых примерах видео кодер 20 может определить предназначенную область 108, установить максимальное и/или минимальное значения горизонтального и/или вертикального компонентов вектора блока яркости, или масштабировать преобразованный вектор таким образом, что преобразованный вектор яркости, используемый для того, чтобы предсказывать блок цветности, не будет указывать на предсказывающие блоки цветности, которые не восстановлены, или которые фильтрованы в контуре.
[0132] Кроме того, или в качестве альтернативы определению предназначенной области, избегающей использовать недоступные или фильтрованные в контуре пиксели, видео кодировщики могут использовать заполнение пикселями, чтобы разрешить векторам блока выполнять указание за пределами предназначенной области. Используя заполнение пикселями, если пиксель вне предназначенной области необходим, видео кодировщик может заменить пиксель значением самого близкого пикселя, который находится в пределах в предназначенной области, например. Например, принимая, что минимальный MVc_x для текущей LCU может указывать на колонку 0 левой соседней LCU текущей LCU, и максимальный MVc_x =-CU_width_chroma, если MVc_x указывает на субпиксельную (скажем, 1/2), позицию, опорный пиксель из левой соседней LCU упомянутой левой соседней LCU необходим для интерполяции. Например, если местоположение, которое должно быть интерполировано, равно (x=0.5, y) в левой соседней LCU, то (-k, y), (-k+1, y).. (-1, y), необходимы для того, чтобы интерполировать (x=0.5, y). Эти пиксели могут быть в левой соседней LCU левой соседней LCU текущей LCU. В таких примерах видео кодировщик может использовать пиксельное значение, равное (0, y), которые находится в левой соседней LCU, чтобы заменять эти пиксельные значения. Хотя описано относительно пикселей цветности, видео кодировщик может применить эти способы заполнения пикселями к пикселям яркости.
[0133] В некоторых примерах вместо того, чтобы кодировать элементы синтаксиса, которые непосредственно определяют двумерный вектор для IntraBC текущего блока видео, например, PU, видео кодировщики могут кодировать, например, видео кодер 20 может закодировать, и видео декодер 30 может декодировать, остаточный двумерный вектор для текущего блока видео. Видео кодер 20 может определять предсказывающий двумерный вектор, имеющий предсказывающий горизонтальный компонент и предсказывающий вертикальный компонент, для текущего двумерного вектора текущего блока видео. Видео кодер 20 может определить остаточный двумерный вектор, имеющий остаточный горизонтальный компонент и остаточный вертикальный компонент, на основании разности между текущим и предсказывающим двумерными векторами. Видео декодер 30 может также определить тот же самый предсказывающий двумерный вектор, что и видео кодер 20, и определить текущий двумерный вектор на основании суммы определенного предсказывающего двумерного вектора и декодированного остаточного двумерного вектора. Другими словами, вместо того, чтобы кодировать элементы синтаксиса для горизонтального и вертикального компонентов Vi (i может быть x или y) текущего двумерного вектора текущего блока видео, видео кодировщики могут определять горизонтальный и вертикальный компоненты PVi (где i может быть x или y) предсказывающего двумерного вектора, и кодировать только горизонтальную и вертикальную ошибку предсказания Vdi (где i может быть x или y), или остаточный двумерный вектор.
[0134] Видео кодер 20 и видео декодер 30 могут определять предсказывающий двумерный вектор множеством путей. В некоторых примерах видео кодировщики, например, видео кодер 20 и/или видео декодер 30, могут хранить переменную, хранящую последний двумерный вектор, использованный для предсказывания в последний раз блока согласно IntraBC, в памяти. В таких примерах видео кодировщики могут использовать этот сохраненный последний вектор IntraBC для последнего блока IntraBC в качестве предсказывающего двумерного вектора для текущего блока видео, например, PU.
[0135] ФИГ. 7 является концептуальной диаграммой примерного текущего блока данных видео 260 и соседних блоков данных видео 262, 264, 266, из которых могут быть выведены предсказывающие векторы - кандидаты для текущего блока данных видео. В некоторых примерах, подобно режиму слияния или режиму усовершенствованного предсказания вектора движения (AMVP) для внешнего предсказания, видео кодировщики могут определять предсказывающий двумерный вектор для текущего блока видео, например, PU, на основании двумерных векторов, использованных для предсказания соседних блоков видео, например, единиц PU, используя IntraBC. Соседние блоки, иллюстрированные на фиг. 7, включают в себя левый соседний блок 262, верхний (сверху) соседний блок 264, и верхний левый (сверху слева) соседний блок 266. Соседние блоки, иллюстрированные на фиг. 7, являются одним примером. В других примерах видео кодировщик может рассмотреть векторы больше, меньше и/или другие соседние блоки, такие как любой соседний блок, который можно рассмотреть согласно режимам слияния и AMVP для внешнего предсказания.
[0136] Предиктор может быть горизонтальным и/или вертикальным компонентом смещения двумерного вектора движения из выбранного одного из соседних блоков. В некоторых примерах предиктор имеет место всегда из конкретного соседнего блока, например, верхнего или левого. В некоторых примерах, какой из соседних блоков обеспечивает предсказывающий двумерный вектор движения для текущей PU, определяют на основании индекса PU и/или формы PU. В некоторых примерах предиктор может быть функцией (такой как среднее значение или медиана) горизонтального и/или вертикального компонентов двумерного вектора движения из множества соседних блоков.
[0137] Вообще, если соседний блок не может обеспечить предсказывающий двумерный вектор, то предсказывающий двумерный вектор (или предсказывающий двумерный вектор-кандидат) может быть установлен в нулевой или по умолчанию двумерный вектор. В некоторых примерах векторы соседних блоков будут доступны только как предсказывающие векторы для текущего блока видео, когда соседний блок видео был предсказан согласно IntraBC. Другими словами, соседние блоки, не закодированные с режимом IntraMCа, могут рассматриваться недоступными для предсказания вектора блока для текущего блока видео. Например, когда предиктор всегда имеет место из левого соседнего блока, и левый соседний блок был предсказан с режимом IntraMCа, его двумерный вектор используется как предсказывающий двумерный вектор. Когда предиктор имеет место всегда из левого соседнего блока, и левый соседний блок не был предсказан с режимом IntraMCа, видео кодировщики могут использовать нулевой вектор или вектор по умолчанию как предсказывающий двумерный вектор для текущего блока видео.
[0138] В некоторых примерах видео кодировщик может считать двумерный вектор соседних блоков видео недоступным для предсказания двумерного вектора текущего блока видео, если он не находится в той же LCU или другой большей или наибольшей единице кодирования, что и текущий блок видео, например, CU или PU. В некоторых примерах, если текущий двумерный вектор для текущего блока видео, например, PU или CU, является первой текущей CU или LCU, предсказывающий двумерный вектор для текущего блока видео может быть установлен в нулевой или двумерный вектор по умолчанию. Возможно, что верхняя соседняя CU рассматривается как недоступная, если верхняя соседняя CU и текущая CU не находятся в той же LCU. Также возможно, что левая соседняя CU рассматривается как недоступная, если левая соседняя CU и текущая CU не находятся в той же LCU.
[0139] В некоторых примерах способом, подобном режиму слияния и режиму AMVP для внешнего предсказания, видео кодер 20 и видео декодер 30 могут построить ряд предсказывающих векторов - кандидатов для текущего блока видео, который включает в себя векторы блока нескольких соседних блоков. В таких примерах видео кодер 20 может закодировать, и видео декодер 30 может декодировать, индекс, который сигнализирует, какой кандидат использован для обеспечения предсказывающего двумерного вектора для текущего блока видео. В некоторых примерах кодировщики видео могут определять компонент горизонтального смещения и компонент вертикального смещения, соответственно, предсказывающего двумерного вектора на основании различных векторов - кандидатов, например, из различных соседних блоков. В таких примерах видео кодировщики могут закодировать соответствующий индекс в горизонтальный и вертикальный компоненты смещения списка кандидатов.
[0140] В качестве одного примера, для текущей CU, закодированной согласно режиму IntraBC, чтобы закодировать ее вектор блока, видео кодировщики проверяют левую и верхнюю соседнюю единицы CU. Если ни одна из них не доступна, например, не была закодирована согласно IntraBC, видео кодировщик может определить, что предсказывающий двумерный вектор текущей CU является нулевым вектором (и для горизонтального и для вертикального компонентов). Если только одна из соседних единиц CU доступна, например, была закодирован с IntraBC, видео кодировщики используют вектор, который использовался для предсказания доступной соседней CU, как предсказывающий двумерный вектор текущего двумерного вектора текущей CU. Если обе соседние единицы CU доступны, например, были закодированы с IntraBC, и их двумерные векторы являются одинаковыми, то этот двумерный вектор используется как предсказывающий двумерный вектор. Если обе соседних единицы CU доступны, например, были закодированы с IntraBC, и их векторы блока различны, то видео кодировщики могут закодировать флаг или другой элемент синтаксиса, чтобы указывать, используется ли вектор блока из верхней соседней CU или вектор блока из левой соседнего CU, как предсказывающий двумерный вектор для текущей CU.
[0141] В другом примере видео кодировщики могут определять два или более векторов движения по умолчанию, которые могут быть из (как неограничивающий пример) набора (-w, 0), (-2w, 0), (-8, 0), (0,0), (0, 8), (0,-h), (0,-2h), где w и h - ширина и высота текущего блока видео, например, CU, и первый компонент - горизонтальное смещение, и второй компонент - вертикальное смещение. Если и левая соседняя CU и верхняя соседняя CU доступны, видео кодировщики могут использовать их векторы как первый и второй предсказывающие двумерные векторы для текущей CU. Если один из них недоступен, видео кодировщики могут использовать предсказывающий вектор по умолчанию, чтобы заменить недоступный предсказывающий вектор в списке предсказывающих векторов - кандидатов. Если они оба недоступны, видео кодировщики могут использовать два предсказывающих вектора по умолчанию, которые могут быть одинаковым или различным, чтобы заменить недоступный предсказывающий вектор в списке предсказывающие векторов - кандидатов. Преимущество замены недоступных предсказывающих векторов векторами по умолчанию в списке кандидатов состоит в том, что флаг для выбора между предсказателями может также быть включен в закодированный поток битов видео, так чтобы видео декодер 30 не должен был по условию синтаксически разбирать этот флаг. Хотя примеры описаны здесь относительно списка кандидатов, включающего в себя два предсказывающих вектора, выведенных из двух соседних блоков, если блоки/векторы доступны, в других примерах видео кодировщик может рассмотреть больше или меньше соседних блоков, и включать больше или меньше предсказывающих двумерных векторов в список кандидатов.
[0142] В некоторых примерах для первого блока видео и соответствующего двумерного вектора, используемого для IntraBC в каждой LCU, видео кодировщики могут использовать иной процесс выведения для того, чтобы определить его предсказывающий двумерный вектор, чем для других блоков и ассоциированных векторов в пределах упомянутой LCU. Например, видео кодировщик, например, видео кодер 20 и/или видео декодер 30, может определить, что предсказывающий двумерный вектор для первого блока видео и соответствующий двумерный вектор, используемый для IntraBC в LCU, являются двумерным вектором по умолчанию. Двумерный вектор по умолчанию может быть (-w, 0), где w - ширина текущего блока видео, например, CU. В других примерах двумерный вектор по умолчанию может быть равен (-2w, 0), (-8, 0), (0,0), (0, 8), (0,-h), (0,-2h), где w и h - ширина и высота текущего блока видео, например, CU. В других примерах видео кодировщик, например, видео кодер 20 и/или видео декодер 30, может выводить предсказывающий двумерный вектор для первого блока видео и соответствующий двумерный вектор, используемый для IntraBC в LCU, как в описанном в предварительной заявке на патент США № 61/893,794, поданной 21 октября 2013, и включенный полностью в настоящее описание по ссылке. В некоторых примерах видео кодировщики могут вывести предсказывающие двумерные векторы для первого блока видео, закодированного, используя IntraBC в LCU, по-разному для блоков видео, например, единиц CU, с другими размерами или в другой позиции в LCU, или, другими словами, могут вывести предсказывающие двумерные векторы для первого блока видео, закодированного, используя IntraBC в LCU, по-разному на основании размера блока видео или позиции в LCU.
[0143] В некоторых примерах видео кодировщики могут выбрать способ или способы, использованные для определения того, что горизонтальный и вертикальный компоненты двумерного вектора текущего блока видео могут быть основаны на флагах, элементах синтаксиса, или основаны на другой информации (такой как конкретное цветовое пространство (например, YUV, RGB, или подобное), конкретный цветовой формат (например, 4:2:0, 4:4:4, или подобное), размер кадра, частота кадров, или параметр квантования (QP), или на основании ранее закодированных кадров).
[0144] В некоторых примерах видео кодер 20 может закодировать флаг, например, IntraMC_flag или IntraBC_flag, чтобы указывать видео декодеру 30, закодирован ли блок видео, например, CU, используя режим для того, чтобы предсказывать текущие блоки видео на основании предсказывающих блоков видео в одной и той же картинке, который может упоминаться как режим IntraMC или IntraBC. Флаг может быть 1-битовым флагом, значение которого указывает, закодирована ли одна или более единиц CU, или другие блоки или блоки, используя режим IntraMC или IntraBC, например, как описано в настоящем описании. Видео кодировщики могут закодировать значение флага для каждого блока видео, например, CU или PU, или могут закодировать значение флага к каждому множеству блоков видео, например, в пределах вырезки, или в пределах кадра или картинки, или последовательности картинок. Видео кодировщики могут закодировать флаг в, в качестве примеров, заголовок вырезки, набор параметров (например, PPS), или сообщение SEI.
[0145] Видео кодировщики могут закодировать флаг в режиме обхода, или арифметического кодирования, например, кодировании CABAC, флаг с контекстом. В некоторых примерах видео кодировщики могут арифметически кодировать, например, CABAC кодировать, флаг с единственным, фиксированным контекстом, который не зависит из соседних блоков видео. В других примерах видео кодировщики могут арифметический кодировать, например, CABAC кодировать, флаг с контекстом, выведенным из соседних блоков видео.
[0146] Со ссылками на фиг. 7, когда видео кодировщики кодируют флаг для текущего блока видео 260, используя контекст CABAC, значение контекста может быть выведено из соседних блоков видео, таких как верхнего (сверху) соседнего блока видео 264, верхнего левого (сверху слева) соседнего блока видео 266, или левого соседнего блока видео 262. Видео кодировщики могут рассматривать соседние блоки видео, такие как верхний соседний блок видео 264, доступными для выведения контекста для текущего блока видео, когда он находится в пределах той же LCU, как текущий блок видео, и недоступными, когда соседний блок видео находится вне текущей LCU.
[0147] Как пример, для текущего блока видео, видео кодировщики могут вывести значение контекста = (верхний IntraMC_flag == 0)? 0: 1 + (левый IntraMC_flag == 0) ? 0: 1. В некоторых примерах видео кодировщики могут всегда выводить контекст для текущего блока видео 260 из конкретного одного из соседних блоков видео 262, 264, 266, например, левого соседнего блока видео 262, и значение контекста для текущего блока видео равно (левый IntraMC_flag == 0) ? 0:1. В некоторых примерах видео кодировщики кодируют флаг, используя значение контекста, которое зависит от размера блока видео, например, CU. В некоторых примерах блоки видео с различными размерами имеют различные значения контекста. Другими словами, размер каждого блока видео, например, CU, может быть ассоциирован с соответствующим уникальным значением контекста. В некоторых примерах несколько блоков видео, например, единицы CU, с различными заранее заданными размерами, совместно использует одно и то же значение контекста, и блоки видео с другими размерами используют один или более других значений контекста. Другими словами, видео кодировщики могут ассоциировать каждое из множества значений контекста с соответствующим набором или диапазоном(ами) размеров возможного блока видео, например, CU.
[0148] В некоторых примерах видео кодировщики, например, видео кодер 20 и/или видео декодер 30, могут закодировать компонент горизонтального смещения и компонент вертикального смещения двумерного вектора для IntraBC (например, компонент 112 горизонтального смещения и компонент 110 вертикального смещения из двумерного вектора 106 на фиг. 2) на основании унарных кодов. В других примерах видео кодировщики могут закодировать компонент горизонтального смещения и компонент вертикального смещения на основании экспоненциальных кодов Голомба или Райса-Голомба.
[0149] В некоторых примерах горизонтальный и вертикальный компоненты смещения могут только указывать области выше и слева от текущего блока видео, и видео кодировщики могут не иметь необходимости сохранять или кодировать биты знака для этих значений. В некоторых примерах видео кодировщики могут построить систему координат таким образом, что области выше и слева от текущего блока видео могут представлять положительные направления относительно текущего блока видео. В таких примерах, если только блоки видео выше и/или слева от текущего блока видео рассматриваются как предсказывающие блоки видео - кандидаты, видео кодировщики могут не иметь необходимости сохранять или кодировать биты знака, потому что может быть заранее определено, что все значения горизонтального компонента смещения и вертикального компонента смещения представляет положительное (или отрицательное) значения и указывает блоки видео выше и/или слева от текущего блока видео.
[0150] В некоторых примерах максимальный размер этих двумерных векторов (или разность между одним или более двумерными векторами, такими как остаточный двумерный вектор) может быть малой, например, из-за определения предназначенной области и/или ограничений конвейера, как описано выше. В таких примерах видео кодер 20 может бинаризировать эти двумерные вектора движения с усеченными значениями. В некоторых примерах видео кодер 20 может использовать усеченные унарные, усеченные показательные Голомба, или усеченные коды Голомба-Райса в энтропийном кодировании двумерных векторов, например, при кодировании горизонтального компонента смещения и вертикального компонента смещения двумерных векторов.
[0151] Значение усечения, которое кодер 20 видео может использовать в любой из различных схем усеченного кодирования, описанных здесь, может быть постоянным, например, на основании размера LCU. В некоторых примерах значение усечения может быть одним и тем же для горизонтального компонента смещения и вертикального компонента смещения. В других примерах значение усечения может быть различным для горизонтального компонента смещения и вертикального компонента смещения.
[0152] Как один иллюстративный пример, если размер LCU 64, например, равен 64x64, и вертикальные компоненты двумерных векторов, ограничены, чтобы быть в пределах LCU, например, как описано выше со ссылками на ФИГ. 3, то усечение может быть равным 63 для горизонтального компонента двумерного вектора, и равным 63 - MinCUSize для вертикального компонента двумерного вектора. В некоторых примерах значение усечения может быть адаптивным в зависимости от позиции текущего блока видео в пределах LCU. Например, если вертикальный компонент двумерного вектора ограничен, чтобы быть в пределах LCU, то видео кодер может усечь векторную бинаризацию до разности между верхней позицией текущего блока видео и верхней позицией LCU.
[0153] Видео кодер 20 может энтропийно кодировать бинаризации горизонтального и вертикального компонентов двумерного вектора, используя режим обхода, или может арифметически кодировать эти бинаризации, например, с контекстом CABAC. Например, видео кодер 20 ограничивает поиск предсказывающего блока видео предназначенной областью, например, как иллюстрировано на фиг. 3, распределение компонентов двумерных векторов (MV) может не быть центрированным к нулю. Например, MV_x имеет тенденцию быть отрицательным, так как пиксели справа от текущего блока видео, например, CU, (в той же строке) не были закодированы/восстановлены. Аналогично, MV_y имеет тенденцию быть отрицательным, так как пиксели ниже текущего блока видео, например, CU, (в одной и той же колонке) не были закодированы/восстановлены.
[0154] Режим обхода может принять равную вероятность для 0 и 1. Для знака это означает, что режим обхода принимает равную вероятность того, чтобы быть положительным или отрицательным. Поскольку компоненты двумерного вектора не имеют равной вероятности того, чтобы быть положительным или отрицательным, видео кодером 20 может арифметически кодировать, например, CABAC кодировать, знак с контекстом, например, с начальной вероятностью, отличной от 0,5.
[0155] Один пример того, как видео кодер 20 может закодировать горизонтальный компонент двумерного вектора (MV_x) является следующим. Хотя описано относительно MV_x, способ мог также быть применен, чтобы закодировать вертикальный компонент двумерного вектора (MV_y), или горизонтальный или вертикальный компоненты остаточного двумерного вектора, который представляет разность между текущим вектором и предсказывающим вектором, например, mvd_x и mvd_y.
[0156] MV_x может быть представлен значением знака, и строкой бинаризации (для abs (MV_x)) b0 b1. Первый контейнер (бин) b0 указывает, больше ли нуля abs(Mv_x)>0(b0=1) или нет (b0 = 0). Видео кодер 20 может кодировать первый контейнер b0, используя CABAC с контекстом. b0 для Mv_x и Mv_y может иметь отдельные контексты, или могут совместно использовать одни и те же контексты. В некоторых примерах i-й контейнер при кодировании MV IntraBC совместно использует одни и те же контексты с i-ми контейнерами при кодировании вектора движения внешней компенсации движения. В некоторых примерах i-й контейнеры при кодировании MV IntraBC и кодировании вектора движения внешней компенсации движения совместно не используют контексты.
[0157] Следующие контейнеры b1b2 … представляют значение abs(MV_x)-1, и видео кодер 20 может закодировать эти контейнеры, используя экспоненциальные коды Голомба с параметром 3 в режиме обхода. В некоторых примерах видео кодер 20 использует другие порядки экспоненциальных кодов Голомба, например, 1, 2, 4, 5. В некоторых примерах b1 представляет, равно ли abs(MV_x)=1 (b1=1)или нет (b1=0). В некоторых примерах видео кодер 20 может закодировать b1 с режимом обхода или с контекстом CABAC.
[0158] В некоторых примерах b2b3 … представляют значение abs(MV_x)-2, и видео кодер 20 может закодировать эти контейнеры, используя экспоненциальные коды Голомба с параметром 3, или другие порядки экспоненциальных кодов Голомба, в режиме обхода. Последний контейнер может указывать знак MV_x, и видео кодер 20 может закодировать этот контейнер в режиме обхода без какого-либо контекста. В других примерах видео кодер 20 может закодировать контейнер знака, закодированный с использованием CABAC с одним или множественными контекстами. Контейнеры знака для MV_x и MV_y могут иметь отдельные контексты, или возможно, что они совместно используют одни и те же контексты.
[0159] В некоторых примерах видео кодировщики, например, видео кодер 20 и/или видео декодер 30, могут ограничить применение режима IntraBC, и любое ассоциированное кодирование флагов, векторных компонентов, или другого синтаксиса, к блокам видео некоторого размера, то есть, которые удовлетворяют некоторым критериям размера. Критериями размера могут быть один или оба из максимального размера блока и/или минимального размера блока (например, IntraMC_MaxSize и IntraMC_MinSize). Видео кодер 20 может указывать один или более критериев размера видео декодеру 30 в закодированном потоке битов видео, например, используя флаги или другие элементы синтаксиса, или видео кодировщики могут неявно определить критерии размера на основании другой информации, такой как конкретное цветовое пространство (например, YUV, RGB, или подобное), конкретный цветовой формат (например, 4:2:0, 4:4:4, или подобное), размер кадра, частота кадров, параметр квантования (QP), или на основании ранее закодированных кадров. Например, IntraBC для небольших размеров может оказать влияние на требования пропускной способности системной памяти, и видео кодировщики могут применить критерии минимального размера блока, чтобы ограничить IntraBC блоками выше порога размера.
[0160] ФИГ. 8 является блок-схемой, иллюстрирующей примерный кодер видео, который может реализовать способы, описанные в этом раскрытии. Видео кодер 20 может выполнять внутреннее и внешнее кодирование блоков видео в пределах видео вырезок. Внутреннее кодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео в пределах заданного видео кадра или картинки. Внешнее кодирование полагается на временное или предсказание между кадрами, чтобы уменьшить или удалить избыточность в видео в пределах смежных кадров или картинок видео последовательности. Внутренний режим (i режим) может относится к любому из нескольких пространственно основанных режимов сжатия. Внешнем режимы, такие как однонаправленное предсказание (P режим) или bi-предсказание (B режим), могут включать в себя любой из нескольких основанных на времени режимов сжатия. Видео кодер 20 может также конфигурироваться, чтобы использовать режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, например, режим IntraBC или IntraMCа, как описано в настоящем описании.
[0161] В примере согласно ФИГ. 8 видео кодер 20 включает в себя модуль 335 разделения, модуль 341 обработки предсказания, память 364 предназначенной области, блок 366 обработки фильтром, память 368 опорных картинок, сумматор 350, блок 352 обработки преобразования, модуль 354 обработки квантования, и модуль 356 энтропийного кодирования. Модуль 341 обработки предсказания включает в себя модуль 342 оценки движения, модуль 344 компенсации движения, модуль 346 обработки внутреннего предсказания, и модуль 348 копирования внутреннего блока (IntraBC). Для реконструкции блока видео, видео кодер 20 также включает в себя модуль 358 обработки обратного квантования, модуль 360 обработки обратного преобразования и сумматор 362.
[0162] В различных примерах блок видео кодера 20 можно дать задание, чтобы выполнить способы настоящего раскрытия. Кроме того, в некоторых примерах способы настоящего раскрытия могут быть разделены среди одного или более блоков видео кодера 20. Например, модуль 348 IntraBC может выполнять способы настоящего раскрытия, один или в комбинации с другими блоками видео кодера, такими как модуль 342 оценки движения, модуль 344 компенсации движения, модуль 346 обработки внутреннего предсказания, память 364 предназначенной области, и модуль 356 энтропийного кодирования.
[0163] Как показано на фиг. 8, видео кодер 20 принимает видео данные, и модуль 335 разделения разделяет данные на блоки видео. Это разделение может также включать в себя разделение на вырезки, плитки, или другие большие блоки, так же как разделение блока видео, например, согласно структуре квадродерева единиц LCU и единиц CU. Видео кодер 20 вообще иллюстрирует компоненты, которые кодируют блоки видео в пределах видео вырезки, которая должна быть закодирована. Вырезка может быть разделена на множественные блоки видео (и возможно на наборы блоков видео, называемых плитками).
[0164] Модуль 341 обработки предсказания может выбрать один из множества возможных режимов кодирования, таких как один из множества режимов внутреннего кодирования, один из множества внешних режимов кодирования, или режима IntraBC согласно способам, описанным в этом раскрытии, для текущего блока видео, на основании результатов ошибки (например, скорость кодирования и уровень искажения). Модуль 341 обработки предсказания может выдать получающийся предсказывающий блок сумматору 250, чтобы генерировать остаточные данные блока, и сумматору 262, чтобы восстановить текущий блок для использования в предсказании других блоков видео, например, в качестве опорной картинки.
[0165] Модуль 346 внутреннего предсказания в пределах модуля 341 обработки предсказания может выполнять кодирование с внутренним предсказанием текущего блока видео относительно одного или более соседних блоков в том же самом кадре или вырезке, что и текущий блок, который должен быть закодирован, чтобы обеспечить пространственное сжатие. Модуль 342 оценки движения и модуль 344 компенсации движения в пределах модуля 341 обработки предсказания выполняют кодирование с внешним предсказанием текущего блока видео относительно одного или более предсказывающих блоков в одном или более опорных картинок, например, чтобы обеспечить временное сжатие.
[0166] Модуль 342 оценки движения может конфигурироваться, чтобы определить режим внешнего предсказания для видео вырезки согласно заранее определенному шаблону для видео последовательности. Модуль 342 оценки движения и модуль 344 компенсации движения могут быть высоко интегрированными, но иллюстрированы отдельно в концептуальных целях. Оценка движения, выполненная модулем 342 оценки движения, является процессом генерирования векторов движения, который оценивает движение для блоков видео. Вектор движения, например, может указывать смещение PU блока видео в пределах текущего видео кадра или картинки относительно предсказывающего блока в пределах опорной картинки. Аналогично, двумерные векторы, используемые для IntraBC согласно способам настоящего раскрытия, указывают смещение PU блока видео в пределах текущего видео кадра или картинки относительно предсказывающего блока в пределах одного и того же кадра или картинки. Модуль 348 IntraBC может определить двумерные векторы, например, вектора блоков или вектора движения, для кодирования IntraBC, способом, подобным определению векторов движения модулем 342 оценки движения для внешнего предсказания, или может использовать модуль 342 оценки движения, чтобы определить двумерные векторы.
[0167] Предсказывающий блок, например, идентифицированный модулем 342 оценки движения и/или блоком IntraBC для внешнего предсказания или предсказания IntraBC, является блоком, который, как находят, близко соответствует PU блока видео, который должен быть закодирован в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой разностей квадратов (SSD), или другими метриками разности. В некоторых примерах видео кодер 20 может вычислить значения для суб-целочисленных пиксельных позиций опорных картинок, сохраненных в памяти 366 опорных картинок или предназначенной области текущей картинки, сохраненной в памяти 364 предназначенной области. Например, видео кодер 20 может интерполировать значения пиксельных позиций в одну четверть, пиксельных позиций в одну восьмую, или другие фракционные пиксельные позиции опорной картинки. Поэтому, модуль 342 оценки движения и/или модуль 348 IntraBC могут выполнять поиск предсказывающего блока относительно полных пиксельных позиций и фракционных пиксельных позиций и вывести вектор с фракционной пиксельной точностью.
[0168] Модуль 342 оценки движения вычисляет вектор движения для PU блока видео во внешне кодированной вырезке, сравнивая позицию PU с позицией предсказывающего блока опорной картинки. Опорная картинка может быть выбрана из первого списка опорных картинок (Список 0 или RefPicList0) или второго списка опорных картинок (Список 1 или RefPicList1), каждый из которых идентифицируют один или более опорных картинок, сохраненных в памяти 364 опорных картинок. Модуль 342 оценки движения посылает вычисленный вектор движения в модуль 356 энтропийного кодирования и модуль 346 компенсации движения.
[0169] Компенсация движения, выполненная модулем 344 компенсации движения, может включать в себя установку или генерирование предсказывающего блока на основании вектора движения, определенного по оценке движения, возможно выполняя интерполяции до суб-пиксельной точности. После приема вектора движения для PU текущего блока видео модуль 344 компенсации движения может определить местонахождение предсказывающего блока, на который вектор движения указывает в одном из списков опорных картинок.
[0170] В некоторых примерах модуль 348 IntraBC может генерировать двумерные векторы и извлекать предсказывающие блоки способом, подобным описанному выше относительно модуля 342 оценки движения и модуля 344 компенсации движения, но с предсказывающими блоками, находящимися в той же картинке или кадре, как и текущий блок. В других примерах модуль 348 IntraBC может использовать модуль 342 оценки движения и модуль 344 компенсации движения, полностью или частично, чтобы выполнять такие функции для предсказания IntraBC согласно способам, описанным здесь. В любом случае для IntraBC предсказывающий блок может быть блоком, который, как находят, близко соответствует блоку, который должен быть закодирован, в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), сумма разностей квадратов (SSD), или другими метриками разности, и идентификационная информация блока может включать в себя вычисление значений для суб-целочисленных пиксельных позиций.
[0171] Является ли предсказывающий блок видео из той же картинки согласно предсказанию IntraBC, или другой картинки согласно внешнему предсказанию, видео кодер 20 может сформировать остаточный блок видео, вычитая пиксельные значения предсказывающего блока из пиксельных значений текущего закодированного блока видео, формируя значения пиксельной разности. Значения пиксельной разности формируют остаточные данные для блока и могут включать в себя компоненты разности как яркости так и цветности. Сумматор 250 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 348 IntraBC и/или модуль 344 компенсации движения могут также генерировать элементы синтаксиса, ассоциированные с блоками видео и видео вырезкой для использования видео декодером 30 при декодировании блоков видео для видео вырезки. Элементы синтаксиса могут включать в себя, например, элементы синтаксиса, определяющие вектор, использованный для идентификации предсказывающего блока, любые флаги, указывающие режим предсказания, или любой другой синтаксис, описанный относительно способов настоящего раскрытия.
[0172] Модуль 346 обработки внутреннего предсказания может внутренне предсказывать текущий блок, как альтернатива внешнему предсказанию, выполненному модулем 342 оценки движения и модулем 344 компенсации движения, или предсказанию IntraBC, выполненному модулем 348 IntraBC, как описано выше. В частности, модуль 346 обработки внутреннего предсказания может определить режим внутреннего предсказания, чтобы использовать для кодирования текущего блока. В некоторых примерах модуль 346 обработки внутреннего предсказания может закодировать текущий блок видео, используя различные режимы внутреннего предсказания, например, во время отдельных проходов кодирования, и модуль 346 внутреннего предсказания (или модуль 341 обработки предсказания, в некоторых примерах) может выбрать соответствующий режим внутреннего предсказания для использования из проверенных режимов. Например, модуль 346 обработки внутреннего предсказания может вычислить значения «скорость передачи – искажение» используя анализ «скорость передачи – искажение»для различных проверенных режимов внутреннего предсказания, и выбрать режим внутреннего предсказания, имеющий лучшие характеристики «скорость передачи – искажение» среди проверенных режимов. Анализ «скорость передачи – искажение» вообще определяет величину искажения (или ошибку) между закодированным блоком и первоначальным незакодированным блоком, который был закодирован, чтобы сформировать закодированный блок, так же как частоту следования битов (то есть, количество битов), использованную для получения кодированного блока. Модуль 346 обработки внутреннего предсказания может вычислить отношения из искажений и скоростей передачи для различных закодированных блоков, чтобы определить, какой режим внутреннего предсказания показывает лучшее значение «скорость передачи – искажение» для блока.
[0173] В любом случае, после выбора режима внутреннего предсказания для блока модуль 346 обработки внутреннего предсказания может предоставить информацию, указывающую выбранный режим внутреннего предсказания для блока, к модулю 356 энтропийного кодирования. Модуль 356 энтропийного кодирования может закодировать информацию, указывающую выбранный режим внутреннего предсказания, в соответствии с способами настоящего раскрытия. Видео кодер 20 может включать в переданный поток битов данные конфигурации, которые могут включать в себя множество таблиц индексов режима внутреннего предсказания, и множество модифицированных таблиц индексов режима внутреннего предсказания (также называемых таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, и индикации наиболее вероятного режима внутреннего предсказания, таблицу индексов режима внутреннего предсказания, и модифицированную таблицу индексов режима внутреннего предсказания, чтобы использовать для каждого из контекстов.
[0174] После того как модуль 341 обработки предсказания генерирует предсказывающий блок для текущего блока видео через внешнее предсказание, внутреннее предсказание, или предсказание IntraBC, видео кодер 20 формирует остаточный блок видео, вычитая предсказывающий блок из текущего блока видео, например, с помощью сумматора 350. Остаточные видео данные в остаточном блоке могут быть включены в одну или более единиц TU и паны на модуль 352 обработки преобразования. Модуль 352 обработки преобразования преобразовывает остаточные видео данные в остаточные коэффициенты преобразования, используя преобразование, такие как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование. Модуль 352 обработки преобразования может преобразовать остаточные видео данные из пиксельной области к области преобразования, такой как частотная область.
[0175] Модуль 352 обработки преобразования может послать получающиеся коэффициенты преобразования в модуль 354 обработки квантования. Модуль 354 обработки квантования квантует коэффициенты преобразования, чтобы далее уменьшить частоту следования битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована регулировкой параметра квантования. В некоторых примерах модуль 354 обработки квантования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Альтернативно, модуль 356 энтропийного кодирования может выполнять сканирование.
[0176] После квантования модуль 356 энтропийного кодирования энтропийно кодируют квантованные коэффициенты преобразования. Например, модуль 356 энтропийного кодирования может выполнять контекстно-адаптивное кодирование с переменной длиной кода (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разделением интервала вероятности (PIPE) или другую методологию или способ энтропийного кодирования. Модуль 356 энтропийного кодирования может выполнять любой из способов, описанных в настоящем раскрытии, для бинаризации и кодирования элементов синтаксиса, включая векторные компоненты, флаги, и другие элементы синтаксиса, для предсказания согласно режиму IntraBC. После энтропийного кодирования модулем 356 энтропийного кодирования закодированный поток битов видео может быть передан к видео декодеру 30, или заархивирован для более поздней передачи или поиска видео декодером 30.
[0177] Модуль 358 обработки обратного квантования и модуль 360 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области для более позднего использования как опорный блок для предсказания других блоков видео. Модуль 344 компенсации движения и/или модуль 348 IntraBC могут вычислить опорный блок, добавляя остаточный блок к предсказывающему блоку одной из опорных картинок в пределах одного из списков опорных картинок. Модуль 344 компенсации движения и/или модуль 348 IntraBCmay также применяют один или более фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования при оценке движения.
[0178] Сумматор 362 добавляет восстановленный остаточный блок к блоку предсказания со скомпенсированным движением, произведенному модулем 344 компенсации движения и/или модулем 348 IntraBC, чтобы сформировать восстановленный блок видео. Память 364 предназначенной области хранит восстановленные блоки видео согласно определению предназначенной области для IntraBC текущего блока видео посредством видео кодера 20, например, модуля 348 IntraBC, как описано в настоящем описании. Память 364 предназначенной области может сохранить восстановленные блоки видео, которые не были в контуре фильтрованы модулем 366 обработки фильтром. Сумматор 362 может выдавать восстановленные блоки видео к модулю 366 обработки фильтром параллельно с памятью 364 предназначенной области, или память 364 предназначенной области может выдать восстановленные блоки видео на модуль 366 обработки фильтром, когда больше не нужны для предназначенной области для IntraBC. В любом случае модуль 348 IntraBC может искать восстановленные блоки видео в памяти 364 предназначенной области для предсказывающего блока видео в пределах той же картинки, что и текущий блок видео, чтобы предсказывать текущий блок видео.
[0179] Блок 366 обработки фильтром может выполнять фильтрование в контуре в отношении восстановленных блоков видео. Фильтрование в контуре может включать в себя фильтрование для удаления блочности, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Фильтрование в контуре может также включать в себя SAO-фильтрование, чтобы улучшить восстановленное видео. Восстановленные блоки, некоторые из которых могут быть в контуре фильтрованы, могут быть сохранены в памяти 368 опорных картинок как опорные картинки. Опорные картинки могут включать в себя восстановленные блоки, которые могут использоваться модулем 342 оценки движения и модулем 344 компенсации движения как предсказывающие блоки, чтобы внешне предсказывать блок в последующем видео кадре или картинке.
[0180] В этом способе видео кодер 20 может конфигурироваться, чтобы реализовать примерные способы настоящего раскрытия для внутреннего предсказания блоков данных видео из блоков предсказания данных видео в пределах одной и той же картинки, например, согласно режиму IntraBC. Например, видео кодер 20 может быть примером видео кодера, конфигурируемого, чтобы выполнить способ кодирования данных видео, включающий в себя режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, причем способ содержит выбор предсказывающего блока данных видео для текущего блока данных видео из набора ранее закодированных блоков данных видео в пределах той же картинки, что и текущий блок данных видео. Способ также содержит определение двумерного вектора, причем двумерный вектор имеет компонент горизонтального смещения и компонент вертикального смещения, при этом компонент горизонтального смещения представляет горизонтальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео, и компонент вертикального смещения представляет вертикальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео. Способ также содержит определение остаточного блока на основании текущего блока данных видео и предсказывающего блока данных видео, и кодирование, в закодированном потоке битов видео, одного или более элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора и остаточный блок
[0181] Видео кодер 20 может также быть примером видео кодера, который содержит память, сконфигурированную, чтобы сохранить закодированный поток битов видео, и один или более процессоров. Один или более процессоров конфигурируются, чтобы выбрать предсказывающий блок данных видео для текущего блока данных видео из набора ранее закодированных блоков данных видео в пределах той же картинки, что и текущий блок данных видео. Один или более процессоров далее конфигурируются, чтобы определить двумерный вектор, причем двумерный вектор имеет компонент горизонтального смещения и компонент вертикального смещения, при этом компонент горизонтального смещения представляет горизонтальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео, и компонент вертикального смещения представляет вертикальное смещение между предсказывающим блоком данных видео и текущим блоком данных видео. Один или более процессоров далее конфигурируются, чтобы определить остаточный блок на основании текущего блока данных видео и предсказывающего блока данных видео, и закодировать, в закодированном потоке битов видео, один или более элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора и остаточный блок.
[0182] ФИГ. 9 является блок-схемой, иллюстрирующей примерный декодер видео, который может реализовать способы, описанные в этом раскрытии. В примере согласно ФИГ. 9, видео декодер 30 включает в себя модуль 380 энтропийного декодирования, модуль 381 обработки предсказания, модуль 386 обработки обратного квантования, модуль 380 обработки обратного преобразования, сумматор 390, память 392 предназначенной области , модуль 394 обработки фильтром, и память 396 опорных картинок. Модуль 381 обработки предсказания включает в себя модуль 382 компенсации движения, модуль 384 обработки внутреннего предсказания, и модуль 385 копирования внутреннего блока (IntraBC). Видео декодер 30 в некоторых примерах может выполнять проход декодирования, в целом обратный к проходу кодирования, описанному относительно видео кодера 20 от ФИГ. 8.
[0183] В различных примерах модулю 30 видео декодера можно задать выполнение способов настоящего раскрытия. Кроме того, в некоторых примерах способы настоящего раскрытия могут быть разделены среди одного или более блоков видео декодера 30. Например, модуль 385 IntraBC может выполнять способы настоящего раскрытия, один или в комбинации с другими блоками видео декодера 30, такими как модуль 382 компенсации движения, модуль 384 обработки внутреннего предсказания, память 392 предназначенной области и модуль 380 энтропийного декодирования.
[0184] Во время процесса декодирования видео декодер 30 принимает закодированный поток битов видео, который представляет блоки видео закодированной видео вырезки и ассоциированные элементы синтаксиса от видео кодера 20. Модуль 380 энтропийного декодирования из видео декодера 30 энтропийно декодирует поток битов, чтобы генерировать квантованные коэффициенты, вектора движения для внешнего предсказания, двумерные векторы для предсказания IntraBC, и другие элементы синтаксиса, описанные в настоящем описании. Модуль 380 энтропийного декодирования может выполнять инверсию любого из способов, описанных в настоящем раскрытии для бинаризации и кодирования элементов синтаксиса, включая векторные компоненты, флаги, и другие элементы синтаксиса, для предсказания согласно режиму IntraBC. Модуль 380 энтропийного декодирования передает векторы и другие элементы синтаксиса к модулю 381 обработки предсказания. Видео декодер 30 может принять элементы синтаксиса на уровне последовательности, уровне картинок, уровне вырезки видео и/или уровне блока видео.
[0185] Когда видео вырезка закодирована как внутренне кодированная (I) вырезка, модуль 384 внутреннего предсказания из модуля 381 обработки предсказания может генерировать данные предсказания для блока видео текущей видео вырезки на основании сигнализированного режим внутреннего предсказания и данных от ранее декодированных блоков текущего кадра или картинки. Когда видео кадр закодирован как внешне кодированная (то есть, B или P) вырезка, модуль 382 компенсации движения из модуля 381 обработки предсказания производит предсказывающие блоки для блока видео текущей видео вырезки на основании вектора движения и других элементов синтаксиса, принятых от модуля 280 энтропийного декодирования. Предсказывающие блоки могут быть произведены из одной из опорных картинок в пределах одного из списков опорных картинок. Видео декодер 30 может построить списки опорных кадров, RefPicList0 и RefPicList1, используя способы построения по умолчанию или любой другой способ, на основании опорных картинок, сохраненных в памяти 396 опорных картинок. Когда блок видео закодирован согласно режиму IntraBC, описанному здесь, модуль 385 IntraBC из модуля 381 обработки предсказания производит предсказывающие блоки для текущего блока видео на основании двумерных векторов и других элементов синтаксиса, принятых от модуля 380 энтропийного декодирования. Предсказывающие блоки могут быть в предназначенной области в пределах той же картинки, что и текущий блок видео, определенный видео кодером 20, и извлечены из памяти 392 предназначенной области .
[0186] Модуль 382 компенсации движения и модуль 385 IntraBC определяют информацию предсказания для блока видео текущей видео вырезки, синтаксически разбирая векторы и другие элементы синтаксиса, и использует информацию предсказания, чтобы сформировать предсказывающие блоки для текущего декодируемого блока видео. Например, модуль 282 компенсации движения использует некоторые из принятых элементов синтаксиса, чтобы определить режим предсказания (например, внутреннее или внешнее предсказание), использованный для кодирования блоков видео для видео вырезки, тип вырезки внешнего предсказания (например, B вырезка или P вырезка), информацию построения для одного или более списков опорных картинок для вырезки, векторы движения для каждого внешне кодированного блока видео вырезки, статус внешнего предсказания для каждого внешне кодированного блока видео вырезки, и другую информацию, чтобы декодировать блоки видео в текущей видео вырезке. Аналогично, модуль 385 IntraBC может использовать некоторые из принятых элементов синтаксиса, например, флаг, чтобы определить, что текущий блок видео был предсказан, используя режим IntraBC, информацию построения для памяти 392 предназначенной области, указывающую, какие блоки видео картинки находятся в пределах предназначенной области и должны быть сохранены в памяти предназначенной области, двумерные векторы для каждого IntraBC-предсказанного блока видео вырезки, статус IntraBC-предсказания для каждого IntraBC-предсказанного блока видео вырезки, и другую информацию, чтобы декодировать блоки видео в текущей видео вырезке.
[0187] Модуль 382 компенсации движения и модуль 385 IntraBC могут также выполнить интерполяцию на основании фильтров интерполяции. Модуль 382 компенсации движения и модуль 385 IntraBC могут использовать фильтры интерполяции, которые используются видео кодером 20 во время кодирования блоков видео, чтобы вычислить интерполированные значения для суб-целочисленных пикселей предсказывающих блоков. В этом случае модуль 382 компенсации движения и модуль 385 IntraBC могут определять фильтры интерполяции, используемые видео кодером 20, из принятых элементов синтаксиса, и использовать эти фильтры интерполяции, чтобы сформировать предсказывающие блоки.
[0188] Модуль 386 обработки обратного квантования обратно квантует, то есть, деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные модулем 380 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видео кодером 20 для каждого блока видео в видео вырезке, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое должно быть применено. Модуль 388 обработки обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области.
[0189] После того, как модуль 382 компенсации движения или модуль 385 IntraBC генерирует предсказывающий блок для текущего блока видео на основании векторов и других элементов синтаксиса, видео декодер 30 формирует декодированный блок видео, суммируя остаточные блоки от модуля 388 обработки обратного преобразования с соответствующими предсказывающими блоками, генерируемыми модулем 382 компенсации движения и модулем 385 IntraBC. Сумматор 390 представляет компонент или компоненты, которые выполняют эту операцию суммирования, чтобы сформировать восстановленные блоки видео.
[0190] Память 392 предназначенной области хранит восстановленные блоки видео согласно определению предназначенной области для IntraBC текущего блока видео видео кодером 20, как описано в настоящем описании. Память 392 предназначенной области может сохранить восстановленные блоки видео, которые не были фильтрованы в контуре модулем 394 обработки фильтром. Сумматор 390 может обеспечить восстановленные блоки видео на модуль 394 обработки фильтром параллельно с памятью 392 предназначенной области, или память 392 предназначенной области может освободить восстановленные блоки видео на модуль 394 обработки фильтром, когда больше не нуждается в предназначенной области для IntraBC. В любом случае модуль 385 IntraBC извлекает предсказывающий блок видео для текущего блока видео из памяти 392 предназначенной области .
[0191] Модуль 394 обработки фильтром может выполнять фильтрование в контуре в отношении восстановленных блоков видео. Фильтрование в контуре может включать в себя фильтрование удаления блочности, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Фильтрование в контуре может также включать в себя SAO-фильтрование, чтобы улучшить восстановленное видео. Восстановленные блоки, некоторые из которых могут быть фильтрованы в контуре, могут быть сохранены в памяти 368 опорных картинок как опорные картинки. Опорные картинки могут включать в себя восстановленные блоки, которые могут использоваться блоком 382 компенсации движения как предсказывающие блоки, чтобы внешне предсказывать блок в последующем видео кадре или картинке. Память 396 опорных картинок также хранит декодированное видео для более позднего представления на устройстве отображения, таком как устройство 32 отображения из ФИГ. 1.
[0192] В этом способе видео декодер 30 может конфигурироваться, чтобы реализовать примерные способы настоящего раскрытия для внутреннего предсказания текущих блоков данных видео на основании предсказывающих блоков данных видео в пределах одной и той же картинки. Например, видео декодер 30 может быть примером видео декодера, конфигурируемого, чтобы выполнить способ декодирования данных видео, включающего в себя режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, причем способ содержит прием, в закодированном потоке битов видео, одного или более элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора и остаточный блок для текущего блока данных видео, и декодирование одного или более элементов синтаксиса. Способ также содержит определение предсказывающего блока данных видео для текущего блока данных видео на основании декодированных элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора, при этом предсказывающий блок данных видео является восстановленным блоком данных видео в пределах той же картинки, что и текущий блок данных видео, и восстановление текущего блока данных видео на основании предсказывающего блока данных видео и остаточного блока
[0193] Видео декодер 30 может также быть примером видео декодера, который содержит память, сконфигурированную, чтобы хранить закодированный поток битов видео, который кодирует видео данные, и один или более процессоров. Один или более процессоров видео декодера могут конфигурироваться, чтобы декодировать один или более элементов синтаксиса, определить предсказывающий блок данных видео для текущего блока данных видео на основании декодированных элементов синтаксиса, которые определяют компонент горизонтального смещения и компонент вертикального смещения двумерного вектора, при этом предсказывающий блок данных видео является восстановленным блоком данных видео в пределах той же картинки, что и текущий блок данных видео, и восстанавливать текущий блок данных видео на основании предсказывающего блока данных видео и остаточного блока.
[0194] ФИГ. 10 является блок-схемой, иллюстрирующей примерный способ для того, чтобы кодировать видео данные, включая режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, например, режим IntraBC. Примерный способ согласно ФИГ. 10 может быть выполнен видео кодером, таким как видео кодер 20, который может включать в себя модуль 348 IntraBC.
[0195] Согласно примерному способу согласно ФИГ. 10, видео кодер 20 определяет предназначенную область в пределах текущей картинки текущего блока видео (400). Как описано в настоящем описании, видео кодер 20 может определить предназначенную область, чтобы включать в себя текущую LCU, или текущую LCU и часть левой соседней LCU, которая включает в себя восстановленные блоки видео, которые не были в контуре фильтрованы. В некоторых примерах видео кодер 20 может определить предназначенную область таким образом, что ее высота или большая часть вертикальной позиции не превышают вертикальное ограничение текущей LCU. В некоторых примерах видео кодер 20 может определить предназначенную область, чтобы расширить целое количество пикселей, например, 64 или ширину LCU, в горизонтальном направлении. Определяя предназначенную область, видео кодер 20 может ограничить один или оба из горизонтального и вертикального компонентов смещения двумерного вектора, например, чтобы они были меньше чем максимальное пороговое значение или более чем минимальное пороговое значение.
[0196] Видео кодер 20 выбирает предсказывающий блок для текущего блока видео изнутри предназначенной области (402). Видео кодер 20 затем определяет двумерный вектор, например, вектор блока или вектор движения (MV), от текущего блока видео до выбранного предсказывающего блока видео (404). Видео кодер 20 определяет остаточный блок на основании, например, разности между текущим блоком видео и выбранным предсказывающим блоком видео (406). Видео кодер 20 кодирует один или более элементов синтаксиса в закодированном потоке битов видео, которые определяют двумерный вектор и остаточный блок, для предсказания текущего блока видео.
[0197] ФИГ. 11 является блок-схемой, иллюстрирующей примерный способ для того, чтобы декодировать видео данные, включая режим для внутреннего предсказания блоков данных видео, из предсказывающих блоков данных видео в пределах одной и той же картинки, например, режим IntraBC. Примерный способ на ФИГ. 11 может быть выполнен видео декодером, таким как видео декодер 30, который может включать в себя модуль 385 IntraBC.
[0198] Согласно примерному способу согласно ФИГ. 11, видео декодер 30 декодирует один или более элементов синтаксиса из закодированного видео потока битов, которые определяют двумерный вектор и остаточный блок, которые предсказывают текущий блок видео (410). Видео декодер 30 определяет предсказывающий блок в пределах той же картинки, что и текущий блок видео на основании двумерного вектора (412). Как описано в настоящем описании, предсказывающий блок может быть в пределах предназначенной области, определенной видео кодером 20, и сохранен в пределах памяти 392 предназначенной области. Видео декодер 30 может затем восстановить текущий блок видео на основании, например, суммы предсказывающего блока видео и остаточного блока (414).
[0199] ФИГ. 12 является блок-схемой, иллюстрирующей примерный способ, который включает в себя выведение двумерного вектора для блока данных видео цветности из двумерного вектора соответствующего блока данных видео яркости. Примерный способ на ФИГ. 12 может быть выполнен видео кодировщиком, таким как видео кодер 20 и/или видео декодер 30, который может включать в себя IntraBC модуль, такой как модуль 348 IntraBC или модуль 385 IntraBC.
[0200] Согласно примерному способу на ФИГ. 12, видео кодировщик кодирует, например, кодирует или декодирует, один или более элементов синтаксиса, определяющих двумерный вектор и остаточный блок для текущего блока яркости, который предсказан согласно режиму IntraBC (420). Видео кодировщик может затем вывести двумерный вектор для блока цветности, соответствующего блоку яркости, чтобы предсказывать блок цветности согласно режиму IntraBC (422). Как описано в настоящем описании, видео кодировщик может масштабировать или выполнять понижающую дискретизацию двумерного вектора для блока яркости, в зависимости от цветового формата (например, 4:4:4, 4:2:2, или 4:2:0) закодированного видео, так, чтобы вектор указал пригодные выборки в области цветности. Видео кодировщик может закодировать один или более элементов синтаксиса, определяющих остаточный блок для блока цветности, соответствующего блоку яркости (424). Видео кодировщик не должен кодировать элементы синтаксиса, указывающие отдельный двумерный вектор для блока цветности.
[0201] ФИГ. 13 является блок-схемой, иллюстрирующей примерный способ, кодирующий видео данные, включая режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, например, режим IntraBC, который включает в себя определение предсказывающих двумерных векторов. Примерный способ на ФИГ. 13 может быть выполнен видео кодером, таким как видео кодер 20, который может включать в себя модуль 348 IntraBC.
[0202] Согласно примерному способу согласно ФИГ. 13, видео кодер 20 определяет двумерный вектор на основании предсказывающего блока, выбранного из предназначенной области в той же картинке как текущий блок, для текущего блока видео (430). Видео кодер 20 определяет, является ли текущий блок видео первым блоком, предсказанным с режимом IntraBC в текущей LCU (432). Если текущий блок видео - первый блок видео (ДА на 432), видео кодер 20 может определить, что предсказывающий двумерный вектор для текущего блока видео является двумерным вектором по умолчанию (434). Как описано в настоящем описании, примерный двумерный вектор по умолчанию является (-w, 0), где w - ширина текущей единицы кодирования, содержащей текущий блок видео.
[0203] Если текущий блок видео не является первым блоком видео, предсказанным с режимом IntraBC в текущей LCU (Нет на 432), видео кодер 20 может определить последний двумерный вектор, используемый для предсказания самого недавнего ранее предсказанного блока видео согласно режиму IntraBC (436). Видео кодер 20 определяет предсказывающий вектор для текущего блока видео как этот последний двумерный вектор, используемый для IntraBC (438). На основании предсказывающего двумерного вектора, например, вектора по умолчанию или последнего вектора, видео кодер 20 может определить остаточный двумерный вектор для текущего блока видео (440). Видео кодер 20 может затем закодировать один или более элементов синтаксиса, определяющих остаточный двумерный вектор для текущего блока видео в закодированном потоке битов видео, например, вместо двумерного вектора, определенного для текущего блока видео (442).
[0204] ФИГ. 14 является блок-схемой, иллюстрирующей примерный способ, декодирующий видео данные, включая режим для внутреннего предсказания блоков данных видео из предсказывающих блоков данных видео в пределах одной и той же картинки, который включает в себя определение предсказывающих двумерных векторов. Примерный способ согласно ФИГ. 14 может быть выполнен видео декодером, таким как видео декодер 30, который может включать в себя модуль 385 IntraBC.
[0205] Согласно примерному способу на ФИГ. 14, видео декодер 30 декодирует один или более элементов синтаксиса, которые определяют остаточный двумерный вектор для текущего блока видео, из закодированного видео потока битов, например, вместо двумерного вектора, определенного для текущего блока видео видео кодером 20 (450). Видео декодер 30 определяет, является ли текущий блок видео первым блоком, предсказанным с режимом IntraBC в текущей LCU (452). Если текущий блок видео - первый блок видео (ДА на 452), видео декодер 30 может определить, что предсказывающий двумерный вектор для текущего блока видео является двумерным вектором (454) по умолчанию.
[0206] Если текущий блок видео не первый блок видео, предсказанный с режимом IntraBC в текущей LCU (Нет на 452), видео декодер 30 может определить последний двумерный вектор, используемый для предсказания наиболее недавнего ранее предсказанного блока видео согласно режиму IntraBC (456). Видео декодер 30 определяет предсказывающий вектор для текущего блока видео как этот последний двумерный вектор, используемый для IntraBC (458). На основании предсказывающего двумерного вектора, например, вектора по умолчанию или последнего вектора, и остаточного двумерного вектора, например, на основании их суммы, видео декодер 30 могут определять текущий двумерный вектор для текущего блока видео (460).
[0207] ФИГ. 15 является блок-схемой, иллюстрирующей примерный способ для того, чтобы определить предсказывающие двумерные векторы - кандидаты для текущего блока данных видео. Примерный способ на ФИГ. 15 может быть выполнен видео кодировщиком, таким как видео кодер 20 и/или видео декодер 30, который может включать в себя модуль IntraBC, такой как модуль 348 IntraBC или модуль 385 IntraBC.
[0208] Согласно примерному способу на ФИГ. 15, видео кодировщик проверяет двумерный вектор соседнего блока текущего блока видео (470), и определяет, доступен ли вектор, например, был ли соседний блок закодирован, используя IntraBC (472). Если вектор доступен (ДА на 472), видео кодировщик может вставить вектор в список предсказывающих векторов - кандидатов для текущего блока видео (474). Если вектор не доступен (Нет на 472), видео кодировщик может вставить вектор по умолчанию в список предсказывающих кандидатов для текущего блока видео (476).
[0209] Должно быть понятно, что в зависимости от примера, некоторые действия или события любого из способов, описанных в настоящем раскрытии, могут быть выполнены в различной последовательности, могут быть добавлены, слиты, или не учтены в целом (например, не все описанные действия или события необходимы для практической реализации способов). Кроме того, в некоторых примерах действия или события могут быть выполнены одновременно, например, через многопоточную обработку, обработку прерывания, или множественные процессоры, а не последовательно.
[0210] В одном или более примеров, описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены на или переданы как одна или более инструкций или код по считываемому компьютером носителю и выполнены основанным на аппаратном обеспечении блоком обработки. Считываемый компьютером носитель может включать в себя считываемый компьютером запоминающий носитель, который соответствует материальному носителю, такому как запоминающие носители данных, или коммуникационные носители, включая любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. В этом способе считываемый компьютером носитель в целом может соответствовать (1) материальным считываемым компьютером запоминающим носителям, которые являются невременными, или (2) коммуникационному носителю, такому как сигнал или несущая. Запоминающие носители данных могут быть любым доступным носителем, к которому может получить доступ один или более компьютеров или один или более процессоров, чтобы извлечь инструкции, код и/или структуры данных для реализации способов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0211] Посредством примера, а не ограничения, такие считываемые компьютером запоминающие носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может быть использован для хранения требуемого программного кода в форме инструкций или структур данных, и к которому может получить доступ компьютер. Кроме того, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции передают от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волоконно-оптический кабель, витую пару, цифровую абонентскую линию (DSL) или беспроводные технологии, такие как инфракрасное, радио- и микроволновое излучение, то эти коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL, или беспроводные технологии, такие как инфракрасное, радио- и микроволновое излучение включаются в определение носителя. Нужно подразумевать, однако, что считываемые компьютером запоминающие носители и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие временные носители, но вместо этого направлены на невременные материальные запоминающие носители. Диск (discs) и диск (disks), как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, в то время как диски (disks) обычно воспроизводят данные магнитным образом, в то время как диски (discs) воспроизводят данные оптическим образом с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в понятия считываемого компьютером носителя.
[0212] Инструкции могут быть выполнены одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASICs), программируемые пользователем логические матрицы (FPGAs), или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как используется здесь, может относится к любой предшествующей структуре или любой другой структуре, подходящей для реализации способов, описанных в настоящем раскрытии. Кроме того, в некоторых аспектах функциональные возможности, описанные в настоящем описании, могут быть предоставлены в виде специализированного аппаратного обеспечения и/или программных модулей, конфигурируемых для кодирования и декодирования, или соединены в объединенный кодек. Кроме того, способы могли быть полностью реализованы в одном или более схемах или логических элементах.
[0213] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или устройств, включая беспроводные телефоны, интегральные схемы (IC) или набор ICs (например, микропроцессорный набор). Различные компоненты, модули, или блоки описаны в этом раскрытии, чтобы подчеркнуть функциональные аспекты устройств, конфигурируемых, чтобы выполнить раскрытые способы, но не обязательно требовать реализации различными блоками аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блок аппаратного обеспечения кодека или предоставлены коллекцией взаимодействующих блоков аппаратного обеспечения, включая один или более процессоров, как описано выше, в соединении с подходящим программным обеспечением и/или программно-аппаратными средствами.
[0214] Были описаны различные примеры. Эти и другие примеры находятся в рамках следующей формулы изобретения.