Компенсация движения 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/AMD [ править ]
Хотя 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]
XvPort [ править ]
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 на рисунок с произвольным масштабированием.
XvMCSubpictures [ править ]
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]
Ссылки [ править ]
- ^ Нуво Wiki - Матрица функций
- ^ «Архивная копия» . Архивировано из оригинала 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 . Проверено 5 августа 2018 г.
- ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 9 апреля 2011 года . Проверено 16 января 2012 г.
{{cite web}}
: CS1 maint: архивная копия как заголовок ( ссылка ) API OpenVideo Decode (OVD)