Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Sumit_S_
Beginner
52 Views

Device failure error while using mix memory type

I am trying to setup the following chain for video processing.

VPP1 -> VPP2

where     VPP1Params.IOPattern =
        MFX_IOPATTERN_IN_SYSTEM_MEMORY | MFX_IOPATTERN_OUT_OPAQUE_MEMORY; and

              VPP2Params.IOPattern =
        MFX_IOPATTERN_OUT_OPAQUE_MEMORY | MFX_IOPATTERN_IN_SYSTEM_MEMORY;

I am using mfxExtOpaqueSurfaceAlloc for the opaque surface alloc information. Now the problem is, when the intel media sdk library implementation is SW based, I am getting correct output after second vpp session is finished. But when the implementation is HW based, program exits with status code -17 (MFX_ERR_DEVICE_FAILED) from MFXVideoVPP_RunFrameVPPAsync function . I am currently running intel media sdk version 1.17. 

In the release notes of version 1.19, it is stated in common feature that "Opaque memory usage extended to support external allocator in transcoding pipelines with mixed memory types. ". So, Opaque memory with mixed memory types is not supported prior to version 1.19? And if it is not the case, what might be the possible cause for the error?

0 Kudos
3 Replies
Mark_L_Intel1
Moderator
52 Views

Hi Sumit,

As my understanding, the pipeline is VPP1->VPP2, according to your configuration, VPP1 has input of system memory, output of opaque memory which should be the input of the VPP2, so in your configuration, VPP2Params.IOPattern should be MFX_IOPATTERN_IN_OPAQUE_MEMORY | MFX_IOPATTERN_OUT_SYSTEM_MEMORY, so your configuration might be a mistake depends on the mode.

The opaque memory means the system decides the memory, in software mode, all memory goes to system, this is no problem; but in hardware mode, the opaque memory normally means the video memory, this might cause the failure. Could you change to VPP2Params.IOPattern = MFX_IOPATTERN_IN_OPAQUE_MEMORY | MFX_IOPATTERN_OUT_SYSTEM_MEMORY to see if the failure is solved?

Mark

Sumit_S_
Beginner
52 Views

I made mistake while writing my question. In my code I am giving correct parameters for IOPattern, which is

 VPP1Params.IOPattern =
        MFX_IOPATTERN_IN_SYSTEM_MEMORY | MFX_IOPATTERN_OUT_OPAQUE_MEMORY

and  VPP2Params.IOPattern = MFX_IOPATTERN_IN_OPAQUE_MEMORY | MFX_IOPATTERN_OUT_SYSTEM_MEMORY;

Still i am getting same error ( MFX_ERR_DEVICE_FAILED ).

Mark_L_Intel1
Moderator
52 Views

Hi Sumit,

For your original question, can you try to set up the same memory type to see if you still get the failure?

I don't think the 1.19 doesn't support mix type of memory, I will confirm. What is your whole pipeline, DEC->VPP1->VPP2->ENC?

Mark