Декодирование видео на
             современных видеокартах


                       Арсаев Марат
                        ...
Only for
 Maxus 

               Содержание

           Введение
           Интерфейсы обработки видео
           Аппа...
Only for
 Maxus 

               Кодирование видео




CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video...
Only for
 Maxus 

                Содержание

           Введение
           Интерфейсы обработки видео
              ...
Only for
 Maxus 
               Microsoft DirectX Video
               Acceleration




                                 ...
Only for
 Maxus 
               Microsoft DirectX Video
               Acceleration: MPC-HС




CS MSU Graphics & Media L...
Only for
 Maxus 
               Microsoft DirectX Video
               Acceleration: MPC-HС




CS MSU Graphics & Media L...
Only for
 Maxus        Microsoft DirectX Video
               Acceleration

   Состоит из Device Driver Interface:
    M...
Only for
 Maxus        Microsoft DirectX Video
               Acceleration

      Для того чтобы DXVA заработал, необходи...
Only for
 Maxus 

               Поток данных DirectShow


       Фильтр
                             Программный
      и...
Only for
 Maxus 

               Decoder DDI

    Поддерживаемые стандарты: MPEG-1, MPEG-2,
    MPEG-4, H.263, H.264, VC-...
Only for
 Maxus 

               Deinterlace DDI

      Доступные алгоритмы деинтерлейсинга:
       Bob (line doubling)
...
Only for
 Maxus 

               Deinterlace DDI




                     None                                           ...
Only for
 Maxus 

               Deinterlace DDI

      Доступные алгоритмы преобразования
      частоты кадров:
       ...
Only for
 Maxus 

               ProcAmp DDI

           Предоставляет возможность улучшить
            визуальное качес...
Only for
 Maxus 

               Использование Microsoft DXVA

      Работа с DXVA идет через фильтры DirectShow
      и ...
Only for
 Maxus 

               Microsoft DXVA 2.0

           Доступен, начиная с DirectX 10 (2006 год)
           Но...
Only for
 Maxus 

               Microsoft DXVA: резюме

      + Хорошо описанный интерфейс с множеством
        форматов...
Only for
 Maxus 

                Содержание

           Введение
           Интерфейсы обработки видео
              ...
Only for
 Maxus 

               Иерархия расширений

                             X Window System


                    ...
Only for
 Maxus 

               X-Video extension

      Расширение отвечает за проигрывание и
      вывод видео в систе...
Only for
 Maxus 
               X-Video Motion
               Compensation

      Частичное добавление аппаратного
      ...
Only for
 Maxus 
               X-Video Motion
               Compensation

                                             ...
Only for
 Maxus 

                Video Acceleration API
      Создана для замещения XvMC c использованием
      последни...
Only for
 Maxus 

                Video Acceleration API

  Поддерживается обмен
  данными с X Window
  сервером через Di...
Only for
 Maxus        Video Acceleration API:
               Compiz




                                                ...
Only for
 Maxus        Video Decode and
               Presentation API for Unix

           Открытая библиотека (libvdp...
Only for
 Maxus        Video Decode and
               Presentation API for Unix

      Реализует MC, iDCT, VLD, Deblocki...
Only for
 Maxus 

                X-Video Bitstream Acceleration

           Back-end для VAAPI от ATI (2009 год)
      ...
Only for
 Maxus 

                Сравнение декодеров

                        Supported formats                         ...
Only for
 Maxus 

                Содержание

           Введение
           Интерфейсы обработки видео
           Апп...
Only for
 Maxus 

               Nvidia PureVideo

           Помогает в декодировании и
            пост-обработке виде...
Only for
 Maxus 

               Nvidia PureVideo 1st gen

   Опубликован для видеокарт серии 6ххх (2004
   год):
      ...
Only for
 Maxus 

               Nvidia PureVideo 2nd gen HD


   Начиная с видеокарт серии 8ххх (2007):
      переделан...
Only for
 Maxus 

               Nvidia PureVideo 3rd gen HD


   На некоторых картах 8-ой и 9-ой серий (2008):
      по...
Only for
 Maxus 

               Nvidia PureVideo 4th gen HD

      На картах 3хх и некоторых 2хх (2009):
           пол...
Only for
 Maxus 

                Содержание

           Введение
           Интерфейсы обработки видео
           Апп...
Only for
 Maxus 

               ATI AVIVO

     Начиная с видеокарт X-серии (2005 год)
     поддерживаются:
      автом...
Only for
 Maxus        ATI Unified Video Decoder/
                Unified Video Decoder+

      В первом поколении, досту...
Only for
 Maxus 

               ATI Unified Video Decoder 2.0

      Во втором поколении, доступном с 4ххх серии
      (...
Only for
 Maxus 

               ATI UVD vs. NV PureVideo

           Ситуация такова, что пользователь не
            п...
Only for
 Maxus 

                ATI UVD vs. NV PureVideo




                                               ATI AVIVO
C...
Only for
 Maxus 

                ATI UVD vs. NV PureVideo




                                           NVIDIA PureVide...
Only for
 Maxus 

               Содержание

           Введение
           Интерфейсы обработки видео
           Аппа...
Only for
 Maxus 

               Библиотека NVCUVID

           Предоставляет возможность управлять
            процессо...
Only for
 Maxus 

               Библиотека NVCUVID

      Последовательность действий:
       Разобрать исходное видео ...
Only for
 Maxus 

               Создание декодера

      Пользователь заполняет структуру
      CUVIDDECODECREATEINFO дл...
Only for
 Maxus 

               Создание декодера
   #include <cuvid/cuviddec.h>
   #include <cuvid/nvcuvid.h>
   …
   C...
Only for
 Maxus 

               Декодирование кадра

      Для вызова функции декодирования
      cuvidDecodePicture() п...
Only for
 Maxus        Декодирование кадра
               Подготовка парсера

      CUVIDPARSERPARAMS        oVideoParser...
Only for
 Maxus         Декодирование кадра
                Вызов декодера

      HandlePictureDecode(void * pUserData, C...
Only for
 Maxus        Пост-обработка и
               отображение

       Подготавливаем kernel
       Отображение в п...
Only for
 Maxus        Пост-обработка и
               отображение
      #include “cudaModuleMgr.h”
      CUmoduleManager...
Only for
 Maxus        Пост-обработка и
               отображение

      void copyDecodedFrameToTexture()
      {
      ...
Only for
 Maxus        Пост-обработка и
               отображение

        …
        cudaPostProcessFrame(&pDecodedFrame...
Only for
 Maxus        NVCUVID
               Резюме


           Гибкая система пост-обработки
           Все производ...
Only for
 Maxus 

               Содержание

           Введение
           Интерфейсы обработки видео
           Аппа...
Only for
 Maxus 

               Выводы
           Каковы бы ни были условия входящего
            видеопотока – произво...
Only for
 Maxus 

               Список литературы

      1.    http://www.freedesktop.org/wiki/Software/vaapi VA API
   ...
Only for
 Maxus      Лаборатория компьютерной
             графики и мультимедиа

      Видеогруппа это:
       Выпускни...
Upcoming SlideShare
Loading in …5
×

Декодирование видео на GPU

1,959 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,959
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Декодирование видео на GPU

  1. 1. Декодирование видео на современных видеокартах Арсаев Марат Video Group CS MSU Graphics & Media Lab 19.05.2010
  2. 2. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Аппаратная поддержка  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 2
  3. 3. Only for Maxus  Кодирование видео CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 3
  4. 4. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Microsoft DirectX Video Acceleration  Аналоги для Linux  Аппаратная поддержка  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 4
  5. 5. Only for Maxus  Microsoft DirectX Video Acceleration 5 CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ http://vistastyles.org/
  6. 6. Only for Maxus  Microsoft DirectX Video Acceleration: MPC-HС CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 6
  7. 7. Only for Maxus  Microsoft DirectX Video Acceleration: MPC-HС CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 7
  8. 8. 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 года. CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 8
  9. 9. Only for Maxus  Microsoft DirectX Video Acceleration Для того чтобы DXVA заработал, необходимо:  Программный декодер с необходимыми DXVA вызовами  Системный DXVA-драйвер (входит в DirectX)  Видео драйвер, поддерживающий запрашиваемые вызовы  Видеокарту с аппаратной поддержкой требуемых функций CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 9
  10. 10. Only for Maxus  Поток данных DirectShow Фильтр Программный источника декодер потока Рендерер Видеодрайвер (VMREMR) Дополнительный источник DXVA работает тут CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 10
  11. 11. Only for Maxus  Decoder DDI Поддерживаемые стандарты: MPEG-1, MPEG-2, MPEG-4, H.263, H.264, VC-1 Будут ускорены аппаратно только те части декодирования, которые мы сконфигурируем CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 11
  12. 12. Only for Maxus  Deinterlace DDI Доступные алгоритмы деинтерлейсинга:  Bob (line doubling)  Simple Switching Adaptive  Motion Vector Steered  Advanced 3D Adaptive CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 12
  13. 13. Only for Maxus  Deinterlace DDI None Bob ATI Vector Adaptive CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 13
  14. 14. Only for Maxus  Deinterlace DDI Доступные алгоритмы преобразования частоты кадров:  Frame Repeat/Drop  Linear Temporal Interpolation  Motion Vector Steered CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 14
  15. 15. Only for Maxus  ProcAmp DDI  Предоставляет возможность улучшить визуальное качество  Предоставляет возможность автоматической регулировки параметров видеокартой CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 15
  16. 16. Only for Maxus  Использование Microsoft DXVA Работа с DXVA идет через фильтры DirectShow и состоит из следующих шагов:  Запрос возможностей устройства (от определенного типа видео)  Подготовка рендерера  Выделение буферов в видеопамяти  Выполнение CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 16
  17. 17. Only for Maxus  Microsoft DXVA 2.0  Доступен, начиная с DirectX 10 (2006 год)  Новый интерфейс – Capture DDI  Позволяет обходить ограничения на DirectShow pipeline  Использует Enhanced Video Renderer (EVR)  Дополнительный стандарт – DXVA-HD CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 17
  18. 18. Only for Maxus  Microsoft DXVA: резюме + Хорошо описанный интерфейс с множеством форматов + Активная поддержка со стороны производителей железа и ПО (Adobe Flash, CoreAVC, ffdshow, Media Player Classic, и т.д.) - Довольно сложное программирование - Привязан к Microsoft DirectX CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 18
  19. 19. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Microsoft DirectX Video Acceleration  Аналоги для Linux  Аппаратная поддержка  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 19
  20. 20. Only for Maxus  Иерархия расширений X Window System X-Video Motion X-Video extension Video Compensation Acceleration API (libVA) VDPAU (Video Decode and X-Video Bitstream Presentation API for Unix) Acceleration (XvBA) CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 20
  21. 21. Only for Maxus  X-Video extension Расширение отвечает за проигрывание и вывод видео в системе X Window (c 1991 года)  Поддержка framebuffer object  Возможность вывода на удаленный X Window сервер  Возможность аппаратного линейного скейлинга, конвертирования форматов CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 21
  22. 22. 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 сделали поддержку совсем недавно CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 22
  23. 23. Only for Maxus  X-Video Motion Compensation XvMCContext Video Pipeline StreamInput XvPort XvMCSurfaces Rendering XvMCSubpictures CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 23
  24. 24. 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-1 CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 24
  25. 25. Only for Maxus  Video Acceleration API Поддерживается обмен данными с X Window сервером через Direct Rendering Infrastructure Благодаря удобному интерфейсу и расширенным возможностям получил развитие от NVIDIA и ATI 25 http://www.freedesktop.org/wiki/Software/vaapi CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
  26. 26. Only for Maxus  Video Acceleration API: Compiz 26 CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ http://www.compiz.org/
  27. 27. Only for Maxus  Video Decode and Presentation API for Unix  Открытая библиотека (libvdpau) - back-end VAAPI от Nvidia (2007 год)  Распространяется и в виде библиотеки, отдельной от драйверов  Поддерживается некоторыми видеокартами S3  Три поколения с наращиваемым функционалом CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 27
  28. 28. 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 CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
  29. 29. Only for Maxus  X-Video Bitstream Acceleration  Back-end для VAAPI от ATI (2009 год)  Поддержка MPEG-2, H.264, VC-1  Поддержка для ограниченного набора GPU (начиная с 4xxx)  Поддержка базовых операций:  Motion compensation  iDCT  VLD CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 29
  30. 30. 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 basic – Bit stream decoding FRC – Frame Rate Conversion CE – Color Enhancement DI – deinterlacing IQ – inverted quantization CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 30
  31. 31. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Аппаратная поддержка  Nvidia PureVideo  ATI AVIVO & Unified Video Decoder  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 31
  32. 32. Only for Maxus  Nvidia PureVideo  Помогает в декодировании и пост-обработке видео  Доступна c GeForce 6xxx  Технология используется практически во всех программных DVD/HD-плеерах  Продается отдельный DirectShow декодер – Nvidia PureVideo Decoder CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 32
  33. 33. 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 CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 33
  34. 34. Only for Maxus  Nvidia PureVideo 2nd gen HD Начиная с видеокарт серии 8ххх (2007):  переделанный H.264 pipeline полностью на GPU  большая часть декодера VC-1 на GPU  технология позволяла среднему компьютеру проигрывать HD-DVD и Blu-ray фильмы без задержек CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 34
  35. 35. 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 CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 35
  36. 36. 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 С CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 36
  37. 37. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Аппаратная поддержка  Nvidia PureVideo  ATI AVIVO & Unified Video Decoder  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 37
  38. 38. Only for Maxus  ATI AVIVO Начиная с видеокарт X-серии (2005 год) поддерживаются:  автоматическое регулирование цветности, денойзинг, шарпен  частичное декодирование форматов H.264, VC-1, WMV9, MPEG-2 (кроме декодирования битового потока)  адаптивный деинтерлейсинг, скейлинг CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 38
  39. 39. 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 CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 39
  40. 40. Only for Maxus  ATI Unified Video Decoder 2.0 Во втором поколении, доступном с 4ххх серии (2008 год):  полная поддержка декодирования потоков VC-1, AVC/H.264, MPEG-2  декодирование двойного потока  Picture-in-picture  полностью BD-Live совместима CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 40
  41. 41. Only for Maxus  ATI UVD vs. NV PureVideo  Ситуация такова, что пользователь не проиграет  Современные графические процессоры управляются с потоком любой сложности  Загрузка CPU – минимальна  Качество картинки – на усмотрение пользователя CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 41
  42. 42. Only for Maxus  ATI UVD vs. NV PureVideo ATI AVIVO CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 42 http://www.hardwareheaven.com/reviews.php?reviewid=552
  43. 43. Only for Maxus  ATI UVD vs. NV PureVideo NVIDIA PureVideo CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 43 http://www.hardwareheaven.com/reviews.php?reviewid=552
  44. 44. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Аппаратная поддержка  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 44
  45. 45. Only for Maxus  Библиотека NVCUVID  Предоставляет возможность управлять процессором декодирования  Поддерживает MPEG-1, MPEG-2, H.264  Декодированный кадр сразу сохраняется в CUDA Device Memory  Позволяет отображать видео (D3D или OGL) или выгружать кадры из видеопамяти CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 45
  46. 46. Only for Maxus  Библиотека NVCUVID Последовательность действий:  Разобрать исходное видео (с помощью API)  Декодировать очередной кадр (с помощью API)  Произвести изменения кадра (пост-обработка)  Вывести кадр на экран (с помощью 3D API) CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 46
  47. 47. Only for Maxus  Создание декодера Пользователь заполняет структуру CUVIDDECODECREATEINFO для вызова cuvidCreateDecoder(), с информацией входного кадра:  тип кодека  размеры кадра  цветовой формат Также пользователь указывает параметры выходных данных:  размеры кадра  цветовой формат  количество кадров CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 47
  48. 48. 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_); CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 48
  49. 49. Only for Maxus  Декодирование кадра Для вызова функции декодирования cuvidDecodePicture() пользователь заполняет структуру CUVIDPICPARAMS, содержащую :  информацию об интерлейсинге кадра  указатели на данные кадра  размеры кадра Декодер записывает кадры в очередь, откуда их можно достать по номеру CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 49
  50. 50. 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); CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 50
  51. 51. Only for Maxus  Декодирование кадра Вызов декодера HandlePictureDecode(void * pUserData, CUVIDPICPARAMS * pPicParams) { cuvidDecodePicture(oDecoder, pPicParams); return true; } CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 51
  52. 52. Only for Maxus  Пост-обработка и отображение  Подготавливаем kernel  Отображение в память вызовом cuvidMapVideoFrame()  Вызов kernelа для обработки кадра вызовом сudaPostProcessFrame()  Отображение при помощи 3D API CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 52
  53. 53. 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(); } CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 53
  54. 54. 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); … CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 54
  55. 55. 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(); } CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 55
  56. 56. Only for Maxus  NVCUVID Резюме  Гибкая система пост-обработки  Все производится внутри видеопамяти  Кросс-платформенность CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 56
  57. 57. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Аппаратная поддержка  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 57
  58. 58. Only for Maxus  Выводы  Каковы бы ни были условия входящего видеопотока – производители GPU будут готовы  Готовые декодеры удовлетворяют большинству требований пользователя, для определенных нужд – можно запрограммировать свой CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 58
  59. 59. 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=14 UVD vs PureVideo CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 59
  60. 60. Only for Maxus  Лаборатория компьютерной графики и мультимедиа Видеогруппа это:  Выпускники в аспирантурах Англии, Франции, Швейцарии (в России в МГУ и ИПМ им. Келдыша)  Выпускниками защищено 5 диссертаций  Наиболее популярные в мире сравнения видеокодеков  Более 3 миллионов скачанных фильтров обработки видео CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 60

×