Компенсация движения 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:
- Компенсация движения (мес.)
- Обратное дискретное косинусное преобразование (iDCT)
- Обратный телесин 3: 2 и 2: 2 коррекция понижения
- Обратный модифицированное дискретное косинусное преобразование (iMDCT)
- В цикле деблокирующий фильтр
- Внутрикадровое предсказание
- Обратный квантование (IQ)
- Декодирование переменной длины (VLD), более известное как ускорение на уровне срезов
- Пространственно-временной деинтерлейсинг и автоматический переплетение /прогрессивный обнаружение источника
- Обработка битового потока (CAVLC /CABAC )
Текущие ограничения
К тому же не соответствует всем функциям и функциям 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]
Смотрите также
- X видео расширение (обычно обозначается как «XVideo» или «Xv»)
- X Window System (обычно обозначается просто "X11" или "X")
- МИТ-ШМ - Расширение общей памяти MIT для X11
- DirectX Video Acceleration (DxVA) API - Майкрософт Виндоус эквивалент XvMC
- Video Acceleration API (VA API)
- OpenMAX IL (уровень интеграции Open Media Acceleration) - бесплатный кроссплатформенный API абстракции медиа из Хронос Групп
- X-Video Bitstream Acceleration (XvBA)
- VDPAU (API декодирования и представления видео для Unix)
- Распределенный движок кодеков (libcde) это Инструменты Техаса API для движка видеокодеков в OMAP на базе встроенных систем
- Платформа ускорения декодирования видео является Apple Inc. API для декодирования H.264 с аппаратным ускорением на Mac OS X
- VideoToolbox это API от Apple Inc. для декодирования с аппаратным ускорением на Apple TV и Mac OS X 10.05 или новее.[9] Первоначально он не был документирован, но с тех пор Apple выпустила по нему документацию.[10]
- OpenVideo Decode (OVD) - новый открытый кроссплатформенный API ускорения видео от AMD.[11]
Рекомендации
- ^ nouveau Wiki - Матрица характеристик
- ^ «Архивная копия». Архивировано из оригинал 26 сентября 2015 г.. Получено 26 февраля, 2009.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
- ^ Драйверы графики для Linux от Intel - i810 - Наборы микросхем интегрированной графики Intel 8xx
- ^ AMD X-Video Bitstream Acceleration // phoronix, 28 октября 2008 г.
- ^ Компенсация движения X-Video - спецификация API версии 1.0 В архиве 15 мая 2007 г. Wayback Machine
- ^ Информация о выпуске MythTV 0.25
- ^ Спецификация XvMC API версии 1.0 В архиве 15 мая 2007 г. Wayback Machine
- ^ freedesktop.org - Программное обеспечение / vaapi
- ^ https://web.archive.org/web/20150305200949/http://www.tuaw.com/2011/01/20/xbmc-for-ios-and-atv2-now-available/ XBMC для iOS и Apple TV уже доступен
- ^ «VideoToolbox - документация для разработчиков Apple». developer.apple.com. Получено 2018-08-05.
- ^ «Архивная копия» (PDF). Архивировано из оригинал (PDF) 9 апреля 2011 г.. Получено 16 января, 2012.CS1 maint: заархивированная копия как заголовок (ссылка на сайт) OpenVideo Decode (OVD) API
внешняя ссылка
Xvideo