[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