Community
cancel
Showing results for 
Search instead for 
Did you mean: 
celli4
New Contributor I
44 Views

Another permanent MFX_WRN_DEVICE_BUSY

First, I want to commend the support staff, you have an important and at times tough job. I think the IMSDK and it's teams are impressive.

If you search the forums for MFX_WRN_DEVICE_BUSY, you will see it is happening regularly to a number of people.

I have a heavily modified version of the tutorial  'simple_5_transcode_opaque_async_vppresize'.

I have tested my program on Win7/x64,  Win81/x64, Win Server 2012R2 x64

Versions: 

  • Win8.1/x64   libmfxhw64.dll     File Version: 6.15.2.20  / Product Version: 6.0.1536.342
  • Win7/x64   libmfxhw64.dll     File Version: 6.15.2.20  / Product Version: 6.0.1536.342
  • WinServer2012R2  File Version: 5.14.5.15 / Product Version: 5.0.33362.27558 

On Win81 and WinServer, for the same bitstream I do not get MFX_WRN_DEVICE_BUSY, and my transcode completes.

On Win7 I get stuck in a MFX_WRN_DEVICE_BUSY on mfxVPP.RunFrameVPPAsync(...)

I understand you may not be able to justify looking at my custom code.

But please do tell me, what the potential sources of this error might be. What might cause unstopping MFX_WRN_DEVICE_BUSY from RunFrameVPPAsync()

 

Thanks in advance

 

0 Kudos
2 Replies
celli4
New Contributor I
44 Views

Can this error ONLY be caused by bad bitsteams, or are there other known causes of this failure condition?

If there are other known causes, what are they?
Thanks, Cameron

Surbhi_M_Intel
Employee
44 Views

Hi Cameron, 

Thanks for the kind words. The reason why MFX_WRN_DEVICE_BUSY can vary depending upon the application. Basically what it means is that the device is busy and cannot complete the requested task. This can happen if your devices is busy executing the previous cmd so it will give this warning or if your device doesn't have surface which you have requested so, task cannot be accomplished.
One of the solution to handle this is to do SyncOperation instead of sleep for few milliseconds, with the SyncOperation  it should free up the surfaces which can be used. For eg -

do{
sts = dec->DecodeFrameAsync(..);
if (MFX_WRN_DEVICE_BUSY == sts) {
mfxStatus res = session.SyncOperation(MFX_INFINITE);   //or SyncOperation.wait(5);
}
}while (sts ==MFX_WRN_DEVICE_BUSY)


Are you seeing this issue with specific inputs? If this problem still continues can you please send us the reproducer with the input so that it can be filed as a bug. Also, I hope you are using latest driver on your win7 system. Are you using same HW configration for all three OS you are working on, if not can you let us know the system details as well?

-Surbhi

 

Reply