Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Декодирование видео на
             современных видеокартах


                       Арсаев Марат
                        ...
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

2,080 views

Published on

Published in: Technology
  • Be the first to comment

Декодирование видео на 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

×