xbmc/xbmc — pull request #5575 by gominoa (2014-10-26 10:37:24+00:00)
Title: FFmpeg decoder GUI control

Here's a FFmpeg GUI control. It hangs off GUIImage so works exactly the same in a skin like so:

480
100
320
180
/some/video/file.mp4

Since it is GUIImage, you should be able to use any tag that works on "image" control (Not that I've tried it)

Here's a demo video (https://vid.me/Suu) showing the Confluence background replaced with 4 "ffmpeg" controls. The background/left/middle videos are .avi/.swf/.mp4. The right blue is a bad filename to show we get fallback= for free.

It adds ffmpeg support to GUITexture, whos job is to grab a texture from somewhere (currently g_TextureManager or g_largeTextureManager) and put it on screen. Give it one more place to grab from (FFmpegVideoDecoder) and a new flag (useFFmpeg) in CTextureInfo same as useLarge and g_largeTextureManager. Add "ffmpeg" to GUIControlFactory aliased to GUICONTROL_IMAGE same as "largeimage" is aliased. Video is opened in CGUITextureBase::AllocResources() and closed in CGUITextureBase::FreeResources(). GUITexture already handles animated GIFs with UpdateAnimFrame() so add UpdateFFmpeg() to handle decoding.

You get everything "image" can do, with a video instead of a picture.
(fine print: software decode)