[vlc-devel] [PATCH 00/48] VDPAU pass-through (version 2)

Rémi Denis-Courmont remi at remlab.net
Tue Jul 2 19:48:28 CEST 2013


	Hello,

This is the functionally complete patch series to support hardware
acceleration through VDPAU. There are still some corners of libvdpau left
untouched:
- due to missing VLC core support: rotation
- useless within VLC: SMPTE 240M, multiple layers, luma keying...

I might or might not add support for RGB texture import/export later, and if I
find a usable sample file, YUV 4:2:2 decoding. I leave interoperation with
OpenGL or CUDA for further study or other volunteers.

Changes since version 1:
- added adjust video filter,
- switched to BT 709 colour space for HD,
- added high-quality scaling,
- enabled advanced deinterlacing (with optional chroma skip),
- added optional inverse telecine,
- added optional noise reduction,
- added display preemption detection,
- fixed deinterlacer output frame rate (pointed out by Ilkka),
- constified vdp_generate_csc_matrix(),
- cleaned up the sharpen filter,
- fixed picture_Reset() / worked around hypothetical buggy decoders.

The following changes since commit df0965badb3a3e28c0b9f4f0813cc7d1720b4123:

  modules: MODULE_NAME is only used for static modules (2013-07-02 20:12:01 +0300)

are available in the git repository at:

  http://git.remlab.net/git/vlc-courmisch.git vdpau

for you to fetch changes up to 9dba362e6bbff56d80c17e925e9d15dc0a12dd47:

  vdpau: catch display preemption error (2013-07-02 20:12:07 +0300)

----------------------------------------------------------------
Rémi Denis-Courmont (48):
      modules: move Modules.am stuff to genmf
      configure: look for libvdpau regardless of libavcodec
      vdpau: helper library for VDPAU and VDPAU-X11 function calls
      vdpau: library mechanism to share VDPAU instance
      vdpau: libavcodec hardware decoder using new helper library
      avcodec: remove old VDPAU hardware decoder
      vdpau: dynamic allocation for (hardware decoding) video surfaces
      fourcc: VDPAU surface types
      vdpau: add function to convert VLC format to VDPAU type/format pair
      vdpau: picture_sys_t definition for output surfaces
      vdpau: video conversion filter to VDPAU output surface format
      vdpau: presentation queue video output display plugin
      vdpau: RGBA subpicture blending for video output display
      picture: handle allocation of pictures with 0 bytes-per-pixel
      picture: pointer for decoder-specified hardware context
      libvlccore: bump plugin interface version
      vdpau: context structure for video surfaces
      vdpau: chroma conversion from video surface to regular YUV
      vdpau: video surface to output surface "chroma" conversion
      vout: remove tautology
      vout: avoid picture copy when decoder and output format do not match
      vout: remove the dummy display pool
      vout: robustify "early" SPU blending
      picture_BlendSubpicture: return the number of blent regions
      vout: keep the original picture if "early" SPU blending fails
      vdpau: output video surfaces from decoder (pass-through)
      vdpau: chroma filter cleanup
      vdpau: deal with separate VDPAU instances for decoding and rendering
      cropadd: reject 0 bpp formats
      invert: reject 0 bpp formats
      motionblur: reject 0 bpp formats
      puzzle: reject 0 bpp formats
      ripple: reject 0 bpp formats
      scene: reject 0 bpp formats
      wave: reject 0 bpp formats
      wall: reject 0 bpp formats
      vdpau: provide field history to the video mixer
      vdpau: video surface picture copy
      vdpau: basic deinterlacing filter
      vdpau: sharpen/blur filter
      vdpau: configurable noise reduction
      vdpau: optional high quality scaling
      vdpau: automatic ITU-R colour space matrix selection
      vdpau: adjust video filter
      vdpau: configurable advanced deinterlacing algorithms
      vdpau: option for inverse telecine
      vdpau: option for deinterlace chroma skip
      vdpau: catch display preemption error

 configure.ac                      |  14 +-
 include/vlc_fourcc.h              |   7 +
 include/vlc_picture.h             |   4 +-
 include/vlc_plugin.h              |   4 +-
 modules/Makefile.am               |   4 +
 modules/codec/Modules.am          |  10 -
 modules/codec/avcodec/vdpau.c     | 492 -------------------------
 modules/common.am                 |   7 -
 modules/genmf                     |   6 +
 modules/hw/.gitignore             |   1 +
 modules/hw/vdpau/Makefile.am      |  58 +++
 modules/hw/vdpau/adjust.c         | 212 +++++++++++
 modules/hw/vdpau/avcodec.c        | 349 ++++++++++++++++++
 modules/hw/vdpau/chroma.c         | 736 ++++++++++++++++++++++++++++++++++++++
 modules/hw/vdpau/deinterlace.c    | 122 +++++++
 modules/hw/vdpau/display.c        | 647 +++++++++++++++++++++++++++++++++
 modules/hw/vdpau/instance.c       | 235 ++++++++++++
 modules/hw/vdpau/picture.c        | 121 +++++++
 modules/hw/vdpau/sharpen.c        | 147 ++++++++
 modules/hw/vdpau/vlc_vdpau.c      | 611 +++++++++++++++++++++++++++++++
 modules/hw/vdpau/vlc_vdpau.h      | 277 ++++++++++++++
 modules/video_filter/croppadd.c   |   5 +
 modules/video_filter/invert.c     |   2 +-
 modules/video_filter/motionblur.c |   5 +
 modules/video_filter/puzzle.c     |   5 +
 modules/video_filter/ripple.c     |   5 +
 modules/video_filter/scene.c      |   5 +
 modules/video_filter/wall.c       |   5 +
 modules/video_filter/wave.c       |   5 +
 src/misc/fourcc.c                 |  11 +
 src/misc/picture.c                |  43 ++-
 src/video_output/video_output.c   |  63 ++--
 src/video_output/vout_wrapper.c   |  15 +-
 33 files changed, 3657 insertions(+), 576 deletions(-)
 delete mode 100644 modules/codec/avcodec/vdpau.c
 create mode 100644 modules/hw/.gitignore
 create mode 100644 modules/hw/vdpau/Makefile.am
 create mode 100644 modules/hw/vdpau/adjust.c
 create mode 100644 modules/hw/vdpau/avcodec.c
 create mode 100644 modules/hw/vdpau/chroma.c
 create mode 100644 modules/hw/vdpau/deinterlace.c
 create mode 100644 modules/hw/vdpau/display.c
 create mode 100644 modules/hw/vdpau/instance.c
 create mode 100644 modules/hw/vdpau/picture.c
 create mode 100644 modules/hw/vdpau/sharpen.c
 create mode 100644 modules/hw/vdpau/vlc_vdpau.c
 create mode 100644 modules/hw/vdpau/vlc_vdpau.h
20:47 remi at leon ~/videolan/vlc% 

-- 
Rémi Denis-Courmont
http://www.remlab.net/



More information about the vlc-devel mailing list