In the Media encoding pipeline we do Mode decision(ENC) and Bitstream packing (PAK) to encode a frame.
I see in one of the examples fei_encpak,cpp files we use the "ProcessFrameAsync" API to invoke ENC or PAK by passing different parameters like the following.
m_pmfxENC->ProcessFrameAsync(&eTask->in, &eTask->out, &m_SyncPoint);
m_pmfxPAK->ProcessFrameAsync(&eTask->inPAK, &eTask->outPAK, &m_SyncPoint);
but in the mediasdkembedded-man document there is no mention of PAK processing using this API.
my question is ,can i use the "ProcessFrameAsync" API to invoke PAK as well ,as mentioned in the example code?
Example of sample code you posted is using MediaSDK Flexible Encode Infrastructure(FEI) API. FEI is supported only in MSS Linux releases (not supported in Embedded MediaSDK version).
Thanks for the quick reply.I am working with MSS Linux. my question is, can I encode a frame using ENC + PAK as two separate "ProcessFrameAsync" calls without FEI interface.currently I am using the API "MFXVideoENCODE_EncodeFrameAsync" to encode a frame.
Instead of using "MFXVideoENCODE_EncodeFrameAsync "API, I want make a "ProcessFrameAsync" call for ENC operations followed by another "ProcessFrameAsync" call for PAK operations. Please confirm me whether this is possible without FEI interface.
>> I want make a "ProcessFrameAsync" call for ENC operations followed by another "ProcessFrameAsync" call for PAK operations
This is exactly what AVC FEI supports and why it was introduced. "Legacy" MSDK encoders doesn't support such separate ENC and PAK calls. Can I ask you why you wouldn't like to try FEI?
Thanks Dmitry for the clarification. we have started with "MFXVideoENCODE_EncodeFrameAsync". but we will definitely have to move to FEI interface.
one more quick question . we are working with Skylake GPU and Intel supports VDENC based low power encoding. we want to enable this mode for Encoding through MSDK. what parameters i have to set to enable this mode?
Regarding the low power encoder, to my regret I will disappoint you. AVC LowPower encoder isn't supported in Linux MSS. The reason is Linux MSS is mainly targeted for high density server workloads. And the low power encoder has some limitations (like absence of B frame, no interlaced encode) which don't fit such workloads. However it's supported in Windows version via mfxInfoMFX::LowPower set to MFX_CODINGOPTION_ON.