What is the limitation on frame width & height?

What is the limitation on frame width & height?

My work is to decode video stream then enlarge or shrink the decoded result with VPP. The original decoded result and enlarged frame are all kept for outputs. The original frame will be used in local mornitor and enlarged frame will be sent to our device for post processing.
 However after I upgraded to newest graphic driver, some resolution, such as 2560 * 1440, 640 * 320,  is not supported by VPP.
My environment is:--------------------------------------------------i7-2600K,motherboard: ASUS P8Z68-V/GEN3win7 64bitsMedia SDK 2012 R2 3.5.811.41085 64 bits--------------------------------------------------
When I use the old graphic driver V8.15.10.2405 provided by ASUS, everything runs well. But I found sometimes x264 decoder can not work well. Thus I upgrade my graphic driver to V15.28.0.2792 which has stable and faster decoder. To my surprise I found some resolution can not be handled by VPP, which all run well with old driver.
The input video is 720P and I set output frame to 2560 x 1440 (2x 720p) and 640 * 360 (1/4 720P), VPP reports below errors:The MFXVideoVPP_Init reports MFX_WRN_PARTIAL_ACCELERATION MFXVideoVPP_RunFrameVPPAsync reports MFX_ERR_NOT_INITIALIZED 
Could anyone help me and tell me what is the limitation on frame width and height. Especailly the max/min width/ height supported in VPP! Or do I need to upgrade to IVB?
Thanks a lot!
-- Lin

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

Hi Lin,

You should be able to run VPP to scale frames up to 4K on both most recent driver (15.28 - for Win7 and Win8) and current Win7 generation driver (15.26).

I quickly tested this right now using the Media SDK sample_vpp sample and it works fine.

The driver, 2405, you mention is very old so it's hard to predict the cause, ypu may have fallen back oin SW processing. Regardless, for 15.26 set of drivers, please use the most recent one from http://downloadcenter.intel.com/

I do not know the reason for you encountering MFX_ERR_NOT_INITIALIZED?

Regards,Petter

Hi Lin,

my previous statement is true for both 2nd (Sandy Bridge) and 3rd generation Core processors.

Please explore sample_vpp, you should be getting the same results. If not, let us know.

Regards,Petter

Hello Petter

Thanks for you advice. I have used sample_vpp and realized that width and
height should all be 16 aligned. After fixed alignment issue, my vpp runs well
for 720P to  640*360. 

However 720P to 320*180 still can not get the correct picture, but the
sample_vpp can do it. I used mediasdk_tracer to capture the settings. Could you
help check it? The fragment of log of my vpp & sample_vpp are listed below.

my vpp log------------------------------------------------------------------------

vpp.Init.par.AsyncDepth=0

vpp.Init.par.vpp.In.FourCC=NV12

vpp.Init.par.vpp.In.Resolution=(1280,736)

vpp.Init.par.vpp.In.Crop=(0,0,1280,720)

vpp.Init.par.vpp.In.FrameRate=24000/1001

vpp.Init.par.vpp.In.AspectRatio=144:144

vpp.Init.par.vpp.In.PicStruct=PROGRESSIVE

vpp.Init.par.vpp.In.ChromaFormat=4:2:0

vpp.Init.par.vpp.Out.FourCC=NV12

vpp.Init.par.vpp.Out.Resolution=(320,192)

vpp.Init.par.vpp.Out.Crop=(0,0,320,180)

vpp.Init.par.vpp.Out.FrameRate=24000/1001

vpp.Init.par.vpp.Out.AspectRatio=144:144

vpp.Init.par.vpp.Out.PicStruct=PROGRESSIVE

vpp.Init.par.vpp.Out.ChromaFormat=4:2:0

vpp.Init.par.Protected=0

vpp.Init.par.IOPattern=IN_VIDEO_MEMORY|OUT_VIDEO_MEMORY

vpp.Init.par.NumExtParam=0

vpp.Init.par.ExtParam=NULL ------------------------------------------------------------------------sample vpp log------------------------------------------------------------------------

vpp.Init.par.AsyncDepth=0

vpp.Init.par.vpp.In.FourCC=NV12

vpp.Init.par.vpp.In.Resolution=(1280,720)

vpp.Init.par.vpp.In.Crop=(0,0,1280,720)

vpp.Init.par.vpp.In.FrameRate=30/1

vpp.Init.par.vpp.In.AspectRatio=0:0

vpp.Init.par.vpp.In.PicStruct=PROGRESSIVE

vpp.Init.par.vpp.In.ChromaFormat=4:2:0

vpp.Init.par.vpp.Out.FourCC=NV12

vpp.Init.par.vpp.Out.Resolution=(320,192)

vpp.Init.par.vpp.Out.Crop=(0,0,320,180)

vpp.Init.par.vpp.Out.FrameRate=30/1

vpp.Init.par.vpp.Out.AspectRatio=0:0

vpp.Init.par.vpp.Out.PicStruct=PROGRESSIVE

vpp.Init.par.vpp.Out.ChromaFormat=4:2:0

vpp.Init.par.Protected=0

vpp.Init.par.IOPattern=IN_SYSTEM_MEMORY|OUT_SYSTEM_MEMORY

vpp.Init.par.NumExtParam=0

vpp.Init.par.ExtParam=NULL------------------------------------------------------------------------

Another question is whether VPP supports 720P to 5120*2880 (16x 720P)?
Sample_vpp reports MFX_WRN_PARTIAL_ACCELERATION. I think it is not bigger than 4K * 4K. 

Could you tell me whether it is supported on IVB. If not, whether it
will be support in Haswell?

Thanks

-- Lin

Hi Lin,

from the log you provided I do not not see any issues. I suspect there is something else in your code that is the cause of the issue, such as memory allocation. I suggest continuing to compare your implementation with the sample_vpp code. Hopefully you will find the issue.

When using surfaces greater than 4K VPP will fall back on SW implementation (indicated by the MFX_WRN_PARTIAL_ACCELERATION return code). The behavior is the same for 2nd and 3rd generation Core processors. I cannot comment on next gen Core processor at this point.

Regards,Petter

Hello Peter

 I will continue to investigate the scale
issues. Thanks for your help.

Whether does sw vpp fully utilizes the
SIMD operation likes AVX and multi-threads to guarantee performance?

 -- Lin

Hi Lin,

Yes. the Media SDK components including VPP uses SIMD.

The VPP SW component has only limited multi-threading today. The SW VPP implementation is considered as functional fallback in case HW is not available. Our efforts are primarily focused on HW path, but we will revisit the SW VPP implementation to explore if we can improve threading/performance.
Media SDK SW encoder and decoder are threaded to utilize all cores for good performance.

Regards,Petter 

Got it, thanks. I plan to use multi-vpps in multi-threads to do large scale operation. Do you think it is better than using a single sw operation?

Leave a Comment

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