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.

Formal steps for encoding and decoding using Skylake HEVC?

AaronL
Beginner
442 Views

I'd like some formal documentation on how to use Skylake HEVC for encoding and decoding.  The SDK documentation barely addresses this, and the most useful information can be found in the release notes and the sample_encode sample.  Yet, the information in the sample_encode sample doesn't appear to agree with the information in the release notes.

According to the release notes for version 6.0.0000.349 of the Media SDK (yes, I'm aware this is not the latest), MFX_PLUGINID_HEVCE_HW was added for Skylake HEVC encode.  However, in sample_encode (and sample_decode), from the very latest samples (6.0.0.68), there is no use at all of this GUID.  Instead, it uses the MFX_PLUGINID_HEVCE_FEI_HW GUID in msdkGetPluginUID(), and I think the code path in question is never exercised, since I don't see any cases in which MSDK_VENC is passed in to msdkGetPluginUID() for the type input.  Other than the header file, there is no mention of the MFX_PLUGINID_HEVCE_FEI_HW GUID.  Is the only way to get sample_encode and sample_decode to use Skylake HEVC, currently, to pass in the plug-in GUID using the -p option?

In addition, what pixel format should be used for the raw input to the Skylake HEVC encoder and the raw output from the Skylake HEVC decoder?  In the release notes for the latest SDK (version 6.0.0000.388), it states the following:

-- HW Accelerated HEVC decode plugin outputs frames in DXGI_FORMAT_P010 for Microsoft Direct3D 11 and corresponding FOURCC defined format for Direct3D 9. These formats are 16 bit based and valid data bits alignment is different from usual SW codecs. Please refer to MSDN* pages for description.  In current implementation application needs to shift valid data bits or use VPP. Please check the SDK Reference Manual for more details.
-- HW Accelerated HEVC decode plugin outputs frames in DXGI_FORMAT_P010 always for MAIN10 profile, even if real bit-depth for all components is 8 bit.

However, it's unclear if this refers to the Skylake HEVC decoder or to the HW accelerated HEVC decoder that is associated with Intel Media Server Studio.  Some concrete documentation would be extremely helpful to anyone wanting to implement a solution that takes advantage of Skylake HEVC.

According to the article at http://www.anandtech.com/show/9562/intels-skylake-gpu-analyzing-the-media-capabilities , Skylake HEVC supports HW encoding and decoding for HEVC Main profile only--if this is the case, it would be helpful to see this in the documentation as well.

What would be extremely helpful is if something ala the simple_encode and simple_decode family of tutorials were provided that demonstrated how to formally use Skylake HEVC.  I generally find the tutorials more useful than sample_encode or sample_decode.

0 Kudos
4 Replies
Surbhi_M_Intel
Employee
442 Views

HI Aaron, 

Thanks for letting us know what you would like to see in the documentation for SKL HEVC support, this is very helpful. As you must have notice that release notes or any other documents doesn't talk about 6th generation because we are officially not supporting but one can use the latest Media SDK version and can try it. In our next release, which we are planning soon will have answer to most of your questions.
Right now, anything in the manual and release notes is not applicable to SKL, we will be providing more clarity in the next release notes. 

Like you have mentioned in your other post, definitely tutorial are best as starting point and understand the Media SDK pipeline. Samples are recommended to build pipelines with complex features and performance purposes as they are more optimized than tutorials. 

Thank you for the valuable feedback. We will pass your feedback to our development team so that we have better documentation to cover as many questions as possible. 

Thanks,
Surbhi

0 Kudos
AaronL
Beginner
442 Views

Could you at least provide information on the pixel format for input to the Skylake HEVC encoder and the pixel format for output from the Skylake HEVC decoder?  That information is sort of essential in order to even "try" to use Skylake HEVC while they are officially unsupported by the Media SDK.

Is there a timeline for full support for 6th generation hardware in the Intel Media SDK?

0 Kudos
Surbhi_M_Intel
Employee
442 Views

Hi Aaron, 

Apologize I miss this thread. Most of the information requested above is not public yet, but let me check back with Media architect regarding profile and fourcc support and get back to you via message. 

Thanks,
Surbhi

0 Kudos
Surbhi_M_Intel
Employee
442 Views

Hi Aaron, 

Skylake HEVC supports HW encoding and decoding for HEVC Main profile only according to  http://www.anandtech.com/show/9562/intels-skylake-gpu-analyzing-the-me

>>Yes that is true. HEVC Hybrid decoder will support HEVC Main 10 profile but not SKL HEVC fully HW solution. 

 

Thanks,
Surbhi



 

0 Kudos
Reply