Community
cancel
Showing results for 
Search instead for 
Did you mean: 
cedronius__anders
New Contributor I
285 Views

Using the output of a decoder (video_memory) in many encoders or vpp processors.

Jump to solution

My decoder outputs a mfxFrameSurface1* (MFX_IOPATTERN_OUT_VIDEO_MEMORY) . Feeding one Encoder is simple and you basically just feed the mfxFrameSurface1* and off you go.

However since a session only supports one decoder/encoder/vpp adding another decoder to consume the  mfxFrameSurface1* is not possible as I understand it. 

I tried feeding the mfxFrameSurface1* to multiple encoders but then I get -> 

intel_transcoder: /opt/src/msdk/_studio/mfx_lib/shared/src/mfx_h264_encode_vaapi.cpp:3026: virtual mfxStatus MfxHwH264Encode::VAAPIEncoder::Execute(mfxHDLPair, const MfxHwH264Encode::DdiTask&, mfxU32, const MfxHwH264Encode::PreAllocatedVector&): Assertion `0x00000000 == vaSts' failed.

 
I guess it's due to the other encoders are using the same buffer in other sessions.

So I realise the 'problem' is that i need som kind of buffer management between the Producer (decoder) and Consumers (Encoder / VPP).

Is there a copy mfxFrameSurface1*?

I've looked at the multi-transcode sample but it's several 100kb of code and just too complex to understand for me what it's doing and there is no 'simple' multi_transcode example available that i've found. 


My system is : 
Ubuntu 20.04
bva info: VA-API version 1.10.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_9
libva info: va_openDriver() returns 0
MSDK 1.34 

Is there a simple up to date information about how to feed multiple consumers a mfxFrameSurface1* that resides in the video memory?

Thanks for helping,

/Anders


0 Kudos

Accepted Solutions
Mark_L_Intel1
Moderator
181 Views

Hi Anders,


Did my answer solved your question?


Mark


View solution in original post

4 Replies
cedronius__anders
New Contributor I
278 Views

I meant to write ->  "adding another encoder to consume the  mfxFrameSurface1* is not possible as I understand it."

AthiraM_Intel
Moderator
251 Views

Hi,

 

We are forwarding your case to Subject matter Experts.


Thanks.


Mark_L_Intel1
Moderator
212 Views

Hi Anders,


Sorry for the late response. There seem to be 2 questions: multiple session and memory locking. Media SDK don't have specific memory locking APIs, so the general memory management should work.


For multi-session, would following document be helpful?

https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#multiple-sessions


Mark


Mark_L_Intel1
Moderator
182 Views

Hi Anders,


Did my answer solved your question?


Mark


View solution in original post