SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
Декодирование видео на
             современных видеокартах


                       Арсаев Марат
                        Video Group
                 CS MSU Graphics & Media Lab




19.05.2010
Only for
 Maxus 

               Содержание

           Введение
           Интерфейсы обработки видео
           Аппаратная поддержка
           Декодирование на CUDA
           Выводы




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

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




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

                Содержание

           Введение
           Интерфейсы обработки видео
               Microsoft DirectX Video Acceleration
               Аналоги для Linux
           Аппаратная поддержка
           Декодирование на CUDA
           Выводы


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




                                                                                                5
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/   http://vistastyles.org/
Only for
 Maxus 
               Microsoft DirectX Video
               Acceleration: MPC-HС




CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      6
Only for
 Maxus 
               Microsoft DirectX Video
               Acceleration: MPC-HС




CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      7
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
Only for
 Maxus        Microsoft DirectX Video
               Acceleration

      Для того чтобы DXVA заработал, необходимо:
       Программный декодер с необходимыми

        DXVA вызовами
       Системный DXVA-драйвер (входит в DirectX)

       Видео драйвер, поддерживающий

        запрашиваемые вызовы
       Видеокарту с аппаратной поддержкой

        требуемых функций

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

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


       Фильтр
                             Программный
      источника
                               декодер
       потока

                                                            Рендерер
                                                                       Видеодрайвер
                                                           (VMREMR)

            Дополнительный
               источник




                                                   DXVA работает тут
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                                      10
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
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
Only for
 Maxus 

               Deinterlace DDI




                     None                                             Bob




                                       ATI Vector Adaptive


CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                            13
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
Only for
 Maxus 

               ProcAmp DDI

           Предоставляет возможность улучшить
            визуальное качество
           Предоставляет возможность автоматической
            регулировки параметров видеокартой




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

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

      Работа с DXVA идет через фильтры DirectShow
      и состоит из следующих шагов:
       Запрос возможностей устройства
        (от определенного типа видео)
       Подготовка рендерера

       Выделение буферов в видеопамяти

       Выполнение




CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      16
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
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
Only for
 Maxus 

                Содержание

           Введение
           Интерфейсы обработки видео
               Microsoft DirectX Video Acceleration
               Аналоги для Linux
           Аппаратная поддержка
           Декодирование на CUDA
           Выводы


CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      19
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
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
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
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
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
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/
Only for
 Maxus        Video Acceleration API:
               Compiz




                                                                                               26
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/   http://www.compiz.org/
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
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/
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
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
Only for
 Maxus 

                Содержание

           Введение
           Интерфейсы обработки видео
           Аппаратная поддержка
               Nvidia PureVideo
               ATI AVIVO & Unified Video Decoder
           Декодирование на CUDA
           Выводы


CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      31
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
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
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
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
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
Only for
 Maxus 

                Содержание

           Введение
           Интерфейсы обработки видео
           Аппаратная поддержка
               Nvidia PureVideo
               ATI AVIVO & Unified Video Decoder
           Декодирование на CUDA
           Выводы


CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      37
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
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
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
Only for
 Maxus 

               ATI UVD vs. NV PureVideo

           Ситуация такова, что пользователь не
            проиграет
           Современные графические процессоры
            управляются с потоком любой сложности
           Загрузка CPU – минимальна
           Качество картинки – на усмотрение
            пользователя



CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      41
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
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
Only for
 Maxus 

               Содержание

           Введение
           Интерфейсы обработки видео
           Аппаратная поддержка
           Декодирование на CUDA
           Выводы




CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      44
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
Only for
 Maxus 

               Библиотека NVCUVID

      Последовательность действий:
       Разобрать исходное видео (с помощью API)

       Декодировать очередной кадр (с помощью API)

       Произвести изменения кадра (пост-обработка)

       Вывести кадр на экран (с помощью 3D API)




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

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

      Пользователь заполняет структуру
      CUVIDDECODECREATEINFO для вызова
      cuvidCreateDecoder(), с информацией входного кадра:
         тип кодека
         размеры кадра
         цветовой формат
      Также пользователь указывает параметры выходных
      данных:
         размеры кадра
         цветовой формат
         количество кадров

CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      47
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
Only for
 Maxus 

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

      Для вызова функции декодирования
      cuvidDecodePicture() пользователь заполняет структуру
      CUVIDPICPARAMS, содержащую :
       информацию об интерлейсинге кадра

       указатели на данные кадра

       размеры кадра



      Декодер записывает кадры в очередь, откуда их можно
      достать по номеру


CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      49
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
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
Only for
 Maxus        Пост-обработка и
               отображение

       Подготавливаем kernel
       Отображение в память вызовом cuvidMapVideoFrame()

       Вызов kernelа для обработки кадра вызовом

      сudaPostProcessFrame()
       Отображение при помощи 3D API




CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      52
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
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
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
Only for
 Maxus        NVCUVID
               Резюме


           Гибкая система пост-обработки
           Все производится внутри видеопамяти
           Кросс-платформенность




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

               Содержание

           Введение
           Интерфейсы обработки видео
           Аппаратная поддержка
           Декодирование на CUDA
           Выводы




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

               Выводы
           Каковы бы ни были условия входящего
            видеопотока – производители GPU будут
            готовы
           Готовые декодеры удовлетворяют
            большинству требований пользователя, для
            определенных нужд – можно
            запрограммировать свой




CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      58
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
Only for
 Maxus      Лаборатория компьютерной
             графики и мультимедиа

      Видеогруппа это:
       Выпускники в аспирантурах Англии,

        Франции, Швейцарии (в России в МГУ и
        ИПМ им. Келдыша)
       Выпускниками защищено 5 диссертаций

       Наиболее популярные в мире сравнения
        видеокодеков
       Более 3 миллионов скачанных фильтров
        обработки видео
CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/
                                                                      60

Weitere ähnliche Inhalte

Was ist angesagt?

57
5757
57JIuc
 
Фундамент для облака. Что нового в vSphere 5. (Часть 1)
Фундамент для облака. Что нового в vSphere 5. (Часть 1)Фундамент для облака. Что нового в vSphere 5. (Часть 1)
Фундамент для облака. Что нового в vSphere 5. (Часть 1)areconster
 
Особенности лицензирования облачных решений vCloud, vFabric, vShield
Особенности лицензирования облачных решений vCloud, vFabric, vShieldОсобенности лицензирования облачных решений vCloud, vFabric, vShield
Особенности лицензирования облачных решений vCloud, vFabric, vShieldareconster
 
Фундамент для облака. Что нового в vSphere 5. Часть 2
Фундамент для облака. Что нового в vSphere 5. Часть 2Фундамент для облака. Что нового в vSphere 5. Часть 2
Фундамент для облака. Что нового в vSphere 5. Часть 2areconster
 
Безопасное облако на основе vCloud 1.5 и vShield 5
Безопасное облако на основе vCloud 1.5 и vShield 5Безопасное облако на основе vCloud 1.5 и vShield 5
Безопасное облако на основе vCloud 1.5 и vShield 5areconster
 
Метрики оценки качества конвертированного стерео
Метрики оценки качества конвертированного стереоМетрики оценки качества конвертированного стерео
Метрики оценки качества конвертированного стереоMSU GML VideoGroup
 
Новые возможности VMware vCenter Site Recovery Manager v5.0
Новые возможности VMware vCenter Site Recovery Manager v5.0Новые возможности VMware vCenter Site Recovery Manager v5.0
Новые возможности VMware vCenter Site Recovery Manager v5.0areconster
 
VMware vCloud Director Overview in Russian
VMware vCloud Director Overview in RussianVMware vCloud Director Overview in Russian
VMware vCloud Director Overview in Russianareconster
 
Алгоритмы для задачи матирования
Алгоритмы для задачи матированияАлгоритмы для задачи матирования
Алгоритмы для задачи матированияMSU GML VideoGroup
 
Облачные вычисления на основе VMware
Облачные вычисления на основе VMwareОблачные вычисления на основе VMware
Облачные вычисления на основе VMwareSkillFactory
 
Symantec, Швыдченко Иван
Symantec, Швыдченко ИванSymantec, Швыдченко Иван
Symantec, Швыдченко ИванDiana Mokhina
 
Research & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибкиResearch & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибкиMSU GML VideoGroup
 
Ps nvo-section-kulikov-ru
Ps nvo-section-kulikov-ruPs nvo-section-kulikov-ru
Ps nvo-section-kulikov-ruMarina_creautor
 

Was ist angesagt? (14)

57
5757
57
 
Фундамент для облака. Что нового в vSphere 5. (Часть 1)
Фундамент для облака. Что нового в vSphere 5. (Часть 1)Фундамент для облака. Что нового в vSphere 5. (Часть 1)
Фундамент для облака. Что нового в vSphere 5. (Часть 1)
 
Особенности лицензирования облачных решений vCloud, vFabric, vShield
Особенности лицензирования облачных решений vCloud, vFabric, vShieldОсобенности лицензирования облачных решений vCloud, vFabric, vShield
Особенности лицензирования облачных решений vCloud, vFabric, vShield
 
Фундамент для облака. Что нового в vSphere 5. Часть 2
Фундамент для облака. Что нового в vSphere 5. Часть 2Фундамент для облака. Что нового в vSphere 5. Часть 2
Фундамент для облака. Что нового в vSphere 5. Часть 2
 
Безопасное облако на основе vCloud 1.5 и vShield 5
Безопасное облако на основе vCloud 1.5 и vShield 5Безопасное облако на основе vCloud 1.5 и vShield 5
Безопасное облако на основе vCloud 1.5 и vShield 5
 
Метрики оценки качества конвертированного стерео
Метрики оценки качества конвертированного стереоМетрики оценки качества конвертированного стерео
Метрики оценки качества конвертированного стерео
 
Новые возможности VMware vCenter Site Recovery Manager v5.0
Новые возможности VMware vCenter Site Recovery Manager v5.0Новые возможности VMware vCenter Site Recovery Manager v5.0
Новые возможности VMware vCenter Site Recovery Manager v5.0
 
VMware vCloud Director Overview in Russian
VMware vCloud Director Overview in RussianVMware vCloud Director Overview in Russian
VMware vCloud Director Overview in Russian
 
Алгоритмы для задачи матирования
Алгоритмы для задачи матированияАлгоритмы для задачи матирования
Алгоритмы для задачи матирования
 
Облачные вычисления на основе VMware
Облачные вычисления на основе VMwareОблачные вычисления на основе VMware
Облачные вычисления на основе VMware
 
Symantec, Швыдченко Иван
Symantec, Швыдченко ИванSymantec, Швыдченко Иван
Symantec, Швыдченко Иван
 
Research & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибкиResearch & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибки
 
Ps nvo-section-kulikov-ru
Ps nvo-section-kulikov-ruPs nvo-section-kulikov-ru
Ps nvo-section-kulikov-ru
 
VMware 2012
VMware 2012VMware 2012
VMware 2012
 

Ähnlich wie Декодирование видео на GPU

Применение современных графических процессоров в области компьютерного зрения
Применение современных графических процессоров в области компьютерного зренияПрименение современных графических процессоров в области компьютерного зрения
Применение современных графических процессоров в области компьютерного зренияMSU GML VideoGroup
 
Обзор открытых библиотек в области обработки изображений и компьютерного зрения
Обзор открытых библиотек в области обработки изображений и компьютерного зренияОбзор открытых библиотек в области обработки изображений и компьютерного зрения
Обзор открытых библиотек в области обработки изображений и компьютерного зренияMSU GML VideoGroup
 
Обзор процессоров Phillips Nexperia
Обзор процессоров Phillips NexperiaОбзор процессоров Phillips Nexperia
Обзор процессоров Phillips NexperiaMSU GML VideoGroup
 
Применение современных графических процессоров для обработки видео
Применение современных графических процессоров для обработки видеоПрименение современных графических процессоров для обработки видео
Применение современных графических процессоров для обработки видеоMSU GML VideoGroup
 
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...MSU GML VideoGroup
 
Некоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаНекоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаMSU GML VideoGroup
 
Обзор подходов к измерению качества 3D видео
Обзор подходов к измерению качества 3D видеоОбзор подходов к измерению качества 3D видео
Обзор подходов к измерению качества 3D видеоMSU GML VideoGroup
 
Обзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVCОбзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVCMSU GML VideoGroup
 
Управление разработкой программного обеспечения
Управление разработкой программного обеспеченияУправление разработкой программного обеспечения
Управление разработкой программного обеспеченияMSU GML VideoGroup
 
Генерация текстур
Генерация текстурГенерация текстур
Генерация текстурMSU GML VideoGroup
 
Cравнение средств разработки RIA приложений используя Flash платформу
Cравнение средств разработки RIA приложений используя Flash платформуCравнение средств разработки RIA приложений используя Flash платформу
Cравнение средств разработки RIA приложений используя Flash платформуilja.panin
 
Архитектура и программирование на fpga
Архитектура и программирование на fpgaАрхитектура и программирование на fpga
Архитектура и программирование на fpgaMSU GML VideoGroup
 
Новые методы деинтерлейсинга
Новые методы деинтерлейсингаНовые методы деинтерлейсинга
Новые методы деинтерлейсингаMSU GML VideoGroup
 
Обзор методов сегментации видео
Обзор методов сегментации видеоОбзор методов сегментации видео
Обзор методов сегментации видеоMSU GML VideoGroup
 
Soft layer IBM Cloud platform and GPU
Soft layer IBM Cloud platform and GPUSoft layer IBM Cloud platform and GPU
Soft layer IBM Cloud platform and GPUEkaterina Shelest
 
Технологии Amd
Технологии AmdТехнологии Amd
Технологии AmdLysenko Andrey
 
Современные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализациейСовременные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализациейMSU GML VideoGroup
 

Ähnlich wie Декодирование видео на GPU (20)

Применение современных графических процессоров в области компьютерного зрения
Применение современных графических процессоров в области компьютерного зренияПрименение современных графических процессоров в области компьютерного зрения
Применение современных графических процессоров в области компьютерного зрения
 
Обзор открытых библиотек в области обработки изображений и компьютерного зрения
Обзор открытых библиотек в области обработки изображений и компьютерного зренияОбзор открытых библиотек в области обработки изображений и компьютерного зрения
Обзор открытых библиотек в области обработки изображений и компьютерного зрения
 
Обзор процессоров Phillips Nexperia
Обзор процессоров Phillips NexperiaОбзор процессоров Phillips Nexperia
Обзор процессоров Phillips Nexperia
 
Применение современных графических процессоров для обработки видео
Применение современных графических процессоров для обработки видеоПрименение современных графических процессоров для обработки видео
Применение современных графических процессоров для обработки видео
 
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...
Новые тенденции в области автостереоскопических дисплеев, съемки и отображени...
 
Некоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаНекоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кода
 
Обзор подходов к измерению качества 3D видео
Обзор подходов к измерению качества 3D видеоОбзор подходов к измерению качества 3D видео
Обзор подходов к измерению качества 3D видео
 
Обзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVCОбзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVC
 
Управление разработкой программного обеспечения
Управление разработкой программного обеспеченияУправление разработкой программного обеспечения
Управление разработкой программного обеспечения
 
Обзор OpenCL
Обзор OpenCLОбзор OpenCL
Обзор OpenCL
 
Генерация текстур
Генерация текстурГенерация текстур
Генерация текстур
 
Cравнение средств разработки RIA приложений используя Flash платформу
Cравнение средств разработки RIA приложений используя Flash платформуCравнение средств разработки RIA приложений используя Flash платформу
Cравнение средств разработки RIA приложений используя Flash платформу
 
10183
1018310183
10183
 
Архитектура и программирование на fpga
Архитектура и программирование на fpgaАрхитектура и программирование на fpga
Архитектура и программирование на fpga
 
Новые методы деинтерлейсинга
Новые методы деинтерлейсингаНовые методы деинтерлейсинга
Новые методы деинтерлейсинга
 
Обзор методов сегментации видео
Обзор методов сегментации видеоОбзор методов сегментации видео
Обзор методов сегментации видео
 
Soft layer IBM Cloud platform and GPU
Soft layer IBM Cloud platform and GPUSoft layer IBM Cloud platform and GPU
Soft layer IBM Cloud platform and GPU
 
Технологии Amd
Технологии AmdТехнологии Amd
Технологии Amd
 
12.pptx
12.pptx12.pptx
12.pptx
 
Современные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализациейСовременные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализацией
 

Mehr von MSU GML VideoGroup

Обзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видеоОбзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видеоMSU GML VideoGroup
 
Некоторые методы сегментации видео
Некоторые методы сегментации видеоНекоторые методы сегментации видео
Некоторые методы сегментации видеоMSU GML VideoGroup
 
Обзор методов сравнения фильмов
Обзор методов сравнения фильмовОбзор методов сравнения фильмов
Обзор методов сравнения фильмовMSU GML VideoGroup
 
Обзор методов оценки True-motion
Обзор методов оценки True-motionОбзор методов оценки True-motion
Обзор методов оценки True-motionMSU GML VideoGroup
 
Методы цветокоррекции стереовидео
Методы цветокоррекции стереовидеоМетоды цветокоррекции стереовидео
Методы цветокоррекции стереовидеоMSU GML VideoGroup
 
Некоторые алгоритмы многомерной обработки изображений
Некоторые алгоритмы многомерной обработки изображенийНекоторые алгоритмы многомерной обработки изображений
Некоторые алгоритмы многомерной обработки изображенийMSU GML VideoGroup
 
Некоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видеоНекоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видеоMSU GML VideoGroup
 
Способы построения и оценки карт салиентности
Способы построения и оценки карт салиентностиСпособы построения и оценки карт салиентности
Способы построения и оценки карт салиентностиMSU GML VideoGroup
 
Обзор методов сопоставления шаблона и изображения
Обзор методов сопоставления шаблона и изображенияОбзор методов сопоставления шаблона и изображения
Обзор методов сопоставления шаблона и изображенияMSU GML VideoGroup
 
Способы построения saliency map
Способы построения saliency mapСпособы построения saliency map
Способы построения saliency mapMSU GML VideoGroup
 
Обзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектовОбзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектовMSU GML VideoGroup
 
Некоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубиныНекоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубиныMSU GML VideoGroup
 
Использование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видеоИспользование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видеоMSU GML VideoGroup
 
Обзор докладов конференции IC3D 2012
Обзор докладов конференции IC3D 2012Обзор докладов конференции IC3D 2012
Обзор докладов конференции IC3D 2012MSU GML VideoGroup
 
Исправление различий резкости в 3D видео
Исправление различий резкости в 3D видеоИсправление различий резкости в 3D видео
Исправление различий резкости в 3D видеоMSU GML VideoGroup
 
Методы повышения визуального качества восстановленного фона (часть 2)
Методы повышения визуального качества восстановленного фона (часть 2)Методы повышения визуального качества восстановленного фона (часть 2)
Методы повышения визуального качества восстановленного фона (часть 2)MSU GML VideoGroup
 
Некоторые методы сопоставления и трекинга границ во времени
Некоторые методы сопоставления и трекинга границ во времениНекоторые методы сопоставления и трекинга границ во времени
Некоторые методы сопоставления и трекинга границ во времениMSU GML VideoGroup
 
Цветонезависимое сопоставление стерео
Цветонезависимое сопоставление стереоЦветонезависимое сопоставление стерео
Цветонезависимое сопоставление стереоMSU GML VideoGroup
 
Некоторые методы восстановления фона
Некоторые методы восстановления фонаНекоторые методы восстановления фона
Некоторые методы восстановления фонаMSU GML VideoGroup
 
Методы повышения визуального качества восстановленного фона
Методы повышения визуального качества восстановленного фонаМетоды повышения визуального качества восстановленного фона
Методы повышения визуального качества восстановленного фонаMSU GML VideoGroup
 

Mehr von MSU GML VideoGroup (20)

Обзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видеоОбзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видео
 
Некоторые методы сегментации видео
Некоторые методы сегментации видеоНекоторые методы сегментации видео
Некоторые методы сегментации видео
 
Обзор методов сравнения фильмов
Обзор методов сравнения фильмовОбзор методов сравнения фильмов
Обзор методов сравнения фильмов
 
Обзор методов оценки True-motion
Обзор методов оценки True-motionОбзор методов оценки True-motion
Обзор методов оценки True-motion
 
Методы цветокоррекции стереовидео
Методы цветокоррекции стереовидеоМетоды цветокоррекции стереовидео
Методы цветокоррекции стереовидео
 
Некоторые алгоритмы многомерной обработки изображений
Некоторые алгоритмы многомерной обработки изображенийНекоторые алгоритмы многомерной обработки изображений
Некоторые алгоритмы многомерной обработки изображений
 
Некоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видеоНекоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видео
 
Способы построения и оценки карт салиентности
Способы построения и оценки карт салиентностиСпособы построения и оценки карт салиентности
Способы построения и оценки карт салиентности
 
Обзор методов сопоставления шаблона и изображения
Обзор методов сопоставления шаблона и изображенияОбзор методов сопоставления шаблона и изображения
Обзор методов сопоставления шаблона и изображения
 
Способы построения saliency map
Способы построения saliency mapСпособы построения saliency map
Способы построения saliency map
 
Обзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектовОбзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектов
 
Некоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубиныНекоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубины
 
Использование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видеоИспользование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видео
 
Обзор докладов конференции IC3D 2012
Обзор докладов конференции IC3D 2012Обзор докладов конференции IC3D 2012
Обзор докладов конференции IC3D 2012
 
Исправление различий резкости в 3D видео
Исправление различий резкости в 3D видеоИсправление различий резкости в 3D видео
Исправление различий резкости в 3D видео
 
Методы повышения визуального качества восстановленного фона (часть 2)
Методы повышения визуального качества восстановленного фона (часть 2)Методы повышения визуального качества восстановленного фона (часть 2)
Методы повышения визуального качества восстановленного фона (часть 2)
 
Некоторые методы сопоставления и трекинга границ во времени
Некоторые методы сопоставления и трекинга границ во времениНекоторые методы сопоставления и трекинга границ во времени
Некоторые методы сопоставления и трекинга границ во времени
 
Цветонезависимое сопоставление стерео
Цветонезависимое сопоставление стереоЦветонезависимое сопоставление стерео
Цветонезависимое сопоставление стерео
 
Некоторые методы восстановления фона
Некоторые методы восстановления фонаНекоторые методы восстановления фона
Некоторые методы восстановления фона
 
Методы повышения визуального качества восстановленного фона
Методы повышения визуального качества восстановленного фонаМетоды повышения визуального качества восстановленного фона
Методы повышения визуального качества восстановленного фона
 

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

  • 1. Декодирование видео на современных видеокартах Арсаев Марат Video Group CS MSU Graphics & Media Lab 19.05.2010
  • 2. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Аппаратная поддержка  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 2
  • 3. Only for Maxus  Кодирование видео CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 3
  • 4. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Microsoft DirectX Video Acceleration  Аналоги для Linux  Аппаратная поддержка  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 4
  • 5. Only for Maxus  Microsoft DirectX Video Acceleration 5 CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ http://vistastyles.org/
  • 6. Only for Maxus  Microsoft DirectX Video Acceleration: MPC-HС CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 6
  • 7. Only for Maxus  Microsoft DirectX Video Acceleration: MPC-HС CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 7
  • 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. Only for Maxus  Microsoft DirectX Video Acceleration Для того чтобы DXVA заработал, необходимо:  Программный декодер с необходимыми DXVA вызовами  Системный DXVA-драйвер (входит в DirectX)  Видео драйвер, поддерживающий запрашиваемые вызовы  Видеокарту с аппаратной поддержкой требуемых функций CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 9
  • 10. Only for Maxus  Поток данных DirectShow Фильтр Программный источника декодер потока Рендерер Видеодрайвер (VMREMR) Дополнительный источник DXVA работает тут CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 10
  • 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. 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. Only for Maxus  Deinterlace DDI None Bob ATI Vector Adaptive CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 13
  • 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. Only for Maxus  ProcAmp DDI  Предоставляет возможность улучшить визуальное качество  Предоставляет возможность автоматической регулировки параметров видеокартой CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 15
  • 16. Only for Maxus  Использование Microsoft DXVA Работа с DXVA идет через фильтры DirectShow и состоит из следующих шагов:  Запрос возможностей устройства (от определенного типа видео)  Подготовка рендерера  Выделение буферов в видеопамяти  Выполнение CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 16
  • 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. 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. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Microsoft DirectX Video Acceleration  Аналоги для Linux  Аппаратная поддержка  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 19
  • 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. 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. 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. 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. 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. 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. Only for Maxus  Video Acceleration API: Compiz 26 CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ http://www.compiz.org/
  • 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. 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. 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. 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. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Аппаратная поддержка  Nvidia PureVideo  ATI AVIVO & Unified Video Decoder  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 31
  • 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. 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. 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. 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. 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. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Аппаратная поддержка  Nvidia PureVideo  ATI AVIVO & Unified Video Decoder  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 37
  • 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. 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. 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. Only for Maxus  ATI UVD vs. NV PureVideo  Ситуация такова, что пользователь не проиграет  Современные графические процессоры управляются с потоком любой сложности  Загрузка CPU – минимальна  Качество картинки – на усмотрение пользователя CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 41
  • 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. 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. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Аппаратная поддержка  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 44
  • 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. Only for Maxus  Библиотека NVCUVID Последовательность действий:  Разобрать исходное видео (с помощью API)  Декодировать очередной кадр (с помощью API)  Произвести изменения кадра (пост-обработка)  Вывести кадр на экран (с помощью 3D API) CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 46
  • 47. Only for Maxus  Создание декодера Пользователь заполняет структуру CUVIDDECODECREATEINFO для вызова cuvidCreateDecoder(), с информацией входного кадра:  тип кодека  размеры кадра  цветовой формат Также пользователь указывает параметры выходных данных:  размеры кадра  цветовой формат  количество кадров CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 47
  • 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. Only for Maxus  Декодирование кадра Для вызова функции декодирования cuvidDecodePicture() пользователь заполняет структуру CUVIDPICPARAMS, содержащую :  информацию об интерлейсинге кадра  указатели на данные кадра  размеры кадра Декодер записывает кадры в очередь, откуда их можно достать по номеру CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 49
  • 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. 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. Only for Maxus  Пост-обработка и отображение  Подготавливаем kernel  Отображение в память вызовом cuvidMapVideoFrame()  Вызов kernelа для обработки кадра вызовом сudaPostProcessFrame()  Отображение при помощи 3D API CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 52
  • 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. 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. 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. Only for Maxus  NVCUVID Резюме  Гибкая система пост-обработки  Все производится внутри видеопамяти  Кросс-платформенность CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 56
  • 57. Only for Maxus  Содержание  Введение  Интерфейсы обработки видео  Аппаратная поддержка  Декодирование на CUDA  Выводы CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 57
  • 58. Only for Maxus  Выводы  Каковы бы ни были условия входящего видеопотока – производители GPU будут готовы  Готовые декодеры удовлетворяют большинству требований пользователя, для определенных нужд – можно запрограммировать свой CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 58
  • 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. Only for Maxus  Лаборатория компьютерной графики и мультимедиа Видеогруппа это:  Выпускники в аспирантурах Англии, Франции, Швейцарии (в России в МГУ и ИПМ им. Келдыша)  Выпускниками защищено 5 диссертаций  Наиболее популярные в мире сравнения видеокодеков  Более 3 миллионов скачанных фильтров обработки видео CS MSU Graphics & Media Lab (Video Group) www.compression.ru/video/ 60