Two questions regarding Intel Media SDK VPP

Two questions regarding Intel Media SDK VPP

I have two questions regarding Intel Media SDK VPP.

First one is the VPP not working when input format is set to RGB4

   I write a program to test the Intel Media SDK R3 VPP, It's work well when my input format is set to YUY2 or NV12. 

   When I set the input format into RGB4 , all of the VPP steps(including RunFrameVPPAsync and SyncOperation) return MFX_ERR_NONE.

   But the VPP effects is not applied to the input data ( No matter how I set the VPP paramaters , I dont see any visual changes).


   The VPP surfaces pool is created using IDirectXVideoAccelerationService::CreateSurface

   Is there any techniques to feed the DirectX surfaces as the VPP Input surfaces

   or take the VPP Output surfaces as the input for other features I write using d3d system ?

  As now I plainly copy the the surfaces from/to VPP surfaces, which is very slow because I need to lock the surfaces before copying it.

My system :

  • Windows 8
  • Intel Core i5 with Intel HD Graphics 4000
  • Intel HD Graphics Driver Version
  • Intel Media SDK 2012 R3 (HW version 1.4)

Many Thanks,

7 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi Hendrik,

Regarding (1). RGB4 -> NV12 color space conversion should not present any issues. Can you please provide more specific information of what you are observing? What do you mean with no visual changes. Conversion to alternate color space will not result in any visual changes.
Please also check out the "sample_vpp" for details on this topic.

Regarding (2). As far as I know the D3D surfaces used with the Media SDK components must be allocated using the DXVA service and also requiring copy if you for instance need the surface to be associated with separate D3D texture.
You may have more flexibility using DX11 surfaces. At the moment I do not have any specific recommendations on how to perform this. But if you find a better approach please share your finding on this forum.


Hi Peter ,

Thanks for answering my questions.

(1) for example : If I set the procampParam.saturation value into 0 , the output data should be a grayscale video right ?

when my input format is YUY2 , it works well (output is a grayscale video)

but if my input format is RGB4 , my output data remains unchanged (just the same with my input data)

all of the VPP steps(including RunFrameVPPAsync and SyncOperation) return MFX_ERR_NONE

(2) Sure I will share if I find a better approach :)


Best Reply

Hi Hendrik,

There are some undocumented limitations with regards to using VPP for RGB4 color conversion. Due to a HW limitation, the only VPP operation that can be performed together with the RGB4->NV12 color space conversion is frame resize. Any other requested operations will be ignored. Media SDK 2012 does not respond with any warnings to indicate this fact. We plan to add such notification in Media SDK 2013 and document the limitation.

So, if you need to perform both RGB4->NV12 and grayscale you will have to implement it in two VPP steps.

Sorry for the inconvenience.


Dear Petter ,

Thanks , I get it now.

One last question , is there any minimum frame size requirement for using VPP ? for ex 320X240 or 640x480 ?

Many Thanks ,

Hi Hendrik,

There is no specific lower bound for VPP or Encode but I recommend not going below 10x10.


Thanks Petter

Leave a Comment

Please sign in to add a comment. Not a member? Join today