Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Компенсация движения 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]

Ссылки [ править ]

  1. ^ nouveau Wiki - Матрица характеристик
  2. ^ "Архивная копия" . Архивировано из оригинального 26 сентября 2015 года . Проверено 26 февраля 2009 года .CS1 maint: заархивированная копия как заголовок ( ссылка )
  3. ^ Драйверы графики для Linux от Intel - i810 - Наборы микросхем интегрированной графики Intel 8xx
  4. ^ AMD X-Video Bitstream ускорения // Phoronix, 28 октября 2008
  5. ^ X-Video Motion Compensation - Спецификация 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 Телевидение уже доступно
  10. ^ «VideoToolbox - Документация разработчика Apple» . developer.apple.com . Проверено 5 августа 2018 .
  11. ^ «Архивная копия» (PDF) . Архивировано из оригинального (PDF) 9 апреля 2011 года . Проверено 16 января 2012 года . CS1 maint: заархивированная копия как заголовок ( ссылка ) OpenVideo Decode (OVD) API

Внешние ссылки [ править ]

  • Фонд X.Org
  • Проект XFree86, Inc.
  • freedesktop.org
  • Проект "Унихром"
  • XvMC на вики MythTV

Xvideo