DirectX Video Acceleration: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
мНет описания правки
Спасено источников — 2, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.8.7
 
(не показано 37 промежуточных версий 31 участника)
Строка 1: Строка 1:
'''DirectX Video Acceleration''' (сокращённо '''DXVA''', дословно {{lang-ru|DirectX ускорение видео}}) — [[интерфейс программирования приложений]] (API), компонент [[DirectX]], разработанный корпорацией [[Microsoft]] и предназначенный для обработки (в первую очередь, [[Декодирование|декодирования]]) [[битовый поток|битового потока]] [[видео]]данных силами [[графический процессор|графических процессоров]] ({{lang-en|GPU}}). DXVA предназначен для функционирования на [[IBM PC-совместимый компьютер|BM PC-совместимых компьютерах]] под управлением [[операционная система|операционных систем]] семейства [[Microsoft Windows]] и на [[Игровая консоль|игровой консоли]] [[Xbox 360]]. Программный конвейер DXVA позволяет определённым некоторым ресурсоёмким операциям, таким как [[дискретное косинусное преобразование]], [[компенсация движения]] и [[деинтерлейсинг]], выполняться на графическом, а не на [[Центральный процессор|центральном процессоре]]. DXVA 2.0 позволяет перенаправлять на GPU большее количество операций, включая захват видео и операции обработки видео.
'''DirectX Video Acceleration''' (сокращённо '''DXVA''', дословно {{lang-ru|ускорение видео DirectX}}) — [[интерфейс программирования приложений]] (API), компонент [[DirectX]], разработанный корпорацией [[Microsoft]] и предназначенный для обработки (в первую очередь, [[Декодирование|декодирования]]) [[битовый поток|битового потока]] [[видео]]данных силами [[графический процессор|графических процессоров]] ({{lang-en|GPU}}).


DXVA предназначен для функционирования на [[IBM PC-совместимый компьютер|IBM PC-совместимых компьютерах]] под управлением [[операционная система|операционных систем]] семейства [[Microsoft Windows]] и на [[Игровая консоль|игровой консоли]] [[Xbox 360]]. Программный конвейер DXVA позволяет определённым некоторым ресурсоёмким операциям, таким как [[дискретное косинусное преобразование]], [[компенсация движения]] и [[деинтерлейсинг]], выполняться на графическом, а не на [[Центральный процессор|центральном процессоре]]. DXVA 2.0 позволяет перенаправлять на GPU большее количество операций, включая захват видео и операции обработки видео.
DXVA работает в соединении с [[DirectShow]], который поддерживается [[видеокарта]]ми. DXVA 1.0, который был представлен в качестве стандартизированного API с [[Windows 2000]] и был доступен начиная с [[Windows 98]], мог использовать или режим [[оверлей|оверлея]], или VMR 7/9.<ref name="dxva2">{{cite web | title = DirectX Video Acceleration 2.0 | url = http://msdn2.microsoft.com/en-us/library/aa965263.aspx | accessdate = 2007-10-24}}</ref> DXVA 2.0, доступный только начиная с [[Windows Vista]], интегрирован с [[Мультимедийный фреймворк|мультимедийным фреймворком]] [[Media Foundation]] и использует видео-рендерер [[Media Foundation#Enhanced Video Renderer|Enhanced Video Renderer]].<ref name="dxva2"/>

DXVA работает в соединении с [[DirectShow]], который поддерживается [[видеокарта]]ми. DXVA 1.0, который был представлен в качестве стандартного API и был доступен начиная с [[Windows 2000]], мог использовать или режим [[оверлей|оверлея]], или VMR 7/9.<ref name="dxva2">{{cite web|title=DirectX Video Acceleration 2.0|url=http://msdn2.microsoft.com/en-us/library/aa965263.aspx|accessdate=2007-10-24|archiveurl=https://www.webcitation.org/678aLE0lb?url=http://msdn.microsoft.com/en-us/library/aa965263.aspx|archivedate=2012-04-23}}</ref> DXVA 2.0, доступный только начиная с [[Windows Vista]], интегрирован с [[Мультимедийный фреймворк|мультимедийным фреймворком]] [[Media Foundation]] и использует видео-рендерер [[Media Foundation#Enhanced Video Renderer|Enhanced Video Renderer]].<ref name="dxva2"/>


== Обзор ==
== Обзор ==
DXVA используется программными [[видеокодек]]ами для определения специфического для каждого кодека конвейера, что необходимо для аппаратного декодирования и рендеринга видеопотока этим кодеком. Конвейер начинается с центрального процессора, который выполняет парсинг медиа-потока и его конвертацию в DXVA-совместимые структуры. DXVA определяет набор операций, которые могут быть аппаратно ускоренными, и [[Программный интерфейс|интерфейс]] [[драйвер]]а устройства ({{lang-en|device driver interface — DDI}}), благодаря которому определяется, может ли драйвер видеокарты осуществить аппаратную обработку этих операций. Если какой-либо кодек использует данные операции, то он может использовать эти интерфейсы видео-драйвера для получения доступа к аппаратному ускорению. Если же графический драйвер не поддерживает один или несколько таких интерфейсов, то обработка этих операций перенаправляется на центральный процессор. Уже декодированное видео может передаваться на графический процессор для проведения [[Пост-обработка видео|пост-обработки видео]]. Результирующий конвейер доступен в приложениях, совместимых с [[DirectShow]].
DXVA используется программными [[видеокодек]]ами для определения специфического для каждого кодека конвейера, что необходимо для аппаратного декодирования и рендеринга видеопотока этим кодеком. Конвейер начинается с центрального процессора, который выполняет парсинг медиа-потока и его конвертацию в DXVA-совместимые структуры. DXVA определяет набор операций, которые могут быть аппаратно ускоренными, и [[Программный интерфейс|интерфейс]] [[драйвер]]а устройства ({{lang-en|device driver interface — DDI}}), благодаря которому определяется, может ли драйвер видеокарты осуществить аппаратную обработку этих операций. Если какой-либо кодек использует данные операции, то он может использовать эти интерфейсы видео-драйвера для получения доступа к аппаратному ускорению. Если же графический драйвер не поддерживает один или несколько таких интерфейсов, то обработка этих операций перенаправляется на центральный процессор. Уже декодированное видео может передаваться на графический процессор для проведения [[Пост-обработка видео|пост-обработки видео]]. Результирующий конвейер доступен в приложениях, совместимых с [[DirectShow]].


Для [[Компенсация движения|компенсации движения]] DXVA определяет интерфейс драйвера (DDI), который, в свою очередь, определяет интерфейсы для [[Дискретное косинусное преобразование|дискретного косинусного преобразования]] (iDCT), [[Код Хаффмана|кодирования Хаффмана]], [[Альфа-канал|альфа-смешивания]], инверсной квантизации, конвертирования цветового пространства, изменения частоты кадров и других операций.<ref name="intro">{{cite web | url = http://msdn2.microsoft.com/en-us/library/ms799545.aspx | title = Introduction to DirectX VA | accessdate = 2007-10-24}}</ref><ref>{{cite web | url = http://forum.videolan.org/viewtopic.php?t=9421 | title = Microsoft DirectX Video Acceleration (DirectX VA) support | accessdate = 2007-10-24}}</ref> Он также включает три под-спецификации: «Deinterlacing DDI», «COPP DDI» и «ProcAmp DDI».<ref>{{cite web | url = http://msdn2.microsoft.com/en-us/library/ms798379.aspx | title = DirectX Video Acceleration | accessdate = 2007-10-24}}</ref> Deinterlacing DDI определяет функции обратного вызова для операций [[деинтерлейсинг]]а. Функции COPP (Certified Output Protection Protocol) DDI позволяют конвейеру обеспечивать [[Технические средства защиты авторских прав|защиту медиа-данных]] путём указания функций шифрования. ProcAmp DDI используется для ускорения пост-обработки видео. Модуль драйвера ProcAmp расположен между аппаратным рендерингом видео и драйвером дисплея и предоставляет функции, которые позволяют применять фильтры пост-обработки на уже декодированное видео.
Для [[Компенсация движения|компенсации движения]] DXVA определяет интерфейс драйвера (DDI), который, в свою очередь, определяет интерфейсы для [[Дискретное косинусное преобразование|дискретного косинусного преобразования]] (iDCT), [[Код Хаффмана|кодирования Хаффмана]], [[Альфа-канал|альфа-смешивания]], инверсной квантизации, конвертирования цветового пространства, изменения частоты кадров и других операций.<ref name="intro">{{cite web|url=http://msdn2.microsoft.com/en-us/library/ms799545.aspx|title=Introduction to DirectX VA|accessdate=2007-10-24|archiveurl=https://www.webcitation.org/678aLnI2l?url=http://msdn.microsoft.com/en-us/library/ms799545.aspx|archivedate=2012-04-23}}</ref><ref>{{cite web|url=https://forum.videolan.org/viewtopic.php?t=9421|title=Microsoft DirectX Video Acceleration (DirectX VA) support|accessdate=2007-10-24|archiveurl=https://www.webcitation.org/678aMSjF5?url=https://forum.videolan.org/viewtopic.php?t=9421|archivedate=2012-04-23}}</ref> Он также включает три под-спецификации: «Deinterlacing DDI», «COPP DDI» и «ProcAmp DDI».<ref>{{cite web|url=http://msdn2.microsoft.com/en-us/library/ms798379.aspx|title=DirectX Video Acceleration|accessdate=2007-10-24|archiveurl=https://www.webcitation.org/678exRdk0?url=http://msdn.microsoft.com/en-us/library/ms798379.aspx|archivedate=2012-04-23}}</ref> Deinterlacing DDI определяет функции обратного вызова для операций [[деинтерлейсинг]]а. Функции COPP (Certified Output Protection Protocol) DDI позволяют конвейеру обеспечивать [[Технические средства защиты авторских прав|защиту медиа-данных]] путём указания функций шифрования. ProcAmp DDI используется для ускорения пост-обработки видео. Модуль драйвера ProcAmp расположен между аппаратным рендерингом видео и драйвером дисплея и предоставляет функции, которые позволяют применять фильтры пост-обработки на уже декодированное видео.


Функции DXVA DDI не доступны непосредственно программе-клиенту DirectShow, а поставляются в качестве функций обратного вызова к рендереру видео. Таким образом, рендерер играет очень важную роль в составе конвейера.
Функции DXVA DDI недоступны непосредственно программе-клиенту DirectShow, а поставляются в качестве функций обратного вызова к рендереру видео. Таким образом, рендерер играет очень важную роль в составе конвейера.


DXVA 1.0 используется на [[Windows XP]] и [[Windows 2000]].
DXVA 1.0 используется на [[Windows XP]] и [[Windows 2000]].


=== DXVA на Windows Vista и позже ===
=== 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.<ref name="dxva2"/> В DXVA 2.0 функции DDI стали доступны непосредственно для программы-клиента и не нуждаются в промежуточном видео-рендерере.<ref name="new">{{cite web | url = http://msdn2.microsoft.com/en-us/library/ms788119.aspx | title = What's New in DirectShow | accessdate = 2007-10-24}}</ref> Таким образом, появилась возможность создать конвейеры для простого декодирования видео (без рендеринга) или пост-процессинга и рендеринга (без декодирования). Все эти возможности требуют наличия [[Windows Display Driver Model]], который связан с [[DirectX 10]], а это ограничивает список операционных систем с DXVA 2.0 до [[Windows Vista]], [[Windows Server 2008]], [[Windows 7]] и [[Windows Server 2008 R2]].<ref name="new"/><ref name="dxva2"/> DXVA 2.0 поддерживает только [[Enhanced Video Renderer]] в качестве видео-рендерера на Vista и Windows 7 (на [[Windows XP]] DXVA-рендеринг возможен с VMR9 и Overlay Mixer<ref name="dxva2"/>). DXVA интегрирован с [[Media Foundation]] и позволяет конвейерам DXVA распознаваться как ''Media Foundation Transforms (MFTs)''. Даже конвейер декодирования и конвейер пост-процессинга могут быть распознаны как MFTs, в результате чего при помощи загрузчика топологии Media Foundation можно создать полноценный конвейер для проигрывания видео.
DXVA 2.0 улучшил реализацию видео-конвейера и добавил некоторые другие DDI, такие как «Capture DDI», предназначенный для [[захват видео|захвата видео]]. Две из трёх первоначальных DDI, которые поставлялись с DXVA 1.0, во второй версии были улучшены — для аппаратной обработки стало доступно большее количество операций. DXVA 2.0 не включает COPP DDI, а вместо него использует [[Protected Media Path]] для защищённого контента. DXVA 1.0 эмулируется с использованием DXVA 2.0.<ref name="dxva2"/> В DXVA 2.0 функции DDI стали доступны непосредственно для программы-клиента и не нуждаются в промежуточном видео-рендерере.<ref name="new">{{cite web|url=http://msdn2.microsoft.com/en-us/library/ms788119.aspx|title=What's New in DirectShow|accessdate=2007-10-24|archiveurl=https://www.webcitation.org/678ey1Djd?url=http://msdn.microsoft.com/en-us/library/ms788119.aspx|archivedate=2012-04-23}}</ref> Таким образом, появилась возможность создать конвейеры для простого декодирования видео (без рендеринга) или пост-процессинга и рендеринга (без декодирования). Все эти возможности требуют наличия [[Windows Display Driver Model]], который связан с [[DirectX 10]], а это ограничивает список операционных систем с DXVA 2.0 до [[Windows Vista]], [[Windows Server 2008]], [[Windows 7]] и [[Windows Server 2008 R2]].<ref name="dxva2"/><ref name="new"/> DXVA 2.0 поддерживает только [[Enhanced Video Renderer]] в качестве видео-рендерера на Vista и Windows 7 (на [[Windows XP]] DXVA-рендеринг возможен с VMR9 и Overlay Mixer<ref name="dxva2"/>). DXVA интегрирован с [[Media Foundation]] и позволяет конвейерам DXVA распознаваться как ''Media Foundation Transforms (MFTs)''. Даже конвейер декодирования и конвейер пост-процессинга могут быть распознаны как MFTs, в результате чего при помощи загрузчика топологии Media Foundation можно создать полноценный конвейер для проигрывания видео.


Существует DXVA-HD, который является развитием DXVA 2.0 и доступен на [[Windows 7]], если поддерживается WDDM 1.1.<ref>{{cite web|url= http://msdn.microsoft.com/en-us/library/ee663586(VS.85).aspx |title= DXVA-HD |publisher= [[MSDN]] |datepublished=8 апреля 2010 года |accessdate= 24 апреля 2010 |lang= en}}</ref>
Существует DXVA-HD, который является развитием DXVA 2.0 и доступен на [[Windows 7]], если поддерживается [[Windows Display Driver Model|WDDM]] 1.1.<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/ee663586(VS.85).aspx|title=DXVA-HD|publisher=[[MSDN]]|datepublished=2010-04-08|accessdate=2010-04-24|lang=en|archiveurl=https://www.webcitation.org/678eyWdpA?url=http://msdn.microsoft.com/en-us/library/ee663586(VS.85).aspx|archivedate=2012-04-23}}</ref>


== Программная поддержка ==
== Программная поддержка ==
* [[Adobe Flash]] версии 10.1 В дополнение к DXVA-совместимым медиаплеерам, приведённым в этом списке, версия Flash с поддержкой DXVA необходима для просмотра Flash-контента в Интернете.<ref>{{Cite web |url=http://benchmarkreviews.com/index.php?option=com_content&task=view&id=419&Itemid=38 |title=Adobe Flash HD-Video GPU Acceleration Guide {{!}} GPU Acceleration,Adobe Flash,HD-Video,ATI AVIVO-HD,NVIDIA PureVideo-HD,Adobe Flash HD-Video GPU Acceleration Guide How-To Guide<!-- Заголовок добавлен ботом --> |access-date=2010-04-22 |archive-date=2013-05-02 |archive-url=https://web.archive.org/web/20130502104511/http://benchmarkreviews.com/index.php?option=com_content&task=view&id=419&Itemid=38 |deadlink=no }}</ref>
*[[Media Player Classic#MPC Home Cinema|Media Player Classic Home Cinema]]
* Anysee Viewer
*[[Adobe Flash]] версии 10.1<ref>http://forum.eeeuser.com/viewtopic.php?id=79395</ref> ([[бета-версия]] на январь 2010 г.)<ref>http://labs.adobe.com/downloads/flashplayer10.html</ref> В дополнение к DXVA-совместимым медиаплеерам, приведённым в этом списке, версия Flash с поддержкой DXVA необходима для просмотра Flash-контента в Интернете.<ref>http://benchmarkreviews.com/index.php?option=com_content&task=view&id=419&Itemid=38</ref>
*[[Boxee]] (публичное бета-тестирование было запланировано на 7 января 2010 г.)
* [[Boxee]] (публичное бета-тестирование было запланировано на 7 января 2010 г.)
* [[DivX]] H.264 декодер (версия 1.2, часть пакета «DivX Plus»)
*[[XBMC]] (Dsplayer Branch и "ночные" билды)
* [[ffdshow]] (начиная с ревизии 3185)
*[[MediaPortal]]
* [[jetAudio]]
*[[Microsoft]] [[Windows Vista]]/[[Windows 7]] внутренний [[MPEG-2]]-декодер
* [[JetAudio#JetVideo|jetVideo]]
*[[PowerDVD]]
* [[Media Player Classic#MPC Home Cinema|Media Player Classic Home Cinema]]
*[[WinDVD]]
* [[MediaPortal]]
*[[Windows Media Player 11]] (только для [[медиаконтейнер]]а [[WMV]])
* [[Microsoft]] [[Windows Vista]]/[[Windows 7]] внутренний [[MPEG-2]]-декодер
*[[Windows Media Player 12]]
* [[PowerDVD]]
*[[Ffdshow]] (начиная с ревизии 3185)
* [[The KMPlayer]]
*Anysee Viewer
* [[Медиапроигрыватель VLC]] (только DXVA 2.0)<ref>{{Cite web |url=https://wiki.videolan.org/VLC_DxVA2 |title=VLC GPU Decoding — VideoLAN Wiki |access-date=2022-05-07 |archive-date=2021-05-13 |archive-url=https://web.archive.org/web/20210513183325/https://wiki.videolan.org/VLC_DxVA2 |deadlink=no }}</ref> (с версии 1.1)
*[[DivX]] H.264 декодер (версия 1.2, часть пакета «DivX Plus»)
* [[WinDVD]]
*[[VLC media player]] (только DXVA 2.0)<ref>http://wiki.videolan.org/VLC_DxVA2</ref>
* [[Windows Media Player 11]] (только для [[медиаконтейнер]]а [[WMV]])
* [[Проигрыватель Windows Media|Windows Media Player 12]]
* [[XBMC]] (Dsplayer Branch и «ночные» билды)
* [[Freemake Video Converter]] (Начиная с версией 2.3)
* [[Arcsoft TotalMedia Theatre]]


== См. также ==
== См. также ==
* [[PureVideo|nVidia PureVideo]] - аппаратная технология в [[графический процессор|графических процессорах]] производства [[NVIDIA]] для ускорения декодирования видео силами графического процессора при помощи DXVA.
* [[PureVideo|nVidia PureVideo]] — аппаратная технология в [[графический процессор|графических процессорах]] производства [[NVIDIA]] для ускорения декодирования видео силами графического процессора при помощи DXVA.
* [[Unified Video Decoder|UVD (Unified Video Decoder)]] - аппаратная технология в [[графический процессор|графических процессорах]] производства [[AMD]] для ускорения декодирования видео силами графического процессора при помощи DXVA.
* [[Unified Video Decoder|UVD (Unified Video Decoder)]] — аппаратная технология в [[графический процессор|графических процессорах]] производства [[AMD]] для ускорения декодирования видео силами графического процессора при помощи DXVA.
* [[Media Foundation]] (и её компонент [[Enhanced Video Renderer]]), который использует DXVA 2.0.
* [[Media Foundation]] (и её компонент [[Enhanced Video Renderer]]), который использует DXVA 2.0.
* [[VDPAU|VDPAU (Video Decode and Presentation API for Unix)]]
* {{Не переведено 3|VDPAU|VDPAU (Video Decode and Presentation API for Unix)}}
* [[X-Video Bitstream Acceleration|X-Video Bitstream Acceleration (XvBA)]], эквивалент DXVA для [[X Window System]], поддерживающий [[MPEG-2]], [[H.264]] и [[VC-1]].
* {{Не переведено 3|X-Video Bitstream Acceleration|X-Video Bitstream Acceleration (XvBA)}}, эквивалент DXVA для [[X Window System]], поддерживающий [[MPEG-2]], [[H.264]] и [[VC-1]].
*[[X-Video Motion Compensation]], эквивалент DXVA для [[X Window System]], поддерживающий только [[MPEG-2]].
* {{Не переведено 3|X-Video Motion Compensation}}, эквивалент DXVA для [[X Window System]], поддерживающий только [[MPEG-2]].
*[[VAAPI|Video Acceleration API (VAAPI)]]
* {{Не переведено 3|Video Acceleration API|Video Acceleration API (VAAPI)}}


== Примечания ==
== Примечания ==
{{примечания}}
{{примечания}}


== Ссылки ==
== Внешние ссылки ==
* {{cite web|url= http://k-lite-codec-pack.org.ua/faq/dxva |title= DXVA |publisher= K-Lite Codec Pack |accessdate= 17 апреля 2010}}
* {{cite web|url=https://k-lite-codec-pack.org.ua/faq/dxva|title=DXVA|publisher=K-Lite Codec Pack|accessdate=2010-04-17|archiveurl=https://www.webcitation.org/678ez7hMv?url=https://k-lite-codec-pack.org.ua/faq/dxva|archivedate=2012-04-23}}
* {{cite web|url=http://www.overclockers.ru/softnews/35577.shtml |title=Немного об аппаратном ускорении видео DXVA, CUDA и CoreAVC |author= QNX |publisher= [[Overclockers (сайт)]] |datepublished= 23 декабря 2009 года |accessdate= 17 апреля 2010}}
* {{cite web|url=http://www.overclockers.ru/softnews/35577.shtml|title=Немного об аппаратном ускорении видео DXVA, CUDA и CoreAVC|author=QNX|publisher=[[Overclockers (сайт)]]|datepublished=2009-12-23|accessdate=2010-04-17|archiveurl=|archivedate=}}
* {{cite web|url= http://nvworld.ru/faq/hardware-video-decoding/ |title= В описании видеокарты упоминается аппаратное декодирование видео. Как использовать эту возможность? |publisher= [http://nvworld.ru Мир nVidia] |accessdate= 17 апреля 2010}}
* {{cite web|url=http://nvworld.ru/faq/hardware-video-decoding/|title=В описании видеокарты упоминается аппаратное декодирование видео. Как использовать эту возможность?|publisher=[http://nvworld.ru Мир nVidia]|accessdate=2010-04-17|archiveurl=https://www.webcitation.org/678f2j8HV?url=http://nvworld.ru/faq/hardware-video-decoding/|archivedate=2012-04-23}}


[[Категория:Программные интерфейсы Microsoft]]
[[Категория:Программные интерфейсы Microsoft]]
Строка 54: Строка 61:
[[Категория:DirectX]]
[[Категория:DirectX]]
[[Категория:Драйверы]]
[[Категория:Драйверы]]
[[Категория:Microsoft Windows]]
[[Категория:Технологии программного обеспечения Microsoft]]

[[de:DirectX Video Acceleration]]
[[en:DirectX Video Acceleration]]
[[ko:DirectX 비디오 가속]]

Текущая версия от 07:32, 7 мая 2022

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.[1][5] 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. 1 2 3 4 5 DirectX Video Acceleration 2.0. Дата обращения: 24 октября 2007. Архивировано 23 апреля 2012 года.
  2. Introduction to DirectX VA. Дата обращения: 24 октября 2007. Архивировано 23 апреля 2012 года.
  3. Microsoft DirectX Video Acceleration (DirectX VA) support. Дата обращения: 24 октября 2007. Архивировано 23 апреля 2012 года.
  4. DirectX Video Acceleration. Дата обращения: 24 октября 2007. Архивировано 23 апреля 2012 года.
  5. 1 2 What's New in DirectShow. Дата обращения: 24 октября 2007. Архивировано 23 апреля 2012 года.
  6. DXVA-HD (англ.). MSDN (8 апреля 2010). Дата обращения: 24 апреля 2010. Архивировано 23 апреля 2012 года.
  7. Adobe Flash HD-Video GPU Acceleration Guide | GPU Acceleration,Adobe Flash,HD-Video,ATI AVIVO-HD,NVIDIA PureVideo-HD,Adobe Flash HD-Video GPU Acceleration Guide How-To Guide. Дата обращения: 22 апреля 2010. Архивировано 2 мая 2013 года.
  8. VLC GPU Decoding — VideoLAN Wiki. Дата обращения: 7 мая 2022. Архивировано 13 мая 2021 года.