Компенсация движения X-Video - X-Video Motion Compensation

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

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

Драйверы устройств

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

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

Nvidia

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

ЧЕРЕЗ

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

Intel

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

ATI / AMD

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

Matrox

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

S3

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

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

Это от Компенсация движения X-Video - спецификация API версии 1.0[5]

XvPort

XvMC расширяет Расширение видео X (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-дисплея.

XvMC Поверхности

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

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

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

Рендеринг

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

XvMCПодкартинки

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

Поддержка программного обеспечения

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

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

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

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

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

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

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

Смотрите также

Рекомендации

  1. ^ nouveau Wiki - Матрица характеристик
  2. ^ «Архивная копия». Архивировано из оригинал 26 сентября 2015 г.. Получено 26 февраля, 2009.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
  3. ^ Драйверы графики для Linux от Intel - i810 - Наборы микросхем интегрированной графики Intel 8xx
  4. ^ AMD X-Video Bitstream Acceleration // phoronix, 28 октября 2008 г.
  5. ^ Компенсация движения X-Video - спецификация API версии 1.0 В архиве 15 мая 2007 г. Wayback Machine
  6. ^ Информация о выпуске MythTV 0.25
  7. ^ Спецификация XvMC API версии 1.0 В архиве 15 мая 2007 г. Wayback Machine
  8. ^ freedesktop.org - Программное обеспечение / vaapi
  9. ^ https://web.archive.org/web/20150305200949/http://www.tuaw.com/2011/01/20/xbmc-for-ios-and-atv2-now-available/ XBMC для iOS и Apple TV уже доступен
  10. ^ «VideoToolbox - документация для разработчиков Apple». developer.apple.com. Получено 2018-08-05.
  11. ^ «Архивная копия» (PDF). Архивировано из оригинал (PDF) 9 апреля 2011 г.. Получено 16 января, 2012.CS1 maint: заархивированная копия как заголовок (ссылка на сайт) OpenVideo Decode (OVD) API

внешняя ссылка

Xvideo