Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Biswaranjan_P_
Beginner
70 Views

MFXVideoVPP_RunFrameVPPAsync returns MFX_WRN_DEVICE_BUSY

Currently my project has a requirement of using VPP pre-proc and post-proc together in the transcoding pipeline. As proof of concept I modified the existing sample_multi_transcode example where the goal is to convert NV12->RGB4 and then convert back from RGB4->NV12 both the operation using VPP. As i understood 2 instances of VPP cannot be run with a single mfx session, hence used MFXCloneSession and MFXJoinSession for using VPP2.

Now the pipeline is h264decode->VPP1(NV12->RGB4) ->VPP2(RGB4->NV12)->h264encode. This pipeline is perfectly working fine with system buffer i.e using sw option,

PROBLEM:

  1. Windows8.1 - When i enable -hw option i.e using d3d9 hardware buffers, VPP2 MFXVideoVPP_RunFrameVPPAsync returns MFX_WRN_DEVICE_BUSY seen after async-depth number of calls, and remains permanent. Prior initialization like MFX_VideoVPP_Init & MFXVideoVPP_QueryIOSurf have succeeded for both VPP1 and VPP2.
  2. CentOS7.1: The same code runs differently on Linux using VA API's where VPP2 MFXVideoVPP_QueryIOSurf returns MFX_WRN_PARTIAL_ACCELERATION which is considered as warning and moving further VPP2: MFXVideo_VPP_Init returns MFX_ERR_NOT_INITIALIZED, this error code is not listed in API documentation. Same code runs fine with -sw i.e with System memory with pretty slow performance.

I read in manuals that VPP has limitation for NV12->RGB4 and vice versa, Can some one guide me does VPP supports this color conversion model of using 2 VPP. If yes can you tell me what could be wrong in the modification.

Thanks, Biswa

0 Kudos
3 Replies
Surbhi_M_Intel
Employee
70 Views

Hi Biswaranjan, 

Thanks for telling us your pipeline in detail, that definitely helps! Regarding the issues - 

  1. Windows8.1 - When i enable -hw option i.e using d3d9 hardware buffers, VPP2 MFXVideoVPP_RunFrameVPPAsync returns MFX_WRN_DEVICE_BUSY seen after async-depth number of calls, and remains permanent. Prior initialization like MFX_VideoVPP_Init & MFXVideoVPP_QueryIOSurf have succeeded for both VPP1 and VPP2.
  • Advice on the MFX_WRN_DEVICE_BUSY, this issue comes when the hardware is busy with the previous task, to avoid this call sync operation so that you can run the async operation again. Vary async depth and check if particular asyncdepth is causing this issue. If you are doing multiple streams at a time, it is advisable to keep the async depth =1. 

 

  1. CentOS7.1: The same code runs differently on Linux using VA API's where VPP2 MFXVideoVPP_QueryIOSurf returns MFX_WRN_PARTIAL_ACCELERATION which is considered as warning and moving further VPP2: MFXVideo_VPP_Init returns MFX_ERR_NOT_INITIALIZED, this error code is not listed in API documentation. Same code runs fine with -sw i.e with System memory with pretty slow performance.
  • MFX_WRN_PARTIAL_ACCELERATION comes when there is no hw support for that operation and it falls back to SW implementation. What is your system configuration? I tested the VPP2 i.e. RGB32->NV12 on a 4th generation system (Haswell system) using sample_vpp, which can be configured for this operation and don't partial acceleration warning. Can you try at your end also?

Can you also please let us know which Media Server Studio Release are you using?

Thanks,
Surbhi

Biswaranjan_P_
Beginner
70 Views

Thanks Surbhi for the reply.

For Windows8.1: I have tried adding Sync calls between VPP's and also changing various sync-depth. This doesn't work.

On Linux - sample_vpp works well on my Box, its GB-BXi7-4770R, i have installed media server studio SDK2015Production16.4.2.1 i.e. MediaServerStudioEssentials2015R6

What i suspect there are some memory constraints problem, for this operation does VPP works on Video memory. System memory works wellperforming  both the operation.

Thanks, Biswa

Surbhi_M_Intel
Employee
70 Views

Hi Biswa, 

For windows 8.1 issue, please update to the latest Media Server Studio, update the drivers of your system, which can be downloaded from downloadcenter.intel.com. After that test the application again. If you still see issue, please send us a copy of system analyzer tool (present at installed directory under tools). Are you connect to any discrete graphics card as well along with Intel Integrated graphics card?

Also, can you try d3d11 implementation as well to see the issue to see the issue is with d3d9 only or both hardware implementation. If you still see issue, can you please send us your application, this should not be happening. We would like to test it at our end that where the problem is coming. 

For Linux- It should work well for Linux as well, can you please send us your application to debug. Is you application based on old samples?

Thanks,
Surbhi