Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
VAAPI: Extend and refactor VAAPI/OpenGL interop
- there are now 3 different methods for displaying VAAPI frames -- the old but improved GLX copy which works with GLX but not with OpenGLES -- the new GLX Pixmap support which works with GLX and OpenGLES -- the new and performant DRM/DMA interop - which maps VAAPI surfaces directly to textures and hence is zero copy but is only available when using EGL. - both GLX routes use VAAPI internals for colourspace conversion and deinterlacing (still only basic at the moment) - EGL/DRM returns raw I420 or NV12 frames that can be passed into the OpenGL shaders - or when implemented, through the VAAPI post processing functionality first. - MythOpenGLInterop and its new VAAPI subclasses have finally found their home embedded in the FFmpeg hardware frames context - the OpenGL video output classes are now entirely codec agnostic and we avoid any references to the hardware context by having GLX interops use QObject signalling to pick up picture attribute changes. - workaround MPEG2 seek errors by increasing the packet error count in AvFormatDecoder - that code probably needs to go. Issues: - pause frame for interop is broken - we retain no reference to old frames and the frames are cleared (for reference counting purposes) when we have finished displaying them. Just need to retain old frames in the same way that VDPAU does. - full deinterlacing support for EGL/DRM needs more work, as does the OpenGLVideo integration generally. - there are new driver/hardware specific workarounds in VAAPIContext. - they will probably need extending for other intel chipsets - there is an intermittent error with certain H.264 EGL/DRM streams. Something in OpenGLVideo state management I think. - the buildbots will probably fall over in 5 minutes...
- Loading branch information