[vlc-devel] VAAPI playback on PCI video card

Grigori Goronzy greg at chown.ath.cx
Mon Aug 9 18:32:51 CEST 2010

On 08/05/2010 07:46 PM, Yuval Levy wrote:
> Am I demanding too much of my low power hardware, or is this something that 
> can be fixed?  I understand PCI does not have as much bandwidth as PCIe, but it 
> is only the compressed video stream that has to go through the PCI bottleneck 
> and once decoded the GPU can output directly to the display, or am I missing 
> something?

Yes. VLC's implementation of VA-API is used as a simple "drop-in" for
software decoding. This means decoded frames are copied back to the host
system, possibly modified (filters, OSD, etc) and in the end copied back
to the GPU for display. So you're actually straining the PCI bus three
times for each frame, two times dealing with quite a lot of data.

> If this can be fixed, where do I start investigating?

Take a look at players which use VA-API (or VDPAU) in a more efficient
way. It usually works like this:
The decoder merely parses compressed video streams into a format needed
by the hardware decoder. This data is then passed to a special video
output module which handles the actual decoding in hardware, may perform
post-processing and displays video. OSD/subtitles are composited onto
the video in hardware as well.

With VLC's current architecture, this would pose some problems with
OSD/subtitles, at least. Also, it is a lot of work to implement this.


More information about the vlc-devel mailing list