X-Video Motion Compensation

редактировать
расширение расширения X video

X-Video Motion Compensation (XvMC), является расширением расширения X video (Xv) для X Window System. XvMC API позволяет видеопрограммам выгружать части процесса декодирования видео на видеооборудование GPU. Теоретически этот процесс также должен снизить требования к пропускной способности шины. В настоящее время поддерживаемые части, которые XvMC выгружают на графический процессор, - это компенсация движения (mo comp) и обратное дискретное косинусное преобразование (iDCT) для MPEG-2 видео. XvMC также поддерживает декодирование с выгрузкой mo comp, iDCT и VLD («декодирование переменной длины», более известное как «ускорение уровня среза») для не только MPEG-2, но также и MPEG-4 ASP видео на аппаратном обеспечении VIA Unichrome (S3 Graphics Chrome Series).

XvMC был первым UNIX-эквивалентом Microsoft Windows DirectX Video Acceleration (DxVA) API. Популярные программные приложения, использующие преимущества XvMC, включают MPlayer, MythTV и xine.

Содержание
  • 1 Драйверы устройств
    • 1.1 Производители оборудования
      • 1.1.1 Nvidia
      • 1.1.2 VIA
      • 1.1.3 Intel
      • 1.1.4 ATI / AMD
      • 1.1.5 Matrox
      • 1.1.6 S3
  • 2 Технический обзор XvMC API
    • 2.1 XvPort
    • 2.2 XvMCContext
    • 2.3 XvMCSurfaces
    • 2.4 Видео конвейер
    • 2.5 Рендеринг
    • 2.6 XvMCSubpictures
  • 3 Поддержка программного обеспечения
  • 4 Процессы, которые можно ускорить
  • 5 Текущий ограничения
  • 6 См. также
  • 7 Ссылки
  • 8 Внешние ссылки
Драйверы устройств

Для каждого аппаратного видео GPU, поддерживающего ускорение видео XvMC, требуется X11 программное обеспечение драйвер устройства для включения этих функций.

Производители оборудования

Nvidia

В настоящее время доступно три драйвера X11 Nvidia: только 2D-драйвер с открытым исходным кодом, но скрытый драйвер, поддерживаемый Nvidia, который называется nv., проприетарный бинарный драйвер от Nvidia и драйвер с открытым исходным кодом, основанный на обратном проектировании бинарного драйвера, разработанного сообществом Linux под названием Nouveau. Nouveau не преследует поддержку XvMC, драйвер 2D nv не поддерживает XvMC, а официальный проприетарный бинарный драйвер от Nvidia поддерживает только разгрузку MPEG-2 (mo comp и iDCT) на оборудовании вплоть до GeForce серии 7000.

VIA

VIA предоставляет драйверы устройств с открытым исходным кодом для некоторых из своего оборудования VIA Unichrome (S3 Graphics Chrome Series), поддерживая выгрузку MPEG-2 и MPEG-4 ASP видео. Благодаря уровню декодирования VLD VIA снимает с ЦП гораздо больше задач декодирования, чем графические процессоры, поддерживающие только уровни iDCT или mo comp. Имейте в виду, что не все устройства поддерживаются, и есть некоторые другие предостережения. t

Intel

Intel предоставляет официальные драйверы устройств с открытым исходным кодом, которые поддерживают разгрузку MPEG-2 (mo comp и iDCT) на линейке интегрированных графических чипов Intel 8xx / 9xx.

ATI / AMD

Хотя ATI была первым производителем, обеспечившим ускорение MPEG2 на своих графических платах с помощью графического процессора Rage 128, она никогда не предоставляла документации по его использованию. Так что XvMC недоступен и, вероятно, никогда не будет. XvMC поддерживается на картах Radeon -4000 (которые имеют UVD ) драйвером Catalyst начиная с версии 8.10 и выше на экспериментальном уровне (что означает, что он не работает. «из коробки ».) (См. Также X-Video Bitstream Acceleration ). Поддержка компенсации движения в другом оборудовании ATI / AMD планируется в будущем. (Теперь все оборудование поддерживает ускорение MPEG-2 на уровнях iDCT и mo comp).

Matrox

Нет драйверов устройств, поддерживающих XvMC на оборудовании Matrox (хотя оборудование Matrox Parhelia поддерживает ускорение MPEG-2 на уровне mo comp).

S3

Драйвер двоичного устройства от S3 поддерживает выгрузку MPEG-2 только в исходном драйвере 2.0.16 на графических процессорах Chrome 20.

Технический обзор XvMC API

Это из спецификации X-Video Motion Compensation - API v. 1.0

XvPort

XvMC расширяет X video extension (Xv) и использует знакомую концепцию порта XvPort. У портов есть атрибуты, которые можно установить и запросить через Xv. В портах XvMC также могут быть созданы контексты аппаратной компенсации движения для использования с ними. Порты, которые поддерживают XvImages (т.е. они имеют кодировку порта «XV_IMAGE», как описано в приложении к API Xv версии 2.2), можно запросить список поддерживаемых ими типов XvMCSurface. Если они поддерживают какие-либо типы XvMCSurface, для этого порта можно создать XvMCContext.

XvMCContext

XvMCContext описывает состояние конвейера компенсации движения. Можно создать отдельный XvMCContext для использования с одним портом, типом поверхности, типом компенсации движения, комбинацией ширины и высоты. Например, контекст может быть создан для конкретного порта, который выполняет компенсацию движения MPEG-2 на поверхностях 720 x 480 4: 2: 0. Как только контекст создан, ссылка на него подразумевает порт, тип поверхности, размер и тип компенсации движения. Контексты могут быть «прямыми» или «косвенными». Для косвенных контекстов сервер отображения X отображает все видео, используя данные, переданные ему клиентом. Для прямых контекстов клиентские библиотеки визуализируют видео практически без взаимодействия с сервером X-дисплея.

XvMCSurfaces

XvMCSurfaces - это буферы, в которых может выполнять рендеринг аппаратное обеспечение компенсации движения. Данные в самих буферах недоступны для клиентов и могут храниться в аппаратно-зависимом формате. Может быть создано любое количество буферов для использования с определенным контекстом (если позволяют ресурсы).

Видео конвейер

XvMC обеспечивает ускорение видео, начиная с одного из двух мест в конвейере видео . Ускорение, начинающееся с первой точки, которую мы назовем уровнем «компенсации движения», начинается после и IDCT в том месте, где должна применяться компенсация движения. Вторая точка, которую мы назовем уровнем «IDCT», начинается перед IDCT сразу после обратного квантования.

Рендеринг

Рендеринг выполняется путем представления библиотеки с целевой XvMCSurface и до двух эталонных XvMCSurfaces для компенсации движения, буфером блоков 8x8 и буфером команд, который описывает, как использовать Блоки 8x8 вместе с векторами компенсации движения для построения данных в целевой XvMCSurface. Когда конвейер запускается на уровне iDCT, Xv будет выполнять IDCT для блоков перед выполнением компенсации движения. Предоставляется функция для копирования / наложения части XvMCSurface на чертеж с произвольным масштабированием.

XvMCSubpictures

XvMCSubpictures - это отдельные поверхности, которые могут смешиваться с целевой поверхностью. Любое количество XvMCSubpictures может быть создано для использования с контекстом (если позволяют ресурсы). Поддерживаются как «внутренние», так и «внешние» режимы субтитров.

Программная поддержка

Ускорение XvMC поддерживается в:

Процессы, которые можно ускорить

Несмотря на то, что в настоящее время XvMC поддерживает только аппаратное ускорение компенсации движения (mo comp) и обратного дискретного косинусного преобразования (iDCT) (и декодирования переменной длины для VIA Unichrome GPU), дополнительные процессы декодирования видео можно было передать современным GPU, которые можно было ускорить с помощью программ фрагментов GPU. В будущем XvMC может быть расширен для поддержки тех же процессов, что и новые конкурирующие API-интерфейсы аппаратного ускорения видео, такие как VDPAU, XvBA и VAAPI :

Текущие ограничения

Кроме того, что не все функции и функции DxVA (который является Microsoft эквивалент API для Windows ) и отсутствие поддержки других видеоформатов, кроме MPEG-2 в драйверах устройств Linux от Intel и NVIDIA, версия 1.0 спецификации XvMC API в настоящее время также имеет следующие ограничения:

  • BOB и onefield - единственные методы деинтерлейсинга, которые работают с XvMC.
  • Картинка в картинке (PiP) не работает с XvMC.
  • Покадровое покадровое перемещение может вызвать артефакты с XvMC.
  • Редактировать видео сложно. невозможно с активированным XvMC.
  • Отсутствие прозрачности сети в XvMC API
  • Отсутствие возможности для клиентского приложения быть полностью независимым от того, какая клиентская библиотека должна использоваться (т. е. унифицированная библиотека-оболочка).

В настоящее время разрабатывается проект под названием VA API по разработке более современного API ускорения видео, который будет поддерживать функции ускорения видео современных графических процессоров.

См. также
Ссылки
Внешние ссылки

Xvideo

Последняя правка сделана 2021-06-22 06:03:45
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте