Кодирование видео, используя адаптивное разрешение вектора движения

Иллюстрации

Показать все

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

Реферат

[0001] Настоящая заявка испрашивает приоритет предварительной заявки на патент США № 61/504,150, поданной 1 июля 2011 года, и предварительной заявки на патент США № 61/554,398, поданной 1 ноября 2011 года, все содержимое каждой из которых тем самым включено по ссылке.

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

[0002] Настоящее раскрытие относится к кодированию видео, и более подробно, к кодированию видео данных для компенсации движения при кодировании видео.

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

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

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

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

[0005] В целом, настоящее раскрытие обеспечивает способы для совместного кодирования значений разности векторов движения для x- и y- компонент вектора движения. Совместное кодирование значений разности векторов движения могут относиться к процессу, в котором информация, представляющая x- и y- компоненты значения разности векторов движения кодируют или декодируют вместе во время процесса кодирования, например, посредством перемежения значений для x- и y- компонент или посредством кодирования единственного значения, представляющего и x- и y- компоненты значения разности векторов движения. В некоторых примерах информация, представляющая x- и y- компоненты разности векторов движения могут включать в себя информацию, представляющую то, больше ли x- и/или y- компоненты разности векторов движения, чем нуль, и информацию, представляющую знак x- и/или y- компоненты значения разности векторов движения. Некоторая информация, такая как знак и величина x- и/или y- компонент, может быть сигнализирована условно на основании того, больше ли величина x- или y- компоненты значения разности векторов движения, чем нуль. Настоящее раскрытие также обеспечивает способы для сигнализации точности векторов движения. Вектора движения могут иметь суб-пиксельную точность, например, суб-пиксельную точность в одну четверть или пиксельную точность в одну восьмую.

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

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

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

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

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

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

[0011] Фиг.1 является блок-схемой, иллюстрирующей один пример системы кодирования и декодирования видео, совместимая с способами настоящего раскрытия.

[0012] Фиг.2 является блок-схемой, иллюстрирующей один пример видео кодера, совместимого с способами настоящего раскрытия.

[0013] Фиг.3 является блок-схемой, иллюстрирующей один пример видео декодера, совместимого с способами настоящего раскрытия.

[0014] Фиг.4 является последовательностью операций, иллюстрирующей примерный способ для совместного кодирования x- и y- компонент значения разности векторов движения и энтропийного кодирования текущего блока.

[0015] Фиг.5 является последовательностью операций, иллюстрирующей примерный способ отдельной сигнализации значения разности векторов движения в соответствии с тестовой моделью 3.0 HEVC (HM 3.0).

[0016] Фиг.6 является последовательностью операций, иллюстрирующей примерный способ для совместного кодирования x- и y- компонент значения разности векторов движения.

[0017] Фиг.7 является последовательностью операций, иллюстрирующей примерный способ для совместного кодирования x- и y- компонент значения разности векторов движения и кодировать разрешение x- и y- компонент значения разности векторов движения.

[0018] Фиг.8 является последовательностью операций, иллюстрирующей примерный способ для того, чтобы совместно декодировать x- и y- компоненты значения разности векторов движения и энтропийно декодировать кодированные данные, чтобы сформировать текущий блок.

[0019] Фиг.9 является последовательностью операций, иллюстрирующей примерный способ для того, чтобы совместно декодировать x- и y- компоненты значения разности векторов движения.

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

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

[0021] Для внутреннего предсказания видео кодер может указать смещение опорного блока, используя вектор движения. Вектор движения может иметь x- компоненту и y- компоненту. x- и y- компоненты вектора движения могут указывать смещение с суб-пиксельной точностью, такой как половинная пиксельная точность, одно-четвертная пиксельная точность, или пиксельная точность в одну восьмую. Чтобы достигнуть суб-пиксельной точности, видео кодер или декодер могут использовать метод, такой как интерполяция, чтобы определить суб-пиксельные значения в местоположениях, указанных вектором движения. После определения x- и y- компонент вектора движения, видео кодер может вычислить значения разности векторов движения (MVD) для компонентов вектора движения относительно предсказателя вектора движения.

[0022] Настоящее раскрытие в целом обеспечивает способы для совместного кодирования значений MVD движения. В настоящем раскрытии совместное кодирование может относиться к способам кодирования, в которых информация, относящаяся к x- и y- компонентам значения разности векторов движения, перемежается, в противоположность кодированию всей информации, относящейся к одной из x- или y- компонент прежде, чем кодировать какую-либо информацию, относящуюся ко второму компоненту значения разности векторов движения. Объединенное кодирование может также относиться к использованию одного значения, чтобы представить значения для обеих из x- и y- компонент. Кроме того, настоящее раскрытие также описывает способы для кодирования разности векторов движения, которые могут иметь различные суб-пиксельные точности, например, четверть-пиксельную точность или пиксельную точность в одну восьмую, и указания точности разностей векторов движения и векторов движения, ассоциированных с этими векторами движения.

[0023] Видео последовательность включает в себя один или более кадров или картинок. Каждая из картинок может быть разделена на один или более блоков, каждый из которых может быть индивидуально кодирован. Усилия предпринимаются, чтобы сформировать новый стандарт кодирования, в настоящее время называемый кодирование видео высокой эффективности (HEVC), и иногда называемый ITU H.265. Этот появляющийся стандарт относится к единице кодирования (CU) в качестве конкретного блока пикселей, включающего в себя данные яркости и данные цветности, где данные яркости имеют разрешение 2Nx2N, и данные цветности имеют разрешение NxN. Единица кодирования может быть разделена на четыре одинакового размера, квадратных, ненакладывающихся суб-единиц кодирования.

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

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

[0026] Устройство кодирования видео, такое как видео кодер или видео декодер, может определить предсказывающий вектор движения для единицы кодирования (такой как кадр, вырезка или блок). Устройство кодирования видео может использовать x- и y- компоненты предсказывающего вектора движения (также называемого предсказателем вектора движения), чтобы вычислить значения разности векторов движения вектора движения для текущего блока. Устройство кодирования видео может реализовать способы настоящего раскрытия, чтобы совместно кодировать значения разности векторов движения для векторов движения, которые могут иметь суб-пиксельную точность.

[0027] Как описано выше, данные предсказания PU для того, чтобы формировать предсказывающий блок, могут быть основаны на ранее кодированных данных пространственно соседних CU или CU, соседних во времени кадров, которые были ранее закодированы. Видео кодер может вычислить вектор движения PU, который указывает местоположение предсказывающего блока для соответствующей CU во временно отдельном ранее кодированном кадре. Видео кодер может далее вычислить значение разности векторов движения для этого вектора движения, чтобы закодировать вектор движения. Значение разности векторов движения может обычно соответствовать разности между вычисленным вектором движения и предсказателем вектора движения. Вектор движения для текущего блока может иметь x- компоненту (MV_x) для горизонтального смещения, и y- компоненту (MV_y) для вертикального смещения. Предсказатель вектора движения может иметь x- компоненту p_x и y- компоненту p_y. Затем предсказатель вектора движения может быть определен как <MV_x-p_x, MV_y-p_y>.

[0028] Настоящее раскрытие обеспечивает способы для совместного кодирования x- компоненты и y- компоненты значения разности векторов движения. В настоящем раскрытии совместное кодирование может относиться к способам кодирования, в которых информация, относящаяся к x- и y- компонентам значения разности векторов движения, перемежается. Информация, относящаяся к разности векторов движения, может включать в себя значение, которое представляет, является ли компонент разности векторов движения нулем, одним или более значениями, которые представляют значение знака x- и/или y- компонент, и одним или более значениями, представляющими абсолютное значение x- и y- компонент значения разности векторов движения, в качестве некоторых примеров.

[0029] В соответствии со способами настоящего раскрытия, информация, относящаяся к одному или обеим компонентам значения разности векторов движения, могут быть закодированы переменным способом таким образом, что вся информация, относящаяся к одной компоненте разности векторов движения, не должна быть закодирована прежде кодирования информации, относящейся к другой компоненте разности векторов движения. Другими словами, элемент x- компоненты, такой как, имеет ли x- компонента величину больше чем нуль, может перемежаться с соответствующим элементом y- компоненты. Совместное кодирование x- и y- компонент разности векторов движения контрастирует с отдельным кодированием всей информации, относящейся к одной из x- или y- компонент значения разности векторов движения, например, согласно соглашению в ITU-T H.264. Совместное кодирование x- и y- компонент значений разности векторов движения может уменьшить сложность потока битов кодирования видео, что может привести к более низкой частоте следования битов для закодированного видео, так же как и другим потенциальным преимуществам, описанным здесь.

[0030] При кодировании видео согласно обычному стандарту ITU-T H.264, вектора движения могут иметь четверть-пиксельную (то есть в одну четверть пикселя) точность. В некоторых случаях точность в одну восьмую пикселя (то есть, одну-восьмую пикселя) может обеспечить некоторые преимущества. Тестовая модель кодирования видео высокой эффективности (HM) имеет возможность сформировать блоки предсказания, используя вектора движения, имеющие пиксельную точность в одну восьмую. В частности, HM обеспечивает способность адаптивно выбрать или четверть-пиксельную точность или пиксельную точность в одну восьмую. Таким образом, вектора движения могут иметь адаптивную точность, также называемую разрешением вектора движения. Это дробная, или суб-целочисленная, пиксельная точность может быть использована для определения вектора движения относительно блока интерполированных пиксельных значений в ранее закодированном кадре.

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

[0032] Настоящее раскрытие описывает несколько способов, относящихся к кодированию вектора движения, таких как объединенное кодирование значений разности векторов движения и сигнализация точности, амплитуды и знака одного или более значений разности векторов движения. Способы настоящего раскрытия могут быть выполнены во время процесса кодирования, выполненного устройством кодирования видео, таким как видео кодер или видео декодер. В настоящем раскрытии термин ″кодирование″ относится к кодированию, которое происходит в кодере, или декодированию, которое происходит в декодере. Точно так же, термин ″кодер″ относится к кодеру, декодеру, или объединенному кодеру/декодеру (кодеку). Термины ″кодер″, ″кодировщик″, ″декодер″ и ″кодек″ все относятся к конкретным машинам, разработанным для кодирования (кодирования и/или декодирования) видео данных, совместимых с этим раскрытием.

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

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

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

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

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

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

[0039] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту сжатия видео, такому как предстоящий стандарт Кодирования видео высокой эффективности ITU-T (HEVC), также называемый ″H.265″. HEVC не был сделан заключительным, таким образом, видео кодер 20 и декодер 30 могут работать согласно последнему проекту HEVC, называемого Тестовой Моделью кодирования видео высокой эффективности (HM). Способы настоящего раскрытия, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263, и ITU-T H.264. Хотя не показано на Фиг.1, в некоторых аспектах видео кодер 20 и видео декодер 30 могут каждый интегрироваться с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексоров - демультиплексоров), или другое аппаратное обеспечение и программное обеспечение, чтобы выполнять кодирование как аудио так и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).

[0040] Стандарт HEVC в настоящее время формулируется группой экспертов по кодированию видео ITU-T (VCEG) вместе с группой экспертов по движущимся изображениям ISO/IEC (MPEG) как продукт коллективного товарищества, известного как объединенная совместная команда по кодированию видео (JCT-VC). HM предполагает несколько возможностей устройств кодирования видео по сравнению с устройствами согласно предыдущим стандартом кодирования, таким как ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM обеспечивает целых тридцать четыре режима кодирования с внутренним предсказанием.

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

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

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

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

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

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

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