СПОСОБ ПРОПУСКА УТОЧНЕНИЯ НА ОСНОВАНИИ ПОДОБИЯ ВСТАВКИ ПРИ УТОЧНЕНИИ ВЕКТОРА ДВИЖЕНИЯ НА СТОРОНЕ ДЕКОДЕРА НА ОСНОВАНИИ БИЛИНЕЙНОЙ ИНТЕРПОЛЯЦИИ
METHOD FOR SKIPPING REFINEMENT BASED ON SIMILARITY OF INSERTION, WHEN REFINING MOTION VECTOR ON DECODER SIDE BASED ON BILINEAR INTERPOLATION

Область техники, к которой относится изобретение
Настоящее изобретение относится к компенсации движения для видеокодирования с использованием уточнения вектора движения на стороне декодера. В частности, варианты осуществления настоящего изобретения относятся к способам и устройствам для проверки уровня выравнивания между опорными вставками с компенсацией движения и пропуска уточнения, когда разница между двумя опорными вставками с компенсацией движения меньше порогового значения, зависящего от размера блока кодирования.
Уровень техники
При сжатии видео внешнее предсказание является процессом использования восстановленных выборок ранее декодированных опорных изображений путем указания векторов движения относительно текущего блока. Эти векторы движения могут быть закодированы как остаток предсказания с использованием пространственных или временных предикторов вектора движения. Векторы движения могут иметь суб-пиксельную точность. Для получения значения пикселей с точностью до суб-пикселя в опорных кадрах (изображениях) из восстановленных целочисленных значений позиции, применяется фильтр интерполяции. Двунаправленное предсказание относится к процессу, в котором предсказание для текущего блока выводится как взвешенная комбинация двух блоков предсказания, полученная с использованием двух векторов движения из двух областей опорного изображения. В этом случае, помимо векторов движения, также необходимо кодировать опорные индексы для опорных изображений, из которых получают два блока предсказания. Векторы движения для текущего блока также могут быть получены посредством процесса слияния, в котором векторы движения и опорные индексы пространственного соседа используются без кодирования каких-либо остатков вектора движения. В дополнение к пространственным соседям также сохраняются и используются векторы движения ранее закодированных опорных кадров в качестве временных параметров слияния с соответствующим масштабированием векторов движения, учитывая расстояние до опорных кадров относительно расстояния до опорных кадров для текущего блока.
Фиг. 1 показывает схему получения вектора движения на стороне декодера на основании сопоставления шаблона, где шаблон текущего блока сопоставляется с опорным шаблоном в опорным изображении. Со ссылкой на фиг. 1, сопоставление с шаблоном используется для получения информации о движении текущего блока кодирования (CU) путем нахождения наиболее близкого совпадения между шаблоном (верхними и/или левыми соседними блоками текущего CU) в текущем изображении (обозначен «Cur Pic») и блоком, имеющий тот же размер, что и шаблон в опорном кадре (обозначен «Ref0»).
Фиг. 2 показывает получение вектора движения на стороне декодера на основании двунаправленного сопоставления, где предсказывается текущий блок с использованием двух опорных блоков по траектории движения. Со ссылкой на фиг. 2 получают информацию о движении текущего блока (обозначенного «Cur block») на основании двух опорных изображений Ref0 и Ref1. Информация о движении текущего блока Cur block получается путем нахождения наилучшего совпадения между двумя блоками, ассоциированными с векторами MV0 и MV1 движения по траектории движения в опорных изображениях Ref0 и Ref1. Когда траектория движения является прямой линией, вектор MV0 движения, ассоциированный с опорным изображением Ref0, и вектор MV1 движения, ассоциированный с опорным изображением Ref1, пропорциональны временным расстояниям TD0 и TD1 между текущим изображением и соответствующими опорными изображениями Ref0 и Ref1.
Было предложено несколько способов для выполнения уточнения или получения вектора движения на стороне декодера, так что могут быть дополнительно уменьшены биты кодирования остаточного вектора движения. Один класс способов, называемый способами сопоставления с шаблоном (TM), использует L-образную область, примыкающую к текущему блоку (как показано на фиг. 1), который уже был восстановлен, называемый шаблоном, и определяет наилучшее сопоставление L-образной области (с использованием функций стоимости, таких как сумма абсолютных разностей или средне уменьшенная сумма абсолютных разностей) в каждом опорном кадре с использованием множества масштабированных кандидатов пространственных и временных векторов движения. Затем, с центром на наиболее подходящем кандидате выполняется дополнительное уточнение в пределах конкретного расстояния уточнения вокруг этого центра. На стороне кодера рассчитывается оптимизированная стоимость к искажению для принятия решения использовать унифицированное предсказание (т.е. предсказание с использованием ссылки на наилучшее соответствия) и двойным предсказанием (т.е. предсказание, полученное путем усреднения двух самых наилучших сопоставлений).
Другой класс способов, называемые способами двунаправленного сопоставления (BM), извлекает информацию о движении текущего блока кодирования (CU) путем нахождения наиболее близкого совпадения между двумя блоками по траектории движения текущего CU в двух разных опорных изображениях. Это показано на фиг. 2. В предположении непрерывной траектории движения векторы MV0 и MV1 движения, указывающие на два опорных блока, должны быть пропорциональны временным расстояниям, то есть, TD0 и TD1, между текущим изображением и двумя опорными изображениями. Когда текущее изображение является временным между двумя опорными изображениями и временное расстояние от текущего изображения до двух опорных изображений одинаково, двунаправленное сопоставление становится зеркальным вектором движения (MV) двунаправленного предсказания.
В режиме слияния с двунаправленным сопоставлением всегда применяется двунаправленное предсказание, поскольку получают информацию о движении CU на основании наиболее близкого совпадения между двумя блоками по траектории движения текущего CU в двух разных опорных изображениях.
Для различия режимов может сигнализироваться явный режим слияния для указания слияния с сопоставлением с шаблоном или слияния с двунаправленным сопоставлением, который не требует получения вектора движения на стороне декодера.
В режиме двунаправленного сопоставления временные расстояния игнорируются, и выполняется двунаправленное сопоставление с равными и противоположными векторами движения в прошлых и будущих опорных кадрах соответственно.
В некоторых случаях индекс слияния не сигнализируется, в то время как в других случаях для упрощения выполнения процесса множественных компенсаций движения декодера сигнализируется явный индекс слияния.
В варианте режима двунаправленного сопоставления, называемого способом уточнения вектора движения на стороне декодера (DMVR), сначала формируется двунаправленный усредненный шаблон с использованием блоков предсказания в списках L0 и L1 ссылок, полученных из явно сигнализированного индекса слияния, и выполняется двунаправленное сопоставление с шаблоном. При наличии движения обновляется шаблон. Кроме того, в некоторых случаях выполняется уточнение в одной ссылке и вектор движения в другой ссылке получается посредством зеркального отражения этого уточненного вектора движения. Уточнение чередуется между двумя ссылками до тех пор, пока либо на центральной позиции не будет наименьшая ошибка, либо не будет достигнуто максимальное количество итераций.
В некоторых процессах уточнения сначала выполняется уточнение CU уровня. Затем выполняется оценка множества кандидатов на суб-CU уровне вместе с уточненными MVs на CU уровне в качестве кандидатов. В других процессах уточнения каждый суб-CU может выполнять свое собственное уточнение относительно наиболее подходящего кандидата.
Учитывая неявный процесс уточнения или получения на стороне декодера, кодер должен выполнять эти этапы точно так же, как и декодер, чтобы процесс восстановления на стороне кодера был аналогичен процессу восстановления на стороне декодера.
Во время процесса уточнения или получения вектора движения на стороне декодера обычно используются только выборки яркости. Однако цветность также компенсируется движением с использованием окончательных уточняющих векторов движения (подходящим образом масштабированных для учета любой понижающей дискретизации цветности), которые используются для компенсации движения яркости.
Поскольку векторы движения слияния являются точными до суб-пикселей, обычно сначала выполняется уточнение на целочисленном расстоянии от соответствующих векторов движения слияния с точностью до суб-пикселей в каждой ссылке. Поскольку нормативная компенсация движения требует больших вычислительных ресурсов, способ билинейной интерполяции обычно используется для формирования интерполированных значений выборки, необходимых для выполнения уточнения целочисленного расстояния. В других способах предшествующего уровня техники предлагалось использовать значения функции стоимости, оцененные на позициях целочисленного расстояния, и значение функции стоимости на позиции с наименьшими затратами, когда уточнение заканчивается, для получения поверхности параметрической ошибки, с использованием которой оцениваются коррекции вектора движения дельты суб-пикселя. После получения коррекций вектора движения в каждой ссылке, на основании окончательного целого расстояния плюс суб-пиксель, выполняется конечная нормативная компенсация движения.
Раскрытие сущности изобретения
Варианты осуществления настоящего изобретения относятся к способам и устройствам для определения уровня выравнивания между опорными вставками с компенсацией движения с заданным пороговым значением, зависящим от размера блока кодирования. Путем определения уровня выравнивания между опорными вставками с компенсацией движения относительно заданного порогового значения, зависящего от размера блока кодирования, могут быть сохранены вычислительные операции итераций уточнения вектора движения на стороне декодера, тем самым, снижая энергопотребление в видеодекодере.
Обеспечиваются способы и устройства определения уровня выравнивания между опорными вставками с компенсацией движения для уменьшения этапов уточнения вектора движения. Согласно одному из способов видеодекодер определяет уровень выравнивания путем округления векторов движения слияния, вычисляет сумму абсолютных разностей (SAD) между двумя опорными вставками с компенсацией движения, выполняя простую компенсацию движения с использованием округленных векторов движения, и определяет, является ли SAD меньше порогового значения, зависящего от размера CU. Когда SAD меньше порогового значения, зависящего от размера CU, декодер пропускает оставшиеся этапы обработки вектора движения на стороне декодера и выполняет окончательную компенсацию движения, используя неокругленные векторы движения слияния. В одном варианте осуществления неокругленные векторы движения слияния могут быть округлены до ближайшей позиции целочисленной выборки в горизонтальном направлении и в вертикальном направлении, и окончательная компенсация движения включает в себя выполнение усреднения целочисленных выборок позиции. В другом варианте осуществления неокругленные векторы движения слияния могут быть округлены до ближайшей позиции выборки полупикселя в горизонтальном направлении и в вертикальном направлении для получения позиции выборки полупикселя, и окончательная компенсация движения включает в себя выполнение усреднения позиции выборки полупикселя. Способ имеет преимущество в том, что всякий раз, когда SAD меньше заданного порогового значения, видеодекодер определяет, что уровень выравнивания между опорными вставками с компенсацией движения является приемлемым, и видеодетектор может пропустить процессы уточнения вектора движения, такие как билинейная интерполяция, определение среднего значения, уточнение функций оценки стоимости и другие этапы процесса для экономии временных циклов и снижения энергопотребления. В другом способе видеодекодер вычисляет SAD между двумя опорными вставками с компенсацией движения, используя поднабор выборок из билинейной интерполяции с компенсацией движения с использованием векторов движения слияния с точностью до суб-пикселей. Затем SAD сравнивается с пороговым значением, зависящим от размера блока кодирования (CU). Битовая глубина порогового значения, зависящего от размера блока кодирования, может корректироваться согласно битовой глубине интерполированных выборок. Вычисляя только SAD с использованием подмножества интерполированных выборок, способ преимущественно требует меньшего количества операций (циклов обработки). В еще одном способе декодер вычисляет среднее уменьшенную SAD (MR-SAD) между интерполированными выборками с компенсацией движения в центральных позициях соответствующих опорных вставок с компенсацией движения и определяет, меньше ли MR-SAD порогового значения, зависящего от размера CU. В этом способе вычисляют MR-SAD для центральных позиций двух опорных вставок с компенсацией движения там, где начинается уточнение. Когда MR-SAD для центральных позиций меньше порогового значения, зависящего от размера CU, видеодекодер пропускает оставшуюся часть процесса уточнения вектора движения на стороне декодера. Способ внешнего предсказания содержит: получение первой опорной вставки с компенсацией движения и второй опорной вставки с компенсацией движения, основанный на исходных векторах движения режима слияния; вычисление значения разности вставок между первой опорной вставкой с компенсацией движения и второй опорной вставкой с компенсацией движения; получение значения предсказания текущего блока на основании исходных векторов движения в случае, если значение разности вставок меньше порогового значения, в котором пороговое значение определяется на основании размера текущего блока; и уточнение исходных векторов движения для получения значения предсказания текущего блока в случае, если значение разности вставок больше или равно пороговому значению. В возможной реализации получают исходные векторы движения из векторов движения соседнего блока текущего блока. В возможной реализации исходные векторы движения содержат первый вектор движения и второй вектор движения, в котором получают первая опорная вставка с компенсацией движения согласно первому вектору движения, и вторая опорная вставка с компенсацией движения получается согласно второму вектору движению. В возможной реализации значение разности вставок представляет собой значение SAD или значение среднее уменьшенную SAD. В возможной реализации вычисление значения разности вставки между первой опорной вставкой с компенсацией движения и второй опорной вставкой с компенсацией движения содержит: вычисление значения разности вставки между подмножеством выборок первой опорной вставки с компенсацией движения и соответствующими выборками подмножества второй опорной вставки с компенсацией движения. В возможной реализации после вычисления значения разности вставок между первой опорной вставкой с компенсацией движения и второй опорной вставкой с компенсацией движения, дополнительно содержит: выполнение сравнения на основании значения разности вставок и порогового значения. В возможной реализации перед выполнением сравнения на основании значения разности вставок и порогового значения, дополнительно содержит: корректировку порогового значения после определения порогового значения в соответствии с размером текущего блока. В возможной реализации в случае, если значение разности вставок меньше порогового значения, перед получением значения предсказания текущего блока на основании исходных векторов движения дополнительно содержит: определение пропуска уточнения вектора движения на стороне декодера (DMVR). В возможной реализации в случае, если значение разности вставок меньше порогового значения, получение значения предсказания текущего блока с использованием векторов движения, которые совпадают с исходными векторами движения. Устройство внешнего предсказания, содержащее: постоянную память, в которой хранятся исполняемые процессором инструкции; и процессор, соединенный с памятью, выполненный с возможностью выполнять исполняемые процессором инструкции, для упрощения способа согласно любой из возможных реализаций вышеупомянутого способа внешнего предсказания. Эти новые технологии позволяют сэкономить значительное количество итераций при уточнении вектора движения, тем самым, уменьшая временной цикл и энергопотребление видеодекодера.
Краткое описание чертежей
Фиг. 1 показывает порядок получения вектора движения на стороне декодера на основании сопоставления шаблона, где шаблон текущего блока сопоставляется с опорным шаблоном в опорным изображении.
Фиг. 2 показывает порядок получения вектора движения на стороне декодера на основании двунаправленного сопоставления, где текущий блок предсказывается с использованием двух опорных блоков по траектории движения.
Фиг. 3 показывает пример двунаправленного сопоставления шаблона на основании уточнения вектора движения на стороне декодера (DMVR), где шаблон генерируется с использованием двунаправленного предсказания из блоков предсказания согласно исходным векторам MV0 и MV1 движения, и двунаправленного сопоставления шаблона для поиска наиболее совпадающих блоков согласно обновленным векторам MV0' и MV1' движения.
Фиг. 4 является упрощенной блок-схемой алгоритма, иллюстрирующей способ определения уровня выравнивания между опорными вставками с компенсацией движения согласно варианту осуществления настоящего изобретения, где условный пропуск этапов процесса уточнения основан на функции стоимости на основании позиции цельно численного округления.
Фиг. 5 показывает упрощенную блок-схему алгоритма способа, использующего верификацию на стороне декодера, проверку или определение уровня выравнивания между вставками с компенсацией движения согласно варианту осуществления настоящего изобретения, где условный пропуск этапов процесса уточнения основан на сумме абсолютных разностей между двумя опорными вставками с компенсацией движения с использованием подмножества интерполированных выборок с компенсацией движения.
Фиг. 6 показывает упрощенную блок-схему алгоритма способа, использующего верификацию на стороне декодера, проверку или определение уровня выравнивания между вставками с компенсацией движения согласно варианту осуществления настоящего изобретения, где условный пропуск этапов процесса уточнения основан на среднее уменьшенной сумме абсолютных разностей между интерполированными выборками с компенсацией движения на центральных позициях соответствующих опорных вставок с компенсацией движения.
Фиг. 7 является блок-схемой, показывающей примерную структуру системы 3100 поставки контента, которая реализует услугу доставки контента.
Фиг. 8 является блок-схемой, показывающей структуру примера оконечного устройства.
Осуществление изобретения
Настоящее изобретение относится к стандарту универсального кодирования видео, который ранее рассматривался, как совместная исследовательская модель (JEM) в рамках совместной группы исследования видео, которая является совместной работой Q16 VCEG и MPEG (SC29/WG11). Документ JVET-G1001 и другие предшествующие технические решения Huawei, касающиеся уточнения вектора движения на стороне декодера и получения вектора движения на стороне декодера, можно использовать для получения списка дополнительных документов и патентов, относящихся к настоящему изобретению.
Как объяснялось выше, выполнение процесса двунаправленного сопоставления повышает уровень сопоставления между блоками с компенсацией движения в двух опорных изображениях, задействованных в двунаправленном предсказании. Чтобы избежать кодирования дополнительного флага, предпочтительное решение предусматривает аспект, в котором для всех блоков кодирования в режиме слияния было предусмотрено уточнение вектора движения на стороне декодера. Однако следует отметить, что довольно большое количество блоков кодирования уже имеют очень хорошее выравнивание по векторам движения в режиме слияния и не имеют большого пространства для улучшения посредством уточнения. Поскольку уточнение включает в себя выполнение оценок функции стоимости на множестве позиций в пределах диапазона уточнения, то не выполнение этих операций, в случае возможного улучшения, может привести к значительному снижению средней сложности декодера, что может быть преобразовано в такие атрибуты, как увеличение срока службы батареи или более низкое потребление энергии. В некоторых способах предшествующего уровня техники предлагалось пропустить уточнение, если уровень выравнивания между двумя нормативными вставками с компенсацией движения, полученными из векторов движения слияния в блоках кодирования режима слияния с двунаправленным предсказанием, меньше заданного порогового значения для каждого размера блока кодирования. Однако, учитывая тот факт, что для получения выборок, используемых для выполнения уточнения, обычно используется билинейная интерполяция, в предшествующем уровне техники по-прежнему потребуется нормативная компенсация движения для проверки возможности пропуска уточнения, билинейная интерполяция для выполнения уточнения и окончательная нормативная компенсация движения с векторами движения уточнения с точностью до суб-пикселя. Поскольку нормативные 8-отводные фильтры интерполяции являются довольно дорогостоящими с точки зрения вычислений, выполнение интерполяционной фильтрации дважды увеличивает сложность наихудшего случая, чем без теста на пропуск уточнения. Кроме того, с точки зрения аппаратной синхронизации, сумма оценки абсолютной разности добавляет зависимый этап, который уменьшает тактовые частоты, доступные для уточнения.
Следовательно, необходимо гармонизировать концепцию проверки на возможность пропуска итераций уточнения без увеличения циклов интерполяции (по сравнению с уточнением на основании билинейной интерполяции с окончательной точной компенсацией движения с использованием уточненных векторов движения) и без ухудшения наихудшего случая ограничения синхронизации для аппаратных реализаций.
Уточнение вектора движения (MV) представляет собой поиск MV на основании шаблона с критерием стоимости сопоставления или стоимости сопоставления с шаблоном. В текущей разработке поддерживаются два шаблона поиска - неограниченный ромбовидный поиск с центральным смещением (UCBDS) и адаптивный перекрестный поиск для уточнения MV на CU и суб-CU уровне, соответственно. Для уточнения MV как на CU уровне, так и на суб-CU уровне, осуществляется поиск MV непосредственно с точностью MV четверти выборки яркости, после чего выполняется уточнение MV одной восьмой выборки яркости. Диапазон поиска уточнения MV для CU и суб-CU шага устанавливается равным 8 выборкам яркости.
В операции двунаправленного предсказания для предсказания области одного блока два блока предсказания, сформированные с использованием MV list0 и MV list1, соответственно, объединяются для формирования одного сигнала предсказания. В способе уточнения вектора движения на стороне декодера (DMVR) дополнительно уточняются два вектора движения двунаправленного предсказания посредством процесса двунаправленного сопоставления шаблонов. Для выполнения поиска на основании искажения между двунаправленным шаблоном и выборками восстановления в опорных изображениях в декодере применяется двунаправленное сопоставление шаблонов для получения уточненного MV без передачи дополнительной информации о движении.
Фиг. 3 показан пример уточнения вектора движения на стороне декодера (DMVR) на основании двунаправленного сопоставления шаблона, где шаблон генерируется с использованием двунаправленного предсказания из блоков предсказания, на которые ссылаются исходные MV0 и MV1, и двунаправленного сопоставления шаблона для поиска наиболее совпадающих блоков, указанные обновленными MV0' и MV1'. Во-первых, в режиме слияния для текущего блока устанавливается MV наилучшего совпадения как кандидат MV0 в list0. Точно так же MV наилучшего совпадения устанавливается для текущего блока (в режиме слияния) как MV кандидат в list1. Затем опорные пиксели усредняются для формирования шаблона. Затем, используя шаблон, осуществляется поиск окружающих областей MVs кандидатов первого и второго опорных изображений, и определяется MV с наименьшей стоимостью, как окончательный MV. Стоимость может быть вычислена с использованием суммы разностей между каждым пикселем в шаблоне и каждым пикселем в исследуемых областях. Обращаясь к фиг. 3, на этапе 1 из блоков предсказания генерируется двунаправленный шаблон, на которые ссылаются исходные векторы MV0 и MV1 движения в опорных блоках в списках list0 и list1, соответственно.
На этапе 2 посредством двунаправленного сопоставления осуществляется поиск наиболее совпадающих блоков, на которые ссылаются обновленные векторы MV0’ и MV1’ движения. Операция сопоставления шаблона включает в себя вычисление меры стоимости между сгенерированным шаблоном и областью выборки (вокруг исходного блока предсказания) в опорном изображении. Для каждого из двух опорных изображений MV, который дает минимальную стоимость шаблона, считается обновленным MV этого списка для замены исходного. В текущей разработке для каждого списка ищется девять кандидатов MV. Девять кандидатов MV включают в себя исходный MV и 8 окружающих MVs с одним смещением выборки яркости относительно исходного MV либо в горизонтальном, либо в вертикальном направлении, либо в обоих направлениях. Наконец, два новых MVs, то есть, MV0' и MV1', используются для генерации окончательных результатов двунаправленного предсказания. В качестве меры стоимости используется сумма абсолютных разностей (SAD). DMVR применяется для режима слияния двунаправленного предсказания с одним MV из опорного изображения в прошлом, а другой из опорного изображения в будущем, без передачи дополнительных элементов синтаксиса.
В различных вариантах осуществления разница между двумя опорными вставками с компенсацией движения сравнивается или измеряется с заданным пороговым значением, зависящим от размера блока кодирования, и пропускается уточнение на основании результата сравнения или измерения. Различие между двумя опорными вставками с компенсацией движения определяется либо с использованием выборок предварительной интерполяции, либо с использованием подмножества билинейных интерполированных выборок. Кроме того, в некоторых вариантах осуществления в качестве показателя ошибки для уточнения может использоваться среднее уменьшенная сумма абсолютных разностей (MR-SAD), в качестве метрики, по которой выполняется пропуск проверки для сохранения среднего вычисления в среднем, а также для удовлетворения требования синхронизации наихудшего случая. Заданное пороговое значение адаптируется к более низким битовым глубинам, которые могут использоваться во время или после интерполяции для уменьшения размера буфера и удовлетворения требований обработки.
Учитывая, что уточнение/получение вектора движения на стороне декодера является нормативным аспектом системы кодирования, кодер также должен будет использовать тот же способ поверхности ошибок для исключения никакого отклонения между процессом восстановления в кодере и восстановления в декодере. Следовательно, все аспекты всех вариантов осуществления применимы как к системам кодирования, так и к системам декодирования. Представленные ниже варианты осуществления являются лишь некоторыми примерами для понимания настоящего изобретения и, таким образом, не должны пониматься как предназначенные для ограничения.
Вариант 1 осуществления
В этом варианте осуществления векторы движения слияния округлены до ближайшего целого числа. Используя эти округленные целочисленные векторы движения в качестве смещения относительно позиции текущего блока кодирования в двух ссылках, используемых для двунаправленного предсказания, вычисляется сумма абсолютных разностей (SAD) между блоками выборок размера блока кодирования. Эта сумма абсолютных разностей сравнивается с пороговым значением, зависящим от размера блока кодирования (CU), и остаток или оставшиеся этапы процесса уточнения вектора движения на стороне декодера нормативно пропускаются, когда сумма абсолютных разностей меньше порогового значения.
Определяется соответствующее заданное пороговое значение, зависящее от размера CU, на основании требуемой средней вычислительной экономии или экономии энергии, для принятия компромиссного решения по снижению коэффициента сжатия с высоким пороговым значением.
Фиг. 4 является упрощенной блок-схемой алгоритма способа, использующего верификацию на стороне декодера или определение уровня выравнивания между вставками с компенсацией движения согласно варианту осуществления настоящего изобретения, где условный пропуск остальных этапов процесса уточнения основан на функции стоимости, основанной на округленной целочисленной позиции. Этапы, показанные на блок-схеме алгоритма, могут быть реализованы как программные коды или инструкции, выполняемые на одном или нескольких процессорах на стороне кодера или стороне декодера. Этапы, показанные на блок-схеме алгоритма, могут быть реализованы с использованием электронных компонентов, цифровых и/или аналоговых схем, логических элементов, аппаратного обеспечения, программного обеспечения, встроенного программного обеспечения или их комбинаций. Способ может включать в себя на этапе 401, когда видеодекодер (видеодекодер и декодер используются здесь взаимозаменяемо) получает неокругленные векторы движения слияния между двумя опорными вставками с компенсацией движения. Вставка имеет заранее определенный размер текущего блока из MxN пикселей, каждый из которых M и N являются положительными целыми числами. В некоторых вариантах осуществления M может быть равно N. В других вариантах осуществления M и N могут быть разными. Вставка может быть блоком предсказания или блоком кодирования и называется блоком выборок в изображении (кадре). Неокругленные векторы движения слияния могут быть получены с использованием двунаправленного сопоставления, сопоставления с шаблоном или других способов. Неокругленные векторы движения слияния могут быть векторами движения слияния, имеющими точность до целых пикселей или с точностью до дробных пикселей. На этапе 402 декодер округляет неокругленные векторы движения слияния для получения округленных векторов движения. Операция округления может включать в себя преобразование неокругленного вектора движения в вектор движения с точностью до целого числа пикселей или уменьшение точности вектора движения в пикселях. Например, вектор движения с дробной точностью может быть округлен до вектора движения с целочисленной пиксельной точностью. Операция округления может включать в себя сдвиг значения вектора вправо на один или несколько битов. В одном варианте осуществления видеодекодер может округлять неокругленные векторы движения слияния до ближайших позиций целочисленных выборок. В другом варианте осуществления видеодекодер может округлять неокругленные векторы движения слияния до ближайших позиций выборки полупикселя.
На этапе 403 видеодекодер вычисляет (calculates) сумму абсолютных разностей (SAD) между двумя опорными вставками с компенсацией движения путем выполнения простой компенсации движения с использованием округленных векторов движения. Сумма разностей SAD (первый вставка, второй вставка) в соответствующих опорных изображениях Ref0, Ref1 представляет собой функцию стоимости для определения наилучшего совпадения шаблона в соответствующих пространствах поиска. На этапе 404 декодер сравнивает SAD с пороговым значением, зависящим от размера блока кодирования (CU) для определения, меньше или не меньше SAD (то есть, равно или больше) порогового значения, зависящего от размера CU. Когда определяется, что SAD меньше порогового значения, зависящего от размера CU («да» на этапе 405), декодер пропускает этапы процесса уточнения вектора движения (DMVR) на стороне декодера (этап 406) и выполняет окончательную компенсацию движения с использованием неокругленных векторов движения слияния (этап 408). Когда определяется, что SAD не меньше порогового значения, зависящего от размера CU («нет» на этапе 405), декодер выполняет этапы процесса уточнения вектора движения (DMVR) на стороне декодера (этап 407) и затем выполняет окончательную компенсацию движения (этап 408). Декодер может уточнить кандидаты вектора движения на основании опорного блока в окне поиска, который близко совпадает с текущим блоком, то есть, декодер может определить новый интерполированный вектор движения (например, с помощью билинейной интерполяции) для текущего блока, когда SAD не меньше порогового значения, зависящего от размера CU, после этого декодер выполняет окончательную компенсацию движения для текущего блока. В одном варианте осуществления выполнение окончательной компенсации движения может включать в себя округление неокругленных векторов движения слияния до ближайшей позиции целочисленной выборки в горизонтальном направлении и в вертикальном направлении для получения позиций целочисленных выборок и выполнение операции усреднения над позициями целочисленных выборок. В другом варианте осуществления выполнение окончательной компенсации движения может включать в себя округление неокругленных векторов движения слияния до ближайшей позиции выборки полупикселя в горизонтальном направлении и в вертикальном направлении для получения позиции выборок полупикселя и выполнение операции усреднения на позиции выборки полупикселя.
Этот вариант осуществления имеет преимущество, среди других преимуществ, в том, что всякий раз, когда оцененная метрика меньше порогового значения, все другие аспекты уточнения вектора движения на стороне декодера, такие как билинейная интерполяция, определение среднего значения и оценки функции стоимости уточнения на различных позициях, можно пропустить и выполнить окончательную нормативную компенсацию движения. Следует отметить, что в аппаратных реализациях в некоторых вариантах осуществления возможно теоретически выполнять билинейную интерполяцию параллельно с оценкой метрики для пропуска уточнения для удовлетворения требования синхронизации (т.е. получить больше времени или тактов для выполнения задач уточнения).
Вариант 2 осуществления
В этом варианте осуществления декодер вычисляет сумму абсолютных разностей между вставками с компенсацией движения в двух опорных изображениях, участвующих в двунаправленном предсказании, с использованием подмножества выборок из билинейной интерполяции с компенсацией движения, выполняемой с использованием векторов движения слияния с точностью до суб-пикселей. Эта сумма абсолютных разностей затем сравнивается с заданным пороговым значением, зависящим от размера блока кодирования, и остальные этапы уточнения нормативно пропускаются, когда декодер определяет, что сумма абсолютных разностей меньше порогового значения.
В одной примерной реализации билинейная интерполяция с компенсацией движения выполняется параллельно (одновременно) на обоих опорных вставках. В другом варианте осуществления выполняется перемежение интерполированных выборок по двум ссылкам. В обоих этих случаях вычисление суммы абсолютной разности предпочтительно вычисляется как можно раньше, а не дожидаться, пока будут получены все интерполированные выборки. Этот процесс также позволяет избежать повторной загрузки интерполированных выборок. Это снижает аппаратную задержку и сокращает время, доступное для выполнения оставшихся уточняющих вычислений, необходимых для наихудшего пути.
В некоторых реализациях для вычисления используется сумма абсолютных разностей блок выборок с размерами (size), равным размерам блока кодирования. В таких вариантах осуществления вычисление интерполированных выборок, требуемых для позиций уточнения, отличных от центральной позиции, может быть пропущено, когда сумма абсолютных разностей определяется как меньше порогового значения. В других вариантах осуществления для вычисления суммы абсолютных разностей используется только подмножество интерполированных выборок. В этих случаях заданное пороговое значение изменяется так, чтобы оно зависело от количества выборок, используемых для суммы абсолютных разностей. Когда декодер определяет, что сумма абсолютных разностей меньше порогового значения, оставшуюся интерполяцию также можно пропустить. В одном варианте осуществления подмножество интерполированных выборок может быть (coding_unit_width - 2) * (coding_unit_height - 2) выборками в одном варианте осуществления. В другом варианте осуществления подмножество интерполированных выборок может быть (coding_unit_width * coding_unit_height - (coding_unit_width - 2) * (coding_unit_height-2)) выборками в другом варианте осуществления, где coding_unit_width является шириной блока кодирования и coding_unit_height является высотой блока кодирования.
Когда билинейная интерполяция ограничивает битовую глубину интерполированных выборок, заданное пороговое значение также регулируется соответствующим образом путем сдвига вниз порогового значения, полученного при неограниченной битовой глубине интерполированных выборок.
Фиг. 5 показывает упрощенную блок-схему алгоритма способа, использующего верификацию на стороне декодера, проверку или определение уровня выравнивания между вставками с компенсацией движения согласно варианту осуществления настоящего изобретения, где обычный пропуск этапов процесса уточнения вектора движения на стороне декодера основан на подмножестве билинейных интерполированных выборок с компенсацией движения. Показанные на блок-схеме алгоритма этапы могут быть реализованы как программные коды или инструкции, выполняемые на одном или нескольких процессорах на стороне кодера или стороне декодера. Показанные на блок-схеме алгоритма этапы также могут быть реализованы с использованием электронных компонентов, цифровых и/или аналоговых схем, логических элементов, аппаратных средств, программного обеспечения, встроенного программного обеспечения или их комбинаций. Способ может включать в себя, на этапе 501, декодирование видео получает неокругленные векторы движения слияния между двумя опорными вставками с компенсацией движения. Вставка имеет заранее определенный размер текущего блока из MxN пикселей, каждый из которых M и N являются положительными целыми числами. В некоторых вариантах осуществления M и N могут быть одинаковыми. В других вариантах осуществления M и N могут быть разными. Неокругленные векторы движения слияния могут быть получены с использованием двунаправленного сопоставления, сопоставления с шаблоном или других способов. На этапе 502 декодер также получает интерполированные выборки с компенсацией движения на основании векторов движения слияния с точностью до суб-пикселей.
На этапе 503 декодер вычисляет (calculates) сумму абсолютной разности (SAD) между двумя опорными вставками с компенсацией движения, используя подмножество интерполированных выборок с компенсацией движения. В некоторых вариантах осуществления SAD может вычисляться параллельно или одновременно с процессом интерполяции. На этапе 504 декодер сравнивает SAD с пороговым значением, зависящим от размера блока кодирования (CU), чтобы определить, меньше или не меньше SAD порогового значения, зависящего от размера CU. В одном варианте осуществления пороговое значение, зависящее от размера CU, является функцией количества выборок в подмножестве интерполированных выборок. Когда определяется, что SAD меньше порогового значения, зависящего от размера CU («да» на этапе 505), декодер пропускает этапы процесса уточнения вектора движения (DMVR) на стороне декодера (этап 506) и выполняет окончательную компенсацию движения с использованием неокругленных векторов движения слияния (этап 508). Когда определено, что SAD не меньше (т.е. равна или больше) порогового значения, зависящего от размера CU («нет» на этапе 505), декодер выполняет этапы процесса уточнения вектора движения на стороне декодера (DMVR) с использованием неокругленных векторов движения слияния (этап 507) и затем выполняет окончательную компенсацию движения с использованием неокругленных векторов движения слияния (этап 508). Декодер может уточнить кандидаты вектора движения на основании опорного блока в окне поиска, который близко совпадает с текущим блоком, то есть, декодер может определить новый интерполированный вектор движения (например, с помощью билинейной интерполяции) для текущего блока, когда SAD не меньше порогового значения, зависящего от размера CU, после этого декодер выполняет окончательную компенсацию движения для текущего блока, используя неокругленные векторы движения слияния.
Второй вариант осуществления (embodiment 2) допускает меньшее уменьшение выигрыша от кодирования, поскольку консервативное пороговое значение все еще может позволять многим блокам кодирования пропускать оставшиеся этапы процесса уточнения. С точки зрения синхронизации, операции суммы абсолютной разности, требуемых для определения или верификации SAD относительно порогового значения, могут быть, по существу, скрыты от этапа билинейной интерполяции и, таким образом, не будет влиять на ограничение наихудшего случая синхронизации.
Вариант 3 осуществления
В этом варианте осуществления выполняется проверка (determination) на раннем выходе с использованием средне уменьшенной суммы абсолютных разностей (MR-SAD), вычисленной для центральной позиции, где начинается уточнение. В некоторых вариантах осуществления сначала оценивается и сравнивается MR-SAD центральной позиции с пороговым значением, зависящим от размера блока кодирования. Если MR-SAD для центрального позиции меньше порогового значения, то остальная часть процесса уточнения пропускается нормативно.
В некоторых вариантах осуществления, возможно, что оценки MR-SAD на позициях, отличных от центрального позиции (например, конкретные позиции в пределах точек уточнения первой итерации), могут оцениваться вместе с оценкой MR-SAD центральной позиции. Однако эти оцененные MR-SADs не будут иметь никакого эффекта, если MR-SAD центральной позиции меньше заданного порогового значения.
Когда интерполяция ограничивает битовую глубину интерполированных выборок, заданное пороговое значение также корректируется соответствующим образом, сдвигая вниз пороговое значение, полученное при неограниченной битовой глубине интерполированных выборок.
Фиг. 6 показывает упрощенную блок-схему алгоритма способа, использующего верификацию на стороне декодера, проверку или определение уровня выравнивания между вставками с компенсацией движения согласно варианту осуществления настоящего изобретения, где обычный пропуск этапов процесса уточнения вектора движения на стороне декодера основан на средне уменьшенной сумме абсолютных разностей начальной позиции уточнения. Показанные на блок-схеме алгоритма этапы могут быть реализованы как программные коды или инструкции, выполняемые на одном или нескольких процессорах на стороне кодера или стороне декодера. Показанные на блок-схеме алгоритма этапы также могут быть реализованы с использованием электронных компонентов, цифровых и/или аналоговых схем, логических элементов, аппаратных средств, программного обеспечения, встроенного программного обеспечения или их комбинаций. Способ может начинаться на этапе 602, когда видеодекодер получает интерполированные выборки с компенсацией движения на основании векторов движения слияния с точностью до суб-пикселей между двумя опорными вставками с компенсацией движения. На этапе 603 декодер вычисляет (calculates) среднее значение каждого из вставок для центральной позиции, в которой начинается уточнение. Декодер также вычисляет (на этапе 603) средне уменьшенную сумму абсолютных разностей (MR-SAD) для центральной позиции.
На этапе 604 декодер сравнивает MR-SAD с пороговым значением, зависящим от размера блока кодирования (CU), чтобы определить, является ли MR-SAD меньше или не меньше (равно или больше) порогового значения, зависимого от размера CU. В одном варианте осуществления пороговое значение, зависящее от размера CU, является функцией битовой глубины векторов движения слияния с точностью до суб-пикселей. Когда определяется, что MR-SAD меньше порогового значения, зависящего от размера CU («да» на этапе 605), декодер пропускает этапы процесса уточнения вектора движения (DMVR) на стороне декодера (этап 606) и выполняет окончательную компенсацию движения с использованием векторов движения слияния (этап 608). Когда MR-SAD определяется как не меньше порогового значения, зависящего от размера CU («нет» на этапе 605), декодер выполняет этапы процесса уточнения вектора движения на стороне декодера (DMVR), используя векторы движения слияния (этап 607) и затем выполняет окончательную компенсацию движения с использованием векторов движения слияния (этап 608). Декодер может уточнить кандидаты вектора движения на основании опорного блока в окне поиска, который близко совпадает с текущим блоком, то есть, декодер может определить новый интерполированный вектор движения (например, с помощью билинейной интерполяции) для текущего блока, когда MR-SAD не меньше порогового значения, зависящего от размера CU, после чего декодер выполняет окончательную компенсацию движения для текущего блока, используя векторы движения слияния.
В некоторых вариантах осуществления, вычисление среднего значения вставки может включать в себя усреднение интенсивности яркости всех пикселей в соответствующем опорным вставкам. Средне уменьшенная сумма абсолютных разностей (MR-SAD) может быть вычислена с использованием следующего выражения:
MR-SAD = SAD (first_sample - mean(first_patch), second_sample – mean(second_patch))
Где first_sample представляет первую интерполированную выборку с компенсацией движения в центре первой опорной вставки с компенсацией движения, вторую интерполированную выборку с компенсацией движения в центре второй опорной вставки с компенсацией движения, mean (first_block) представляет операцию усреднения значений выборки first_block, mean (second_block) представляют собой операцию усреднения значений выборок для second_block, (первый, второй) вставка может иметь ширину и высоту (первого, второго) блока в терминах выборок, и SAD является операцией суммирования абсолютных разностей значений выборок первого вставки и выборок второго вставки.
Этот вариант осуществления может гарантировать отсутствие дополнительных вычислений для выполнения условного пропуска проверки уточнения по сравнению с тем, что требуется, без такой проверки. По статистике, вычисления итераций уточнения сохраняются, что может привести к экономии энергии и сокращению среднего количества циклов в программном обеспечении.
Блок-схемы алгоритма, показанные и описанные выше, предназначены для иллюстрации примерных вариантов осуществления определения, проверки или верификации совмещения между вставками с компенсацией движения согласно настоящему изобретению. Как известно специалисту в данной области техники, для практического применения настоящего изобретения этапы проверки и определения совмещения, описанные в настоящем документе, могут быть переупорядочены, изменены или объединены без выхода за рамки настоящего изобретения.
Варианты осуществления в соответствии с настоящим изобретением могут быть реализованы в схемах аппаратного обеспечения, программных кодах программного обеспечения, компьютерных инструкциях, выполняемых одним или несколькими процессорами или CPUs, или их комбинацией. Например, варианты осуществления настоящего изобретения могут представлять собой одну или несколько интегральных схем или устройств, которые выполняют этапы, описанные в данном документе. Программные коды могут выполняться на цифровом сигнальном процессоре (DSP). Варианты осуществления также могут быть реализованы с помощью одного или микропроцессоров, одной или нескольких программируемых пользователем вентильных матриц (FPGA).
Варианты осуществления в соответствии с настоящим изобретением предоставляют устройство для определения уровня согласования между опорными вставками с компенсацией движения (блоками кодирования, blocks) относительно заданного порогового значения, зависящего от размера CU. Устройство может включать в себя схему, выполненную с возможностью получать неокругленные векторы движения слияния между двумя опорными вставками с компенсацией движения; округлять неокругленные векторы движения слияния до ближайшего целочисленной позиции выборки для получения округленных векторов движения; вычислить сумму абсолютных разностей (SAD) между двумя опорными вставками с компенсацией движения, используя округленные векторы движения; и определять, меньше ли SAD порогового значения, зависящего от размера CU. В случае, если SAD меньше зависящего от размера CU порогового значения, схема устройства пропускает оставшиеся этапы процесса уточнения вектора движения на стороне декодера и выполняет окончательную компенсацию движения с использованием неокругленных векторов движения слияния. В случае, если SAD не меньше порогового значения, зависящего от размера CU, схема устройства выполняет оставшиеся этапы процесса уточнения вектора движения на стороне декодера, и затем выполняет окончательную компенсацию движения с использованием неокругленных векторов движения слияния.
В одном варианте осуществления схема устройства выводит SAD с использованием подмножества интерполированных выборок с компенсацией движения вместо использования округленных векторов движения.
В одном варианте осуществления схема устройства вычисляет средне уменьшенную сумму абсолютных разностей (MR-SAD) для поиска вектора движения целого пикселя и сравнивает MR-SAD с пороговым значением, зависящим от размера CU.
В некоторых вариантах осуществления схема устройства может включать в себя интегрированное полупроводниковое устройство или микросхему. В других вариантах осуществления схема может включать в себя аппаратные компоненты или устройство или комбинацию аппаратного и программного обеспечения, например, один или несколько процессоров, программируемых устройств или DSP, работающих с инструкциями или программными кодами.
Ниже приводится объяснение применений способа кодирования и способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.
Фиг. 7 является блок-схемой, показывающей систему 3100 поставки контента для реализации услуги распространения контента. Эта система 3100 поставки контента включает в себя устройство 3102 захвата, оконечное устройство 3106 и, возможно, включает в себя дисплей 3126. Устройство 3102 захвата обменивается данными с оконечным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, помимо прочего, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию и т.п.
Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, как показано в приведенных выше вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распределять данные на сервер потоковой передачи (не показан на чертежах), и сервер кодирует данные и передает закодированные данные в оконечное устройство 3106. Устройство 3102 захвата включает в себя, но не ограничивается камерой, смартфон или планшет, компьютер или ноутбук, система видеоконференцсвязи, PDA, устройство, установленное на транспортном средстве, или их комбинация, и т.п. Например, устройство 3102 захвата может включать в себя устройство 12 источник, как описано выше. Когда данные включают в себя видео, видеокодер 20, содержащийся в устройстве 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя звук (то есть, голос), аудиокодер, установленный в устройстве 3102 захвата, может фактически выполнять обработку кодирования звука. Для некоторых практических сценариев устройство 3102 захвата распределяет кодированные видео- и аудиоданные, мультиплексируя их вместе. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата отдельно распределяет кодированные аудиоданные и кодированные видеоданные на оконечное устройство 3106.
В системе 3100 доставки контента оконечное устройство 310 принимает и воспроизводит закодированные данные. Оконечное устройство 3106 может быть устройством с возможностью приема и восстановления данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеомагнитофон (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, персональный цифровой помощник (PDA) 3122, устройство 3124, установленное на транспортном средстве, или их комбинация, или тому подобное, выполненное с возможностью декодировать вышеупомянутые кодированные данные. Например, оконечное устройство 3106 может включать в себя устройство 14 назначения, как описано выше. Когда кодированные данные включают в себя видео, видеодекодер 30, содержащийся в оконечном устройстве, имеет приоритет выполнения декодирования видео. Когда кодированные данные включают в себя звук, аудиодекодер, содержащийся в оконечном устройстве, имеет приоритет выполнения обработки декодирования звука.
Для оконечного устройства с его дисплеем, например, смартфона или Pad 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеомагнитофона (DVR) 3112, телевизора 3114, персонального цифрового помощника (PDA) 3122 или смонтированное на транспортном средстве устройство 3124, оконечное устройство может передавать декодированные данные на свой дисплей. Для оконечного устройства, не оснащенного дисплеем, например, STB 3116, системы 3118 видеоконференцсвязи или системы 3120 видеонаблюдения для приема и отображения декодированных данных подключается внешний дисплей 3126.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, как показано в вышеупомянутых вариантах осуществления.
Фиг. 8 является схемой, показывающей структуру примера оконечного устройства 3106. После того, как оконечное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи потока. Протокол включает в себя, помимо прочего, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи в реальном времени HTTP (HLS), MPEG-DASH, транспортный протокол в реальном времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию или подобное.
После того, как блок 3202 обработки протокола обрабатывает поток, генерируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации закодированные данные передаются в видеодекодер 3206 и аудиодекодер 3208 без использования модуля 3204 демультиплексирования.
Посредством обработки демультиплексирования генерируются элементарный видеопоток (ES), аудио ES и, возможно, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, как объяснено в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерирования видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для генерирования аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на фиг. Y) перед подачей его в блок 3212 синхронизации. Аналогично, аудиокадр может сохраняться в буфере (не показан на фиг. Y) перед подачей его в блок 3212 синхронизации.
Блок 3212 синхронизации синхронизирует видеокадр и звуковой кадр и подает видео/аудио на видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может закодироваться в синтаксисе с использованием отметок времени, касающихся представления кодированных аудио- и визуальных данных, и отметок времени, касающихся доставки самого потока данных.
При наличии в потоке субтитров, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры в дисплей 3216 видео/аудио/субтитров.
Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования изображений, либо устройство декодирования изображений в вышеупомянутых вариантах осуществления может быть использовано в другой системе, например, автомобильной системе.