УЧИТЫВАЮЩИЕ ПАРАЛЛЕЛИЗАЦИЮ КАНДИДАТЫ СЛИЯНИЯ ДЛЯ КОДИРОВАНИЯ ВИДЕО
PARALLELISATION FRIENDLY MERGE CANDIDATES FOR VIDEO CODING

[0001] Эта заявка испрашивает приоритет предварительной заявки на патент США № 61/499,112, поданной 20 июня 2011 года, предварительной заявки на патент США № 61/543,043, поданной 4 октября 2011 года, предварительной заявки на патент США № 61/543,059, поданной 4 октября 2011 года, предварительной заявки на патент США № 61/556,761, поданной 7 ноября 2011 года, предварительной заявки на патент США № 61/562,387, поданной 21 ноября 2011 года и предварительной заявки на патент США № 61/562,953, поданной 22 ноября 2011 года, все из которых полностью включены в состав данного документа по ссылке.
ОБЛАСТЬ ТЕХНИКИ
[0002] Это раскрытие относится к кодированию видео и более конкретно - к подходам для определения набора кандидатов предсказания вектора движения в процессе предсказания вектора движения.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть внедрены в широкий диапазон устройств, в том числе средства цифрового телевидения, системы цифрового прямого вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), настольные или переносные компьютеры, цифровые камеры, устройства цифровой записи, цифровые мультимедийные проигрыватели, видеоигровые устройства, консоли видеоигр, сотовые или спутниковые радиотелефоны, устройства видеоконференцсвязи и подобное. Устройства цифрового видео реализуют подходы сжатия видео, например такие, которые описаны в стандартах, определенных посредством MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Части 10, Усовершенствованного Кодирования Видео (AVC), стандарта Высокоэффективного Кодирования Видео (HEVC), разрабатываемого в настоящее время, и расширений таких стандартов, для более эффективной передачи, приема и хранения информации цифрового видео.
[0004] Подходы сжатия видео включают в себя пространственное предсказание и/или временное предсказание для сокращения или удаления избыточности, характерной для последовательностей видео. Для блочного кодирования видео, кадр видео или срез (вырезка) может быть разделен на блоки. Каждый блок может быть разделен дополнительно. Блоки во внутренне кодированном (I) кадре или срезе кодируются с использованием пространственного предсказания относительно опорных выборок в соседних блоках в одном кадре или срезе. Блоки во внешне кодированном (P или B) кадре или срезе могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в одном кадре или срезе или временное (во времени) предсказание относительно опорных выборок в других опорных кадрах. Пространственное или временное предсказание имеет результатом предиктивный блок для блока, который должен быть кодирован. Остаточные данные представляют пиксельные разности между исходным блоком, который должен быть кодирован, и предиктивным блоком.
[0005] Внешне кодированный блок кодируется согласно вектору движения, который указывает на блок опорных выборок, формирующих предиктивный блок, и остаточным данным, указывающим разность между пиксельными значениями в кодированном блоке и опорными выборками в предиктивном блоке. Внутренне кодированный блок кодируется согласно режиму внутреннего кодирования и остаточным данным. Для дополнительного сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, имея результатом остаточные коэффициенты преобразования, которые затем могут быть квантованы. Квантованные коэффициенты преобразования, изначально скомпонованные в двумерном массиве, могут быть просканированы в конкретном порядке для создания одномерного вектора коэффициентов преобразования для энтропийного кодирования.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В целом, это раскрытие описывает подходы для кодирования данных видео. Это раскрытие описывает подходы для определения набора кандидатов слияния в процессе предсказания вектора движения режима слияния.
[0007] В некоторых примерах это раскрытие предлагает генерирование набора кандидатов слияния для текущей единицы предсказания единицы кодирования без сравнения информации движения каких-либо кандидатов слияния с информацией движения каких-либо других единиц предсказания в одной единице кодирования. Таким образом, наборы кандидатов слияния для множественных единиц предсказания единицы кодирования могут быть сгенерированы параллельно, поскольку генерирование конкретного кандидата слияния не полагается на сравнение с информацией вектора движения в других единицах предсказания, которые могут или могут не быть уже определены.
[0008] Это раскрытие дополнительно предлагает удалять кандидатов слияния из набора кандидатов слияния для текущей единицы предсказания, которые содержатся в другой единице предсказания той же самой единицы кодирования. Таким образом, вероятность, что все единицы предсказания одной единицы кодирования будут использовать одну и ту же информацию вектора движения, ограничивается, тем самым сохраняя преимущество разделения единицы кодирования на множественные единицы предсказания.
[0009] В одном примере раскрытия способ кодирования данных видео содержит определение набора кандидатов слияния для текущей единицы предсказания текущей единицы кодирования, при этом набор кандидатов слияния определяется без сравнения информации движения кандидата слияния в наборе кандидатов слияния с информацией движения каких-либо других единиц предсказания, и выполнение процесса предсказания вектора движения слияния для текущей единицы предсказания с использованием набора кандидатов слияния. Способ может дополнительно содержать исключение кандидатов слияния из набора кандидатов слияния, которые находятся в другой единице предсказания текущей единицы кодирования.
[0010] В другом примере раскрытия устройство, сконфигурированное для кодирования данных видео, содержит кодер видео, сконфигурированный для определения набора кандидатов слияния для текущей единицы предсказания текущей единицы кодирования, при этом набор кандидатов слияния определяется без сравнения информации движения кандидата слияния в наборе кандидатов слияния с информацией движения каких-либо других единиц предсказания, и выполнения процесса предсказания вектора движения слияния для текущей единицы предсказания с использованием набора кандидатов слияния. Кодер видео может быть дополнительно сконфигурирован для удаления кандидатов слияния из набора кандидатов слияния, которые находятся в другой единице предсказания текущей единицы кодирования.
[0011] В другом примере раскрытия устройство, сконфигурированное для кодирования данных видео, содержит средство для определения набора кандидатов слияния для текущей единицы предсказания текущей единицы кодирования, при этом набор кандидатов слияния определяется без сравнения информации движения кандидата слияния в наборе кандидатов слияния с информацией движения каких-либо других единиц предсказания, и средство для выполнения процесса предсказания вектора движения слияния для текущей единицы предсказания с использованием набора кандидатов слияния. Устройство может дополнительно содержать средство для исключения кандидатов слияния из набора кандидатов слияния, которые находятся в другой единице предсказания текущей единицы кодирования.
[0012] В другом примере раскрытия предложен считываемый компьютером носитель данных, имеющий сохраненные на нем инструкции, которые при исполнении побуждают один или более сконфигурированных процессоров кодировать данные видео. Инструкции побуждают упомянутый один или более процессоров определять набор кандидатов слияния для текущей единицы предсказания текущей единицы кодирования, при этом набор кандидатов слияния определяется без сравнения информации движения кандидата слияния в наборе кандидатов слияния с информацией движения каких-либо других единиц предсказания, и выполнять процесс предсказания вектора движения слияния для текущей единицы предсказания с использованием набора кандидатов слияния. Инструкции могут дополнительно побуждать упомянутый один или более процессоров удалять кандидатов слияния из набора кандидатов слияния, которые находятся в другой единице предсказания текущей единицы кодирования.
[0013] Подробности одного или более примеров изложены в описании ниже по тексту и (показаны) на чертежах. Другие признаки, цели и преимущества будут очевидны из описания и чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0014] Фиг. 1 представляет собой концептуальную схему, иллюстрирующую блоки-кандидаты для предсказания вектора движения согласно режиму слияния.
[0015] Фиг. 2 представляет собой концептуальную схему, иллюстрирующую примерные типы разделения.
[0016] Фиг. 3A представляет собой концептуальную схему, иллюстрирующую блоки-кандидаты для предсказания вектора движения режима слияния для разделения Nx2N единицы кодирования.
[0017] Фиг. 3B представляет собой концептуальную схему, иллюстрирующую блоки-кандидаты для предсказания вектора движения режима слияния для разделения 2NxN единицы кодирования.
[0018] Фиг. 4A представляет собой концептуальную схему, иллюстрирующую блоки-кандидаты для предсказания вектора движения режима слияния для разделения NxN единицы кодирования.
[0019] Фиг. 4B представляет собой концептуальную схему, иллюстрирующую другой пример блоков-кандидатов для предсказания вектора движения режима слияния для разделения NxN единицы кодирования.
[0020] Фиг. 5 представляет собой блок-схему, иллюстрирующую пример системы кодирования видео.
[0021] Фиг. 6 представляет собой блок-схему, иллюстрирующую пример средства кодирования видео.
[0022] Фиг. 7 представляет собой блок-схему, иллюстрирующую пример декодера видео.
[0023] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую пример способа осуществления кодирования видео согласно подходам этого раскрытия.
[0024] Фиг. 9 представляет собой блок-схему последовательности операций, иллюстрирующую пример способа декодирования видео согласно подходам этого раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ
[0025] В общем, это раскрытие описывает подходы для кодирования данных видео. Это раскрытие описывает подходы для определения набора кандидатов слияния в процессе предсказания вектора движения режима слияния.
[0026] Устройства цифрового видео реализуют подходы сжатия видео для осуществления кодирования и декодирования информации цифрового видео более эффективно. Сжатие видео может применять подходы пространственного (внутрикадрового) предсказания и/или временного (межкадрового) предсказания для сокращения или удаления избыточности, характерной для последовательностей видео.
[0027] Имеется новый стандарт кодирования видео, а именно Высокоэффективное Кодирование Видео (HEVC), разрабатываемый Объединенной Командой по Кодированию Видео (JCT-VC) Экспертной Группы по Кодированию Видео ITU-T (VCEG) и Группой Экспертов по Движущемся Изображениям ISO/IEC (MPEG). Недавний проект стандарта HEVC, называемый "HEVC Working Draft 6" или "WD6", описан в документе JCTVC-H1003, Bross et al, "High efficiency video coding (HEVC) text specification draft 6," Объединенная Команда по Кодированию Видео (JCT-VC) ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 8-ая Встреча: Сан Хосе, Калифорния, США, Февраль, 2012, который с 1 Июня 2012 может быть загружен из http://phenix.int- evry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H1003-v22.zip.
[0028] Для кодирования видео согласно стандарту Высокоэффективного Кодирования Видео (HEVC), разрабатываемому в настоящее время Объединенной Командой по Кодированию Видео (JCT-VC), видеокадр может быть разделен на единицы кодирования. Единица кодирования (CU) в общем относится к области изображения, которая служит в качестве базовой единицы, к которой применяются различные инструменты кодирования для сжатия видео. CU обычно имеет компоненту яркости, которая может быть обозначена как Y, и две компоненты цветности, которые могут быть обозначены как U и V. В зависимости от формата выборки видео размер компонент U и V в показателях количества выборок может быть таким же как размер компоненты Y или отличным от него. CU типично является квадратной и может быть рассмотрена как аналогичная так называемому макроблоку, например, по другим стандартам кодирования видео, таким как ITU-T H.264.
[0029] Для достижения лучшей эффективности кодирования единица кодирования может иметь варьируемые размеры в зависимости от контента видео. В дополнение, единица кодирования может быть разбита на меньшие блоки для предсказания или преобразования. В частности, каждая единица кодирования может быть дополнительно разделена на единицы предсказания (PU) и единицы преобразования (TU). Единицы предсказания могут быть рассмотрены как аналогичные так называемым разделам (фрагментам) по другим стандартам кодирования видео, например H.264. Единицы преобразования (TU) относятся к блокам остаточных данных, к которым применяется преобразование для создания коэффициентов преобразования.
[0030] Кодирование согласно некоторым из ранее предложенных аспектов развития стандарта HEVC будут описаны в этом документе для целей иллюстрации. Однако, подходы описанные в этом раскрытии могут быть применимыми для других процессов кодирования видео, таких, которые определены согласно H.264 или другому стандарту или частным процессам кодирования видео.
[0031] Усилия стандартизации HEVC основаны на модели устройства кодирования видео, называемой Тестовая Модель HEVC (HM). HM предполагает несколько возможностей устройств кодирования видео над устройствами согласно, например ITU-T H.264/AVC. Например, в то время как H.264 обеспечивает девять режимов осуществления кодирования с внутренним предсказанием, HM обеспечивает вплоть до тридцати четырех режимов кодирования с внутренним предсказанием.
[0032] Согласно HM, CU может включать в себя одну или более единиц предсказания (PU) и/или одну или более единиц преобразования (TU). Синтаксические данные в битовом потоке могут определять наибольшую единицу кодирования (LCU), которая является наибольшей CU, исходя из числа пикселей. В общем, CU имеет аналогичное назначение с макроблоком из H.264, за исключением того, что CU не имеет отличия по размеру. Таким образом, CU может быть разбита на суб-CU. В общем, ссылки в этом раскрытии на CU могут относиться к наибольшей единице кодирования (LCU) изображения или суб-CU из LCU. LCU может быть разбита на суб-CU и каждая суб-CU может быть дополнительно разбита на суб-CU. Синтаксические данные для битового потока могут определять максимальное число раз возможного разбиения LCU, называемое глубиной CU. Соответственно, битовый поток также может определять наименьшую единицу кодирования (SCU). Это раскрытие также использует термин "блок" или "часть" для ссылки на любую из CU, PU или TU. В общем "часть" может относится к любому поднабору видеокадра.
[0033] LCU может быть связана со структурой данных квадродерева. В общем, структура данных квадродерева включает в себя один узел для каждой CU, где корневой узел соответствует LCU. Если CU разбита на 4 суб-CU, узел, соответствующий CU, включает в себя четыре концевых узла, каждый из которых соответствует одной из упомянутых суб-CU. Каждый узел структуры данных квадродерева может обеспечивать синтаксические данные для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разбиения, указывающий, разбита ли CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть определены рекурсивно и могут зависеть от того, разбита ли CU на суб-CU. Если CU не разбита дальше, она называется концевой (листовой) CU.
[0034] Более того, TU концевых CU также могут быть связаны с соответствующими структурами данных квадродерева. Таким образом, концевая CU может включать в себя квадродерево, указывающее, как концевая CU разделяется на TU. Это раскрытие относится к квадродереву, указывающему, как LCU разделяется в качестве квадродерева CU, и квадродереву, указывающему, как концевая CU разделяется на TU в качестве квадродерева TU. Корневой узел квадродерева TU в общем соответствует концевому CU, в то время как корневой узел квадродерева CU в общем соответствует LCU. TU квадродерева TU, которые не разбиты, называются концевыми TU.
[0035] Концевая CU может включать в себя одну или более единиц предсказания (PU). В общем, PU представляет всю или часть соответствующей CU и может включать в себя данные для извлечения опорной выборки для PU. Например, когда PU кодируется во внешнем режиме, PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения, могут описывать, например горизонтальную компоненту вектора движения, вертикальную компоненту вектора движения, разрешение для вектора движения (например одна четвертая пиксельной точности или одна восьмая пиксельной точности), опорный кадр, на который указывает вектор движения и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для концевой CU, определяющей PU (несколько PU) также могут описывать, например разделение CU на одну или более PU. Режимы разделения могут отличаться в зависимости от того, не кодирована ли с предсказанием CU, кодирована ли в режиме внутреннего предсказания, кодирована ли в режиме внешнего предсказания. Для внутреннего кодирования PU может быть обработана также как концевая единица преобразования, описанная ниже по тексту.
[0036] Чтобы кодировать блок (например, единицу предсказания (PU) данных видео), сначала должен быть выведен предиктор для блока. Предиктор может быть выведен либо посредством внутреннего (I) предсказания (т.е. пространственного предсказания), либо внешнего (P или B) предсказания (т.е. временного предсказания). Следовательно, некоторые единицы предсказания могут быть внутренне кодированы (I) с использованием пространственного предсказания относительно соседних опорных блоков в том же самом кадре, и другие единицы предсказания могут быть внешне кодированы (P или B) относительно опорных блоков в других кадрах.
[0037] После идентификации предиктора вычисляется разность между исходным блоком данных видео и его предиктором. Эта разность также называется остатком предсказания, и относится к пиксельным разностям между пикселями блока, который должен быть кодирован, и соответствующими опорными выборками (которые могут быть пикселями с целой точностью или пикселями с интерполированной дробной точностью) опорного блока, т.е. предиктора. Для достижения лучшего сжатия остаток предсказания (т.е. массив значений пиксельных разностей) обычно преобразовывается, например с использованием дискретного косинусного преобразования (DCT), целочисленного преобразования, преобразования Карунена-Лоэва (K-L) или другого преобразования.
[0038] Кодирование PU с использованием внешнего предсказания влечет за собой вычисление вектора движения между текущим блоком и блоком в опорном кадре. Векторы движения вычисляются посредством процесса, называемого оценка движения (или поиск движения). Вектор движения, например, может указывать смещение единицы предсказания в текущем кадре относительно опорной выборки опорного кадра. Опорная выборка может быть блоком, который ищут для близкого соответствия части CU, включающей в себя кодируемую PU в показателях пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой квадратов разностей (SSC) или другими метриками разностей. Опорная выборка может возникать в любом месте в пределах опорного кадра или опорного среза. В некоторых примерах опорная выборка может быть интерполирована целиком или частично, и возникнуть в дробной пиксельной позиции. После нахождения части опорного кадра, которая лучше всего соответствует текущей части, средство кодирования определяет текущий вектор движения для текущей части в качестве разности в местоположении от текущей части до соответствующей части в опорном кадре (например, от центра текущей части до центра соответствующей части).
[0039] В некоторых примерах средство кодирования может сигнализировать вектор движения для каждой части в закодированном битовом потоке видео. Сигнализируемый вектор движения используется декодером для выполнения компенсации движения для того, чтобы декодировать данные видео. Однако, сигнализация исходного вектора движения непосредственно может дать в результате менее эффективное кодирование, поскольку типично большое число битов необходимо для переноса информации.
[0040] В некоторых примерах вместо того, чтобы непосредственно сигнализировать исходный вектор движения, средство кодирования может предсказывать вектор движения для каждой PU. В этом раскрытии термин "блок" может быть использован в общем для ссылки на CU, PU или TU. При выполнении процесса предсказания вектора движения средство кодирования может выбрать набор векторов движения кандидатов, определенных для пространственно соседних блоков в том же самом кадре, что и текущая PU, или вектор движения кандидат, определенный для совместно размещенной PU в опорном кадре. Средство кодирования может выполнить предсказание вектора движения для выбора конкретного вектора движения кандидата и, если необходимо, сигнализировать элемент синтаксиса, указывающий выбранного кандидата-вектора движения, для сокращения частоты следования битов при сигнализации. Векторы движения кандидаты из пространственно соседних блоков могут быть названы пространственными MVP-кандидатами, тогда как вектор движения кандидат из совместно размещенного блока в другом опорном кадре может быть назван временным MVP-кандидатом.
[0041] Подходы этого раскрытия направлены на режим "слияния" предсказания вектора движения. В режиме слияния средство кодирования видео выдает инструкцию декодеру, посредством сигнализации битового потока о синтаксисе предсказания, на копирование вектора движения, опорного индекса (идентифицирующего опорный кадр в данном опорном списке изображений, на который указывает вектор движения) и направления предсказания движения (которое идентифицирует опорный список изображений (список 0 или список 1) т.е. исходя из того, предшествует ли во времени опорный кадр или (он) следует за текущим кадром), из выбранного вектора движения кандидата для текущей части кадра. Это исполняется посредством сигнализации в битовом потоке индекса на набор векторов движения кандидатов, идентифицирующий выбранный вектор движения кандидат (т.е. конкретный пространственный MVP-кандидат или временной MVP кандидат). Набор векторов движения кандидатов может быть получен посредством настроек по умолчанию или выведен из некоторых параметров кодирования. Таким образом, для режима слияния синтаксис предсказания может включать в себя флаг, идентифицирующий режим (в этом случае режим "слияния") и индекс, идентифицирующий выбранный вектор движения кандидат. В некоторых примерах вектор движения кандидат будет находится в причинной PU со ссылкой на текущую PU. Таким образом, вектор движения кандидат уже будет декодирован декодером. Как таковой, декодер уже принял и/или определил вектор движения, опорный индекс и направление предсказания движения для причинной PU. Как таковой, декодер может просто извлечь вектор движения, опорный индекс и направление предсказания движения, связанные с причинной PU из памяти и скопировать эти значения для текущей PU. Для декодирования блока в режиме слияния декодер получает блок-предиктор используя предсказание вектора движения и добавляет остаточные данные к блоку-предиктору для восстановления кодированного блока.
[0042] Как только оценка движения выполнена для определения вектора движения для текущей части, средство кодирования сравнивает соответствующую часть в опорном кадре с текущей частью. Это сравнение типично влечет за собой вычитание части (которая обычно называется "опорной выборкой") в опорном кадре из текущей части и имеет результатом так называемые остаточные данные, как отмечено выше по тексту. Остаточные данные указывают значения пиксельных разностей между текущей частью и опорной выборкой. Средство кодирования затем преобразовывает эти остаточные данные из пространственной области в область преобразования, такую как частотная область. Обычно средство кодирования применяет дискретное косинусное преобразование (DCT) к остаточным данным для исполнения этого преобразования. Средство кодирования выполняет это преобразование для того, чтобы содействовать сжатию остаточных данных поскольку получающиеся в результате коэффициенты преобразования представляют другие частоты, при этом большая часть энергии обычно концентрируется на нескольких низкочастотных коэффициентах.
[0043] Типично получающиеся в результате коэффициенты преобразования группируются вместе таким образом, который делает возможным кодирование по длинам серий, особенно если коэффициенты преобразования сначала квантованы (округлены). Средство кодирования выполняет это кодирование по длинам серий квантованных коэффициентов преобразования и затем выполняет статистическое кодирование без потерь (или так называемое "энтропийное") чтобы дополнительно сжать кодированные по длинам серий квантованные коэффициенты преобразования.
[0044] После выполнения энтропийного кодирования без потерь средство кодирования генерирует битовый поток, который включает в себя закодированные данные видео. Этот битовый поток также включает в себя некоторое число элементов синтаксиса предсказания в некоторых примерах, которые определяют, например, было ли выполнено предсказание вектора движения, режим вектора движения и индекс предиктора вектора движения (MVP) (т.е. индекс части кандидата с выбранным вектором движения). Индекс MVP также может быть назван именем переменной его элемента синтаксиса "mvp_idx".
[0045] Фиг. 1 показывает набор 90 векторов движения кандидатов, в настоящее время предложенный в стандарте HEVC для использования в режиме слияния. Режим слияния использует шесть кандидатов слияния из следующих пространственных и временных блоков: блок 91 слева снизу (BL), блок 92 слева (L), блок 93 сверху справа (RA), блок 94 сверху (A), блок 95 сверху слева (LA) и временной блок (T) 96. Векторы движения кандидаты, связанные с этими блоками, используются для определения предиктора вектора движения в режиме слияния.
2
1
[0046] Временной блок 96 может находится в совместно размещенном блоке в кадре, отличном от такового текущей PU (например T) или смежном с совместно размещенным блоком в кадре, отличном от такового текущей PU 108 (например T). Местоположения пространственных блоков кандидатов (т.е. BL, L, LA, A и RA), изображенных на Фиг. 1, не являются абсолютными позициями, но в свою очередь являются относительными позициями в отношении текущей PU 98 на основе следующих общих определений. Следует отметить, что блокам кандидатам нет необходимости являться ближайшим возможным блоком, который удовлетворяет следующим определениям, а могут быть любой PU, которая удовлетворяет этим определениям. Блок 95 кандидат LA расположен сверху верхней линии, определяющей текущую PU и слева левой линии, определяющей текущую PU. Блок 92 кандидат L расположен слева левой линии, определяющей текущую PU, но также сверху нижней линии, определяющей текущую PU и снизу верхней линии, определяющей текущую PU. Блок 91 кандидат BL расположен снизу нижней линии, определяющей текущую PU и слева левой линии, определяющей текущую PU. Блок 94 кандидат A расположен сверху верхней линии, определяющей текущую PU, но также справа левой линии, определяющей текущую PU и слева правой линии, определяющей текущую PU. Блок 93 кандидат RA расположен справа правой линии, определяющей текущую PU и сверху верхней линии, определяющей текущую PU.
[0047] Кандидаты слияния генерируются для каждой PU. Таким образом, каждая PU имеет свой собственный набор кандидатов слияния. Это включает в себя PU, которые отделены от большей CU. Пример Фиг. 1 предназначается для 2Nx2N-разделенной PU (например квадратной PU). Фиг. 2 показывает дополнительные примеры единиц предсказания с разными типами разделения. Как показано на Фиг. 2, разделение 2Nx2N является разделением квадратной формы. В сущности, это PU из неразделенной CU. Разделение 2NxN выполнено посредством деления квадратной CU на две горизонтально-ориентированные PU, где PU 0 находится сверху от PU 1. Разделение Nx2N выполнено посредством деления квадратной CU на две вертикально-ориентированные PU, где PU 0 находится слева от PU 1. Разделение NxN выполнено посредство деления квадратной CU на четыре PU одного размера. В разделении NxN, PU 0 находится сверху слева CU, PU 1 находится сверху справа CU, PU 2 находится снизу слева CU и PU 3 находится снизу справа CU.
[0048] Фиг. 2 показывает дополнительные типы "неквадратных" разделений. Разделение 2NxnD является типом горизонтально-ориентированного неквадратного разделения, где нижняя PU(PU 1) имеет меньший размер (т.е. четверть размера от размера CU), чем верхняя PU (PU 0). Разделение 2NxnU является типом горизонтально-ориентированного неквадратного разделения, где нижняя PU (PU 1) имеет больший размер (т.е. три четверти от размера CU), чем верхняя PU (PU 0). Разделение nLx2N является типом вертикально-ориентированного неквадратного разделения, где левая PU (PU 0) имеет меньший размер (т.е. четверть размера от размера CU), чем правая PU (PU 1). Разделение nRx2N является типом вертикально-ориентированного неквадратного разделения, где левая PU (PU 0) имеет больший размер (т.е. три четверти от размера CU), чем правая PU (PU 1). Эти примеры разделения иногда называют асимметричное разделение движения (AMP).
[0049] CU разделяются согласно одному из упомянутых типов разделения для обеспечения более точного внешнего предсказания (временного предсказания). Информация движения сигнализируется отдельно для каждого раздела. С более мелким разделом (например, раздел 2NxN является более мелким, чем раздел 2Nx2N) потенциально может быть получено лучшее качество предиктора для каждого раздела. С другой стороны, поскольку информация движения сигнализируется отдельно для каждого раздела, непроизводительные затраты сигнализации CU с более мелким разделом также являются относительно высокими. На практике определение типа разделения для текущей CU часто основывается на оптимизации скорости передачи от искажения. Выбранный тип разделения является компромиссом между точностью предсказания и непроизводительными затратами сигнализации. Предложения настоящего времени для стандарта HEVC реализуют подходы, чтобы избегать использования избыточных кандидатов слияния для PU одной и той же CU. Избыточный кандидат слияния является кандидатом слияния, который имеет ту же самую информацию движения, что и другая PU в той же самой CU. Для конкретного типа разделения каждый из кандидатов слияния для PU 1 (или PU 1, 2 и 3 для разделения NxN) сравниваются с информацией движения PU 0 (или PU 0, 1 и 2 для разделения NxN), чтобы избегать того, что вся CU использует одну и ту же информацию движения. Если каждая PU в CU использует одну и ту же информацию, результат будет дублирующим относительно типа разделения 2Nx2N (т.е. нет разделения). Таким образом преимущество разделения CU для более точного внешнего предсказания будет сведено к нулю.
[0050] Для того чтобы избежать использования избыточных кандидатов слияния, одно предложение для HEVC предлагает сравнивать информацию движения для каждого кандидата слияния в наборе кандидатов слияния с информацией движения других PU той же самой CU. Любой из кандидатов слияния с той же самой информацией движения что и у ранее кодированной PU удаляется из набора кандидатов слияния, чтобы избежать того что, вся CU использует одну и ту же информацию движения.
[0051] Согласно этому подходу, процесс для генерирования набора кандидатов слияния для PU является следующим:
1. Проверяется информация движения для следующего блока кандидата
2. Сравнивается информация движения кандидата с информацией движения для ранее кодированных PU в той же самой CU
3. Если информация движения кандидата для блока кандидата является такой же как информация движения для ранее кодированной PU, осуществляется переход к этапу 1; иначе, осуществляется переход к этапу 4
4. Добавляется блок кандидат в набор кандидатов слияния
5. Если все блоки кандидаты проверены, осуществляется завершение; иначе, осуществляется переход к этапу 1
[0052] В общем, ограничение в отношении кандидатов слияния с этим процессом дает следующие результаты для типов разделения 2NxN, Nx2N и NxN:
1) случаи 2NxN/Nx2N: если кандидат слияния для второй PU (PU 1) имеет такую же информацию движения что и у первой PU (PU 0), этот кандидат слияния будет установлен в качестве не являющегося доступным.
2) случай NxN:
a. PU 0 и PU 1 имеют одну и ту же информацию движения. Если кандидат слияния PU 3 имеет ту же самую информацию движения, что и PU 2, кандидата слияния устанавливают недоступным;
b. PU 0 и PU 2 имеют одну и ту же информацию движения. Если кандидат слияния PU 3 имеет ту же самую информацию движения, что и PU 1, кандидата слияния устанавливают недоступным;
[0053] В то время как этот процесс не устраняет избыточные кандидаты слияния, этот процесс требует чтобы все PU были кодированы/декодированы до создания набора кандидатов слияния для последующих PU. Как таковая, возможность параллельно обрабатывать множественные PU одной CU ограничена. Средство кодирования/декодер должно определять конечную информацию движения всех предшествующих PU в той же самой CU до построения набора кандидатов слияния для текущей PU. Кроме того, операция сравнения для каждого блока кандидата может увеличить вычислительную сложность для средства кодирования/декодера.
[0054] В одном примере это раскрытие предлагает удалять операцию проверки сравнением во время генерирования набора кандидатов слияния, таким образом делая генерирование кандидатов слияния ориентированным на параллелизацию. Раскрытый подход устраняет необходимость в сравнении информации движения между блоками кандидатами и другими PU из CU. Как таковые наборы кандидатов слияния для всех PU из CU могут быть сгенерированы параллельно. Раскрытый процесс также может сокращать вычислительную сложность осуществления кодирования и декодирования.
[0055] Предложенный процесс для каждой PU заключается в следующем:
1. Проверяется следующий блок кандидат
2. Добавляется блок кандидат в набор кандидатов
3. Если все соседние блоки проверены, осуществляется завершение; иначе, осуществляется переход к этапу 1
[0056] Этот процесс обеспечивает унифицированное решение для всех PU без учета индекса единицы предсказания (например, PU 0, PU 1) и без осуществления сравнения информации движения блока кандидата с информацией движения ранее кодированных PU. Этапы сравнения информации движения, проиллюстрированные выше по тексту, могут быть удалены. Хотя описаны итеративно, этапы этого способа могут быть выполнены параллельно. Например, первый подпроцесс параллельного процесса может включать в себя инструкции для выполнения первого варианта этапов 1 и 2, и второй, другой подпроцесс параллельного процесса может включать в себя инструкции для выполнения второго варианта этапов 1 и 2. Также могут быть обеспечены дополнительные подпроцессы.
[0057] На основании предложенного подхода кандидат слияния, который находится внутри предыдущей PU, может быть включен в набор кандидатов слияния. Однако это может заставить целую CU использовать одну и ту же информацию движения. Как таковая, разделенная CU может получить точно так же кодированные векторы движения, что и разделение 2Nx2N и преимущества разделения для внешнего предсказания могут быть ограничены. В дополнение, включение таких избыточных блоков кандидатов в наборе кандидатов слияния может вызвать некоторые снижения производительности вследствие того, что экстра биты используются для сигнализации избыточных кандидатов слияния. Как таковое, это раскрытие также предлагает удалять кандидатов слияния из набора кандидатов слияния, если кандидат слияния расположен внутри другой PU той же самой CU.
[0058] Фиг. 3A представляет собой концептуальную схему, иллюстрирующую блоки-кандидаты для режима слияния для разделения Nx2N CU. Следует отметить, что подходы, показанные на Фиг. 3A, также применимы для типов асимметричного разделения nLx2N или nRx2N. Набор 100 кандидатов слияния показывает кандидатов слияния для PU 0 из Nx2N-разделенной CU. Поскольку ни один кандидат слияния в наборе 100 кандидатов слияния не находится в другой PU той же самой CU, все кандидаты слияния могут оставаться в наборе 100 кандидатов слияния. Набор 102 кандидатов слияния показывает кандидатов слияния для PU 1 из Nx2N-разделенной CU. Как можно видеть для набора 102 слияния для PU 1, кандидат L слияния происходит из PU 0 той же самой CU. Как таковой, кандидат L слияния может быть удален/исключен из набора 102 кандидатов слияния. В этом контексте, удаленный кандидат слияния может быть сочтен за кандидата, который удален из предварительно определенного списка кандидатов слияния. Исключенный кандидат слияния может быть кандидатом слияния, который исключен из списка кандидатов слияния по мере выведения списка кандидатов слияния, вне зависимости от того, является ли этот список предварительно определенным. В общем, удаленный/исключенный кандидат слияния является любым кандидатом слияния, который не используется в конечном списке кандидатов слияния.
[0059] Следует отметить, что кандидату L слияния нет необходимости быть расположенным в точной позиции в PU 0 (например, в случае, когда PU 0 разделена дополнительно), но он может быть исключен, если кандидат L слияния расположен в любой части PU 0. Следует отметить, что каждый из наборов 100 и 102 кандидатов слияния также имеет временного кандидата T слияния, как показано на Фиг. 1.
[0060] Фиг. 3B представляет собой концептуальную схему, иллюстрирующую блоки кандидаты для режима слияния для 2NxN-разделения CU. Следует отметить, что подходы, показанные на Фиг. 3B, также применимы для типов асимметричного разделения 2NxnU или 2NxnD. Набор 104 кандидатов слияния показывает кандидатов слияния для PU 0 из 2NxN-разделенной CU. Поскольку ни один кандидат слияния в наборе 104 кандидатов слияния не находится в другой PU той же самой CU, все кандидаты слияния могут оставаться в наборе 104 кандидатов слияния. Набор 106 кандидатов слияния показывает кандидатов слияния для PU 1 из 2NxN-разделенной CU. Как можно видеть для набора 106 слияния для PU 1, кандидат A слияния происходит из PU 0 той же самой CU. Как таковой, кандидат A слияния может быть удален/исключен из набора 106 кандидатов слияния. Следует отметить, что кандидату A слияния нет необходимости быть расположенным в точной позиции в PU 0, как показано (например в случае, когда PU 0 разделена дополнительно), но он может быть исключен, если кандидат A слияния расположен в любой части PU 0. Следует отметить, также, что каждый из наборов 104 и 106 кандидатов слияния также имеет временного кандидата T слияния, как показано на Фиг. 1.
[0061] Фиг. 4A представляет собой концептуальную схему, иллюстрирующую блоки-кандидаты для режима слияния для NxN-разделения CU. Набор 108 кандидатов слияния показывает кандидатов слияния для PU 0 из NxN-разделенной CU. Поскольку ни один кандидат слияния в наборе 108 кандидатов слияния не находится в другой PU той же самой CU, все кандидаты слияния могут оставаться в наборе 108 кандидатов слияния.
[0062] Набор 110 кандидатов слияния показывает кандидатов слияния для PU 1 из NxN-разделенной CU. Как можно видеть для набора 110 слияния для PU 1, кандидаты L и BL слияния происходят соответственно из PU 0 и PU 2 той же самой CU. Как таковые, кандидаты L и BL слияния могут быть удалены/исключены из набора 110 кандидатов слияния. Следует отметить, что кандидатам L и BL слияния нет необходимости быть расположенными в точной позиции в PU 0 и PU 2 как показано (например в случае, когда PU 0 или PU 2 разделены дополнительно), но они могут быть исключены, если кандидаты L и/или BL слияния расположены в любой части PU 0 и/или PU 2.
[0063] Набор 112 кандидатов слияния показывает кандидатов слияния для PU 2 из NxN-разделенной CU. Как можно видеть для набора 112 слияния для PU 2, кандидаты A и RA слияния происходят соответственно из PU 0 и PU 1 той же самой CU. Как таковые, кандидаты A и RA слияния могут быть удалены/исключены из набора 112 кандидатов слияния. Следует отметить, что кандидатам A и RA слияния нет необходимости быть расположенными в точной позиции в PU 0 и PU 1 как показано (например в случае, когда PU 0 или PU 1 разделены дополнительно), но они могут быть исключены, если кандидаты A и/или RA слияния расположены в любой части PU 0 и/или PU 1.
[0064] Набор 114 кандидатов слияния показывает кандидатов слияния для PU 3 из NxN-разделенной CU. Как можно видеть для набора 114 слияния для PU 3, кандидаты LA, A и L слияния происходят соответственно из PU 0, PU 1 и PU 2 той же самой CU. Как таковые, кандидаты LA, A и L слияния могут быть удалены/исключены из набора 114 кандидатов слияния. Следует отметить, что кандидатам LA, A и L слияния нет необходимости быть расположенными в точной позиции в PU 0, PU 1 и PU 2 как показано (например в случае, когда PU 0, PU 1 или PU 2 разделены дополнительно), но они могут быть исключены, если кандидаты LA, A и/или L слияния расположены в любой части PU 0, PU 1 и/или PU 2.
[0065] Следует отметить, что каждый из наборов 108, 110, 112 и 114 кандидатов слияния также имеет временного кандидата T слияния, как показано на Фиг. 1.
[0066] Хотя примеры, описанные выше по тексту рассматривают только типы разделения 2NxN, Nx2N и NxN, другие типы разделения (например AMP, геометрическое разделение движения (GMP) и т.д.) также могут извлечь пользу из раскрытых подходов. В общем, предложенные подходы определяют набор кандидатов слияния без сравнения информации движения кандидатов слияния с информацией движения каких-либо других единиц предсказания. Кроме того, кандидаты слияния в наборе кандидатов слияния для текущей единицы предсказания могут быть удалены/исключены, если они находятся в другой единице предсказания той же самой единицы кодирования.
[0067] В другом примере для режима разделения NxN все кандидаты слияния каждой единицы предсказания используются вне зависимости от какого-либо использования другой единицей предсказания. Фиг. 4B представляет собой концептуальную схему иллюстрирующую пример блоков кандидатов для режима слияния для разделения NxN единицы кодирования, где ни один из кандидатов слияния не удаляется/исключается вне зависимости от их позиции в другой PU. Как показано на Фиг. 4B, все кандидаты (в том числе временной кандидат T) используются для каждой из PU 116, 118, 120 и 122. Для других режимов разделения, таких как 2NxN, Nx2N и асимметричных режимов, таких как 2NxnD, 2NxnU, nLx2N и nRx2N, исключение некоторых кандидатов для текущей PU, которые расположены внутри другой PU той же самой CU, применяется согласно процессу, описанному выше по тексту.
[0068] В другом примере раскрытия генерируется набор кандидатов слияния, который использует все потенциальные кандидаты слияния в наборе, показанном на Фиг. 1 для единицы 1 предсказания в режимах разделения Nx2N и 2NxN, в случае если единица 0 предсказания в конкретном режиме разделения использует кандидата слияния (т.е. фактически выбранного кандидата в предсказании вектора движения), который не дублирует кандидата слияния, который бы использовался в режиме разделения 2Nx2N. В другом примере для режима разделения NxN, все кандидаты слияния используются вне зависимости от какого-либо использования другой единицей предсказания.
[0069] Правила для генерирования набора кандидатов слияния согласно этому примеру являются следующими:
1. режим разделения Nx2N: Кандидат слияния слева (L) PU 1 используется, если индекс слияния (т.е. фактически выбранный кандидат выполняемого слияния), используемый для PU 0, является RA, A или T; иначе L не используется (в сравнении с предыдущим примером раскрытия, где L никогда не используется для PU 1)
2. режим разделения 2NxN: Кандидат слияния сверху (A) PU 1 используется, если индекс слияния, используемый для PU 0, является BL, L или T; иначе A не используется (в сравнении с предыдущим примером раскрытия, где A никогда не используется для PU 1).
3. режим разделения NxN: Все кандидаты предсказания всех PU рассматриваются как достоверные.
[0070] В примере Nx2N применение кандидата L слияния для PU 1 не становится дублированием режима разделения 2Nx2N, поскольку местоположения кандидатов слияния RA, A или T для PU 0 в режиме разделения Nx2N не должны быть обязательно использованы для разделения 2Nx2N. Аналогично, в примере 2NxN, применение кандидата A слияния для PU 1 не становится дублированием режима разделения 2Nx2N, поскольку кандидаты слияния BL, L или T для PU 0 не должны быть обязательно использованы для разделения 2Nx2N.
[0071] Фиг. 5 представляет собой блок-схему, иллюстрирующую пример системы 10 кодирования и декодирования видео, которая может быть выполнена с возможностью применения подходов для генерирования векторов движения кандидатов в режиме слияния в соответствии с примерами этого раскрытия. Как показано на Фиг. 5, система 10 включает в себя устройство-источник 12, которое передает закодированное видео устройству-адресату 14 через канал 16 связи. Данные закодированного видео также могут быть сохранены на носителе 34 хранения или файловом сервере 36 и могут быть доступны посредством устройства-адресата 14 по мере необходимости. Когда сохранены на носитель хранения или файловый сервер, средство 20 кодирования видео может обеспечить данные кодированного видео другому устройству, например сетевому интерфейсу, компакт диску (CD), устройству записи Blu-ray дисков или дисков цифрового видео или устройству-установке тиснения или другим устройствам, для сохранения данных кодированного видео на носитель хранения. Аналогично устройство, отдельно от декодера 30 видео, такое как сетевой интерфейс, средство чтения CD или DVD, или подобное, может извлекать данные кодированного видео из носителя хранения и обеспечивать извлеченные данные декодеру 30 видео.
[0072] Устройство-источник 12 и устройство-адресат 14 могут содержать любое из широкого диапазона устройств, в том числе мобильные устройства, настольные компьютеры, компьютеры-ноутбуки (т.е. лэптопы), планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые смартфоны, телевизоры, камеры, устройства отображения, цифровые медиапроигрыватели, видеоигровые консоли или подобное. Во многих случаях, такие устройства могут быть оборудованы для беспроводной связи. Следовательно, канал 16 связи может содержать беспроводной канал, проводной канал или комбинацию беспроводного и проводного каналов, подходящую для передачи данных закодированного видео. Аналогично, файловый сервер 36 может осуществлять доступ устройством-адресатом 14 посредством любого стандарта соединения для данных, в том числе Интернет-соединения. Это может включать в себя беспроводной канал (например, Wi-Fi соединение), проводное соединение (например, DSL, кабельный модем) или их комбинацию, которая является подходящей для осуществления доступа к данным закодированного видео, хранимым на файловом сервере.
[0073] Подходы для генерирования векторов движения кандидатов в режиме слияния в соответствии с примерами этого раскрытия могут быть применены к кодированию видео в поддержку любого из многообразия мультимедийных применений, таких как телевизионные вещания по воздуху, кабельные передачи телевидения, спутниковые передачи телевидения, потоковые передачи видео, например, через Интернет, осуществление кодирования цифрового видео для сохранения на носителе хранения данных, декодирование цифрового видео, хранимого на носителе хранения данных, или другие применения. В некоторых примерах, система 10 может быть сконфигурирована для поддержки односторонней или двухсторонней передачи видео для поддержки применений, таких как потоковая передача видео, воспроизведение видео, вещание видео и/или видеотелефония.
[0074] В примере по Фиг. 5 устройство-источник 12 включает в себя источник 18 видео, средство 20 кодирования видео, модулятор/демодулятор 22 и передатчик 24. В устройстве-источнике 12, источник 18 видео может включать в себя источник, такой как устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, интерфейс выдачи видео, для приема видео от поставщика контента видео и/или систему компьютерной графики для генерирования данных компьютерной графики в качестве исходного видео, или комбинацию таких источников. В качестве одного примера, если источник 18 видео является видеокамерой, устройство-источник 12 и устройство-адресат 14 могут формировать так называемые телефоны с камерами или видеотелефоны. Однако, подходы, описанные в этом раскрытии могут быть применимы к кодированию видео в общем, и могут быть применены к беспроводным и/или проводным применениям, или применению, в котором данные закодированного видео сохраняются на локальном диске.
[0075] Захваченное, предварительно захваченное или сгенерированное компьютером видео может быть закодировано средством 20 кодирования видео. Информация закодированного видео может быть модулирована модемом 22 согласно стандарту связи, такому как протокол беспроводной связи, и переданы к устройству-адресату 14 посредством передатчика 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, выполненные для модуляции сигнала. Передатчик 24 может включать в себя схемы, спроектированные для передачи данных, в том числе усилители, фильтры и одну или более антенн.
[0076] Захваченное, предварительно захваченное или сгенерированное компьютером видео, которое кодируется средством 20 кодирования видео также может быть сохранено на носитель 34 данных или файловый сервер 36 для потребления впоследствии. Носитель 34 хранения может включать в себя диски Blu-ray, DVD, CD-ROM, флеш-память, или любые другие цифровые носители данных для сохранения закодированного видео. Закодированное видео, сохраненное на носителе 34 данных, затем может быть доступно посредством устройства-адресата 14 для декодирования и воспроизведения.
[0077] Файловый сервер 36 может быть любым типом сервера, способного хранить закодированное видео и передавать это закодированное видео устройству-адресату 14. Примерные файловые серверы включают в себя веб-сервер (например, для веб-сайта), FTP сервер, подключаемые к сети устройства хранения (NAS), локальный дисковый накопитель, или любой другой тип устройства способного хранить данные закодированного видео и передавать их устройству-адресату. Передача данных закодированного видео от файлового сервера 36 может быть потоковой передачей, передачей загрузки или их комбинацией. Файловый сервер 36 может быть доступен устройством-адресатом 14 посредством любого стандарта соединения для данных, в том числе Интернет-соединения. Это может включать в себя беспроводной канал (например, Wi-Fi соединение), проводное соединение (например, DSL, кабельный модем, Ethernet, USB и т.д.) или их комбинацию, которая является подходящей для осуществления доступа к данным закодированного видео, хранимым на файловом сервере.
[0078] Устройство-адресат 14 в примере Фиг. 5 включает в себя приемник 26, модем 28, декодер 30 видео и устройство 32 отображения. Приемник 26 устройства-адресата 14 принимает информацию по каналу 16 и модем 28 демодулирует информацию для выработки демодулированного битового потока для декодера 30 видео. Информация, передаваемая по каналу 16, может включать в себя многообразие информации синтаксиса, генерируемой средством 20 кодирования видео для использования декодером 30 видео при декодировании данных видео. Такой синтаксис также может быть включен в данные закодированного видео, хранимые на носителе 34 данных или файловом сервере 36. Каждое из средства 20 кодирования видео и декодера 30 видео может формировать соответствующее средство кодирования - декодер (CODEC), которое способно кодировать или декодировать данные видео.
[0079] Устройство 32 отображения может быть объединено с или быть внешним относительно устройства-адресата 14. В некоторых примерах устройство-адресат 14 может включать в себя интегрированное устройство отображения и также быть сконфигурировано для взаимодействия с внешним устройством отображения. В других примерах устройство-адресат 14 может быть устройством отображения. В общем, устройство 32 отображения отображает данные декодированного видео пользователю и может содержать любое из многообразия устройств отображения, таких как жидкокристаллическое устройство отображения (LCD), плазменное устройство отображения, устройство отображения на органических светодиодах (OLED) или другой тип устройства отображения.
[0080] В примере по Фиг. 5 канал 16 связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр или одну или более физических линий передачи, или комбинацию беспроводной и проводной сред. Канал 16 связи может формировать часть пакетной сети, такой как локальная сеть, широкомасштабная сеть или глобальная сеть, такая как Интернет. Канал 16 связи в общем представляет любой подходящий носитель связи, или совокупность разных носителей связи, для передачи данных видео от устройства-источника 12 устройству-адресату 14, в том числе любую подходящую комбинацию проводного или беспроводного носителей. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть пригодным для содействия связи от устройства-источника 12 к устройству-адресату 14.
[0081] Средство 20 кодирования видео и декодер 30 видео могут функционировать согласно стандарту сжатия видео, такому как разрабатываемый в настоящее время стандарт Высокоэффективного Кодирования Видео (HEVC) и могут соответствовать Тестовой Модели HEVC (HM). В качестве альтернативы средство 20 кодирования видео и декодер 30 видео могут функционировать согласно другим частным или промышленным стандартам, таким как стандарт ITU-T H.264, альтернативно называемый MPEG-4, Часть 10, Усовершенствованное Кодирование Видео (AVC) или расширения таких стандартов. Подходы этого раскрытия, однако, не ограничены каким-либо конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263.
[0082] Хотя не показано на Фиг. 5, в некоторых аспектах каждое из средства 20 кодирования видео и декодера 30 видео может быть объединено со средством кодирования и декодером аудио и может включать в себя надлежащие блоки MUX-DEMUX, или другое аппаратное обеспечение и программное обеспечение, для обработки кодирования и аудио и видео в общем потоке данных или раздельных потоках данных. Если применимо, в некоторых примерах, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0083] Каждое из средства 20 кодирования видео и декодера 30 видео может быть реализовано как любое из многообразия подходящих схем средства кодирования, таких как один или более микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, программное обеспечение, программно-аппаратное обеспечение или любая их комбинация. Когда подходы реализуются частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения в подходящем невременном считываемом компьютером носителе и исполнять инструкции в аппаратном обеспечении используя один или более процессоров для выполнения подходов этого раскрытия. Каждое из средства 20 кодирования видео и декодера 30 видео может быть включено в одно или более средств кодирования или декодеров, любое из которых может быть интегрировано как часть объединенного средства кодирования/декодера (CODEC) в соответствующем устройстве.
[0084] Средство 20 кодирования видео может реализовать любой или все подходы этого раскрытия для генерирования векторов движения кандидатов в режиме слияния в процессе кодирования видео. Аналогично декодер 30 видео может реализовать любой или все эти подходы для генерирования векторов движения кандидатов в режиме слияния в процессе декодирования видео. Кодер (“coder”) видео, как описано в этом раскрытии, может относится к средству кодирования (“encoder”) видео или декодеру (“decoder”) видео. Аналогично блок кодирования видео может относится к средству кодирования видео или декодеру видео. Аналогично кодирование видео может относится к кодированию видео или декодированию видео.
[0085] В одном примере раскрытия средство 20 кодирования видео устройства-источника 12 может быть сконфигурировано для определения набора кандидатов слияния для текущей единицы предсказания текущей единицы кодирования, при этом набор кандидатов слияния определяется без сравнения информации движения кандидата слияния в наборе кандидатов слияния с информацией движения каких-либо других единиц предсказания, и выполнения процесса предсказания вектора движения слияния для текущей единицы предсказания с использованием набора кандидатов слияния. Средство 20 кодирования видео может быть дополнительно сконфигурировано для удаления кандидатов слияния из набора кандидатов слияния, которые находятся в другой единице предсказания текущей единицы кодирования.
[0086] В другом примере раскрытия декодер 30 видео устройства-источника 12 может быть сконфигурирован для определения набора кандидатов слияния для текущей единицы предсказания текущей единицы кодирования, при этом набор кандидатов слияния определяется без сравнения информации движения кандидата слияния в наборе кандидатов слияния с информацией движения каких-либо других единиц предсказания, и для выполнения процесса предсказания вектора движения слияния для текущей единицы предсказания с использованием набора кандидатов слияния. Декодер 30 видео может быть дополнительно сконфигурирован для удаления кандидатов слияния из набора кандидатов слияния, которые находятся в другой единице предсказания текущей единицы кодирования.
[0087] Фиг. 6 представляет собой блок-схему, иллюстрирующую пример средства 20 кодирования видео, которое может использовать подходы для генерирования векторов движения кандидатов в режиме слияния, как описано в этом раскрытии. Средство 20 кодирования видео будет описано в контексте кодирования HEVC для целей иллюстрации, но без ограничения этим раскрытием, что касается других способов или стандартов кодирования.
[0088] Средство 20 кодирования видео может выполнять внутреннее и внешнее кодирование CU в видеокадрах. Внутреннее кодирование полагается на пространственное предсказание для сокращения или удаления пространственной избыточности в данных видео в пределах данного видеокадра. Внешнее кодирование полагается на временное предсказание для сокращения или удаления временной избыточности между текущим кадром и ранее кодированными кадрами последовательности видео. Внутренний режим (I-режим) может относится к любому из нескольких пространственно-основанных режимах сжатия видео. Внешний режим такой как однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим) может относится к любому из нескольких основанных на времени режимов сжатия данных.
[0089] Как показано на Фиг. 6, средство 20 кодирования видео принимает текущий блок видео в кадре видео, который должен быть закодирован. В примере по Фиг. 6, средство 20 кодирования видео включает в себя блок 44 компенсации движения, блок 42 оценки движения, блок 46 внутреннего предсказания, буфер 64 опорных кадров, сумматор 50, модуль 52 преобразования, блок 54 квантования и блок 56 энтропийного кодирования. Модуль 52 преобразования, проиллюстрированный на Фиг. 6, представляет собой структуру или устройство, которое применяет фактическое преобразование или комбинации преобразования к блоку остаточных данных, и его не следует путать с блоком коэффициентов преобразования, которые могут быть названы как единица преобразования (TU) CU. Для восстановления блока видео средство 20 кодирования видео также включает в себя блок 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на Фиг. 6) также может быть включен в состав, чтобы фильтровать границы блока для удаления артефактов блочности из восстановленного видео. Если необходимо, фильтр удаления блочности типично фильтрует вывод сумматора 62.
[0090] Во время процесса кодирования средство 20 кодирования видео принимает кадр видео или срез, который должен быть кодирован. Кадр или срез могут быть поделены на множественные блоки видео, например наибольшие единицы кодирования (LCU). Блок 42 оценки движения и блок 44 компенсации движения выполняют кодирование с внешним предсказанием принятого блока видео относительно одного или более блоков в одном или более опорных кадрах для обеспечения временного сжатия. Блок 46 внутреннего предсказания может выполнять кодирование с внутренним предсказанием принятого блока видео относительно одного или более соседних блоков в том же кадре или срезе, что и блок, который должен быть кодирован, для обеспечения пространственного сжатия.
[0091] Блок 40 выбора режима может выбирать один из режимов кодирования, внутреннего или внешнего, например, на основании результатов ошибки (т.е. искажения) для каждого режима, и обеспечивает получающийся в результате внутренне или внешне предсказанный блок (например, единицу (PU) предсказания) сумматору 50 для генерирования остаточного блока данных и сумматору 62 для восстановления закодированного блока для использования в опорном кадре. Сумматор 62 объединяет предсказанный блок с обратно квантованными, обратно преобразованными данными из модуля 60 обратного преобразования для блока, чтобы восстановить закодированный блок, как описано более подробно ниже по тексту. Некоторые кадры видео могут быть обозначены как I-кадры, где все блоки в I-кадре кодируются в режиме внутреннего предсказания. В некоторых случаях, блок 46 внутреннего предсказания может выполнять кодирование с внутренним предсказанием блока в P- или B-кадре, например когда поиск движения, выполненный блоком 42 оценки движения, не имеет результатом достаточное предсказание блока.
[0092] Блок 42 оценки движения и блок 44 компенсации движения могут быть высоко интегрированными, но проиллюстрированы по отдельности для концептуальных целей. Оценка движения (или поиск движения) является процессом генерирования векторов движения, который оценивает движение для блоков видео. Вектор движения, например может указывать смещение единицы предсказания в текущем кадре относительно опорной выборки опорного кадра. Блок 42 оценки движения вычисляет вектор движения для единицы предсказания внешне кодированного кадра посредством сравнения единицы предсказания с опорными выборками опорного кадра, хранимого в буфере 64 опорных кадров. Опорная выборка может быть блоком, который ищут для близкого соответствия части CU, включающей в себя кодируемую PU, в показателях пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой квадратов разностей (SSC) или другими метриками разностей. Опорная выборка может возникать где угодно в пределах опорного кадра или опорного среза.
[0093] Часть опорного кадра, идентифицированная вектором движения может быть указана как опорная выборка. Блок 44 компенсации движения может вычислять значение предсказания для единицы предсказания текущей CU, например посредством извлечения опорной выборки, идентифицированной посредством вектора движения для PU. В некоторых подходах кодирования видео блок 42 оценки движения отправляет вычисленный вектор движения, опорный кадр и направление предсказания (например направление исходя из того, предшествует ли во времени опорный кадр или следует ли за текущим кадром) блоку 56 энтропийного кодирования и блоку 44 компенсации движения. Другие подходы кодирования видео используют процесс предсказания вектора движения для кодирования вектора движения. Процесс предсказания вектора движения может быть выбран из числа множества режимов, в том числе режима слияния.
[0094] В режиме слияния средство кодирования рассматривает набор блоков кандидатов слияния и выбирает блок, который имеет такой же (или наиболее близко соответствует) вектор движения, опорный кадр и направление предсказания, что и текущий блок, который должен быть кодирован. Это делается, например, посредством проверки каждого блока кандидата на очереди и выбора одного, который дает наилучшие рабочие характеристики зависимости искажения от скорости передачи, как только его вектор движения, опорный кадр и направление предсказания копируются в текущий блок. Затем, вместо того, чтобы сигнализировать эту информацию вектора движения (т.е. вектор движения, опорный кадр и направление предсказания) в закодированном битовом потоке видео, средство кодирования сигнализирует номер индекса для выбранного кандидата вектора движения. Номер индекса идентифицирует выбранный вектор движения кандидат из набора векторов движения кандидатов. Декодер может скопировать информацию вектора движения из кандидата вектора движения для использования для текущего блока.
[0095] В примерах описанных выше по тексту, сигнализация информации вектора движения в закодированном битовом потоке не обязательно требует передачи в реальном времени таких элементов из средства кодирования декодеру, но в свою очередь означает, что такая информация кодируется в битовый поток и делается доступной декодеру любым образом. Это может включать в себя передачу в реальном времени (например в видеоконференции), а также сохранение закодированного битового потока на считываемом компьютером носителе для использования в будущем декодером (например при потоковой передаче, загрузке, доступе к диску, доступе к карте, DVD, Blu-ray и т.д.).
[0096] В соответствии с примерами этого раскрытия, описанными выше по тексту, для режима слияния, набор кандидатов слияния может быть сгенерирован без сравнения информации движения каких-либо кандидатов слияния с информацией движения других PU в пределах той же самой CU, что и текущая PU. В дополнение это раскрытие также предлагает удалять кандидатов слияния из набора кандидатов слияния, если кандидат слияния расположен внутри другой PU той же самой CU. Генерирование кандидатов слияния может быть проведено блоком 44 компенсации движения, блоком 42 компенсации движения или какой-либо другой фиксированной функцией или структурой программируемого аппаратного обеспечения средства 20 кодирования видео.
[0097] В качестве одного примера для Nx2N-разделения CU все кандидаты слияния (например, кандидаты слияния, показанные на Фиг. 1) могут быть использованы для PU 0. Для PU 1 кандидат L слияния удаляется/исключается из списка кандидатов слияния (см. Фиг. 3A), поскольку он есть в PU 0. В другом примере для 2NxN-разделения CU, все кандидаты слияния (например, кандидаты слияния, показанные на Фиг. 1) могут быть использованы для PU 0. Для PU 1, кандидат A слияния удаляется из списка кандидатов слияния (см. Фиг. 3B), поскольку он есть в PU 0.
[0098] В качестве другого примера для NxN-разделения CU, все кандидаты слияния (например, кандидаты слияния, показанные на Фиг. 1) могут быть использованы для PU 0. Для PU 1, кандидаты L и BL слияния удаляются/исключаются из списка кандидатов слияния (см. Фиг. 4A), поскольку они есть соответственно в PU 0 и PU 2. Для PU 2 кандидаты A и RA слияния удаляются/исключаются из списка кандидатов слияния (см. Фиг. 4A), поскольку они есть соответственно в PU 0 и PU 1. Для PU 3 кандидаты LA, A и L слияния удаляются/исключаются из списка кандидатов слияния (см. Фиг. 4A), поскольку они есть соответственно в PU 0, PU 1 и PU 2. По этой причине, PU 0 может использовать кандидатов BL, L, LA, A, RA и T слияния. PU 1 может использовать кандидатов LA, A, RA и T слияния. PU 2 может использовать кандидатов BL, L, LA, и T слияния. PU 3 может использовать кандидатов BL, RA и T слияния.
[0099] В еще одном другом примере для режима разделения NxN, все кандидаты слияния каждой единицы предсказания используются вне зависимости от какого-либо использования другой единицей предсказания (см. Фиг. 4B). Для других режимов разделения, таких как 2NxN, Nx2N и асимметричных режимов, таких как 2NxnD, 2NxnU, nLx2N и nRx2N, исключение некоторых кандидатов для текущей PU, которые расположены внутри другой PU той же самой CU, применяется согласно процессу, описанному выше по тексту.
[0100] Возвращаясь к Фиг. 6, блок 46 внутреннего предсказания может выполнять внутреннее предсказание в отношении принятого блока, в качестве альтернативы внешнему предсказанию, выполняемому блоком 42 оценки движения и блоком 44 компенсации движения. Блок 46 внутреннего предсказания может предсказывать принятый блок относительно соседних, ранее кодированных блоков, например, блоков сверху, сверху и справа, сверху и слева, или слева от текущего блока, предполагая для блоков порядок кодирования слева направо, сверху вниз. Блок 46 внутреннего предсказания может быть сконфигурирован с рядом разных режимов внутреннего предсказания. Например, блок 46 внутреннего предсказания может быть сконфигурирован с некоторым числом режимов направленного предсказания, например тридцати четырьмя режимами направленного предсказания, на основании размера кодируемой CU.
[0101] Блок 46 внутреннего предсказания может выбирать режим внутреннего предсказания посредством, например, вычисления значений ошибок предсказания для различных режимов внутреннего предсказания и выбора режима, который дает наименьшее значение ошибки. Режимы направленного предсказания могут включать в себя функции для объединения значений пространственно соседних пикселей и применения объединенных значений к одному или более пиксельным позициям в PU. Как только значения для всех пиксельных позиций в PU были вычислены, блок 46 внутреннего предсказания может вычислять значение ошибки для режима предсказания на основании пиксельных разностей между вычисленными и предсказанными значениями PU и принятым исходным блоком, который должен быть кодирован. Блок 46 внутреннего предсказания может продолжать тестирование режимов внутреннего предсказания до тех пор пока не будет открыт режим внутреннего предсказания, который вырабатывает приемлемое значение ошибки. Блок 46 внутреннего предсказания затем может отправлять PU сумматору 50.
[0102] Средство 20 кодирования видео формирует остаточный блок, который может включать в себя один блок сигнала яркости и два блока цветности, посредством вычитания данных предсказания, вычисленных блоком 44 компенсации движения или блоком 46 внутреннего предсказания из кодируемого исходного блока видео. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Остаточный блок может соответствовать двумерной матрице значений пиксельных разностей, где количество значений в остаточном блоке то же самое, что и количество пикселей в PU, соответствующей остаточному блоку. Значения в остаточном блоке могут соответствовать разностям, т.е. ошибке, между значениями совместно размещенных пикселей в PU и в исходном блоке, который должен быть кодирован. Такая операция применяется и к компонентам сигнала яркости и цветности, так что разности могут быть разностями сигналов яркостей или цветностей в зависимости от типа блока, который кодируется.
[0103] Модуль 52 преобразования может формировать одну или более единиц преобразования (TU) из остаточного блока. Модуль 52 преобразования выбирает преобразование из числа множества преобразований. Преобразование может быть выбрано но основе одной или более характеристик кодирования, таких как размер блока, режим кодирования или подобное. Модуль 52 преобразования затем применяет выбранное преобразование к TU, вырабатывая блок видео, содержащий двумерный массив коэффициентов преобразования.
[0104] Модуль 52 преобразования может отправлять полученные в результате коэффициенты преобразования блоку 54 квантования. Блок 54 квантования может затем квантовать коэффициенты преобразования. Блок 56 энтропийного кодирования затем может выполнять сканирование квантованных коэффициентов преобразования в матрице согласно режиму сканирования. Это раскрытие описывает блок 56 энтропийного кодирования как выполняющий сканирование. Однако, следует понимать, что в других примерах, другие блоки обработки, такие как блок 54 квантования, могут выполнять упомянутое сканирование.
[0105] Как только коэффициенты преобразования просканированы в одномерный массив, блок 56 энтропийного кодирования может применять энтропийное кодирование, такое как контекстное адаптивное кодирование с переменной длиной слова (CAVLC), контекстное адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), или другую методологию энтропийного кодирования, к коэффициентам. Энтропийное кодирование также может быть применено к элементам синтаксиса, таким как элементы синтаксиса, используемые в режиме слияния.
[0106] Для выполнения CAVLC блок 56 энтропийного кодирования может выбирать код с переменной длиной слова для символа, который должен быть кодирован. Кодовые слова в VLC могут быть построены так, что относительно более короткие коды соответствуют более вероятным символам, тогда как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может достичь сохранений битов за счет, например, использования равно-длинных кодовых слов для каждого символа, который должен быть передан.
[0107] Для выполнения CABAC блок 56 энтропийного кодирования может выбирать контекстную модель для применения к некоторому контексту для кодирования символов, которые должны быть переданы. В случае коэффициентов преобразования, контекст может относится к тому, например, являются ли соседние значения ненулевыми или нет. Блок 56 энтропийного кодирования также может энтропийно кодировать элементы синтаксиса, такие как сигнал представляющий выбранное преобразование. В соответствии с методиками этого раскрытия, блок 56 энтропийного кодирования может выбирать контекстную модель, используемую для кодирования этих элементов синтаксиса на основании, например, направления внутреннего предсказания для режимов внутреннего предсказания, позиции сканирования коэффициента, соответствующего элементам синтаксиса, типа блока и/или типа преобразования, среди других факторов, используемых для выбора контекстной модели.
[0108] Следом за энтропийным кодированием блоком 56 энтропийного кодирования полученное в результате закодированное видео может быть передано другому устройству, такому как декодер 30 видео, или архивировано для более поздней передачи или извлечения.
[0109] В некоторых случаях блок 56 энтропийного кодирования или другой блок средства 20 кодирования видео может быть сконфигурирован для выполнения других функций кодирования в дополнение к энтропийному кодированию. Например, блок 56 энтропийного кодирования может быть сконфигурирован для определения значений шаблона кодированного блока (CBP) для CU и PU. Также, в некоторых случаях блок 56 энтропийного кодирования может выполнять кодирование по длинам серий коэффициентов.
[0110] Блок 58 обратного квантования и модуль 60 обратного преобразования применяет обратное квантование и обратное преобразование соответственно для восстановления остаточного блока в пиксельной области, например, для использования при восстановлении опорного блока в будущем. Блок 44 компенсации движения может вычислять опорный блок посредством добавления остаточного блока к предиктивному блоку, сформированному из одного из упомянутых кадров буфера 64 опорных кадров, который также может называться буфером декодированных (графических) изображений. Блок 44 компенсации движения также может применять один или более интерполяционных фильтров к восстановленному опорному блоку для вычисления субцелочисленных пиксельных значений для использования при оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания скомпенсированного движения, вырабатываемому блоком 44 компенсации движения для выработки восстановленного блока видео для сохранения в буфере 64 опорных кадров. Восстановленный блок видео может быть использован блоком 42 оценки движения и блоком 44 компенсации движения в качестве опорного блока для внешнего кодирования блока в другом, впоследствии кодируемом кадре видео.
[0111] Фиг. 7 представляет собой блок-схему, иллюстрирующую пример декодера 30 видео, который декодирует закодированную последовательность видео. В примере на Фиг. 7 декодер 30 видео включает в себя блок 70 энтропийного декодирования, блок 72 компенсации движения, блок 74 внутреннего предсказания, блок 76 обратного квантования, модуль 78 обратного преобразования, буфер 82 опорных кадров и сумматор 80. Декодер 30 видео может, в некоторых примерах, выполнять проход декодирования в общем обратный проходу кодирования, описанному относительно средства 20 кодирования видео (см. Фиг. 6).
[0112] Блок 70 энтропийного декодирования выполняет процесс энтропийного декодирования в отношении закодированного битового потока, чтобы извлечь одномерный массив коэффициентов преобразования. Используемый процесс энтропийного декодирования, зависит от энтропийного кодирования, используемого средством 20 кодирования видео (например, CABAC, CAVLC и т.д.). Процесс энтропийного кодирования, используемый средством кодирования, может быть сигнализирован в закодированном битовом потоке или может быть предопределенным процессом.
[0113] В некоторых примерах блок 70 энтропийного декодирования (или блок 76 обратного квантования) может сканировать принятые значения используя сканирование зеркально отображающее режим сканирования, используемый блоком 56 энтропийного кодирования (или блоком 54 квантования) средства 20 кодирования видео. Хотя сканирование коэффициентов в качестве альтернативы может быть выполнено в блоке 76 обратного квантования, сканирование будет описано для целей иллюстрации как выполняемое блоком 70 энтропийного декодирования. В дополнение, хотя показаны как отдельные функциональные блоки для облегчения иллюстрации, структура и функциональность блока 70 энтропийного декодирования, блока 76 обратного квантования и других блоков декодера 30 видео могут быть высоко интегрированы друг с другом.
[0114] Блок 76 обратного квантования обратно квантует, т.е. деквантует, квантованные коэффициенты преобразования, обеспеченные в битовом потоке и декодированные блоком 70 энтропийного декодирования. Процесс обратного квантования может включать в себя традиционный процесс, например аналогичный процессам, предложенным для HEVC или определенным стандартом декодирования H.264. Процесс обратного квантования может включать в себя использование параметра QP квантования, вычисленного средством 20 кодирования видео для CU для определения степени квантования и, аналогично, степени обратного квантования, которое должно быть применено. Блок 76 обратного квантования может осуществлять обратное квантование коэффициентов преобразования либо до, либо после того, как коэффициенты конвертированы из одномерного массива в двумерный массив.
[0115] Модуль 78 обратного преобразования применяет обратное преобразование к обратно квантованным коэффициентам преобразования. В некоторых примерах модуль 78 обратного преобразования может определить обратное преобразование на основании сигнализации от средства 20 кодирования видео или посредством выведения преобразования из одной или более характеристик кодирования, таких как размер блока, режим кодирования или подобное. В некоторых примерах, модуль 78 обратного преобразования может определить преобразование для применения к текущему блоку на основании сигнализированного преобразования в корневом узле квадродерева для LCU, включающей в себя текущий блок. В качестве альтернативы, преобразование может быть сигнализировано в корне квадродерева TU для концевого узла CU в квадродереве LCU. В некоторых примерах, модуль 78 обратного преобразования может применять каскадное обратное преобразование, при котором модуль 78 обратного преобразования применяет два или более обратных преобразования к коэффициентам преобразования декодируемого текущего блока.
[0116] Блок 74 внутреннего предсказания может генерировать данные предсказания для текущего блока текущего кадра на основании сигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущего кадра.
[0117] Согласно примерам этого раскрытия декодер 30 видео может принимать из закодированного битового потока синтаксис предсказания, который указывает индекс выбранного блока кандидата слияния из набора блоков кандидатов слияния для использования в процессе предсказания вектора движения. Декодер видео дополнительно сконфигурирован для извлечения вектора движения, опорного кадра и направления предсказания, связанных с блоком кандидатом слияния, идентифицированным принятым индексом и для выполнения декодирования с внешним предсказанием для текущего блока с использованием извлеченного вектора движения, опорного кадра и направления предсказания.
[0118] В соответствии с примерами этого раскрытия, описанными выше по тексту, для режима слияния, набор кандидатов слияния может быть сгенерирован декодером 30 видео без сравнения информации движения каких-либо кандидатов слияния с информацией движения других PU в пределах той же самой CU, что и текущая PU. В дополнение, это раскрытие также предлагает удалять кандидатов слияния из набора кандидатов слияния, если кандидат слияния расположен внутри другой PU той же самой CU. Генерирование кандидатов слияния может быть проведено блоком 72 компенсации движения или какой-либо другой фиксированной функцией или структурой программируемого аппаратного обеспечения декодера 30 видео. Как только декодер 30 видео определил конечный набор кандидатов слияния, он может извлечь информацию движения из кандидата слияния, указанного посредством принятого индекса.
[0119] В качестве одного примера для Nx2N-разделения CU все кандидаты слияния (например, кандидаты слияния, показанные на Фиг. 1) могут быть использованы для PU 0. Для PU 1 кандидат L слияния удаляется/исключается из списка кандидатов слияния (см. Фиг. 3A), поскольку он есть в PU 0. В другом примере для 2NxN-разделения CU, все кандидаты слияния (например, кандидат слияния, показанный на Фиг. 1) могут быть использованы для PU 0. Для PU 1 кандидат A слияния удаляется/исключается из списка кандидатов слияния (см. Фиг. 3B), поскольку он есть в PU 0.
[0120] В качестве другого примера для NxN-разделения CU, все кандидаты слияния (например, кандидаты слияния, показанные на Фиг. 1) могут быть использованы для PU 0. Для PU 1 кандидаты L и BL слияния удаляются/исключаются из списка кандидатов слияния (см. Фиг. 4A), поскольку они есть соответственно в PU 0 и PU 2. Для PU 2 кандидаты A и RA слияния удаляются/исключаются из списка кандидатов слияния (см. Фиг. 4A), поскольку они есть в PU 0 и PU 1. Для PU 3, кандидаты LA, A и L слияния удаляются/исключаются из списка кандидатов слияния (см. Фиг. 4A), поскольку они есть соответственно в PU 0, PU 1 и PU 2.
[0121] В еще одном другом примере для режима разделения NxN, все кандидаты слияния каждой единицы предсказания используются вне зависимости от какого-либо использования другой единицей предсказания (см. Фиг. 4B). Для других режимов разделения, таких как 2NxN, Nx2N и асимметричных режимов, таких как 2NxnD, 2NxnU, nLx2N и nRx2N, исключение некоторых кандидатов для текущей PU, которые расположены внутри PU той же самой CU, применяется согласно процессу, описанному выше по тексту.
[0122] Возвращаясь к Фиг. 7, блок 72 компенсации движения может вырабатывать блоки со скомпенсированным движением, возможно выполняя интерполяцию на основе интерполяционных фильтров. Идентификаторы для интерполяционных фильтров, которые должны быть использованы для оценки движения с субпиксельной точностью, могут быть включены в элементы синтаксиса. Блок 72 компенсации движения может использовать интерполяционные фильтры, как используются средством 20 кодирования видео во время кодирования блока видео, чтобы вычислить интерполированные значения для субцелочисленных пикселей опорного блока. Блок 72 компенсации движения может определять интерполяционные фильтры, используемые средством 20 кодирования видео согласно принятой информации синтаксиса и использовать интерполяционные фильтры для выработки предиктивных блоков.
[0123] Дополнительно, блок 72 компенсации движения и блок 74 внутреннего предсказания в примере HEVC могут использовать некоторую информацию синтаксиса (например предоставленную квадродеревом) для определения размеров LCU, используемых для кодирования кадра(-ов) закодированной последовательности видео. Блок 72 компенсации движения и блок 74 внутреннего предсказания также могут использовать информацию синтаксиса для определения информации разбиения, которая описывает, как разбивается каждая CU кадра закодированной последовательности видео (и аналогично, как разбиваются суб-CU). Информация синтаксиса также может включать в себя режимы, указывающие, как кодируется каждая CU (например внутреннее- или внешнее предсказание и для внутреннего предсказания режим кодирования с внутренним предсказанием), один или более опорных кадров (и/или опорные списки, содержащие идентификаторы для опорных кадров) для каждой внешне закодированной PU, и другую информацию для декодирования закодированной последовательности видео.
[0124] Сумматор 80 объединяет остаточные блоки с соответствующими блоками предсказания, сгенерированными блоком 72 компенсации движения или блоком 74 внутреннего предсказания для формирования декодированных блоков. Декодированные блоки, в результате восстанавливают исходные кодированные блоки, подвергнутые потерям вследствие квантования или других аспектов кодирования. Если желательно, фильтр удаления блочности также может быть применен для фильтрования декодированных блоков для того, чтобы удалять артефакты блочности. Декодированные блоки видео затем сохраняются в буфере 82 опорных кадров, который обеспечивает опорные блоки для последующей компенсации движения и также вырабатывает декодированное видео для представления на устройстве отображения (таком как устройство 32 отображения с Фиг. 5).
[0125] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую пример способа кодирования видео согласно подходам этого раскрытия. Способ по Фиг. 8 может быть выполнен средством 20 кодирования видео с Фиг. 6. Средство 20 кодирования видео может быть сконфигурировано для определения набора кандидатов слияния для текущей единицы предсказания текущей единицы кодирования, при этом набор кандидатов слияния определяется без сравнения информации движения кандидата слияния в наборе кандидатов слияния с информацией движения другой единицы (200) предсказания, и удаления кандидатов слияния из набора кандидатов слияния, которые находятся в другой единице предсказания текущей единицы (202) кодирования. Набор кандидатов слияния включает в себя кандидата слияния сверху слева, кандидата слияния сверху, кандидата слияния сверху справа, кандидата слияния слева, кандидата слияния слева снизу и временного кандидата слияния.
[0126] В случае, когда текущая единица кодирования имеет тип разделения 2NxN, включает в себя единицу 0 предсказания, позиционированную сверху от единицы 1 предсказания, средство 20 кодирования видео может удалять кандидата слияния сверху из набора кандидатов слияния для единицы 1 предсказания. В случае, когда текущая единица кодирования имеет тип разделения Nx2N, включает в себя единицу 0 предсказания, позиционированную слева от единицы 1 предсказания, средство 20 кодирования видео может удалять кандидата слияния слева из набора кандидатов слияния для единицы 1 предсказания.
[0127] В случае, когда текущая единица кодирования имеет тип разделения NxN, включает в себя единицу 0 предсказания, позиционированную в верхней левой части текущей единицы кодирования, единицу 1 предсказания, позиционированную в верхней правой части текущей единицы кодирования, единицу 2 предсказания, позиционированную в нижней левой части текущей единицы кодирования и единицу 3 предсказания, позиционированную в нижней правой части текущей единицы кодирования, средство 20 кодирования видео может удалять кандидата слияния слева и кандидата слияния слева снизу из набора кандидатов слияния для единицы 1 предсказания. В этом случае средство 20 кодирования видео может дополнительно удалять кандидата слияния сверху и кандидата слияния сверху справа из набора кандидатов слияния для единицы 2 предсказания. Средство 20 кодирования видео в этом случае все еще может дополнительно удалять кандидата слияния сверху, кандидата слияния слева и кандидата слияния сверху слева из набора кандидатов слияния для единицы 3 предсказания.
[0128] В других примерах исключение кандидатов слияния содержит исключение кандидатов слияния из набора кандидатов слияния, которые находятся в другой единице предсказания для текущей единицы кодирования для всех режимов разделения отличных от режима разделения NxN. В этом случае никакие кандидаты слияния не удаляются/исключаются из единиц предсказания из единицы кодирования, имеющей режим разделения NxN.
[0129] Средство 20 кодирования видео может быть дополнительно сконфигурировано для выполнения процесса предсказания вектора движения для текущей единицы предсказания с использованием набора кандидатов слияния для определения выбранного кандидата слияния для текущей единицы (204) предсказания и сигнализации элемента синтаксиса, указывающего выбранного кандидата слияния в закодированном битовом потоке (206) видео.
[0130] Фиг. 9 представляет собой блок-схему последовательности операций, иллюстрирующую пример способа декодирования видео согласно подходам этого раскрытия. Способ по Фиг. 9 может быть выполнен декодером 30 видео с Фиг. 7. Декодер 30 видео может быть сконфигурирован для приема элемента синтаксиса, указывающего выбранного кандидата слияния для текущей единицы (220) предсказания и определения набора кандидатов слияния для текущей единицы предсказания текущей единицы кодирования, при этом набор кандидатов слияния определяется без сравнения информации движения кандидата слияния в наборе кандидатов слияния с информацией движения каких-либо других единиц (222) предсказания. Декодер 30 видео может быть дополнительно сконфигурирован для удаления кандидатов слияния из набора кандидатов слияния, которые находятся в другой единице предсказания текущей единицы (224) кодирования. Набор кандидатов слияния включает в себя кандидата слияния сверху слева, кандидата слияния сверху, кандидата слияния сверху справа, кандидата слияния слева, кандидата слияния слева снизу и временного кандидата слияния.
[0131] В случае, когда текущая единица кодирования имеет тип разделения 2NxN, включает в себя единицу 0 предсказания, позиционированную сверху единицы 1 предсказания, декодер 30 видео может удалять кандидата слияния сверху из набора кандидатов слияния для единицы 1 предсказания. В случае, когда текущая единица кодирования имеет тип разделения Nx2N, включает в себя единицу 0 предсказания, позиционированную слева от единицы 1 предсказания, декодер 30 видео может удалять кандидата слияния слева из набора кандидатов слияния для единицы 1 предсказания.
[0132] В случае, когда текущая единица кодирования имеет тип разделения NxN, включает в себя единицу 0 предсказания, позиционированную в верхней левой части текущей единицы кодирования, единицу 1 предсказания, позиционированную в верхней правой части текущей единицы кодирования, единицу 2 предсказания, позиционированную в нижней левой части текущей единицы кодирования и единицу 3 предсказания, позиционированную в нижней правой части текущей единицы кодирования, декодер 30 видео может удалять кандидата слияния слева и кандидата слияния слева снизу из набора кандидатов слияния для единицы 1 предсказания. В этом случае декодер 30 видео может дополнительно удалять кандидата слияния сверху и кандидата слияния сверху справа из набора кандидатов слияния для единицы 2 предсказания. Декодер 30 видео в этом случае все еще может дополнительно удалять кандидата слияния сверху, кандидата слияния слева и кандидата слияния сверху слева из набора кандидатов слияния для единицы 3 предсказания.
[0133] В других примерах исключение кандидатов слияния содержит исключение кандидатов слияния из набора кандидатов слияния, которые находятся в другой единице предсказания для текущей единицы кодирования для всех режимов разделения отличных от режима разделения NxN. В этом случае никакие кандидаты слияния не удаляются/исключаются из единиц предсказания из единицы кодирования, имеющей режим разделения NxN.
[0134] Декодер 30 видео может быть дополнительно сконфигурирован для выполнения процесса предсказания вектора движения слияния для текущей единицы предсказания с использованием набора кандидатов слияния и принятого элемента синтаксиса для определения вектора движения для текущей единицы (226) предсказания, и декодирования текущей единицы предсказания с использованием определенного вектора (228) движения.
[0135] В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении, или любой их комбинации. Если реализовано в программном обеспечении, функции могут быть сохранены на или переданы по, в качестве одной или более инструкций или кода, считываемой компьютером среде и исполнены посредством основанного на аппаратном обеспечении блока обработки. Считываемые компьютером среды могут включать в себя считываемый компьютером носитель данных, который соответствует материальному носителю, такому как носители данных, или среды связи, включающие в себя среду, которая содействует переносу компьютерной программы из одного места в другое, например согласно протоколу связи. Таким образом, считываемые компьютером среды в общем могут соответствовать (1) материальным считываемым компьютером носителям данных, которые являются невременными или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ посредством одного или более компьютеров или одного или более процессоров для извлечения инструкций, кода и/или структур данных для реализации подходов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0136] Посредством примера, а не ограничения, такие считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое оптическое дисковое хранилище, магнитное дисковое хранилище, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может быть использован для хранения желаемого программного кода в форме инструкций или структур данных и к которому может быть осуществлен доступ посредством компьютера. Также, любое соединение надлежащим образом именуется считываемым компьютером носителем. Например, если инструкции передаются с веб-сайта, сервера, или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии связи (DSL), или беспроводных технологий, таких как инфракрасные, радио и микроволновые, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасные, радио и микроволновые, включаются в определение носителя. Следует понимать, однако, что считываемые компьютером носители данных и носители данных не включают в себя соединения, несущие волны, сигналы, или другие временные носители, но в свою очередь направлены на невременные, материальные носители хранения. Диск (“disk”) и диск (“disc”), как используются в данном документе, включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), флоппи диск и Blu-ray диск, где диски (“disks”) обычно воспроизводят данные магнитно, тогда как диски (“discs”) воспроизводят данные оптически с помощью лазеров. Комбинации вышеописанного также должны быть включены в объем считываемых компьютером носителей.
[0137] Инструкции могут быть исполнены одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), или другими эквивалентными интегрированными или дискретными схемами логики. Соответственно термин "процессор", как используется в данном документе, может относится к любой из вышеописанных структур или любой другой структуре, подходящей для реализации подходов, описанных в данном документе. В дополнение, в некоторых аспектах, функциональность, описанная в данном документе, может быть обеспечена в специализированных модулях аппаратного обеспечения и/или программного обеспечения, сконфигурированных для кодирования и декодирования, или включена в объединенный кодек. Также, подходы могут быть полностью реализованы в одной или более схемах или логических элементах.
[0138] Подходы этого раскрытия могут быть реализованы в широком ряде устройств или приборов, в том числе беспроводные телефонные трубки, интегральная схема (ИС) или набор ИС (например набор интегральных схем). Различные компоненты, модули, или блоки описаны в этом раскрытии, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных для выполнения раскрытых подходов, но необязательно требуют реализации посредством разных блоков аппаратного обеспечения. Наоборот, как описано выше по тексту, различные блоки могут быть объединены в аппаратный блок кодека или обеспечены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше по тексту, вместе с подходящим программным обеспечением и/или программно-аппаратным обеспечением.
[0139] Были описаны различные примеры. Эти и другие примеры находятся в объеме нижеследующей формулы изобретения.