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

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


[was replied privately by mistake. Resending it to the list]

Hi

On Tuesday, June 17, 2014, Gwenole Beauchesne <gb.devel at gmail.com> wrote:
> Yes, I know, I only answered to Rainer and wanted to experiment
> something on your case before commenting.


And what did your experimentation returns? :)

Right now; what I've done (currently only in use in mythtv) is a
USWCCopy class that the first time it is called to perform either a
frame copy or a nv12->yv12 conversion, is timed the two different
routines and select the fastest one for future use.
It's certainly not pretty, nor elegant; but it works reliably seeing
that the USWC copy methods is clearly faster in one case, and clearly
slower in the other.



> > Any recommendations?
>An optimization is indeed possible on the driver, in case you create a VA image.
>BTW, for VLC, the issue with using vaGetImage() is that the driver
>currently does not provide bitexact conversion from NV12 to I420/YV12.
>This is an issue that needs to be fixed at lest for same size
>conversions. Otherwise, the the "Advanced Video Scaler" (AVS) engine
>is always used, which tries to enhance the image along the way.


I can't say I've been able to visualise the difference with moving
images. But I haven't looked in that much details anyway.
VaGetImage returned frame certainly good enough.


With vaDeriveImage, 30% of the time spent in processing a frame from
file to display is actually the NV12->YV12 conversion.


More information about the Libva mailing list