ВЫБОР ЕДИНЫХ КАНДИДАТОВ РЕЖИМА СЛИЯНИЯ И АДАПТИВНОГО РЕЖИМА ПРЕДСКАЗАНИЯ ВЕКТОРА ДВИЖЕНИЯ
SELECTION OF COMMON CANDIDATES OF MODE OF CONVERGENCE AND ADAPTIVE MOTION VECTOR PREDICTION MODE

[0001] Эта заявка испрашивает приоритет предварительной заявки на патент США № 61/506,558, поданной 11 июля 2011, предварительной заявки на патент США № 61/499,114, поданной 20 июня 2011 и предварительной заявки на патент США № 61/509,007, поданной 18 июля 2011, все из которых тем самым включены в настоящее описание по ссылке во всей их полноте.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее раскрытие относится к кодированию видео, и более подробно к способам для выбора блоков-кандидатов предсказания вектора движения в процессе предсказания вектора движения.
ОБЛАСТЬ ТЕХНИКИ
[0003] Цифровые возможности видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDAs), портативные или настольные компьютеры, цифровые камеры, цифровые устройства записи, цифровые медиаплееры, видео игровые устройства, пульты видеоигр, сотовые или спутниковые радиотелефоны, устройства организации видео телеконференций и т.п. Цифровые видео устройства реализуют способы сжатия видео, такие как описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), стандарта высокоэффективного кодирования видео (HEVC), развивающегося в настоящее время, и расширениях таких стандартов, чтобы передавать, принимать и хранить цифровую видео информацию более эффективно.
[0004] Способы сжатия видео выполняют пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую видео последовательностям. Для на основании блоках кодирования видео кадр видео или вырезка могут быть разделены в блоки. Каждый блок может быть далее разделен Видео блоки во внутренне кодированной (I) вырезке картинки кодируют, используя пространственное предсказание относительно опорных выборок в соседних блоках в том же самом кадре или вырезке. Блоки во внешне кодированном (P или B) кадре или вырезке могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в том же самом кадре или вырезке или временное предсказание относительно опорных выборок в других опорных кадрах. Пространственное или временное предсказание приводит к предсказывающему блоку для блока, который должен быть кодирован. Остаточные данные представляют пиксельные разности между первоначальным блоком, который должен быть закодирован, и предсказывающим блоком.
[0005] Внешне кодированный блок кодируют согласно вектору движения, который указывает на блок опорных выборок, формирующих предсказывающий блок, и остаточным данным, указывающим разность между кодированным блоком и предсказывающим блоком. Внутренне кодированный блок кодируют согласно режиму внутреннего кодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, приводя к остаточным коэффициентам преобразования, которые затем могут квантоваться. Квантованные коэффициенты преобразования, первоначально размещенные в двумерном массиве, могут быть сканированы в конкретном порядке, чтобы сформировать одномерный вектор коэффициентов преобразования для энтропийного кодирования.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В целом настоящее раскрытие описывает способы для кодирования видео данных. Настоящее раскрытие описывает способы для выбора блоков-кандидатов предсказания вектора движения в процессе предсказания вектора движения.
[0007] В одном примере раскрытия способ кодирования вектора движения в процессе кодирования видео содержит определение одного из множества режимов для процесса предсказания вектора движения и выполнение процесса предсказания вектора движения для текущего блока видео данных, используя определенный режим и набор блоков-кандидатов, в котором набор блоков-кандидатов является одним и тем же для каждого из множества режимов.
[0008] В другом примере раскрытия способ декодирования вектора движения в процессе кодирования видео содержит определение одного из множества режимов для процесса предсказания вектора движения для текущего блока видео данных и определение блока-кандидата из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока.
[0009] В другом примере раскрытия способ кодирования вектора движения в процессе кодирования видео содержит определение одного из множества режимов для процесса предсказания вектора движения и выполнение процесса предсказания вектора движения для текущего блока видео данных, используя определенный режим и набор блоков-кандидатов, при этом набор блоков-кандидатов является одинаковым для каждого из множества режимов, в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат, и в котором дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен.
[0010] В другом примере раскрытия способ декодирования вектора движения в процессе кодирования видео содержит прием элемента синтаксиса, указывающий один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных, и прием индекса, указывающего блок-кандидат из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат, в котором этот дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока.
[0011] Детали одного или более примеров сформулированы в сопровождающих чертежах и описании ниже. Другие признаки, объекты, и преимущества будут очевидны из описания и чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0012] Фиг. 1A является концептуальным чертежом, иллюстрирующим блоки-кандидаты для предсказания вектора движения согласно режиму адаптивного предсказания вектора движения (AMVP).
[0013] Фиг. 1B является концептуальным чертежом, иллюстрирующим блоки-кандидаты для предсказания вектора движения согласно режиму слияния.
[0014] Фиг. 2 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео.
[0015] Фиг. 3 является блок-схемой, иллюстрирующей примерный кодер видео.
[0016] Фиг. 4A является концептуальным чертежом информации сигнализации для режима слияния.
[0017] Фиг. 4B является концептуальным чертежом информации сигнализации для режима AMVP.
[0018] Фиг. 5A является концептуальным чертежом, иллюстрирующим блоки-кандидаты для AMVP и режима слияния в соответствии с одним примером раскрытия.
[0019] Фиг. 5B является концептуальным чертежом, иллюстрирующим блоки-кандидаты для AMVP и режима слияния в соответствии с другим примером раскрытия.
[0020] Фиг. 6 является концептуальным чертежом, иллюстрирующим блоки-кандидаты для AMVP и режима слияния в соответствии с другим примером раскрытия.
[0021] Фиг. 7 является концептуальным чертежом, иллюстрирующим блоки-кандидаты и шаблон проверки для AMVP и режима слияния в соответствии с другим примером раскрытия.
[0022] Фиг. 8 является блок-схемой, иллюстрирующей примерный декодер видео.
[0023] Фиг. 9 является последовательностью операций, иллюстрирующей примерный способ кодирования видео.
[0024] Фиг. 10 является последовательностью операций, иллюстрирующей примерный способ кодирования видео в режиме слияния.
[0025] Фиг. 11 является последовательностью операций, иллюстрирующей примерный способ кодирования видео в режиме AMVP.
[0026] Фиг. 12 является последовательностью операций, иллюстрирующей примерный способ декодирования видео.
[0027] Фиг. 13 является последовательностью операций, иллюстрирующей примерный способ декодирования видео в режиме слияния.
[0028] Фиг. 14 является последовательностью операций, иллюстрирующей примерный способ декодирования видео в режиме AMVP.
[0029] Фиг. 15 является последовательностью операций, иллюстрирующей другой примерный способ кодирования видео.
[0030] Фиг. 16 является последовательностью операций, иллюстрирующей другой примерный способ декодирования видео.
[0031] Фиг. 17 является последовательностью операций, иллюстрирующей другой примерный способ декодирования видео в режиме слияния.
[0032] Фиг. 18 является последовательностью операций, иллюстрирующей другой примерный способ декодирования видео в режиме AMVP.
ДЕТАЛЬНОЕ ОПИСАНИЕ
[0033] В целом настоящее раскрытие описывает способы для кодирования видео данных. Настоящее раскрытие описывает способы для выбора блоков-кандидатов предсказания вектора движения в процессе предсказания вектора движения. В одном примере настоящее раскрытие предлагает, чтобы каждый из множества режимов предсказания вектора движения использовал один и тот же набор блоков-кандидатов, чтобы предсказать вектор движения для текущего блока. В другом примере настоящее раскрытие предлагает, чтобы один блок-кандидат в наборе блоков-кандидатов определялся как дополнительный блок-кандидат. Этот дополнительный блок-кандидат используется, если другой один из блоков в наборе недоступен.
[0034] Цифровые видео устройства реализуют способы сжатия видео, чтобы кодировать и декодировать цифровую видео информацию более эффективно. Сжатие видео может применять способы предсказания с пространственным (внутрикадровым) и/или временным (меж-кадровым) предсказанием, чтобы уменьшить или удалить избыточность, присущую видео последовательностям.
[0035] Для кодирования видео согласно стандарту высокоэффективного кодирования видео (HEVC), в настоящее время развиваемому объединенной совместной командой для кодирования видео (JCT-VC), видео кадр может быть разделен на единицы кодирования. Единица кодирования (CU) обычно относится к области изображения, которая служит базовой единицей, к которой различные инструменты кодирования применяются для сжатия видео. CU обычно имеет компоненту яркости, обозначенную как Y, и две компоненты цветности, обозначенные как U и V. В зависимости от формата дискретизации видео размер U и V компонент, в терминах количества выборок, может быть таким же или отличающимся от размера компоненты Y. CU является типично квадратной, и, как можно полагать, подобна так называемому макроблоку, например, в других стандартах кодирования видео, таких как ITU-T H.264.
[0036] Чтобы достигнуть лучше эффективности кодирования, единица кодирования может иметь переменные размеры в зависимости от видео контента. Кроме того, единица кодирования может быть разделена на меньшие блоки для предсказания или преобразования. В частности, каждая единица кодирования может быть далее разделена на единицы предсказания (PUs) и единицы преобразования (TUs). Единицы предсказания могут рассматриваться как аналогичные так называемому разделению в других стандартах кодирования видео, таких как H.264. Единицы преобразования (TUs) относятся к блокам остаточных данных, к которым применено преобразование, чтобы сформировать коэффициенты преобразования.
[0037] Кодирование согласно некоторым из в настоящее время предложенных аспектов развития стандарта HEVC будет описано в этой заявки в целях иллюстрации. Однако, способы, описанные в этом раскрытии, могут быть полезными для других процессов кодирования видео, таких как определенные согласно H.264 или другим стандартным или составляющим собственность процессам кодирования видео.
[0038] Усилия по стандартизации HEVC основаны на модели устройства кодирования видео, называемой Тестовой Моделью HEVC (HM). HM предполагает несколько дополнительных возможностей устройств кодирования видео перед существующими устройствами согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM обеспечивает целых тридцать четыре режима кодирования с внутренним предсказанием.
[0039] Согласно HM, CU может включать в себя одну или более единиц предсказания (PUs) и/или одну или более единиц преобразования (TUs). Данные синтаксиса в пределах потока битов могут определять наибольшую единицу кодирования (LCU), которая является наибольшей CU в терминах количества пикселей. Обычно, CU имеет аналогичную цель макроблоку H.264, за исключением того, что CU не имеет разности в размерах. Таким образом, CU может быть разделена на суб-CUs. Обычно, ссылки в этом раскрытии на CU могут относиться к наибольшей единице кодирования картинки или суб-CU в LCU. LCU может быть разделена на суб-CU, и каждая суб-CU может быть далее разделена на суб-CU. Данные синтаксиса для потока битов могут определить максимальное количество раз, сколько LCU может быть разделена, называемая глубиной CU. Соответственно, поток битов может также определять наименьшую единицу кодирования (SCU). Настоящее раскрытие также использует термин "блок" или "часть", чтобы относиться к любой из CU, PU, или TU. Обычно, "часть" может относиться к любому поднабору видео кадра.
[0040] LCU может быть ассоциирована со структурой данных квадродерева. Обычно структура данных квадродерева включает в себя один узел для каждой CU, где корневой узел соответствует LCU. Если CU разделена на четыре суб-CU, узел, соответствующий CU, включает в себя четыре листовых (концевых) узла, каждый из которых соответствует одной из суб-CU. Каждый узел структуры данных квадродерева может обеспечить данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, указывающий, разделена ли CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть определены рекурсивно, и могут зависеть от того, разделена ли CU на суб-CU. Если CU не разделена далее, на нее ссылаются как листовую (концевую) CU.
[0041] Кроме того, единицы TU листовых CU могут также быть ассоциированы с соответствующими структурами данных квадродерева. Таким образом, листовая CU может включать в себя квадродерево, указывающее, как листовая CU разделена на единицы TU. Настоящее раскрытие относится к квадродереву, указывающему, как LCU разделен как квадродерево CU и это квадродерево указывает, как листовая CU разделена на единицы TU как квадродерево TU. Корневой узел квадродерева TU обычно соответствует листовой CU, в то время как корневой узел квадродерева CU обычно соответствует LCU. Единицы TU квадродерева TU, которые не разделены, упоминаются как листовые (концевые) TU.
[0042] Листовая CU может включать в себя одну или более единиц предсказания (PU). Обычно PU представляет всю или часть соответствующей CU, и может включать в себя данные для того, чтобы извлечь опорную выборку для PU. Например, когда PU является кодированной во внешнем режиме, PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, пиксельную точность в одну четверть или пиксельную точность в одну восьмую), опорный кадр, на который указывает вектор движения и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для листовой CU, определяющие единицу(ы) PU могут также описывать, например, разделение CU в одну или более PU. Режимы разделения могут отличаться в зависимости от того, не является ли CU кодированной с предсказанием, кодированной в режиме внутреннего предсказания, или кодированной в режиме внешнего предсказания. Для внутреннего кодирования PU может быть обработана так же, как единица преобразования листа, описанный ниже.
[0043] Чтобы закодировать блок (например, единицу предсказания (PU) видео данных), сначала получают предсказатель для блока. Предсказатель может быть получен любое из внешнее (I) предсказание (то есть, пространственное предсказание) или внешнее (P или B) предсказание (то есть, временное предсказание). Следовательно, некоторые блоки предсказания могут быть внутренне кодированы (I), используя пространственное предсказание относительно соседних опорных блоков в том же самом кадре, и другие блоки предсказания могут быть внешне кодированы (P или B) относительно опорных блоков в других кадрах.
[0044] После идентификации предсказателя вычисляют разность между первоначальным видео блоком данных и его предсказателем. Эта разность также называют остатком предсказания, и относится к разностям пиксельных значений между пикселями блока, который должен быть кодирован, и соответствующими пикселями опорного блока, то есть, предсказателя. Чтобы достигнуть лучшего сжатия, остаток предсказания (то есть, массив значений пиксельной разности) обычно преобразуют, например, используя дискретное косинусное преобразование (DCT), целочисленное преобразование, преобразование Кархунена-Лоэва (Karhunen-Loeve) (K-L) или другое преобразование.
[0045] Кодирование PU с использованием внешнего предсказания вовлекает вычисление вектора движения между текущим блоком и блоком в опорном кадре. Вектора движения вычисляют с помощью процесса, названного оценкой движения (или поиском движения). Вектор движения, например, может указывать смещение блока предсказания в текущем кадре относительно опорной выборки опорного кадра. Опорная выборка может быть блоком, который, как находят, близко соответствует части CU, включая PU, кодированную в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой разностей квадратов (SSD), или другими метриками разности. Опорная выборка может иметь место где-нибудь в пределах опорного кадра или опорной вырезки. В некоторых примерах опорная выборка может иметь место во фракционной позиции пикселя. После обнаружения части опорного кадра, которая лучше всего совпадает с текущей частью, кодер определяет текущий вектор движения для текущей части как разность в местоположении от текущей части до совпадающей части в опорном кадре (то есть, от центра текущей части к центру совпадающей части).
[0046] В некоторых примерах кодер может сигнализировать вектор движения для каждой части в закодированном видео потоке битов. Сигнализированный вектор движения используется декодером, чтобы выполнить компенсацию движения, чтобы декодировать видео данные. Однако, сигнализация первоначального вектора движения непосредственно может привести к менее эффективному кодированию, поскольку большое количество битов обычно необходимо, чтобы передать информацию.
[0047] В некоторых случаях вместо непосредственной сигнализации первоначального вектора движения, кодер может предсказать вектор движения для каждого разделения, то есть, для каждой PU. При выполнении этого предсказания вектора движения кодер может выбрать набор векторов-кандидатов движения, определенных из пространственно соседних блоков в том же самом кадре, что текущая часть или вектор-кандидат движения, определенный из совместно расположенного блока в опорном кадре. Кодер может выполнить предсказание вектора движения, и если нужно, сигнализировать разность предсказания, вместо чем сигнализировать первоначальный вектор движения, чтобы уменьшить частоту следования битов в сигнализации. Векторы вектора-кандидата движения из пространственно соседних блоков могут называться как пространственные MVP-кандидаты, тогда как вектор-кандидат движения из совместно расположенного блока в другом опорном кадре может упоминаться как временный MVP-кандидат.
[0048] Два различных режима или типы предсказания вектора движения предложены в текущем рабочем проекте стандарта HEVC. Один режим упоминается как режим "слияния". Другой режим упоминается как адаптивное предсказание вектора движения (AMVP). В режиме слияния кодер инструктирует декодер, посредством сигнализации потока битов синтаксиса предсказания, скопировать вектор движения, опорный индекс (идентифицирующий опорный кадр в заданном списке опорных картинок, на который вектор движения указывает), и направление предсказания движения (которое идентифицирует список опорных картинок (Список 0 или Список 1), то есть, в терминах того, предшествует ли опорный кадр временно или следует за текущим кадром) от выбранного вектора-кандидата движения для текущей части кадра. Это достигается посредством сигнализации в потоке битов индекса в список векторов-кандидатов движения, идентифицирующий выбранный вектор-кандидат движения (то есть, конкретный пространственный MVP-кандидат или временный MVP-кандидат). Таким образом, для режима слияния синтаксис предсказания может включать в себя флаг, идентифицирующий режим (в этом случае режим "слияния") и индекс, идентифицирующий выбранный вектор-кандидат движения. В некоторых случаях вектор-кандидат движения будет в причинной части в ссылке на текущую часть. Таким образом, вектор-кандидат движения будет уже декодирован декодером. Как таковой, декодер уже принял и/или определил вектор движения, опорный индекс, и направление предсказания движения для причинной части. Как таковой, декодер может просто извлечь вектор движения, опорный индекс, и направление предсказания движения, ассоциированные с причинной частью, из памяти и копировать эти значения в качестве информации движения для текущей части. Чтобы восстановить блок в режиме слияния, декодер получает предсказывающий блок, используя полученную информацию движения для текущей части, и добавляет остаточные данные к предсказывающему блоку, чтобы восстановить закодированный блок.
[0049] В AMVP кодер инструктирует декодер, через сигнализацию потока битов, только скопировать вектор движения из части кандидата и использовать скопированный вектор в качестве предсказателя для вектора движения текущей части, и сигнализирует разность векторов движения (MVD). Опорный кадр и направление предсказания, ассоциированные с вектором движения текущей части, сообщаются по отдельности. MVD является разностью между текущим вектором движения для текущей части и предсказателем вектора движения, полученным из части кандидата. В этом случае, кодер, используя оценку движения, определяет фактический вектор движения для блока, который должен быть закодирован, и затем определяет разность между фактическим вектором движения и предсказателем вектора движения в качестве значения MVD. Таким образом, декодер не использует точную копию вектора-кандидата движения в качестве текущего вектора движения, как в режиме слияния, но может вместо этого использовать вектор-кандидат движения, который может быть "близким" по значению к текущему вектору движения, определенному из оценки движения, и добавить MVD, чтобы восстановить текущий вектор движения. Чтобы восстановить блок в режиме AMVP, декодер добавляет соответствующие остаточные данные, чтобы восстановить закодированный блок.
[0050] При большинстве обстоятельств MVD требует меньше битов сигнализации, чем весь текущий вектор движения. Также, AMVP обеспечивает более точную сигнализацию текущего вектора движения, в то же время поддерживая эффективность кодирования по посылке всего вектора движения. Напротив, режим слияния не обеспечивает спецификацию MVD, и как таковой, режим слияния жертвует точностью сигнализации вектора движения для увеличенной эффективности сигнализации (то есть, меньше битов). Синтаксис предсказания для AMVP может включать в себя флаг для этого режима (в этом случае флаг AMVP), индекс для части кандидата, MVD между текущим вектором движения и предсказывающим вектором движения от части кандидата, опорный индекс, и направление предсказания движения.
[0051] Как только оценка движения выполнена, чтобы определить вектор движения для текущей части, кодер сравнивает совпадающую часть в опорном кадре с текущей частью. Это сравнение типично вовлекает вычитание части (которая обычно упоминается как "опорная выборка") в опорном кадре из текущей части и приводит к так называемым остаточным данным, как упомянуто выше. Остаточные данные указывают значения пиксельной разности между текущей частью и опорной выборкой. Кодер затем преобразовывает эти остаточные данные из пространственной области в область преобразования, такую как частотная область. Обычно кодер применяет дискретное косинусное преобразование (DCT) к остаточным данным, чтобы достигнуть этого преобразования. Кодер выполняет это преобразование, чтобы облегчить сжатие остаточных данных, так как результирующие коэффициенты преобразования представляют различные частоты, в котором большинство энергии обычно концентрируется на нескольких низкочастотных коэффициентах.
[0052] Как правило, результирующие коэффициенты преобразования группируются способом, который допускает кодирование длин серий, особенно если коэффициенты преобразования сначала квантуются (округляются). Кодер выполняет это кодирование длин серий квантованных коэффициентов преобразования и затем выполняет статистическое кодирование без потерь (или так называемое "энтропийное"), чтобы дополнительно сжать кодированные по длинам серий квантованные коэффициенты преобразования.
[0053] После выполнения энтропийного кодирования без потерь кодер генерирует поток битов, который включает в себя закодированные видео данные. Этот поток битов также включает в себя количество элементов синтаксиса предсказания в некоторых случаях, которые задают, было ли, например, предсказание вектора движения выполнено, режим вектора движения, и индекс предсказателя вектора движения (MVP) (то есть, индекс части кандидата с выбранным вектором движения). Индекс MVP может также упоминаться в качестве его имени "mvp idx" переменной элемента синтаксиса.
[0054] В текущей структуре, предлагаемой для принятия ITU-T/ISO/IEC объединенной совместной командой в отношении кодирования видео (JCT-VC), называемого высокоэффективным кодированием видео (HEVC), кодер выполняет ряд режимов предсказания вектора движения, чтобы предсказать вектор движения для текущей части, включая 1) AM VP и 2) режим слияния, описанный выше. Эти два режима аналогичны, хотя AMVP предусматривает больше гибкости в терминах способности определить MVDs, направления предсказания движения и опорные индексы, в то время как режим слияния просто копирует эту информацию вектора движения (то есть, вектор движения, направление предсказания движения, и опорный индекс) и не учитывает повышенную точность MVD.
[0055] Фиг. 1A показывает набор блоков-кандидатов 100 (или части/блоки в PU) в настоящее время предложенный в стандарте HEVC для использования в режиме AMVP, в то время как Фиг. 1B показывает набор блоков-кандидатов 110 в настоящее время предложенный в стандарте HEVC для использования в режиме слияния. Режим AMVP использует шесть блоков-кандидатов: нижний левый (BL) блок 101, левый (L) блок 102, правый верхний (RA) блок 103, верхний (A) блок 104, левый верхний (LA) блок 105, и временный блок (T) 106. Следует отметить что в дополнение к набору блоков-кандидатов режим AMVP также определяет порядок относительно проверки блоков-кандидатов. В примере на фиг. 1A, шаблон проверки происходит следующим образом: BL-L-RA-A-LA-T. Как показано на фиг. 1B, режим слияния использует пять блоков-кандидатов: нижний левый (BL) блок 111, левый (L) блок 112, правый верхний (RA) блок 113, верхний (A) блок 114, и временный (T) блок 115. Вектора движения, ассоциированные с этими блоками-кандидатами, используются для того, чтобы определить предсказатель вектора движения в режиме слияния и режиме AMVP. Режим слияния может использовать аналогичный шаблон проверки как AMVP, или может использовать другой шаблон проверки.
[0056] Как описано выше, режим AMVP использует шесть блоков-кандидатов, в то время как режим слияния использует пять блоков-кандидатов. Кроме того, кроме правого верхнего (RA), нижнего левого (BL), и временного (T) блоков, блоки-кандидаты для режима AMVP и режима слияния находятся в различных местоположениях. Как таковое, большое количество блоков-кандидатов должно быть сохранено и рассмотрено и во время процесса кодирования и во время процесса декодирования. Кроме того, шаблон проверки для AMVP может быть не оптимальным, поскольку нижний левый блок может быть не доступен во всех обстоятельствах. Такие обстоятельства включают в себя такие, когда нижний левый блок еще не был закодирован (например, он пересекает границу вырезки или CU), или если данные для нижнего левого блока повреждены.
[0057] В этом раскрытии предложен объединенный набор блоков-кандидатов и для режима AMVP и для режима слияния. Обычно один и тот же набор блоков-кандидатов используется, независимо от того, какой используются режим предсказания вектора движения (например, режим слияния или режим AMVP). Также, меньше памяти необходимо для того, чтобы сохранить вектора движения, и другую относящуюся к внешнему предсказанию информацию (например, опорный кадр, направление предсказания, и т.д.). В других примерах этого раскрытия предложены способы для того, чтобы использовать набор блоков-кандидатов, который включает в себя дополнительный блок-кандидат. Кроме того, также раскрыты способы для более оптимального шаблона проверки.
[0058] Фиг. 2 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может конфигурироваться, чтобы использовать способы для предсказания вектора движения в соответствии с примерами этого раскрытия. Как показано на фиг. 2, система 10 включает в себя устройство-источник 12, который передает кодированное видео на устройство 14 назначения через канал связи 16. Закодированные видео данные могут также сохраняться на носителе данных 34 или файловом сервере 36 и могут быть доступны устройству 14 назначения при необходимости. Когда сохранены на носитель данных или файловый сервер, видео кодер 20 может выдать кодированные видео данные другому устройству, такому как сетевой интерфейс, устройству прожигания или штамповки компакт-диска (CD), Blu-ray или цифровой видео диска (DVD), или другие устройства, для того, чтобы сохранить закодированные видео данные на носитель данных. Аналогично, устройство, отдельное от видео декодера 30, такое как сетевой интерфейс, CD или считыватель DVD, или подобное, может извлечь кодированные видео данные с носителя данных и подать извлеченные данные к видео декодеру 30.
[0059] Устройство-источник 12 и устройство 14 назначения могут содержать любое из широкого разнообразия устройств, включая настольные компьютеры, портативные компьютеры(то есть, ноутбуки), планшетный компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые «смартфоны», телевизоры, камеры, устройства отображения, цифровые медиаплееры, видео игровые пульты, или подобное. Во многих случаях такие устройства могут быть оборудованы для беспроводной связи. Следовательно, канал связи 16 может содержать беспроводный канал, проводной канал или комбинацию беспроводных и проводных каналов, подходящих для передачи закодированных видео данных. Точно так же, к файловому серверу 36 может получить доступ устройство 14 назначения через любое стандартное соединение данных, включая интернет-соединение. Оно может включать в себя беспроводный канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.) или комбинацию обоих, которая является подходящей для того, чтобы получить доступ к закодированным видео данным, хранившим на файловом сервере.
[0060] Способы для предсказания вектора движения, в соответствии с примерами этого раскрытия, могут быть применены к кодированию видео в поддержку любого из множества мультимедийных приложений, таких как передачи телевизионного вещания, передачи кабельного телевидения, передачи спутникового телевидения, потоковые передачи видео, например, через Интернет, кодирование цифрового видео для хранения на запоминающем носителе данных, декодирование цифрового видео, сохраненного на запоминающем носителе данных, или других приложениях. В некоторых примерах система 10 может конфигурироваться, чтобы поддерживать одностороннюю или двухстороннюю передачу видео, чтобы поддерживать приложения, такие как потоковая передача видео, воспроизведение видео, вещание видео, и/или видео телефония.
[0061] В примере на фиг. 2 устройство-источник 12 включает в себя видео источник 18, видео кодер 20, модулятор/демодулятор 22 и передатчик 24. В исходном устройстве 12 видео источник 18 может включать в себя источник, такой как устройство захвата видео, такое как видео камера, видео архив, содержащий ранее захваченное видео, интерфейс подачи видео, чтобы принять видео от поставщика видео контента, и/или систему компьютерной графики для того, чтобы генерировать данные компьютерной графики в качестве исходного видео, или комбинацию таких источников. В качестве одного примера, если видео источник 18 является видео камерой, устройство-источник 12 и устройство 14 назначения могут сформировать так называемые камерофоны или видео телефоны. Однако, способы, описанные в этом раскрытии, могут быть применимыми обычно к кодированию видео, и могут быть применены к беспроводным и/или проводным приложениям, или приложению, в котором кодированные видео данные хранятся на локальном диске.
[0062] Захваченное, предварительно захваченное, или генерируемое компьютером видео может быть закодировано видео кодером 20. Кодированная видео информация может модулироваться модемом 22 согласно стандарту связи, такому как протокол беспроводной связи, и передана на устройство 14 назначения через передатчик 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, разработанные для модуляции сигнала. Передатчик 24 может включать в себя схемы, разработанные для того, чтобы передавать данные, включая усилители, фильтры и одну или более антенн.
[0063] Захваченное, предварительно захваченное, или генерируемое компьютером видео, которое кодировано видео кодером 20, может также быть сохранено на носителе данных 34 или файловом сервере 36 для более позднего использования. Носитель данных 34 может включать в себя диски Blu-ray, DVD, CD-ROM, флэш-память, или любые другие подходящие цифровые носители данных для того, чтобы хранить кодированное видео. К кодированному видео, сохраненному на носителе данных 34, может затем получить доступ устройство 14 назначения для декодирования и воспроизведения.
[0064] Файловый сервер 36 может быть любым типом сервера, способного к хранению кодированного видео и передаче этого кодированного видео на устройство 14 назначения. Файловые серверы в качестве примера включают в себя web-сервер (например, для вебсайта), сервер FTP, устройства сетевых систем хранения (NAS), локальный дисковый накопитель, или любой другой тип устройства, способного к тому, чтобы хранить закодированные видео данные и передавать его на устройство назначения. Передача закодированных видео данных от файлового сервера 36 может быть потоковой передачей, передачей загрузки или комбинацией обеих. К файловому серверу 36 может получить доступ устройство 14 назначения через любое стандартное соединение данных, включая интернет-соединение. Оно может включать в себя беспроводный канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, Ethernet, USB, и т.д.), или комбинацию обоих, которая является подходящей для того, чтобы получить доступ к закодированным видео данным, хранящимся на файловом сервере.
[0065] Устройство 14 назначения в примере на фиг. 2 включает в себя приемник 26, модем 28, видео декодер 30 и устройство 32 отображения. Приемник 26 из устройства 14 назначения принимают информацию по каналу 16, и модем 28 демодулирует информацию, чтобы сформировать демодулированный поток битов для видео декодера 30. Информация, переданная по каналу 16, может включать в себя разнообразную информацию синтаксиса, генерируемую видео кодером 20 для использования видео декодером 30 при декодировании видео данных. Такой синтаксис может также быть включен с закодированными видео данными, хранящимися на носителе данных 34 или файловом сервере 36. Каждый видео кодер 20 и видео декодер 30 может являться частью соответствующего декодера-кодера (кодек), который способен к кодированию или декодированию видео данных.
[0066] Устройство 32 отображения может интегрироваться с, или быть внешним к, устройству 14 назначения. В некоторых примерах устройство 14 назначения может включать в себя интегрированное устройство отображения и также конфигурироваться, чтобы соединяться с внешним устройством отображения. В других примерах устройство 14 назначения может быть устройством отображения. Обычно, устройство 32 отображения отображает декодированные видео данные пользователю, и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED), или другой тип устройства отображения.
[0067] В примере на фиг. 2 канал связи 16 может содержать любой беспроводной или проводной коммуникационный носитель, такой как радиочастотного (РЧ) спектра или одну или более физических линий передачи, или любую комбинацию беспроводного и проводного носителей. Канал связи 16 может являться частью основанной на передаче пакетов сети, такой как локальная сеть, региональная сеть, или глобальная сеть, такая как Интернет. Канал связи 16 обычно представляет любой подходящий коммуникационный носитель, или коллекцию различных коммуникационных носителей, для того, чтобы передавать видео данные от исходного устройства 12 на устройство 14 назначения, включая любую подходящую комбинацию проводного или беспроводного носителей. Канал связи 16 может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть полезным, чтобы облегчить связь от исходного устройства 12 к устройству 14 назначения.
[0068] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту сжатия видео, такому как стандарт высокоэффективного кодирования видео (HEVC) находящегося в развитии, и могут соответствовать Тестовой Модели HEVC (HM). Альтернативно, видео кодер 20 и видео декодер 30 могут работать согласно другим составляющим собственность стандартам или стандартам промышленности, таким как стандарт ITU-T H.264, альтернативно названный MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC), или расширениям таких стандартов. Способы этого раскрытия, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263.
[0069] Хотя не показано на фиг. 2, в некоторых аспектных видео кодер 20 и видео декодер 30 могут каждый интегрироваться с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексоров-демультиплексоров), или другое аппаратное обеспечение и программное обеспечение, чтобы выполнять кодирование как аудио так и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
[0070] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSPs), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратных средств или любых их комбинаций. Когда способы реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения в подходящем невременном считываемом компьютером носителе и выполнять инструкции в аппаратном обеспечении, используя один или более процессоров, чтобы выполнить способы настоящего раскрытия. Каждый из видео кодера 20 и видео декодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрированным как часть объединенного кодера/декодера (кодек) в соответствующем устройстве.
[0071] Видео кодер 20 может реализовать любые из способов этого раскрытия для предсказания вектора движения в процессе кодирования видео. Аналогично, видео декодер 30 может реализовать любой или все из этих способов предсказания вектора движения в процессе кодирования видео. Видео кодер, как описано в этом раскрытии, может относиться к видео кодеру или видео декодеру. Точно так же, устройство кодирования видео может относиться к видео кодеру или видео декодеру. Аналогично, кодирование видео может относиться к кодированию видео или декодированию видео.
[0072] В одном примере раскрытия видео кодер 20 из исходного устройства 12 могут конфигурироваться, чтобы определить один из множества режимов для процесса предсказания вектора движения, и выполнить процесс предсказания вектора движения для текущего блока видео данных, используя определенный режим и набор блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов.
[0073] В другом примере раскрытия видео кодер 20 из исходного устройства 12 может конфигурироваться, чтобы определить один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных, и выполнить процесс предсказания вектора движения для текущего блока, используя определенный режим и набор блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат, и в котором дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен.
[0074] В другом примере раскрытия видео декодер 30 из устройства 14 назначения может конфигурироваться, чтобы принимать элемент синтаксиса, указывающий один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных, и принимать индекс, указывающий блок-кандидат из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока.
[0075] В другом примере раскрытия видео декодер 30 из устройства 14 назначения может конфигурироваться, чтобы принимать элемент синтаксиса, указывающий один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных, и принимать индекс, указывающий блок-кандидат из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат, при этом этот дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока.
[0076] Фиг. 3 является блок-схемой, иллюстрирующей пример видео кодера 20, который может использовать способы для предсказания вектора движения, как описано в этом раскрытии. Видео кодер 20 будет описан в контексте кодирования HEVC в целях иллюстрации, но без ограничения этого раскрытия относительно других стандартов или способов кодирования, которые могут потребовать сканирования коэффициентов преобразования. Видео кодер 20 может выполнять внутреннее и внешнее кодирование единиц CU в пределах видео кадров. Внутреннее кодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео данных в пределах заданного видео кадра. Внешнее кодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность между текущим кадром и ранее закодированными кадрами видео последовательности. Внутренний режим (I-режим) может относиться к любому из нескольких на основании пространственном сжатии режимов видео. Внешние режимы, такие как однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим) могут относиться к любому из нескольких на основании временном сжатии режимов видео.
[0077] Как показано на фиг. 3, видео кодер 20 принимает текущий видео блок в пределах видео кадра, который должен быть закодирован. В примере на фиг.3 видео кодер 20 включает в себя блок 44 компенсации движения, блок 42 оценки движения, блок 46 внутреннего предсказания, буфер 64 опорных кадров, сумматор 50, модуль 52 преобразования, блок 54 квантования и блок 56 энтропийного кодирования. Модуль 52 преобразования, иллюстрированный на фиг. 3, является структурой или устройством, которое применяет фактическое преобразование или комбинацию преобразований к блоку остаточных данных, и не должно быть перепутано с блоком коэффициентов преобразования, который может упоминаться как единица преобразования (TU) в CU. Для реконструкции блока видео, видео кодер 20 также включает в себя блок 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на фиг. 3) может также быть включен, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Если желательно, фильтр удаления блочности типично может фильтровать выходной сигнал сумматора 62.
[0078] Во время процесса кодирования видео кодер 20 принимает видео кадр или вырезку, которая должна быть закодирована. Кадр или вырезка могут быть разделены на множественные видео блоки, например, наибольшие единицы кодирования (LCUs). Блок 42 оценки движения и блок 44 компенсации движения выполняют внешнее предсказывающее кодирование принятого видео блока относительно одного или более блоков в одном или более опорных кадрах, чтобы обеспечить временное сжатие. Блок 46 внутреннего предсказания может выполнить внутреннее предсказывающее кодирование принятого видео блока относительно одного или более соседних блоков в том же самом кадре или вырезке как блока, который должен быть закодирован, чтобы обеспечить пространственное сжатие.
[0079] Блок 40 выбора режима может выбрать один из режимов кодирования, внутреннее или внешнее, например, на основании результатов ошибки (то есть, искажения) для каждого режима, и выдает результирующий внутренне или внешне предсказанный блок (например, единицу предсказания (PU)) к сумматору 50, чтобы генерировать остаточные данные блока, и к сумматору 62, чтобы восстановить закодированный блок для использования в опорном кадре. Сумматор 62 объединяет предсказанный блок с обратно квантованными обратно преобразованными данными из модуля 60 обратного преобразования для этого блока, чтобы восстановить закодированный блок, как описано более подробно ниже. Некоторые видео кадры могут определяться как I-кадры, где все блоки в I-кадре кодированы в режиме внутреннего предсказания. В некоторых случаях блок 46 внутреннего предсказания может выполнить кодирование с внутренним предсказанием блока в P- или B-кадре, например, когда поиск движения, выполненный блоком 42 оценки движения, не приводит к достаточному предсказанию блока.
[0080] Блок 42 оценки движения и блок 44 компенсации движения могут быть высоко интегрированными, но иллюстрированы по отдельности в концептуальных целях. Оценка движения (или поиск движения) является процессом генерирования векторов движения, которые оценивают движение для видео блоков. Вектор движения, например, может указывать смещение блока предсказания в текущем кадре относительно опорной выборки опорного кадра. Блок 42 оценки движения вычисляет вектор движения для блока предсказания внешне кодированного кадра, сравнивая блок предсказания с опорными выборками опорного кадра, сохраненного в буфере 64 опорных кадров. Опорная выборка может быть блоком, который, как находят, близко соответствует части CU, включая PU, кодированной в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой разностей квадратов (SSD), или другими метриками разности. Опорная выборка может находиться где-нибудь в пределах опорного кадра или опорной вырезки. В некоторых примерах опорная выборка может находиться во фракционном местоположении пикселя.
[0081] Часть опорного кадра, идентифицированная вектором движения, может упоминаться как опорная выборка. Блок 44 компенсации движения может вычислить значение предсказания для единицы предсказания текущей CU, например, извлекая опорную выборку, идентифицированную вектором движения для PU. В некоторых способах кодирования видео блок 42 оценки движения посылает вычисленные вектор движения, опорный кадр и направление предсказания (то есть, направление в терминах того, предшествует ли опорный кадр во времени или следует за текущим кадром) к блоку 56 энтропийного кодирования и блоку 44 компенсации движения. Другие способы кодирования видео используют процесс предсказания вектора движения, чтобы кодировать вектор движения. Процесс предсказания вектора движения может быть выбран из числа множества режимов, включая режим слияния и режим AMVP.
[0082] В режиме слияния кодер рассматривает набор блоков-кандидатов и выбирает блок, который имеет те же самые (или наиболее близко соответствует), вектор движения, опорный кадр и направление предсказания, что и текущий блок. Это достигают проверкой каждого блока-кандидата по очереди и выбирая тот, который приводит к наилучшей эффективности «скорость передачи - искажение», как только его вектор движения, опорный кадр и направление предсказания скопированы в текущий блок. Затем, вместо того, чтобы сигнализировать эту информацию вектора движения (то есть, вектор движения, опорный кадр и направление предсказания) в закодированном видео потоке битов, кодер сигнализирует номер индекса для выбранного блока-кандидата. Декодер может скопировать информацию вектора движения из блока-кандидата, указанного сигнализированным индексом, и использовать скопированную информацию вектора движения для текущего блока. Фиг. 4A показывает пример сигнализации режима слияния. Флаг 201 слияния указывает, что используется режим слияния. Индекс 202 блока-кандидата указывает, какой из блоков-кандидатов из набора блоков-кандидатов, определенных для режима слияния, должен использоваться, чтобы извлечь информацию вектора движения для текущего блока.
[0083] Нужно отметить, что в некоторых случаях, чтобы удовлетворить конкретному количеству кандидатов для набора кандидатов режима слияния, некоторая "искусственная" информация вектора движения может генерироваться, чтобы заполнить набор кандидатов. Эта "искусственная" информация вектора движения может генерироваться с помощью частичных комбинаций информации вектора движения из различных блоков-кандидатов. Например, вектор движения Списка 0 из блока- кандидата 1 может быть объединен с вектором движения Списка 1 из кандидата 2, вместе с индексом опорного кадра и направлением предсказания, чтобы сформировать новую информацию вектора движения в наборе кандидатов. В некоторых других примерах могут также быть добавлены нулевые вектора движения в качестве дополнительной информации вектора движения, чтобы заполнить набор кандидатов. Однако, независимо от того, как набор кандидатов сформирован, в режиме слияния только индекс в наборе кандидата должен быть сигнализирован к декодеру, чтобы указать, какой кандидат выбран, чтобы предоставить информацию вектора движения для текущего блока. На стороне декодера формируется тот же набор кандидатов, и информация вектора движения может быть идентифицирована через сигнализированный индекс в набор кандидатов.
[0084] В режиме AMVP кодер рассматривает набор блоков-кандидатов и выбирает блок, который формирует разность векторов движения (то есть, разность между вектором движения соответствующего блока-кандидата и фактическим вектором движения текущего блока), которая приводит к наилучшему значению «искажение - скорость передачи» или удовлетворяет некоторому заранее определенному порогу (например, порогу «искажение - скорость передачи»). Режим AMVP может рассмотреть блоки-кандидаты в шаблоне проверки, пока удовлетворительный кандидат не будет найден и выбран. Альтернативно, в некоторых примерах все блоки-кандидаты могут быть проверены, и блок-кандидат, приводящий к лучшему результату, выбран как MVP для блока, который должен быть закодирован. Кодер может затем сигнализировать индекс для блока-кандидата, использованного для формирования разности векторов движения, наряду с разностью векторов движения. Декодер может затем обновить вектор движения для текущего блока, суммируя принятую разность векторов движения с вектором движения, извлеченным из блока-кандидата, указанного сигнализированным индексом. Фиг. 4B показывает пример сигнализации режима AMVP. Флаг 205 режима AMVP указывает, что используется режим AMVP. Индекс 206 блока-кандидата указывает, какой из блоков-кандидатов из набора блоков-кандидатов, определенных для режима AMVP, должен использоваться, чтобы извлечь вектор движения. Режим AMVP также сигнализирует разность 207 векторов движения, опорный кадр 208 и направление предсказания 209. В некоторых примерах вместо того, чтобы явно сигнализировать опорный кадр и направление предсказания, опорный кадр и направление предсказания вместо этого извлекают из информации вектора движения, ассоциированной с блоком-кандидатом.
[0085] В примерах, описанных выше, сигнализация информации вектора движения в закодированном потоке битов не требует передачи в реальном времени таких элементов от кодера к декодеру, а вместо этого означает, что такая информация закодирована в поток битов и сделана доступной для декодера любым способом. Это может включать в себя передачу в реальном времени (например, в видео конференц-связи), так же как сохранение закодированного потока битов на считываемом компьютером носителе для будущего использования декодером (например, в потоковой передаче, загрузке, дисковом доступе, доступе к карте, DVD, Blu-ray, и т.д.).
[0086] В соответствии с примерами этого раскрытия режим слияния и режим AMVP используют один и тот же набор блоков-кандидатов (то есть, и в терминах количества и в терминах местоположения блоков). Также, и кодер и декодер могут уменьшить объем памяти, необходимый для хранения информации вектора движения для блоков-кандидатов. Это может также уменьшить требование полосы пропускания памяти при восстановлении таких векторов движения во время процесса кодирования текущего блока.
[0087] В первом примере раскрытия режим слияния и режим AMVP оба используют один и тот же набор 120 блоков-кандидатов, показанный на фиг. 5A. В этом примере режим слияния теперь будет использовать шесть блоков-кандидатов вместо пяти. Однако, общее количество блоков-кандидатов и для режима слияния и для режима AMVP уменьшено, поскольку оба режима используют блоки-кандидаты в одних и тех же местоположениях. В этом примере блоки-кандидаты находятся в нижней левой (BL) 121, левой (L) 122, левой верхней (LA) 125, верхней (A) 124, правой верхней (RA) 123, и временный (T) 126 позициях, как показано на фиг. 5A. В этом примере левый блок-кандидат 122 является смежным с левым краем текущего блока 127. Нижний край левого блока 122 выровнен с нижним краем текущего блока 127. Вышеупомянутый блок 124 является смежным с верхним краем текущего блока 127. Правый край вышеупомянутого блока 124 выровнен с правым краем текущего блока 127.
[0088] Во втором примере раскрытия режим AMVP и режим слияния используют набор 130 блоков-кандидатов, показанный на фиг. 5B. В этом примере количество блоков-кандидатов для режима AMVP сокращено до 5. Дальнейшее сокращение блоков-кандидатов достигнуто, так как и режим слияния и режим AMVP теперь используют блоки-кандидаты в одних и тех же местоположениях. В этом примере блоки-кандидаты находятся в нижем левом (BL) 131, левом (L) 132, верхнем (A) 134, правом верхнем (RA) 133, и временном (T) 135 местоположениях. Следует отметить, что местоположения вышеупомянутого блока 134 и левого блока 132 отличаются от местоположений вышеупомянутого блока 124 и левого блока 122 в примере на фиг. 5A. В этом примере левый блок-кандидат 132 является смежным с левым краем текущего блока 137. Верхний край левого блока 132 выровнен с верхним краем текущего блока 137. Вышеупомянутый блок 134 является смежным с верхним краем текущего блока 137. Левый край вышеупомянутого блока 134 выровнен с левым краем текущего блока 137. В одном примере шаблон проверки для режима AMVP является следующим: BL-L-RA-T.
[0089] В третьем примере раскрытия режим слияния и режим AMVP используют набор 140 блоков-кандидатов, показанный на фиг. 6. В этом примере сокращено количество блоков-кандидатов; оба уменьшая общее количество для каждого режима до 5, а также объединяя местоположения блоков-кандидатов для обоих режимов. В этом примере блоки-кандидаты находятся в нижем левом (BL) 141, левом (L) 142, верхнем (A) 143, правом верхнем (RA) 144, и временном (T) 145. В этом примере левый блок-кандидат 142 является смежным с левым краем текущего блока 147. Нижний край левого блока 142 выровнен с нижним краем текущего блока 147. Вышеупомянутый блок 143 является смежным с верхним краем текущего блока 147. Правый край вышеупомянутого блока 143 выровнен с правым краем текущего блока 147.
[0090] В другом примере раскрытие описывает улучшенный шаблон проверки для режима AMVP. Как показано на фиг. 7, например, шаблон проверки является следующим: L-BL-A-RA-LA-T. Вместо того, чтобы начинаться в блоке-кандидате BL, как показано на фиг. 1A, пример на фиг. 7 начинается в блоке-кандидате L. Блоки с левой стороны обычно более коррелированы к текущему блоку, поскольку видео контент типично перемещается в горизонтальном направлении. Блок-кандидат L проверяется первым, так как блок-кандидат BL может быть не доступен (то есть, возможно, не был уже закодирован) во всех ситуациях. Кроме того, блок-кандидат А проверяется перед блоком-кандидатом RA, так как вектор движения блока-кандидата А, как было показано, имеет более высокую статистическую корреляцию к вектору движения текущего блока, чем таковой блока-кандидата RA.
[0091] Режим слияния может использовать один и тот же шаблон проверки, показанный на фиг. 7, или может использовать разный шаблон проверки. В качестве одного примера, шаблон проверки для режима слияния может являться следующим: L-A-RA-BL-(LA)-T. В этом примере включение блока LA является необязательным или адаптивным в зависимости от того, если один из первых четырех блоков-кандидатов недоступен.
[0092] Пример на фиг. 7 показан в отношении набора блоков-кандидатов на фиг. 5A. Однако, этот шаблон проверки может быть применимым с любым набором кандидатов. Обычно левый блок-кандидат должен проверяется перед нижним левым блоком-кандидатом. Затем вышеупомянутый блок-кандидат должен быть проверен перед правым верхним блоком-кандидатом. Любые оставшиеся блоки-кандидаты могут затем быть проверены в любом порядке. В некоторых примерах временный блок-кандидат может быть проверен последним.
[0093] В другом примере раскрытия раскрыты гибкие дополнительные кандидаты и для режима слияния и режима AMVP. Как показано в примере на фиг. 5A, имеются пять пространственных блоков-кандидатов (то есть, L, BL, A, RA, и LA) и один временной блок-кандидат (то есть, T), для в общей сложности шести блоков-кандидатов. В предыдущем предложении к стандарту HEVC максимальное количество блоков-кандидатов для режима слияния равно пяти. Также, один из блоков-кандидатов, показанных на фиг. 5A, может быть удален для режима слияния. В одном примере блок-кандидат LA может быть определен как дополнительный блок-кандидат (то есть, он первоначально не рассматривается как часть набора блоков-кандидатов для режима слияния).
[0094] Однако, как упомянуто выше, не все блоки-кандидаты доступны во всех ситуациях. Например, блок-кандидат BL может быть еще не закодирован в то время, когда текущий блок кодируется. Кроме того, данные для некоторых блоков-кандидатов могут стать поврежденными или могут не быть приняты вообще (например, при декодировании в реальном времени). Также, настоящее раскрытие предлагает использовать дополнительные блоки-кандидаты в ситуациях, когда найдено, что блок-кандидат в наборе недоступен. Таким образом, общее количество кандидатов сохранено равным максимальному пределу, не тратя впустую проверку в отношении недоступного кандидата.
[0095] В одном примере кандидаты L и BL сначала проверяются кодером или декодером, как применимые. Если один из этих блоков-кандидатов не является действительным (например, поврежден), или недоступен, дополнительный блок-кандидат (например, LA) может использоваться вместо него. Если оба блока-кандидата L и BL действительны, блоки-кандидаты A и RA проверяются. Если один из этих блоков-кандидатов не действителен или не доступен, блок-кандидат LA может использоваться вместо него. Если оба блока-кандидата A и RA будут действительны, то блок-кандидат LA не будет использоваться. В этом примере блок-кандидат LA используется как дополнительный блок-кандидат. Однако, любой дополнительный блок-кандидат в любой причинной позиции (то есть, в позиции, относительно текущего блока, где блок-кандидат был уже закодирован) относительно текущего блока может использоваться.
[0096] В другом примере будут использоваться все блоки-кандидаты, показанные на фиг. 5A. Для режима слияния, где максимальное количество блоков-кандидатов равно N (где N меньше чем 6), первые N доступных блоков-кандидатов в шаблоне проверки будут использоваться как блоки-кандидаты для режима слияния. В примере на фиг. 5A имеется шесть блоков-кандидатов с шаблоном проверки L-RA-BL-LA-T. Первые N доступных блоков-кандидатов в шаблоне проверки будут формировать финальный набор блоков-кандидатов для режима слияния. В этом примере шаблон проверки фиксирован. В другом примере шаблон проверки может быть выбран на основании размера блока, размера разделения и/или индекса разделения. В другом примере шаблон проверки может быть обновлен адаптивно во время кодирования и декодирования. Обновление может зависеть от индекса слияния, режима предсказания вектора движения, размера разделения, индекса разделения и/или информации вектора движения (например, опорный индекс, разность векторов движения, предсказатель вектора движения) ранее закодированных/декодированных блоков.
[0097] Согласно другому примеру, способы использования дополнительного блока-кандидата могут быть также применены к режиму AMVP. Режим AMVP в текущем рабочем проекте стандарта HEVC уже учитывает проверку всех шести блоков-кандидатов, показанных на фиг. 5A. Однако, как упомянуто выше, некоторые из этих блоков-кандидатов могут быть недоступными или недействительными. В таком случае может быть определен дополнительный кандидат слияния. Такой кандидат слияния может быть в любой позиции, которая является причинной к текущей PU.
[0098] Возвращаясь к фиг. 3, блок 46 внутреннего предсказания может выполнить внутреннее предсказание в отношении принятого блока, как альтернатива внешнему предсказанию, выполненному блоком 42 оценки движения и блоком 44 компенсации движения. Блок 46 внутреннего предсказания может предсказать принятый блок относительно соседних, ранее кодированных блоков, например, блоков выше, выше и справа, выше и слева, или слева от текущего блока, принимая порядок кодирования слева направо сверху вниз для блоков. Блок 46 внутреннего предсказания может быть сконфигурирован с помощью множества различных режимов внутреннего предсказания. Например, блок 46 внутреннего предсказания может быть сконфигурирован с помощью некоторого числа направленных режимов предсказания, например, тридцатью четырех направленных режимов предсказания, на основании размера кодированной CU.
[0099] Блок 46 внутреннего предсказания может выбрать режим внутреннего предсказания, например, вычисляя значения ошибки предсказания для различных режимов внутреннего предсказания и выбирая режим, который приводит к самому низкому значению ошибки. Направленные режимы предсказания могут включать в себя функции для того, чтобы объединять значения пространственно соседних пикселей и применять объединенные значения к одной или более пиксельным позициям в PU. Как только значения для всех пиксельных позиций в PU были вычислены, блок 46 внутреннего предсказания может вычислить значение ошибки для режима предсказания на основании пиксельных разностей между вычисленными или предсказанными значениями PU и принятого первоначального блока, который должен быть кодирован. Блок 46 внутреннего предсказания может продолжить проверять режимы внутреннего предсказания до режима внутреннего предсказания, пока не будет обнаружено приемлемое значение ошибки. Блок 46 внутреннего предсказания может затем послать PU в сумматор 50.
[0100] Видео кодер 20 формирует остаточный блок, вычитая данные предсказания, вычисленные блоком 44 компенсации движения или блоком 46 внутреннего предсказания, из первоначального закодированного блока видео. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Остаточный блок может соответствовать двумерной матрице значений пиксельной разности, где количество значений в остаточном блоке является таким же как количество пикселей в PU, соответствующей остаточному блоку. Значения в остаточном блоке могут соответствовать разностям, то есть, ошибке, между значениями совместно расположенных пикселей в PU и в первоначальном блоке, который должен быть закодирован. Такая операция применяется к компонентам и яркости и цветности, так что разности могут быть разностями цветности или яркости в зависимости от типа блока, который закодирован.
[0101] Модуль 52 преобразования может сформировать одну или более единиц преобразования (единицы TU) из остаточного блока. Модуль 52 преобразования выбирает преобразование из числа множества преобразований. Преобразование может быть выбрано на основании одной или более характеристик кодирования, таких как размер блока, режим кодирования или подобное. Модуль 52 преобразования затем применяет выбранное преобразование к TU, производя видео блок, содержащий двумерный массив коэффициентов преобразования.
[0102] Модуль 52 преобразования может послать результирующие коэффициенты преобразования в блок 54 квантования. Блок 54 квантования может затем квантовать коэффициенты преобразования. Блок 56 энтропийного кодирования может затем выполнить сканирование квантованных коэффициентов преобразования в матрице согласно режиму сканирования. Настоящее раскрытие описывает блок 56 энтропийного кодирования как выполняющий сканирование. Однако, нужно подразумевать, что в других примерах другие блоки обработки, такие как блок 54 квантования, могут выполнить сканирование.
[0103] Как только коэффициенты преобразования сканированы в одномерный массив, блок 56 энтропийного кодирования может применить энтропийное кодирование, такое как контекстно-адаптивное кодирования с переменной длиной кода (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), или другой способ энтропийного кодирования, к коэффициентам. Энтропийное кодирование может также быть применено к элементам синтаксиса, таким как элементы синтаксиса, используемые в режиме слияния и режиме AMVP.
[0104] Чтобы выполнить CAVLC, блок 56 энтропийного кодирования может выбрать код с переменной длиной кода для символа, который должен быть передан. Кодовые слова в VLC могут быть построены таким образом, что относительно более короткие коды соответствуют более вероятным символам, в то время как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может достигнуть экономии битов, например, используя кодовые слова равной длины для каждого символа, который должен быть передан.
[0105] Чтобы выполнить CABAC, блок 56 энтропийного кодирования может выбрать контекстную модель для применения к некоторому контексту, чтобы закодировать символы, которые должны быть переданы. В случае коэффициентов преобразования контекст может относиться, например, к тому, являются ли соседние значения ненулевыми или нет. Блок 56 энтропийного кодирования может также энтропийно кодировать элементы синтаксиса, такие как сигнал, представляющий выбранное преобразование. В соответствии с способами этого раскрытия, блок 56 энтропийного кодирования может выбрать контекстную модель, используемую, чтобы кодировать эти элементы синтаксиса, на основании, например, направления внутреннего предсказания для режимов внутреннего предсказания, позиции сканирования коэффициентов, соответствующих элементам синтаксиса, типу блока, и/или типу преобразования, среди других факторов, используемых для выбора контекстной модели.
[0106] После энтропийного кодирования блоком 56 энтропийного кодирования, результирующее закодированное видео может быть передано на другое устройство, такое как видео декодер 30, или заархивировано для более поздней передачи или поиска.
[0107] В некоторых случаях блок 56 энтропийного кодирования или другой блок видео кодера 20 могут конфигурироваться, чтобы выполнить другие функции кодирования в дополнение к энтропийному кодированию. Например, блок 56 энтропийного кодирования может быть сконфигурирован, чтобы определить значения шаблона кодированных блоков (CBP) для единиц CU и PU. Кроме того, в некоторых случаях блок 56 энтропийного кодирования может выполнить кодирование длин серий коэффициентов.
[0108] Блок 58 обратного квантования и модуль 60 обратного преобразования применяет обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области, например, для более позднего использования при восстановлении опорного блока. Блок 44 компенсации движения может вычислить опорный блок, суммируя остаточный блок с предсказывающим блоком, сформированным из одного из кадров буфера 64 опорных кадров. Блок 44 компенсации движения может также применить один или более фильтров интерполяции к восстановленному опорному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования при оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с блоком предсказания со скомпенсированным движением, сформированным блоком 44 компенсации движения, чтобы сформировать восстановленный видео блок для сохранения в буфере 64 опорных кадров. Восстановленный видео блок может использоваться блоком 42 оценки движения и блоком 44 компенсации движения как опорный блок, чтобы внешне кодировать блок в последующем видео кадре.
[0109] Фиг. 8 является блок-схемой, иллюстрирующей пример видео декодера 30, который декодирует закодированную видео последовательность. В примере на фиг. 8 видео декодер 30 включает в себя блок 70 энтропийного декодирования, блок 72 компенсации движения, блок внутреннего 74 предсказания, блок 76 обратного квантования, модуль 78 обратного преобразования, буфер 82 опорных кадров и сумматор 80. Видео декодер 30 в некоторых примерах может выполнить проход декодирования, обычно обратный к проходу кодирования, описанному относительно видео кодера 20 (см. фиг. 3).
[0110] Блок 70 энтропийного декодирования выполняет процесс энтропийного декодирования в отношении кодированного потока битов, чтобы извлечь одномерный массив коэффициентов преобразования. Используемый процесс энтропийного декодирования зависит от энтропийного кодирования, используемого видео кодером 20 (например, CABAC, CAVLC, и т.д.). Процесс энтропийного кодирования, используемый кодером, может быть сигнализирован в закодированном потоке битов или может быть заранее определенным процессом.
[0111] В некоторых примерах блок 70 энтропийного декодирования (или блок 76 обратного квантования) может сканировать принятые значения, используя сканирование, отражающее режим сканирования, используемый блоком 56 энтропийного кодирования (или блоком 54 квантования) видео кодера 20. Хотя сканирование коэффициентов может быть выполнено в блоке 76 обратного квантования, сканирование будет описан в целях иллюстрации, как выполняемое блоком 70 энтропийного декодирования. Кроме того, хотя показано как отдельные функциональные блоки для простоты иллюстрации, структура и функциональные возможности блока 70 энтропийного декодирования, блока 76 обратного квантования и других блоков видео декодера 30, могут быть высоко интегрированы друг с другом.
[0112] Блок 76 обратного квантования обратно квантует, то есть, деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные блоком 70 энтропийного декодирования. Процесс обратного квантования может включать в себя обычный процесс, например, подобный процессам, предложенным для HEVC, или определенный посредством стандарта декодирования H.264. Процесс обратного квантования может включать в себя использование параметра квантования QP, вычисленного видео кодером 20 для CU, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое должно быть применено. Блок 76 обратного квантования может обратно квантовать коэффициенты преобразования или прежде или после того, как коэффициенты преобразованы из одномерного массива в двумерный массив.
[0113] Модуль 78 обратного преобразования применяет обратное преобразование к обратно квантованным коэффициентам преобразования. В некоторых примерах модуль 78 обратного преобразования может определить обратное преобразование, на основании сигнализации от видео кодера 20, или логически выводя преобразование из одной или более характеристик кодирования, таких как размер блока, режим кодирования, или подобное. В некоторых примерах модуль 78 обратного преобразования может определить преобразование, чтобы применить к текущему блоку, на основании сигнализированного преобразования в корневом узле квадродерева для LCU, включающей текущий блок. Альтернативно, преобразование может быть сообщено в корне квадродерева TU для листового узла CU в квадродереве LCU. В некоторых примерах модуль 78 обратного преобразования может применить каскадное обратное преобразование, в котором модуль 78 обратного преобразования применяет два или более обратных преобразования к коэффициентам преобразования текущего декодируемого блока.
[0114] Блок 74 внутреннего предсказания может генерировать данные предсказания для текущего блока текущего кадра, на основании сигнализированного режима внутреннего предсказания и данных от ранее декодированных блоков текущего кадра.
[0115] Согласно примерам этого раскрытия, видео декодер 30 может принять из кодированного потока битов синтаксис предсказания, который идентифицирует режим предсказания вектора движения и ассоциированную информацию вектора движения (например, см. Фиг. 4A и 4B и относящееся описание). В частности, видео декодер 30 может принять индекс, указывающий блок-кандидат из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока. Набор блоков-кандидатов может быть наборами, показанными на фиг. 5A, фиг. 5B или фиг. 6, или любым другим набором блоков-кандидатов, причинных к текущему блоку.
[0116] В случае, когда элемент синтаксиса указывает режим слияния, видео декодер далее конфигурируется, чтобы извлечь вектор движения, опорный кадр и направление предсказания, ассоциированные с блоком-кандидатом, имеющим принятый индекс, и выполнить процесс внешнего предсказания для текущего блока, используя извлеченный вектор движения, опорный кадр и направление предсказания.
[0117] В случае, когда элемент синтаксиса указывает режим адаптивного предсказания вектора движения (AMVP), видео декодер далее конфигурируется, чтобы принять индекс опорного кадра, разность векторов движения и элемент синтаксиса, указывающий направление предсказания, чтобы извлечь вектор-кандидат движения, ассоциированный с блоком-кандидатом, имеющим принятый индекс, вычислить вектор движения для текущего блока, используя вектор-кандидат движения и разность векторов движения, и выполнять процесс внешнего предсказания, используя вычисленный вектор движения, принятый индекс опорного кадра и принятое направление предсказания.
[0118] Независимо от режима предсказания, как только направление предсказания, индекс опорного кадра и вектор движения определены для текущего блока, блок компенсации движения формирует блок со скомпенсированным движением для текущего блока. Эти блоки со скомпенсированным движением по существу создают заново предсказывающий блок, используемый для формирования остаточных данных.
[0119] Блок 72 компенсации движения может сформировать блоки со скомпенсированным движением, возможно выполняя интерполяцию, основанную на фильтрах интерполяции. Идентификаторы для фильтров интерполяции, которые должны использоваться для оценки движения с субпиксельной точностью, могут быть включены в элементы синтаксиса. Блок 72 компенсации движения может использовать фильтры интерполяции, которые используется видео кодером 20 во время кодирования видео блока, чтобы вычислить интерполированные значения для суб-целочисленных пикселей опорного блока. Блок 72 компенсации движения может определить фильтры интерполяции, используемые видео кодером 20, согласно принятой информации синтаксиса, и использовать эти фильтры интерполяции, чтобы сформировать предсказывающие блоки.
[0120] Дополнительно, блок 72 компенсации движения и блок 74 внутреннего предсказания, в примере HEVC, могут использовать некоторую из информации синтаксиса (например, предоставленную квадродеревом), чтобы определить размеры единиц LCU, используемые чтобы кодировать кадр(ы) кодированной видео последовательности. Блок 72 компенсации движения и блок 74 внутреннего предсказания могут также использовать информацию синтаксиса, чтобы определить информацию разделения, которая описывает, как каждая единица CU кадра закодированной видео последовательности разделена (и аналогично, как разделены суб-CU). Информация синтаксиса может также включать в себя режимы, указывающие, как каждая CU кодирована (например, с внутренним или внешним предсказанием, и для внутреннего предсказания режим кодирования с внутренним предсказанием), один или более опорных кадров (и/или опорные списки, содержащие идентификаторы для опорных кадров) для каждой внешне кодированной PU, и другую информацию, чтобы декодировать закодированную видео последовательность.
[0121] Сумматор 80 объединяет остаточные блоки с соответствующими блоками предсказания, генерируемыми блоком 72 компенсации движения или блоком 74 внутреннего предсказания, чтобы сформировать декодированные блоки. Декодированные блоки, в действительности, восстанавливают первоначально закодированные блоки, подвергаемые потере из-за квантования или других аспектов кодирования. Если желательно, фильтр удаления блочности может также быть применен, чтобы фильтровать декодированные блоки, чтобы удалить артефакты блочности. Декодированные видео блоки затем сохраняются в буфере 82 опорных кадров, который обеспечивает опорные блоки для последующей компенсации движения и также формирует декодированное видео для представления на устройстве отображения (таком как устройство 32 отображения согласно фиг. 2).
[0122] Как упомянуто выше, способы этого раскрытия применимы и для кодера и для декодера. Обычно, и в соответствии с описанием выше, кодер использует один и тот же набор блоков-кандидатов, чтобы выполнить процесс предсказания вектора движения (например, режим слияния и режим AMVP). Декодер может затем декодировать вектор движения на основании элементов синтаксиса, принятых, используя тот же набор блоков-кандидатов, используемых кодером. Объединяя блоки-кандидаты для всех режимов предсказания вектора движения, объем памяти, который должен хранить информацию вектора движения (например, вектор движения, направление предсказания, индексы опорного кадра и т.д.) уменьшается. Требование полосы пропускания памяти при восстановлении информации вектора движения от тех блоков-кандидатов может также быть уменьшено.
[0123] Фиг. 9 является последовательностью операций, иллюстрирующей примерный способ кодирования видео, который может быть выполнен видео кодером, таким как видео кодер 20 согласно фиг. 3. Видео кодер 20 может быть сконфигурирован, чтобы определить вектор движения относительно опорного кадра для текущего блока видео данных (900). Видео кодер 20 может также определить один из множества режимов (например, режим слияния или AMVP) для процесса предсказания вектора движения (901), и выполнить процесс предсказания вектора движения для текущего блока видео данных, используя определенный режим и набор блоков-кандидатов. Набор блоков-кандидатов является одинаковым для каждого из множества режимов.
[0124] Множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения. Фиг. 10 иллюстрирует примерный способ кодирования видео, когда процесс предсказания вектора движения находится в режиме слияния. В этом случае видео кодер далее конфигурируется, чтобы определить вектор-кандидат движения из набора блоков-кандидатов, который приводит к удовлетворительной эффективности «искажение - скорость передачи», когда ее вектор движения, опорный кадр и направление предсказания скопированы в текущий блок (1001) и сигнализирует индекс, идентифицирующий вектор-кандидат движения (1002).
[0125] В одном примере набор блоков-кандидатов может включать в себя верхний блок-кандидат, правый верхний блок-кандидата, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. Левый блок-кандидат является смежным с левым краем текущего блока и верхний край левого блока-кандидата выровнен с главного края текущего блока. Вышеупомянутый блок-кандидат является смежным с, верхним краем текущего блока и левый край вышеупомянутого блока-кандидата выровнен с левым краем текущего блока.
[0126] В другом примере левый блок-кандидат является смежным с левым краем текущего блока и нижний край левого блока-кандидата выровнен с нижним краем текущего блока. Вышеупомянутый блок-кандидат является смежным с верхним краем текущего блока и правый край вышеупомянутого блока-кандидата выровнен с правым краем текущего блока.
[0127] В другом примере набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
[0128] Фиг. 11 иллюстрирует примерный способ кодирования видео, когда процесс предсказания вектора движения находится в режиме AMVP. В этом случае, видео кодер конфигурируется, чтобы определить вектор-кандидат движения из каждого блока-кандидата в наборе блоков-кандидатов (1101) и вычислить разность векторов движения между вектором движения для текущего блока и вектором движения кандидата от каждого из блоков-кандидатов согласно шаблону проверки (1102). Видео кодер также конфигурируется, чтобы выбрать один из векторов-кандидатов движения, на основании вычисленных разностей вектора движения (1103), и сигнализировать индекс, идентифицирующий блок-кандидат, имеющий выбранный один из векторов-кандидатов движения, чтобы сигнализировать разность векторов движения, вычисленную относительно выбранного одного из векторов-кандидатов движения, чтобы сигнализировать опорный кадр, и сигнализировать направление предсказания (1104).
[0129] В одном примере набор блоков-кандидатов включает в себя верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. В этом примере шаблон проверки происходит в следующем порядке: нижний левый блок-кандидат, левый блок-кандидат, правый верхний блок-кандидат, верхний блок-кандидат, временной блок-кандидат.
[0130] В другом примере набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. Шаблон проверки происходит в следующем порядке: левый блок-кандидат, нижний левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат, временной блок-кандидат.
[0131] Фиг. 12 является последовательностью операций, иллюстрирующей примерный способ декодирования видео, который может быть выполнен видео декодером, таким как видео декодер 30 согласно фиг. 3. Видео декодер 30 может быть сконфигурирован, чтобы принять элемент синтаксиса, указывающий один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных (1201), и принять индекс, указывающий блок-кандидат из набора блоков-кандидатов (1202), в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока. Множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения.
[0132] Фиг. 13 является последовательностью операций, иллюстрирующей примерный способ декодирования видео в случае, когда процесс предсказания вектора движения является режимом слияния. В этом случае видео декодер далее конфигурируется, чтобы извлечь вектор движения, опорный кадр и направление предсказания ассоциированные с блоком-кандидатом, имеющим принятый индекс (1301), и выполнить процесс внешнего предсказания в отношении текущего блока, используя извлеченные вектор движения, опорный кадр и направление предсказания (1302).
[0133] В одном примере набор блоков-кандидатов включает в себя верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. Левый блок-кандидат является смежным с левым краем текущего блока и верхний край левого блока-кандидата выровнен с верхним краем текущего блока. Верхний блок-кандидат является смежным с верхним краем текущего блока и левый край верхнего блока-кандидата выровнен с левым краем текущего блока.
[0134] В другом примере левый блок-кандидат является смежным с левым краем текущего блока и нижний край левого блока-кандидата выровнен с нижним краем текущего блока. Верхний блок-кандидат является смежным с верхним краем текущего блока и правый край верхнего блока-кандидата выровнен с правым краем текущего блока.
[0135] В другом примере набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
[0136] Фиг. 14 является последовательностью операций, иллюстрирующей примерный способ декодирования видео в случае, когда процесс предсказания вектора движения является режимом AMVP. В этом случае видео декодер конфигурируется, чтобы принять индекс опорного кадра, разность векторов движения и элемент синтаксиса, указывающий направление предсказания (1401), и извлекать вектор-кандидат движения, ассоциированный с блоком-кандидатом, имеющим принятый индекс (1402). Видео декодер далее конфигурируется, чтобы вычислить вектор движения для текущего блока, используя вектор-кандидат движения и разность векторов движения (1403), и выполнить процесс внешнего предсказания, используя вычисленный вектор движения, принятый индекс опорного кадра и принятое направление предсказания (1404).
[0137] В одном примере набор блоков-кандидатов включает в себя верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат, и шаблон проверки для набора блоков-кандидатов имеет место в следующем порядке: нижний левый блок-кандидат, левый блок-кандидат, правый верхний блок-кандидат, верхний блок-кандидат, временной блок-кандидат.
[0138] В другом примере набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат, и шаблон проверки для набора блоков-кандидатов имеет место в следующем порядке: левый блок-кандидат, нижний левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат, временной блок-кандидат.
[0139] Фиг. 15 является последовательностью операций, иллюстрирующей другой примерный способ кодирования видео, которое может быть выполнено видео кодером, таким как видео кодер 20 согласно фиг. 3. Видео кодер 20 может быть сконфигурирован, чтобы определить вектор движения относительно опорного кадра для текущего блока видео данных (1501), определить один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных (1502), и выполнить процесс предсказания вектора движения для текущего блока, используя определенный режим и набор блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, и в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат (1503). Дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен. Видео кодер 20 может далее конфигурироваться, чтобы обновить шаблон проверки, на основании одного или более из индекса слияния, определенного режима, размера разделения, индекса опорного кадра, разности векторов движения и предсказания (1504) вектора движения.
[0140] Упомянутое множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения. Режим слияния может иметь максимальное количество N блоков-кандидатов для использования при выполнении процесса предсказания вектора движения. В этом случае процесс предсказания вектора движения выполняется согласно шаблону проверки, причем шаблон проверки определяет порядок для проверки каждого из блоков-кандидатов в наборе блоков-кандидатов. Набор блоков-кандидатов определен как первые N доступных блоков-кандидатов в наборе блоков-кандидатов вдоль шаблона проверки. Шаблон проверки может быть основан на одном или более из размера блока, размера разделения, и индекса разделения. Более конкретно, например, шаблон проверки для каждого различного размера блока, размера разделения или индекса разделения может быть обновлен или изменен на основании статистики выбора кандидата во многих предыдущих закодированных блоках, имеющих один и тот же размер блока, размер разделения или индекс разделения, и т.д.
[0141] В другом примере набор блоков-кандидатов включает в себя нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат. В этом примере дополнительным блоком-кандидатом является левый верхний блок-кандидат. Однако, дополнительный блок-кандидат может быть любым блоком-кандидатом, который находится в причинных отношениях к текущему блоку.
[0142] Фиг. 16 является последовательностью операций, иллюстрирующей другой примерный способ декодирования видео, который может быть выполнен видео декодером, таким как видео декодер 30 согласно фиг. 3. Видео декодер 30 может быть сконфигурирован, чтобы принять элемент синтаксиса, указывающий один из множества режимов для процесса предсказания вектора движения для текущего блока видео данных (1601), и принять индекс, указывающий блок-кандидат из набора блоков-кандидатов, в котором набор блоков-кандидатов является одинаковым для каждого из множества режимов, в котором один блок-кандидат в наборе блоков-кандидатов определяется как дополнительный блок-кандидат (1602). Дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен. Информация, ассоциированная с блоком-кандидатом, используется, чтобы декодировать вектор движения для текущего блока.
[0143] Множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения. Фиг. 17 изображает способ декодирования в случае, когда принятый элемент синтаксиса указывает, что используется режим слияния. В этом случае видео декодер далее конфигурируется, чтобы извлечь вектор движения, опорный кадр и направление предсказания, ассоциированные с блоком-кандидатом, имеющим принятый индекс (1701), и выполнить процесс внешнего предсказания в отношении текущего блока, используя извлеченный вектор движения, опорный кадр и направление предсказания (1702).
[0144] Режим слияния может быть определен как имеющий максимальное количество N блоков-кандидатов для использования при выполнении процесса предсказания вектора движения. В этом случае процесс предсказания вектора движения может быть выполнен согласно шаблону проверки, причем шаблон проверки определяет порядок относительно проверки каждого из блоков-кандидатов в наборе блоков-кандидатов. Набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов вдоль шаблона проверки. Шаблон проверки основан на одном или более из размера блока, размера разделения, и индекса разделения.
[0145] В другом примере, как для режима слияния так и для режима AMVP, набор блоков-кандидатов может включать в себя нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат. Дополнительный блок-кандидат является левым верхним блоком-кандидатом. Однако, дополнительный блок-кандидат может быть любым блоком-кандидатом, который находится в причинных отношениях к текущему блоку.
[0146] Фиг. 18 изображает способ декодирования в случае, когда принятый элемент синтаксиса указывает, что режим AMVP используется. В этом случае видео декодер далее конфигурируется, чтобы принять индекс опорного кадра, разность векторов движения и элемент синтаксиса, указывающий направление предсказания (1801), и извлекать вектор-кандидат движения, ассоциированный с блоком-кандидатом, имеющим принятый индекс (1802). Видео декодер далее конфигурируется, чтобы вычислить вектор движения для текущего блока, используя вектор-кандидат движения и разность векторов движения (1803), и выполнять процесс внешнего предсказания, используя вычисленный вектор движения, принятый индекс опорного кадра и принятое направление предсказания (1804).
[0147] В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены на или переданы, как одна или более инструкций или код, считываемый компьютером носитель и выполнены основанным на аппаратном обеспечении блоком обработки. Считываемый компьютером носитель может включать в себя считываемые компьютером носители данных, который соответствует материальному носителю, такому как запоминающие носители данных, или коммуникационные носители, включая любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. В этом способе считываемый компьютером носитель обычно может соответствовать (1) материальным считываемым компьютером носителям данных, которые являются невременными или (2) коммуникационному носителю, такому как сигнал или несущая. Запоминающие носители данных могут быть любым доступным носителем, к которому могут получить доступ один или более компьютеров или один или более процессоров, чтобы извлечь инструкции, код и/или структуры данных для реализации способов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0148] Посредством примера, а не ограничения, такие считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое оптическое дисковое запоминающее устройство, магнитное дисковое запоминающее устройство, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может использоваться, чтобы сохранить желательный программный код в форме инструкций или структур данных и к которому может получить доступ компьютер. Также, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции переданы от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волоконно-оптический кабель, витую пару, цифровую абонентскую линию (DSL), или беспроводные технологии такие как инфракрасная, радио- и микроволновая, то эти коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL, или беспроводные технологии такие как инфракрасная, радио- и микроволновая, включены в определение носителя. Нужно подразумевать, однако, что считываемые компьютером носители данных и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие временные носители, но вместо этого направлены на невременные материальные носители данных. Диск и диск, как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискета и диск blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, в то время как диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в рамки считываемого компьютером носителя.
[0149] Инструкции могут быть выполнены одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем логические матрицы (FPGA), или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как используется здесь, может относиться к любой известной структуре или любой другой структуре, подходящей для реализации способов, описанных здесь. Также, в некоторых аспектах функциональные возможности, описанные здесь, могут быть предоставлены в пределах специализированного аппаратного обеспечения и/или программных модулей, сконфигурированных для кодирования и декодирования, или встроенных в объединенный кодек. Также, способы могли быть полностью реализованы в одной или более схемах или логических элементах.
[0150] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или аппаратов, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, микропроцессорный набор). Различные компоненты, модули или блоки описаны в настоящем описании, чтобы подчеркнуть функциональные аспекты устройств, конфигурируемых, чтобы выполнять раскрытые способы, но не обязательно требовать реализации различными блоками аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или предоставлены коллекцией взаимодействующих блоков аппаратного обеспечения, включая один или более процессоров, как описано выше, в соединении с подходящим программным обеспечением и/или программно-аппаратными средствами.
[0151] Были описаны различные примеры. Эти и другие примеры находятся в рамках нижеследующей формулы изобретения.