On 2/18/08, Tom Cooksey <[EMAIL PROTECTED]> wrote:
>
> What I'm confused about is which way round the APIs go. Either:
>
> a) The GStreamer/ffmpeg/blah *decode* elements make calls into the VAAPI
> to
> accelerate various stages of the decode and then output them to whatever
> (probably a surface).
>
> _or_
>
> b) A gstreamer/ffmpeg/blah *demux* element pipe video data to VAAPI, which
> then does the decoding using a mixture of hardware & software and outputs
> to
> a surface.
I am also pretty sure that "a" is the intended way, but even with this way
you need VaAPI support implemented both in the specific video codecs (FFmpeg
video decoders in libavcodec) that you want to accelerate and VaAPI support
in the device driver used (in this case Gallium3D graphics device drivers).
I think that you are probably best of by starting to look how FFmpeg
handles XvMC and what it requires from the graphics device driver as the
process will be the same (XvMC also require both codec and the
graphics device driver support the XvMC API), the difference will be that
FFmpeg uses the VaAPI instead of the XvMC API.
This is what I think a great introduction (and must read) article on XvMC
http://www.mythtv.org/wiki/index.php/XvMC
All those same things will apply to VaAPI as well.
So basically the chain for FFmpeg would go; libavformat demuxes the stream
to seperate which video stream to decode and which codec format it uses, it
then passes that to libavcodec which selects the correct decoder (for
example the H.264 decoder) which then decodes what it can not pass to VaAPI
and at the same time in parallel passes the processes it can (like mocomp
and iDCT) to VaAPI.
PS! I for a OFF-TOPIC but related question to the Mesa and Gallium
developers:
Will Gallium implement support for XvMC?, same as Tom's question about
VaAPI.
Best regards / Andreas
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev