[Libva] [RFC] New postprocessing flags to vaPutSurface()

Bian, Jonathan jonathan.bian at intel.com
Wed Apr 7 15:32:30 PDT 2010


Hi Gwenole,

The new post-processing flags you proposed look fine to me. As far as the naming, I don't have a strong opinion as long as it conveys the different levels of trade-off. Perhaps we can use something like:

VA_FILTER_LQ_SCALING -> VA_FILTER_SCALING_FAST

VA_FILTER_MQ_SCALING -> VA_FILTER_SCALING_DEFAULT

VA_FILTER_HQ_SCALING -> VA_FILTER_SCALING_HQ

I have been thinking a little bit about how to support more advanced video post-processing capabilities with the API. As these advanced features will likely require passing more complex data structures than just flags or integer values, one possible solution is to use vaBeginPicture/vaRenderPicture/vaEndPicture for passing video post-processing data structures as buffers.  For example, we can add a new VAVideoProcessingBufferType and a generalized VAVideoProcessingParameter data structure. This would make it easier to specify things like reference frames for doing motion-compensated de-interlacing etc.  This should work for pre-processing as well if the source picture to be encoded needs some pre-processing, and as pre and post processing share a lot of common features they can be treated essentially the same.

vaPutSurface() could still be the most efficient way to get a decoded frame to the screen if no advanced video processing is required, or if the hardware can't process an image and write the output to memory (e.g. hardware overlay).  But if the hardware is capable of taking an input image from memory, process it and write it out to memory (whether it's GPU or fixed-function), then the vaRenderPicture path can enable more advanced features.

Comments?

Regards,
Jonathan  

-----Original Message-----
From: libva-bounces at lists.freedesktop.org [mailto:libva-bounces at lists.freedesktop.org] On Behalf Of Gwenole Beauchesne
Sent: Monday, March 08, 2010 2:02 AM
To: Libva at lists.freedesktop.org
Subject: [Libva] [RFC] New postprocessing flags to vaPutSurface()

Hi,

I have attached new postprocessing flags to expose additional GPU 
features. I am not decided yet for the "scaling-quality" flags naming. The 
rationale behind this is to expose e.g. what AMD marketing calls Avivo HD 
upscaling ("detail enhancement")[1]. NVIDIA has probably similar 
capabilities exposed through VDPAU high-quality scaling options too.

BTW, what additional postprocessing work can the GMA500 chip do?

[1] ATI Avivo(tm) HD – Technology Brief (page 5):
<http://ati.amd.com/technology/Avivo/pdf/ATI_Avivo_HD_tech_brief.pdf>

Comments welcome.

Thanks,
Gwenole.


More information about the Libva mailing list