Компенсация движения X-Video
X-Video Motion Compensation (XvMC) — расширение расширения X video (Xv) для X Window System . XvMC API позволяет видеопрограммам переносить часть процесса декодирования видео на графического процессора видеооборудование . Теоретически этот процесс должен также снизить требования к пропускной способности шины. В настоящее время поддерживаемыми частями, которые XvMC выгружает на графический процессор, являются компенсация движения (mo comp) и обратное дискретное косинусное преобразование (iDCT) для MPEG-2 видео . XvMC также поддерживает разгрузочное декодирование mo comp , iDCT и VLD («Декодирование переменной длины», более известное как «ускорение уровня среза») не только для видео MPEG-2 , но и видео MPEG-4 ASP на VIA Unichrome (S3 Graphics). Серия Chrome) аппаратное обеспечение.
XvMC был первым UNIX-эквивалентом API Microsoft Windows DirectX Video Acceleration (DxVA) . Популярные программные приложения, использующие преимущества XvMC, включают MPlayer , MythTV и xine .
Драйверы устройств
[ редактировать ]Каждому аппаратному видеографическому процессору, поддерживающему ускорение видео XvMC, требуется X11 программный драйвер устройства для включения этих функций.
Производители оборудования
[ редактировать ]Нвидиа
[ редактировать ]В настоящее время доступны три драйвера Nvidia для X11: открытый , но запутанный драйвер только для 2D, поддерживаемый Nvidia, под названием nv, проприетарный двоичный драйвер Nvidia и драйвер с открытым исходным кодом, основанный на обратном проектировании двоичного драйвера, разработанного сообществом Linux, под названием Нуво . Nouveau не занимается поддержкой XvMC. [ 1 ] Драйвер 2D nv не поддерживает XvMC, а официальный проприетарный двоичный драйвер Nvidia поддерживает только разгрузку MPEG-2 (mo comp и iDCT) на оборудовании вплоть до серии GeForce 7000 включительно.
С ПОМОЩЬЮ
[ редактировать ]VIA предоставляет драйверы устройств с открытым исходным кодом для некоторого оборудования VIA Unichrome (S3 Graphics Chrome Series) , поддерживающего разгрузку видео MPEG-2 и MPEG-4 ASP . Благодаря уровню декодирования VLD VIA разгружает гораздо больше задач декодирования с процессора, чем графические процессоры, поддерживающие только уровни iDCT или mo comp. Имейте в виду, что не все устройства поддерживаются, и есть некоторые другие предостережения. [ 2 ]
Интел
[ редактировать ]Intel предоставляет официальные драйверы устройств с открытым исходным кодом, которые поддерживают разгрузку MPEG-2 (mo comp и iDCT) на интегрированных графических чипах Intel 8xx/9xx. [ 3 ]
И/АМД
[ редактировать ]Хотя ATI была первым производителем, обеспечившим ускорение MPEG-2 в своих графических платах с графическим процессором Rage 128, она никогда не предоставляла документации по его использованию. Таким образом, XvMC недоступен и, вероятно, никогда не будет. XvMC поддерживается на картах Radeon -4000 (с UVD ) драйвером Catalyst версии 8.10 и выше на экспериментальном уровне (это означает, что он не работает « из коробки »). [ 4 ] (См. также «Ускорение битового потока X-Video» ). Поддержка компенсации движения в другом оборудовании ATI/AMD запланирована на будущее. (Теперь все оборудование поддерживает ускорение MPEG-2 на уровнях iDCT и mo comp).
Матрокс
[ редактировать ]На оборудовании Matrox нет драйверов устройств, поддерживающих XvMC (хотя оборудование Matrox Parhelia поддерживает ускорение MPEG-2 на уровне компьютера).
S3
[ редактировать ]Двоичный драйвер устройства от S3 поддерживает разгрузку MPEG-2 только в исходном драйвере 2.0.16 на графических процессорах Chrome 20. [ нужна ссылка ]
Технический обзор API XvMC
[ редактировать ]Это из компенсации движения X-Vxvideoideo — спецификация API версии 1.0. [ 5 ]
XvПорт
[ редактировать ]XvMC расширяет расширение X video (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 и до двух эталонных XvMCSurface для компенсации движения, буфера блоков 8x8 и командного буфера, который описывает, как использовать блоки 8x8 вместе с векторами компенсации движения для построения данных в целевой XvMCSurface. Когда конвейер запускается на уровне iDCT, Xv выполнит IDCT для блоков перед выполнением компенсации движения. Предусмотрена функция для копирования/наложения части XvMCSurface на объект рисования с произвольным масштабированием.
XvMCСубкартинки
[ редактировать ]XvMCSubpictures — это отдельные поверхности, которые можно смешивать с целевой поверхностью. Для использования с контекстом может быть создано любое количество XvMCSubpictures (если позволяют ресурсы). Поддерживается как «внутреннее», так и «внешнее» поведение субизображений.
Поддержка программного обеспечения
[ редактировать ]Ускорение XvMC поддерживается в:
XvMC был удален в Mesa 22.3.
Процессы, которые можно ускорить
[ редактировать ]Несмотря на то, что XvMC в настоящее время поддерживает только аппаратное ускорение компенсации движения (mo comp) и обратное дискретное косинусное преобразование можно передать дополнительные процессы декодирования видео, (iDCT) (и декодирование переменной длины для графического процессора VIA Unichrome), на современные графические процессоры которые можно ускоряется с помощью программ фрагментов графического процессора. В будущем 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 , спецификация API XvMC версии 1.0 [ 7 ] в настоящее время также имеет следующие ограничения:
- BOB и onefield — единственные методы деинтерлейсинга , работающие с XvMC.
- Картинка в картинке (PiP) не работает с XvMC.
- Покадровое воспроизведение видео может привести к появлению артефактов в XvMC.
- Редактировать видео с активированным XvMC практически невозможно.
- Отсутствие прозрачности сети в API XvMC.
- Отсутствие возможности для клиентского приложения быть полностью независимым от того, какую клиентскую библиотеку необходимо использовать (т. е. унифицированную библиотеку-оболочку).
VA API — это более современный API-интерфейс ускорения видео, который поддерживает функции ускорения видео современных графических процессоров. [ 8 ]
См. также
[ редактировать ]- Расширение X video (обычно называемое просто «XVideo» или «Xv»)
- Система X Window (обычно называемая просто «X11» или «X»)
- MIT-SHM — расширение общей памяти MIT для X11
- API DirectX Video Acceleration (DxVA) — Microsoft Windows эквивалент XvMC для
- API ускорения видео (VA API)
- OpenMAX IL (Open Media Acceleration Integration Layer) — бесплатный кроссплатформенный API-интерфейс абстракции мультимедиа от Khronos Group.
- Ускорение битового потока X-Video (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 ]
Ссылки
[ редактировать ]- ^ новая вики - Матрица функций
- ^ «Архивная копия» . Архивировано из оригинала 26 сентября 2015 года . Проверено 26 февраля 2009 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ Драйверы графики Linux от Intel — i810 — интегрированные графические чипсеты Intel 8xx
- ^ Ускорение битового потока X-Video от AMD // phoronix, 28 октября 2008 г.
- ^ Компенсация движения X-Video — спецификация API, версия 1.0. Архивировано 15 мая 2007 г. на Wayback Machine .
- ^ Примечания к выпуску MythTV 0.25
- ^ Спецификация API XvMC, версия 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» . разработчик.apple.com . Проверено 05 августа 2018 г.
- ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 9 апреля 2011 года . Проверено 16 января 2012 г.
{{cite web}}
: CS1 maint: архивная копия как заголовок ( ссылка ) API OpenVideo Decode (OVD)