Декодирование видео на GPU
-
Upload
msu-gml-videogroup -
Category
Technology
-
view
1.513 -
download
1
description
Transcript of Декодирование видео на GPU
![Page 1: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/1.jpg)
Декодирование видео на современных видеокартах
Арсаев Марат
Video GroupCS MSU Graphics & Media Lab
19.05.2010
![Page 2: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/2.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Содержание
Введение
Интерфейсы обработки видео
Аппаратная поддержка
Декодирование на CUDA
Выводы
2
![Page 3: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/3.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Кодирование видео
3
![Page 4: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/4.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Содержание
Введение
Интерфейсы обработки видео
Microsoft DirectX Video Acceleration
Аналоги для Linux
Аппаратная поддержка
Декодирование на CUDA
Выводы
4
![Page 5: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/5.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Microsoft DirectX Video Acceleration
5http://vistastyles.org/
![Page 6: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/6.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Microsoft DirectX Video Acceleration: MPC-HС
6
![Page 7: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/7.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Microsoft DirectX Video Acceleration: MPC-HС
7
![Page 8: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/8.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Microsoft DirectX Video
Acceleration
Состоит из Device Driver Interface:
Motion Compensation DDI (decoder DDI)
ProcAmp DDI (post-processing DDI)
Deinterlacing DDI
COPP DDI (security DDI)
Вышла в декабре 2002 года.
8
![Page 9: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/9.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Microsoft DirectX Video
Acceleration
Для того чтобы DXVA заработал, необходимо:
Программный декодер с необходимыми DXVA вызовами
Системный DXVA-драйвер (входит в DirectX)
Видео драйвер, поддерживающий запрашиваемые вызовы
Видеокарту с аппаратной поддержкой требуемых функций
9
![Page 10: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/10.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
DXVA работает тут
Поток данных DirectShow
10
Фильтр источника
потока
Программный декодер
Рендерер(VMR\EMR)
Дополнительный источник
Видеодрайвер
![Page 11: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/11.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Decoder DDI
Поддерживаемые стандарты: MPEG-1, MPEG-2, MPEG-4, H.263, H.264, VC-1
Будут ускорены аппаратно только те части декодирования, которые мы сконфигурируем
11
![Page 12: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/12.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Deinterlace DDI
Доступные алгоритмы деинтерлейсинга:
Bob (line doubling)
Simple Switching Adaptive
Motion Vector Steered
Advanced 3D Adaptive
12
![Page 13: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/13.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Deinterlace DDI
13
None Bob
ATI Vector Adaptive
![Page 14: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/14.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Deinterlace DDI
Доступные алгоритмы преобразования частоты кадров:
Frame Repeat/Drop
Linear Temporal Interpolation
Motion Vector Steered
14
![Page 15: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/15.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
ProcAmp DDI
Предоставляет возможность улучшить визуальное качество
Предоставляет возможность автоматической регулировки параметров видеокартой
15
![Page 16: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/16.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Использование Microsoft DXVA
Работа с DXVA идет через фильтры DirectShowи состоит из следующих шагов:
Запрос возможностей устройства (от определенного типа видео)
Подготовка рендерера
Выделение буферов в видеопамяти
Выполнение
16
![Page 17: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/17.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Microsoft DXVA 2.0
Доступен, начиная с DirectX 10 (2006 год)
Новый интерфейс – Capture DDI
Позволяет обходить ограничения на DirectShow pipeline
Использует Enhanced Video Renderer (EVR)
Дополнительный стандарт – DXVA-HD
17
![Page 18: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/18.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Microsoft DXVA: резюме
+ Хорошо описанный интерфейс с множеством форматов
+ Активная поддержка со стороны производителей железа и ПО (Adobe Flash, CoreAVC, ffdshow, Media Player Classic, и т.д.)
- Довольно сложное программирование
- Привязан к Microsoft DirectX
18
![Page 19: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/19.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Содержание
Введение
Интерфейсы обработки видео
Microsoft DirectX Video Acceleration
Аналоги для Linux
Аппаратная поддержка
Декодирование на CUDA
Выводы
19
![Page 20: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/20.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Иерархия расширений
20
X Window System
X-Video extensionX-Video Motion Compensation
Video Acceleration API (libVA)
VDPAU (Video Decode and Presentation API for Unix)
X-Video Bitstream Acceleration (XvBA)
![Page 21: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/21.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
X-Video extension
Расширение отвечает за проигрывание и вывод видео в системе X Window (c 1991 года)
Поддержка framebuffer object Возможность вывода на удаленный
X Window сервер
Возможность аппаратного линейного скейлинга, конвертирования форматов
21
![Page 22: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/22.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
X-Video Motion Compensation
Частичное добавление аппаратного декодирования для MPEG-1, MPEG-2, MPEG-4:
Motion compensation
iDCT
Variable Length Encoding (VLD)
Поддержка множества видеокарт – NVIDIA, VIA, Intel, S3 с 2002 года. ATI сделали поддержку совсем недавно
22
![Page 23: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/23.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
XvMCContext
X-Video Motion Compensation
23
StreamInputXvPort
Video Pipeline
XvMCSubpictures
RenderingXvMCSurfaces
![Page 24: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/24.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Video Acceleration API
Создана для замещения XvMC c использованием последних возможностей GPU
Возможности: Motion compensation
iDCT (+ Modified iDCT)
In-loop Deblocking filter
Intra-frame prediction
Обратное квантование
Variable Length Decoding
Пространственно-временной деинтерлейсинг
Context-adaptive binary arithmetic coding / Context-adaptive variable-length coding
Для видео в формате MPEG-2, H.264, VC-124
![Page 25: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/25.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Video Acceleration API
25
Поддерживается обмен данными с X Window сервером через Direct Rendering Infrastructure
Благодаря удобному интерфейсу и расширенным возможностям получил развитие от NVIDIA и ATI
http://www.freedesktop.org/wiki/Software/vaapi
![Page 26: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/26.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Video Acceleration API:
Compiz
26http://www.compiz.org/
![Page 27: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/27.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Video Decode and
Presentation API for Unix
Открытая библиотека (libvdpau) - back-end VAAPI от Nvidia (2007 год)
Распространяется и в виде библиотеки, отдельной от драйверов
Поддерживается некоторыми видеокартами S3
Три поколения с наращиваемым функционалом
27
![Page 28: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/28.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Video Decode and
Presentation API for Unix
Реализует MC, iDCT, VLD, Deblocking, Deinterlacing для стандартов
MPEG-1
MPEG-2
MPEG-4
H.264
VC-1
Во второе поколение в стандарт добавлены подавление шума и шарпен
28
![Page 29: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/29.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
X-Video Bitstream Acceleration
Back-end для VAAPI от ATI (2009 год)
Поддержка MPEG-2, H.264, VC-1
Поддержка для ограниченного набора GPU(начиная с 4xxx)
Поддержка базовых операций:
Motion compensation
iDCT
VLD
29
![Page 30: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/30.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Сравнение декодеров
Supported formats Supported operation
DXVA MPEG, H.264, VC-1 basic, FRC, DI, CE, IQ, encryption
Xv - rescaling, format conversion
XvMC MPEG, H.264 basic, DI
VA API MPEG, H.264, VC-1 basic, DI, FRC, IQ
VDPAU MPEG, H.264, VC-1 basic, DI, denoising, sharpen
XvBA H.264, VC-1 basic, DI
30
basic – Bit stream decoding FRC – Frame Rate ConversionCE – Color EnhancementDI – deinterlacingIQ – inverted quantization
![Page 31: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/31.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Содержание
Введение
Интерфейсы обработки видео
Аппаратная поддержка
Nvidia PureVideo
ATI AVIVO & Unified Video Decoder
Декодирование на CUDA
Выводы
31
![Page 32: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/32.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Nvidia PureVideo
Помогает в декодировании и пост-обработке видео
Доступна c GeForce 6xxx
Технология используется практически во всех программных DVD/HD-плеерах
Продается отдельный DirectShow декодер –Nvidia PureVideo Decoder
32
![Page 33: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/33.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Nvidia PureVideo 1st gen
Опубликован для видеокарт серии 6ххх (2004 год):
использовался VMR9
улучшено визуальное качество деинтерлейсинга и рескейлинга
использовался в части MPEG-1/MPEG-2 decoding pipeline начиная с 6600 (2005 год) – полная акселерация
MPEG-1/MPEG-2 decoding pipeline, ограниченная поддержка VC-1 и H.264
33
![Page 34: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/34.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Nvidia PureVideo 2nd gen HD
Начиная с видеокарт серии 8ххх (2007):
переделанный H.264 pipeline полностью на GPU
большая часть декодера VC-1 на GPU
технология позволяла среднему компьютеру проигрывать HD-DVD и Blu-ray фильмы без задержек
34
![Page 35: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/35.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Nvidia PureVideo 3rd gen HD
На некоторых картах 8-ой и 9-ой серий (2008):
полностью поддеживаемый декодинг VC-1
минорные изменения в декодировании MPEG-2
соответствует поддержке Video Decode and Presentation API for Unix feature set B
35
![Page 36: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/36.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Nvidia PureVideo 4th gen HD
На картах 3хх и некоторых 2хх (2009):
полная поддержка декодировании MPEG-4 ASP
высококачественный рескейлер
снятие ограничений для H.264
cоответствует поддержке Video Decode and Presentation API for Unix feature set С
36
![Page 37: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/37.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Содержание
Введение
Интерфейсы обработки видео
Аппаратная поддержка
Nvidia PureVideo
ATI AVIVO & Unified Video Decoder
Декодирование на CUDA
Выводы
37
![Page 38: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/38.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
ATI AVIVO
Начиная с видеокарт X-серии (2005 год) поддерживаются:
автоматическое регулирование цветности, денойзинг, шарпен
частичное декодирование форматов H.264, VC-1, WMV9, MPEG-2 (кроме декодирования битового потока)
адаптивный деинтерлейсинг, скейлинг
38
![Page 39: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/39.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus ATI Unified Video Decoder/
Unified Video Decoder+
В первом поколении, доступном с 2ххх серии (2007 год):
полная поддержка VC-1, AVC/H.264
поддержка MPEG-2 в виде шейдеров
обширный пост-процессинг: denoising, deinterlacing, scaling/resizing, in-loop deblocking
39
![Page 40: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/40.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
ATI Unified Video Decoder 2.0
Во втором поколении, доступном с 4ххх серии (2008 год):
полная поддержка декодирования потоков
VC-1, AVC/H.264, MPEG-2
декодирование двойного потока
Picture-in-picture
полностью BD-Live совместима
40
![Page 41: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/41.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
ATI UVD vs. NV PureVideo
Ситуация такова, что пользователь не проиграет
Современные графические процессоры управляются с потоком любой сложности
Загрузка CPU – минимальна
Качество картинки – на усмотрение пользователя
41
![Page 42: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/42.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
ATI UVD vs. NV PureVideo
42
ATI AVIVO
http://www.hardwareheaven.com/reviews.php?reviewid=552
![Page 43: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/43.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
ATI UVD vs. NV PureVideo
43
NVIDIA PureVideo
http://www.hardwareheaven.com/reviews.php?reviewid=552
![Page 44: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/44.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Содержание
Введение
Интерфейсы обработки видео
Аппаратная поддержка
Декодирование на CUDA
Выводы
44
![Page 45: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/45.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Библиотека NVCUVID
Предоставляет возможность управлять процессором декодирования
Поддерживает MPEG-1, MPEG-2, H.264
Декодированный кадр сразу сохраняется в CUDA Device Memory
Позволяет отображать видео (D3D или OGL)или выгружать кадры из видеопамяти
45
![Page 46: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/46.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Библиотека NVCUVID
Последовательность действий:
Разобрать исходное видео (с помощью API)
Декодировать очередной кадр (с помощью API)
Произвести изменения кадра (пост-обработка)
Вывести кадр на экран (с помощью 3D API)
46
![Page 47: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/47.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Создание декодера
Пользователь заполняет структуру CUVIDDECODECREATEINFO для вызова cuvidCreateDecoder(), с информацией входного кадра:
тип кодека
размеры кадра
цветовой формат
Также пользователь указывает параметры выходных данных:
размеры кадра
цветовой формат
количество кадров
47
![Page 48: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/48.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Создание декодера
#include <cuvid/cuviddec.h>
#include <cuvid/nvcuvid.h>
…
Cuvideodecoder oDecoder ;
CUVIDDECODECREATEINFO oVideoDecodeCreateInfo_;
memset(&oVideoDecodeCreateInfo_, 0, sizeof(CUVIDDECODECREATEINFO));
oVideoDecodeCreateInfo_.CodecType= cudaVideoCodec_H264;
oVideoDecodeCreateInfo_.ulWidth = 1280;
oVideoDecodeCreateInfo_.ulHeight = 720;
oVideoDecodeCreateInfo_.ChromaFormat = cudaVideoChromaFormat_420;
oVideoDecodeCreateInfo_.OutputFormat = cudaVideoSurfaceFormat_NV12;
oVideoDecodeCreateInfo_.DeinterlaceMode = cudaVideoDeinterlaceMode_Adaptive;
…
cuvidCreateDecoder(&oDecoder, &oVideoDecodeCreateInfo_);
48
![Page 49: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/49.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Декодирование кадра
Для вызова функции декодирования cuvidDecodePicture() пользователь заполняет структуру CUVIDPICPARAMS, содержащую :
информацию об интерлейсинге кадра
указатели на данные кадра
размеры кадра
Декодер записывает кадры в очередь, откуда их можно достать по номеру
49
![Page 50: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/50.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Декодирование кадра
Подготовка парсера
CUVIDPARSERPARAMS oVideoParserParameters;
Cuvideoparser hParser_;
memset(&oVideoParserParameters, 0, sizeof(CUVIDPARSERPARAMS));
oVideoParserParameters.CodecType = cudaVideoCodec_H264;
oVideoParserParameters.ulMaxDisplayDelay = 1;
oVideoParserParameters.pUserData = &oParserData_;
oVideoParserParameters.pfnDecodePicture = HandlePictureDecode;
cuvidCreateVideoParser(&hParser_, &oVideoParserParameters);
50
![Page 51: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/51.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Декодирование кадра
Вызов декодера
HandlePictureDecode(void * pUserData, CUVIDPICPARAMS * pPicParams)
{
cuvidDecodePicture(oDecoder, pPicParams);
return true;
}
51
![Page 52: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/52.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Пост-обработка и
отображение
Подготавливаем kernel
Отображение в память вызовом cuvidMapVideoFrame()
Вызов kernelа для обработки кадра вызовом сudaPostProcessFrame()
Отображение при помощи 3D API
52
![Page 53: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/53.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Пост-обработка и
отображение
#include “cudaModuleMgr.h”
CUmoduleManager * g_pCudaModule;
CUfunction g_mykernel;
CUStream g_KernelSID;
g_pCudaModule = new CUmoduleManager(“mykernel.ptx”, exec_path, nKernels, nGlobalMem, nTexRef);
g_pCudaModule->GetCudaFunction(“my_main”, &g_mykernel);
…
GLuint gl_pbo = createPixelBufferObject(imageParams);
cuGLRegisterBufferObject(gl_pbo);
glutDisplayFunc(display);
…
void display(){
copyDecodedFrameToTexture();
render(); }
53
![Page 54: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/54.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Пост-обработка и
отображение
void copyDecodedFrameToTexture()
{
CUdeviceptr pPBOData = 0;
unsigned int nPBOPitch = 0;
Cudeviceptr pDecodedFrame = 0;
unsigned int nDecodedPitch = 0;
CUVIDPARSERDISPINFO oDisplayInfo = queryImage();
CUVIDPROCPARAMS oVideoProcessingParameters = fillParameters();
cuvidMapVideoFrame(oDecoder, oDisplayInfo.picture_index, &pDecodedFrame , &nDecodedPitch , &oVideoProcessingParameters);
cuGLMapBufferObject( &pPBOData, &nPBOPitch, gl_pbo);
…
54
![Page 55: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/55.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Пост-обработка и
отображение
…
cudaPostProcessFrame(&pDecodedFrame, nDecodedPitch, &pPBOData, nPBOPitch, g_pCudaModule->getModule(), g_mykernel, g_KernelSID);
SetKernelParameters(g_mykernel);
cuLaunchGridAsync( g_mykernel, grid.x, grid.y, g_KernelSID);
cuGLUnmapBufferObject(gl_pbo);
cuvidUnmapVideoFrame(oDecoder_, &pDecodedFrame);
}
void render(){
glBindBufferARB (GL_PIXEL_UNPACK_BUFFER_ARB, gl_pbo);
glBindTexture (GL_TEXTURE_2D, t_tex);
glTexSubImage2D (… , 0);
DrawImage();
}55
![Page 56: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/56.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus NVCUVID
Резюме
Гибкая система пост-обработки
Все производится внутри видеопамяти
Кросс-платформенность
56
![Page 57: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/57.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Содержание
Введение
Интерфейсы обработки видео
Аппаратная поддержка
Декодирование на CUDA
Выводы
57
![Page 58: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/58.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Выводы
Каковы бы ни были условия входящего видеопотока – производители GPU будут готовы
Готовые декодеры удовлетворяют большинству требований пользователя, для определенных нужд – можно запрограммировать свой
58
![Page 59: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/59.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus
Список литературы
1. http://www.freedesktop.org/wiki/Software/vaapi VA API
2. http://msdn.microsoft.com/en-us/library/ms798379.aspx DirectX Video Acceleration
3. http://msdn.microsoft.com/en-us/library/aa965263(VS.85).aspx DirectX Video Acceleration 2.0
4. http://forum.doom9.org/ Doom9's Forum
5. http://cbaoth.dk/~cbaoth/nvcuvid.pdf CUDA Video Decoder API
6. http://nvworld.ru/utilities/dxvacheck/ DXVA Checker
7. http://www.hardwareheaven.com/reviews.php?reviewid=552&pageid=14UVD vs PureVideo
59
![Page 60: Декодирование видео на GPU](https://reader034.fdocuments.us/reader034/viewer/2022051323/54993541b47959dd7b8b4594/html5/thumbnails/60.jpg)
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
Only for Maxus Лаборатория компьютерной
графики и мультимедиа
Видеогруппа это:
Выпускники в аспирантурах Англии, Франции, Швейцарии (в России в МГУ и ИПМ им. Келдыша)
Выпускниками защищено 5 диссертаций
Наиболее популярные в мире сравнения видеокодеков
Более 3 миллионов скачанных фильтров обработки видео
60