[Libva] How to detect the type of memory returned...

Jean-Yves Avenard jyavenard at gmail.com
Tue Jun 17 00:54:44 PDT 2014


On 17 June 2014 17:27, Peter Frühberger <peter.fruehberger at gmail.com> wrote:
> Hi,
>
> we implemented the SSE4 copy code arround that was referenced here
> into xbmc arround christmas, cause we wanted to use state of the art
> deinterlacing with ffmpeg's yadif.
> Here are some benchmarks with 8K vs 4K buffer and 1080p vs 4K surface sizes:

Except that getting the picture via vaDeriveImage returns a NV12 image
(at least with Intel, AMD VAAPI doesn't implement vaDeriveImage), in
which case that routine serves no purpose until of course you can
natively display NV12 image.

And vaGetImage returns a YV12 image, which isn't a USMC map memory,
and the SSE4 routine is in this case three times as slow as the plain
C version using memcpy.

We always get back to the problem I mentioned in my first email.
Unfortunately, there's not a generic solution that can be adapted.
If memory used is USWC, you must use SSE4, if not, you certainly don't
want to use SSE4 and a buffer

> Fun fact:
> Slow Baytrail Chips are faster and more stable doing VAAPI Decoder +
> sse4 transfert + software deinterlacing than using VPP with Bobbing.

You don't have to use VPP for Bob.
But yeah, I see your point for other type of VPP's deinterlacers


More information about the Libva mailing list