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.

How to deal with MFX_ERR_MORE_SURFACE when do FRC

Lihang_Z_
Beginner
569 Views

Hi, I want to use the FRC in Media SDK.

I modified the sample "sample_multi_transcode" in "Intel\Media SDK 2013\samples\sample_multi_transcode".

The code I modified:

In pipeline_transcode.h,

    Add 

        mfxExtVPPFrameRateConversion m_FrameRateConversion;

    into Class CTranscodingPipeline.

In pipeline_transcode.cpp,

    In CTranscodingPipeline::CTranscodingPipeline()

         Init m_FrameRateConversion:

           m_FrameRateConversion.Header.BufferId = MFX_EXTBUFF_VPP_FRAME_RATE_CONVERSION;

           m_FrameRateConversion.Header.BufferSz = sizeof(mfxExtVPPFrameRateConversion);

    In mfxStatus CTranscodingPipeline::InitVppMfxParams()

        Add m_FrameRateConversion into m_VppExtParams:

             m_mfxVppParams.vpp.Out.FrameRateExtN *= 2;

             m_FrameRateConversion.Algorithm = MFX_FRCALGM_FRAME_INTERPOLATION;

             m_VppExtParams.push_back((mfxExtBuffer *)&m_FrameRateConversion);

 When I try to run this code, I will meet MFX_ERR_MORE_SURFACE from sts = m_pmfxVPP->RunFrameVPPAsync(pSurfaceIn, pmfxSurface, NULL, &pExtSurface->Syncp);  in mfxStatus CTranscodingPipeline::VPPOneFrame().

I think that this Error is make sense, because the output from the decoder is 30Hz, and FRC want to convert it from 30 to 60, we should send more surface to FRC to save the more 30Hz(30->60). But I have no idea how to send the more surfaces to VPP.

Anybody can share me a sample code about how to use FRC algorithm.

Appreciated for any help.

0 Kudos
7 Replies
Anthony_P_Intel
Employee
569 Views

Hi,

Can you provide information about what MediaSDK platform you are using? 

Is this seen using the software DLL, or do you have a 2nd, 3rd, or 4th Gen processor?  If it is the latter, can you provide the driver version?

The use of MFX_FRCALGM_FRAME_INTERPOLATION is a feature of API 1.6, and you should make sure you have actually initialized the session with this level API (or greater).  If API 1.6 is supported by your implementation, you may see MFX_WRN_FILTER_SKIPPED if the platform does not actually support this processing request.  (This is a new feature to Intel(r) 4th Generation Core Processors).

0 Kudos
Lihang_Z_
Beginner
569 Views

Hi Tony,
The Medis SDK I used is the latest Intel Media SDK 2013 downloaded from "http://software.intel.com/en-us/vcsource/tools/media-sdk"
The CPU in my PC is i3-2120CPU@3.30GHz, OS is 64-bit Windows8. The Driver Version of CPU is 6.2.9200.16384.
I have checked the API Version. The API Version for MFX_IMPL_SOFTWARE is 1.6, but the API Version for MFX_IMPL_HARDWARE is only 1.4.
How can I get Version 1.6 API for MFX_IMPL_HARDWARE?
Appreciated for your help.

0 Kudos
Nina_K_Intel
Employee
569 Views

Hi there,

For the reference how to handle MFX_ERR_MORE_SURFACE status please check out the sample_vpp app, it has support for FRC.

Hardware accelerated 1.6 API will be available with the 4th generation of Intel Core processors codenamed Haswell. With the platform you are running on you can use 1.4 API subset. With regards to FRC, it is supported in 1.4, just not the MFX_FRCALGM_FRAME_INTERPOLATION type of algorithm.

Regards,

Nina

0 Kudos
Lihang_Z_
Beginner
569 Views

Hi all,
I have fixed the MFX_ERR_MORE_SURFACE error. Since my platform only support API1.4, I use MFX_FRCALGM_PRESERVE_TIMESTAMP instead of MFX_FRCALGM_FRAME_INTERPOLATION.
Now I have a new problem.
I want to do 30fps->60fps FRC. The input frame rate is 30Hz. The frame rate of output is 60Hz as I expected.
But the total frame number is still the same number as the original input video: the number of original input frame is 400 frames, the number of output frame is 400 frames too.
It seems that VPP only play the original video fast instead as increase the frame number.

0 Kudos
Lihang_Z_
Beginner
569 Views

Please ignore my last post. I have resolved the problem.

0 Kudos
Lihang_Z_
Beginner
569 Views

Hi Nina and Tony,
Since Ivy Bridge CPU only support V1.4API, I should buy a new platform to use V1.6API and the FRC feature.
As Nina mentioned that “Hardware accelerated 1.6 API will be available with the 4th generation of Intel Core processors codenamed Haswell.”, I will buy a Haswell CPU laptop from Dell.
The model is Latitude E6540 and the Spec of this laoptop is:
Processor:              4th gen Intel® Core™ i7-4800MQ Processor (2.7GHz, 6M cache, Upgradable to Intel® vPro™ technology)
Operating System:  Windows 7 Professional, 64-bit, English
Display:                 15.6in FHD (1920x1080) Anti-Glare LED
Memory:                8GB DDR3L at 1600MHz
Hard Drive:             500GB 5400rpm SATA Solid State Hybrid Drive
Optical Drive:         8X DVD+/-RW
Video Card:           AMD Radeon HD 8790M Graphics 2GB GDDR5

Whether I can use V1.6API and use FRC feature on this platform?
Appreciated for your support.

0 Kudos
Anthony_P_Intel
Employee
569 Views

Hi,

Yes, that processor does include support interpolated FRC support, however since it includes a desrete graphics accelerator (AMD), I am not sure of the platform's architecture to allow access to the Intel graphics accelerator.

The platform may expose both adpaters as unique devices, the platform may contain 'switchable graphics' that allow you to control which adapter is used as the default adapter for each program, or the platform may not expose Intel's adapter at all.  I suspect you will be able to use the Intel adapter, but you may want to check with Dell first.

 

0 Kudos
Reply