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]

Програмна підтримка

Див. також

Примітки

  1. а б в г д DirectX Video Acceleration 2.0. Архів оригіналу за 9 травня 2016. Процитовано 31 січня 2016.
  2. Introduction to DirectX VA. Архів оригіналу за 22 лютого 2016. Процитовано 31 січня 2016.
  3. Microsoft DirectX Video Acceleration. Архів оригіналу за 22 лютого 2016. Процитовано 31 січня 2016.
  4. DirectX Video Acceleration. Архів оригіналу за 21 лютого 2016. Процитовано 31 січня 2016.
  5. а б What's New in DirectShow. Архів оригіналу за 22 лютого 2016. Процитовано 31 січня 2016.
  6. DXVA-HD. Архів оригіналу за 21 лютого 2017. Процитовано 31 січня 2016.
  7. Adobe Flash HD-Video GPU Acceleration Guide. Архів оригіналу за 2 травня 2013. Процитовано 31 січня 2016.
  8. VLC GPU Decoding — VideoLAN Wiki. Архів оригіналу за 13 травня 2021. Процитовано 5 травня 2022.