Компенсация движения X-Video (XvMC) - это расширение расширения X video (Xv) для системы X Window . 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-эквивалентом API Microsoft Windows DirectX Video Acceleration (DxVA) . К популярным программным приложениям, использующим XvMC, относятся MPlayer , MythTV и xine .
Драйверы устройств [ править ]
Каждый аппаратные видео на GPU способен XvMC ускорение видео требует X11 программного обеспечения драйвера устройства , чтобы включить эти функции.
Производители оборудования [ править ]
Nvidia [ править ]
В настоящее время доступны три драйвера X11 Nvidia: 2D- драйвер с открытым исходным кодом, но скрытый драйвер, поддерживаемый Nvidia под названием nv, проприетарный двоичный драйвер Nvidia и драйвер с открытым исходным кодом, основанный на обратном проектировании двоичного драйвера, разработанного сообществом Linux под названием Модерн . Nouveau не стремится к поддержке XvMC, [1] драйвер 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. Имейте в виду, что не все устройства поддерживаются, и есть некоторые другие предостережения. [2] т
Intel [ править ]
Intel предоставляет официальные драйверы устройств с открытым исходным кодом, которые поддерживают разгрузку MPEG-2 (mo comp и iDCT) на линейке интегрированных графических чипов Intel 8xx / 9xx. [3]
ATI / AMD [ править ]
Хотя ATI была первым производителем, который обеспечил ускорение MPEG2 на своих графических платах с помощью графического процессора Rage 128, она никогда не предоставляла документации по его использованию. Так что XvMC недоступен и, вероятно, никогда не будет. XvMC поддерживается на картах Radeon -4000 (которые имеют UVD ) драйвером Catalyst от 8.10 и выше на экспериментальном уровне (это означает, что он не работает « из коробки ».) [4] (См. Также X-Video Bitstream Разгон ). Поддержка компенсации движения в другом оборудовании ATI / AMD планируется в будущем. (Теперь все оборудование поддерживает ускорение MPEG-2 на уровнях iDCT и mo comp).
Matrox [ править ]
На оборудовании Matrox нет драйверов устройств, поддерживающих XvMC (хотя оборудование Matrox Parhelia поддерживает ускорение MPEG-2 на уровне mo comp).
S3 [ править ]
Драйвер двоичного устройства от S3 поддерживает выгрузку MPEG-2 только в исходном драйвере 2.0.16 на графических процессорах Chrome 20. [ необходима цитата ]
Технический обзор API XvMC [ править ]
Это из спецификации X-Vxvideo Motion Compensation - API версии 1.0 [5]
XvPort [ править ]
XvMC расширяет расширение X video (Xv) и использует знакомую концепцию XvPort. У портов есть атрибуты, которые можно установить и запросить через Xv. В портах XvMC также могут быть созданы контексты аппаратной компенсации движения для использования с ними. Порты, которые поддерживают XvImages (т. Е. Они имеют кодировку портов "XV_IMAGE", как описано в приложении Xv версии 2.2 API), могут быть запрошены для получения списка поддерживаемых ими типов XvMCSurface. Если они поддерживают какие-либо типы XvMCSurface, для этого порта можно создать XvMCContext.
XvMCContext [ править ]
XvMCContext описывает состояние конвейера компенсации движения . Можно создать отдельный XvMCContext для использования с одним портом, типом поверхности, типом компенсации движения, комбинацией ширины и высоты. Например, контекст может быть создан для конкретного порта, который выполняет компенсацию движения MPEG-2 на поверхностях 720 x 480 4: 2: 0. После создания контекста ссылка на него подразумевает порт, тип поверхности, размер и тип компенсации движения. Контексты могут быть «прямыми» или «косвенными». Для косвенного контекста сервер X Display отображает все видео, используя данные, переданные ему клиентом. Для прямых контекстов клиентские библиотеки визуализируют видео практически без взаимодействия с сервером X-дисплея.
XvMCSurfaces [ править ]
XvMCSurfaces - это буферы, в которых оборудование компенсации движения может выполнять рендеринг. Данные в самих буферах недоступны для клиентов и могут храниться в аппаратно-зависимом формате. Любое количество буферов может быть создано для использования с определенным контекстом (если позволяют ресурсы).
Видео конвейер [ править ]
XvMC обеспечивает ускорение видео, начиная с одного из двух мест в конвейере видео . Ускорение, начинающееся в первой точке, которую мы будем называть уровнем «компенсации движения», начинается после обратного квантования и IDCT в том месте, где должна применяться компенсация движения . Вторая точка, которую мы назовем уровнем «IDCT», начинается перед IDCT сразу после обратного квантования.
Рендеринг [ править ]
Рендеринг выполняется путем представления библиотеки с целевой XvMCSurface и до двух эталонных XvMCSurfaces для компенсации движения, буфера блоков 8x8 и буфера команд, который описывает, как использовать блоки 8x8 вместе с векторами компенсации движения для построения данных в целевой XvMCSurface. Когда конвейер запускается на уровне iDCT, Xv выполняет IDCT для блоков перед выполнением компенсации движения. Предоставляется функция для копирования / наложения части XvMCSurface на чертеж с произвольным масштабированием.
XvMCSubpictures [ править ]
XvMCSubpictures - это отдельные поверхности, которые можно смешивать с целевой поверхностью. Любое количество XvMCSubpictures может быть создано для использования с контекстом (если позволяют ресурсы). Поддерживаются как "бэкэнд", так и "внешний интерфейс".
Поддержка программного обеспечения [ править ]
Ускорение XvMC поддерживается в:
- MPlayer
- MythTV (поддержка XvMC упала на 0,25 [6] )
- Xine
Процессы, которые можно ускорить [ править ]
Несмотря на то, что XvMC в настоящее время поддерживает только аппаратное ускорение компенсации движения (mo comp) и обратное дискретное косинусное преобразование (iDCT) (и декодирование переменной длины для VIA Unichrome GPU), дополнительные процессы декодирования видео могут быть переданы современным графическим процессорам, которые могут быть ускоряется с помощью программ-фрагментов на GPU. В будущем XvMC может быть расширен для поддержки тех же процессов, что и новые конкурирующие API-интерфейсы аппаратного ускорения видео, такие как VDPAU , XvBA и VAAPI :
- Компенсация движения (mo comp)
- Обратное дискретное косинусное преобразование (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-SHM - Расширение общей памяти MIT для X11
- DirectX Video Acceleration (DxVA) API - эквивалент Microsoft Windows для XvMC
- Video Acceleration API (VA API)
- OpenMAX IL (Open Media Acceleration Integration Layer) - бесплатный кроссплатформенный API абстракции мультимедиа от Khronos Group
- X-Video Bitstream Acceleration (XvBA)
- VDPAU (API декодирования и представления видео для Unix)
- Distributed Codec Engine (libcde) - это API-интерфейс Texas Instruments для механизма видеокодеков во встроенных системах на основе OMAP.
- Video Decode Acceleration Framework - это API Apple Inc. для аппаратного ускорения декодирования 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 ускорения // Phoronix, 28 октября 2008
- ^ X-Video Motion Compensation - Спецификация 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 Телевидение уже доступно
- ^ «VideoToolbox - Документация разработчика Apple» . developer.apple.com . Проверено 5 августа 2018 .
- ^ «Архивная копия» (PDF) . Архивировано из оригинального (PDF) 9 апреля 2011 года . Проверено 16 января 2012 года . CS1 maint: заархивированная копия как заголовок ( ссылка ) OpenVideo Decode (OVD) API
Внешние ссылки [ править ]
- Фонд X.Org
- Проект XFree86, Inc.
- freedesktop.org
- Проект "Унихром"
- XvMC на вики MythTV
Xvideo