DirectX Video Acceleration
DirectX Video Acceleration (скорочено DXVA, дослівно укр. прискорення відео DirectX) — прикладний програмний інтерфейс (API), компонент DirectX, розроблений корпорацією Microsoft і призначений для обробки (в першу чергу, декодування) бітового потоку відеоданих силами графічних процесорів (англ. GPU).
DXVA призначений для функціонування на IBM PC-сумісних комп'ютерах під управлінням операційних систем сімейства Microsoft Windows і на ігровій консолі Xbox 360. Програмний конвеєр DXVA дозволяє певним ресурсоємним операціям, таким як дискретне косинусне перетворення, компенсація руху і деінтерлейсинг, виконуватися на графічному, а не на центральному процесорі. DXVA 2.0 дозволяє перенаправляти на GPU більшу кількість операцій, включаючи захоплення відео та операції обробки відео.
DXVA працює в з'єднанні з DirectShow, який підтримується відеокартами. DXVA 1.0, який був представлений як стандартний API і був доступний починаючи з Windows 2000, міг використовувати або режим оверлею, або VMR 7/9.[1] DXVA 2.0, доступний тільки починаючи з Windows Vista, інтегрований з мультимедійним фреймворком Media Foundation і використовує відео-рендерер Enhanced Video Renderer .[1]
Огляд
DXVA використовується програмними відеокодеками для визначення специфічного для кожного кодека конвеєра, що необхідно для апаратного декодування і рендеринга відеопотоку цим кодеком. Конвеєр починається з центрального процесора, який виконує парсинг медіа-потоку і його конвертацію в DXVA-сумісні структури. DXVA визначає набір операцій, які можуть бути апаратно прискореними й інтерфейс драйвера пристрою (англ. device driver interface - DDI), завдяки якому визначається, чи може драйвер відеокарти здійснити апаратну обробку цих операцій. Якщо який-небудь кодек використовує дані операції, то він може використовувати ці інтерфейси відео-драйвера для отримання доступу до апаратного прискорення. Якщо ж графічний драйвер не підтримує один або кілька таких інтерфейсів, то обробка цих операцій перенаправляється на центральний процесор. Вже декодоване відео може передаватися на графічний процесор для проведення пост-обробки відео. Результуючий конвеєр доступний в додатках, сумісних з DirectShow.
Для компенсації руху DXVA визначає інтерфейс драйвера (DDI), який, у свою чергу, визначає інтерфейси для дискретного косинусного перетворення (iDCT), кодування Хаффмана, альфа-змішування, інверсної квантизації, конвертації колірного простору, зміни частоти кадрів та інших операцій.[2][3] Він також включає три під-специфікації: «Deinterlacing DDI», «COPP DDI» і «ProcAmp DDI».[4] Deinterlacing DDI визначає функції зворотного виклику для операцій деінтерлейсинга. Функції COPP (Certified Output Protection Protocol) DDI дозволяють конвеєру забезпечувати захист медіа-даних шляхом вказівки функцій шифрування. ProcAmp DDI використовується для прискорення пост-обробки відео. Модуль драйвера ProcAmp розташований між апаратним рендерингом відео і драйвером дисплея та надає функції, які дозволяють застосовувати фільтри пост-обробки на вже декодоване відео.
Функції DXVA DDI недоступні безпосередньо програмі-клієнту DirectShow, а поставляються як функції зворотного виклику до рендереру відео. Таким чином, рендерер відіграє дуже важливу роль у складі конвеєра.
DXVA 1.0 використовується на Windows XP і Windows 2000.
DXVA на Windows Vista і новіших ОС
DXVA 2.0 поліпшив реалізацію відео-конвеєра і додав деякі інші DDI, такі як «Capture DDI», призначений для захоплення відео. Дві з трьох первинних DDI, які поставлялися з DXVA 1.0, у другій версії були покращені — для апаратної обробки стала доступна більша кількість операцій. DXVA 2.0 не включає COPP DDI, а замість нього використовує Protected Media Path для захищеного контенту. DXVA 1.0 емулюється з використанням DXVA 2.0.[1] У DXVA 2.0 функції DDI стали доступні безпосередньо для програми-клієнта і не потребують проміжного відео-рендерера.[5] Таким чином, з'явилася можливість створити конвеєри для простого декодування відео (без рендеринга) або пост-процесингу і рендеринга (без декодування). Всі ці можливості вимагають наявності Windows Display Driver Model, який пов'язаний з DirectX 10, а це обмежує список операційних систем з DXVA 2.0 до Windows Vista, Windows Server 2008, Windows 7 і Windows Server 2008 R2.[5][1] DXVA 2.0 підтримує тільки Enhanced Video Renderer як відео-рендерера на Vista і Windows 7 (на Windows XP DXVA-рендерінг можливий з VMR9 і Overlay Mixer[1]). DXVA інтегрований з Media Foundation і дозволяє конвеєрам DXVA розпізнаватися як Media Foundation Transforms (MFTs). Навіть конвеєр декодування і конвеєр пост-процесингу можуть бути розпізнані як MFTs, в результаті чого за допомогою завантажувача топології Media Foundation можна створити повноцінний конвеєр для відтворення відео.
Існує DXVA-HD, який є розвитком DXVA 2.0 і доступний на Windows 7, якщо підтримується WDDM 1.1.[6]
Програмна підтримка
- Adobe Flash версії 10.1 На додаток до DXVA-сумісних медіаплеєрів, наведених в цьому списку, версія Flash з підтримкою DXVA необхідна для перегляду Flash-контенту в Інтернеті.[7]
- Anysee Viewer
- Boxee (публічне бета-тестування було заплановано на 7 січня 2010 року)
- DivX H.264 декодер (версія 1.2, частина пакету «DivX Plus»)
- Ffdshow (починаючи з ревізії 3185)
- JetAudio
- jetVideo
- Light Alloy
- Media Player Classic Home Cinema
- MediaPortal
- Microsoft Windows Vista / Windows 7 внутрішній MPEG-2 — декодер
- PowerDVD
- The KMPlayer
- Медіапрогравач VLC (тільки DXVA 2.0)[8] (з версії 1.1)
- WinDVD
- Windows Media Player 11 (тільки для медіаконтейнера WMV)
- Windows Media Player 12
- XBMC (Dsplayer Branch і «нічні» білди)
- Freemake Video Converter (Починаючи з версії 2.3)
- Arcsoft TotalMedia Theatre