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.

Device failure error while using mix memory type

Sumit_S_
Beginner
753 Views

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
753 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

0 Kudos
Sumit_S_
Beginner
753 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 ).

0 Kudos
Mark_L_Intel1
Moderator
753 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

0 Kudos
Reply