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.

Question about interlaced HEVC encoding support with R1 2018 SDK

AaronL
Beginner
786 Views

According to the release notes for the R1 2018 Intel Media SDK, available at https://software.intel.com/sites/default/files/mediasdk_release_notes.pdf , interlaced video encoding is now supported for HW HEVC encoding:  "Added interlaced content encoding support."  This is great, but it's my understanding that the changes to enable interlaced HW HEVC encoding are most likely included in the Intel Graphics driver package, not the SDK.  What's the minimum required version of the driver install package that is required to enable this functionality?  Is it available for Skylake and up?  What is the minimum SDK version required for this functionality to be present?

Thanks, Aaron Levinson

0 Kudos
7 Replies
Mark_L_Intel1
Moderator
786 Views

Hi Aaron,

As the document said, it should started from API version 1.26 and minimum Media SDK version is 2018 R1. It should work from Skylake above.

I am not sure the driver version since it is too complicated to figure out, but upgrade the Windows driver to the latest would definitely make this feature available.

Mark

0 Kudos
AaronL
Beginner
786 Views

The release notes specifically discuss encoding of interlaced content--is the latest driver also required in order to properly decode HEVC-encoded interlaced video?  Let's say that one system with the latest Intel Graphics driver installed is used to encode interlaced video using HEVC, but another system using an old driver, perhaps one released over two years ago, is used for decoding.  Will that work?  It's not necessarily such a simple matter to upgrade the drivers on systems deployed in the field, and I'd like to make sure that this will work properly and well before I go ahead and use interlaced HEVC encoding.

0 Kudos
Mark_L_Intel1
Moderator
786 Views

Hi Aaron,

Media SDK supports N and N-1 of the released processors, where N to be the current released processor, so if you take the latest release and it should support the current and previous one released versions. This is the rule you figure out if the feature is supported or not.

In your case, it should support KabyLake and CoffeeLake.

For the older version processors, since the driver will not be updated with the feature of the current release, Media SDK will not support the new feature in the current release. By the way, as you know the driver update will happen automatically in OS but not connect with Media SDK.

I understood your concern to pin point the particular driver version, but it is too hard to figure out the driver version even us since the driver was released in different internal version.

So my recommendation is to use the N/N-1 rule to figure out the support.

Mark

0 Kudos
AaronL
Beginner
786 Views

Liu, Mark (Intel) wrote:

As the document said, it should started from API version 1.26 and minimum Media SDK version is 2018 R1. It should work from Skylake above.

On an 8th generation Intel processor with the latest Intel graphics driver installed (64-bit Windows, version 24.20.100.6136 for the Intel Graphics driver), when I query the version of the Intel Media SDK, it returns 1.26.  However, when I try to encode interlaced video using HW HEVC, it continues to exhibit the old behavior.  That is, even though I specify MFX_PICSTRUCT_FIELD_TFF in mfxEncParams.mfx.FrameInfo.PicStruct, when I call MFXVideoENCODE_Query(), it sets PicStruct to MFX_PICSTRUCT_PROGRESSIVE, which is an indication that it doesn't support interlaced video encoding.

So, it would appear that this is not working after all.

Aaron Levinson

0 Kudos
Mark_L_Intel1
Moderator
786 Views

Hi Aaron,

The parameters might not set correct, did you try to use our sample_encode?

Mark

0 Kudos
AaronL
Beginner
786 Views

Liu, Mark (Intel) wrote:

The parameters might not set correct, did you try to use our sample_encode?

I highly doubt that the parameters are set incorrectly.  I use the same parameters with HW H.264 encoding, and in that case, it doesn't replace MFX_PICSTRUCT_FIELD_TFF with MFX_PICSTRUCT_PROGRESSIVE when I do the query.  Basically, what I'm seeing is the same behavior that I reported back in 2016, at https://software.intel.com/en-us/forums/intel-media-sdk/topic/670314.

Aaron Levinson

0 Kudos
AaronL
Beginner
786 Views

I tried this with sample_encode (the version included with the 2018 R1 SDK if samples are installed), and the behavior is the same.  I invoked sample_encode.exe with the following arguments:

h265 -i test_stream_176x96.yuv -o output.h265 -w 176 -h 86 -b 1000 -f 30 -u quality -hw -tff

I also tried with -d3d11, and it made no difference.  After returning from:

sts = GetFirstEncoder()->Query(&m_mfxEncParams, &m_mfxEncParams);

on line 774 of pipeline_encode.cpp, the value of PicStruct changes from 2 (MFX_PICSTRUCT_FIELD_TFF) to 1 (MFX_PICSTRUCT_PROGRESSIVE).  Note that I typically have to step past the next line (the MSDK_CHECK_STATUS line) before the Query() fully "takes".

This was for a 64-bit Debug build of sample_encode.exe.

I think this demonstrates pretty conclusively that HW HEVC interlaced video encoding is not working with the latest Intel Graphics driver package.

Aaron Levinson

0 Kudos
Reply