Media (Intel® Video Processing Library, Intel Media SDK)
Access community support with transcoding, decoding, and encoding in applications using media tools like Intel® oneAPI Video Processing Library and Intel® Media SDK
Announcements
The Intel Media SDK project is no longer active. For continued support and access to new features, Intel Media SDK users are encouraged to read the transition guide on upgrading from Intel® Media SDK to Intel® Video Processing Library (VPL), and to move to VPL as soon as possible.
For more information, see the VPL website.

What is the limitation on frame width & height?

Zhanglin_L_Intel
Employee
696 Views
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/GEN3
win7 64bits
Media 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

0 Kudos
8 Replies
Petter_L_Intel
Employee
696 Views
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

0 Kudos
Petter_L_Intel
Employee
696 Views
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
0 Kudos
Zhanglin_L_Intel
Employee
696 Views

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
------------------------------------------------------------------------
0 Kudos
Zhanglin_L_Intel
Employee
696 Views

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


0 Kudos
Petter_L_Intel
Employee
696 Views
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
0 Kudos
Zhanglin_L_Intel
Employee
696 Views

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

0 Kudos
Petter_L_Intel
Employee
696 Views
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 
0 Kudos
Zhanglin_L_Intel
Employee
696 Views
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?
0 Kudos
Reply