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.

Potential Skylake HEVC encoding showstopper: Interlaced content not actually supported?

AaronL
Beginner
805 Views

Using the latest non-beta Intel Graphics driver (version 4463) on Windows 10 64-bit on Intel(R) HD Graphics 520, when I specify to encode interlaced content using HEVC and setup mfcEncParams.mfx.FrameInfo.PicStruct to be MFX_PICSTRUCT_FIELD_TFF (2), after calling pEncode->Query(), it resets PicStruct to MFX_PICSTRUCT_PROGRESSIVE (1).  Even if I override this value after the call to Query() by setting it back to MFX_PICSTRUCT_FIELD_TFF, after calling pEncode->Init() and pEncode->GetVideoParam(), it still resets PicStruct to MFX_PICSTRUCT_PROGRESSIVE.  This is easily repeatable and can be demonstrated using the samples.  I've confirmed that it happens for both 480i and 1080i.  I don't know what the behavior was for earlier driver versions.

This behavior does not occur if I use H.264 instead of HEVC.  If I use H.264, it does not reset PicStruct to MFX_PICSTRUCT_PROGRESSIVE after calling pEncode->Query().

So, the question is, does Skylake HEVC encoding actually support interlaced content?  Even with the resetting of PicStruct to MFX_PICSTRUCT_PROGRESSIVE, it somehow works for 1080i, but it is possible that the reason I've experience low quality with motion with 1080i is due to the fact that it is actually encoding the video as progressive, not interlaced.  There is nothing in the release notes about such a limitation in Skylake HEVC encoding, so perhaps it is a bug that can be fixed fairly quickly.

0 Kudos
7 Replies
Surbhi_M_Intel
Employee
805 Views

Aaron, 

Apologies for delayed response. Are you adding Deinterlacer to sample? Sample_encode doesn't add VPP deinterlacer in the pipeline.
Checking on the vpp output behavior now. 

-Surbhi

 

0 Kudos
AaronL
Beginner
805 Views

This has nothing to do with VPP and I never mentioned VPP in the post.  This has nothing to do with deinterlacing, which I also didn't mention.  The post has to do with encoding interlaced video using Skylake HEVC encoding and that is all.  And, it appears that it doesn't work, or rather, it doesn't actually encode an interlaced video frame as interlaced content and instead does so as progressive.  If this is the case, and it appears to be so, it is very clearly a significant bug.

The bug can easily be verified by setting up the encoder to use MFX_PICSTRUCT_FIELD_TFF and seeing what happens after returning from the call to Query().  But, I'm not really saying anything new here that I didn't already say in the post.

Thanks, Aaron

0 Kudos
Surbhi_M_Intel
Employee
805 Views

Aaron - Sorry I misunderstood the question before. I was able to reproduce the issue, yes HEVC should support interlaced content and shouldn't change to progressive content. I will speak to the driver team and get back to you on this. 

-Surbhi
 

0 Kudos
Surbhi_M_Intel
Employee
805 Views

Hi Aaron, 

After discussing with the dev team, we have not enabled interlaced support for hevc hw implementation. Reason being we didn't have strong requirement. Is this feature critical for your product development? and the priority? Can you please provide us brief justification of your requirement so that I can put this as a feature request and dev team can prioritize accordingly. 

Thanks,
Surbhi

0 Kudos
AaronL
Beginner
805 Views

This is the kind of information that needs to be made available to customers and not 9 months after Skylake HEVC support was enabled in the Intel Media SDK.  In the release notes, it talks about a number of limitations for HEVC, but there is no mention of the fact that interlaced video is not supported.  I guess the sad thing is that I'm not surprised.

Now, are you saying that HW HEVC doesn't support interlaced video at all or that it isn't currently enabled?  This distinction is important.  Because, I would guess that QuickSync support is already baked in for Kaby Lake and possibly even for Cannonlake.  So, I want to know if support for interlaced video is basically not going to be available except in H.264 for at least the next few years.

As far as there being a strong requirement, I'd say that the fact that many television stations broadcast using 1080i59.94 is a plenty strong requirement.  1080i and interlaced video in general aren't going away any time soon in television broadcasting.  There is a list of national US TV stations that broadcast in HD at https://en.wikipedia.org/wiki/High-definition_television_in_the_United_States .  As can be seen, there is a mix of stations using 720p and 1080i, with the mix favoring 1080i.  And, this doesn't include any of the many local TV markets, and there is a mix of 1080i and 720p in local TV stations as well.

In theory, I could use VPP to de-interlace prior to encoding, but if a TV station must output as 1080i, that means I have to re-interlace the video after decoding, and VPP doesn't have re-interlacing support, so I would have to roll my own re-interlacing solution.

0 Kudos
Surbhi_M_Intel
Employee
805 Views

Hi Aaron,

Let me clarify that this feature hasn't been enable at API/driver level not that it is not supported by the hardware. Hope this message clarifies that. I can't commit how long it can take to add this feature in but definitely if there is a requirement by the customer, we are happy to take feature request and do internal evaluation and get back to you by when we can enable it.  

Definitely we missed in our release notes, thanks for pointing that out. Should have been much clearer there. We will fix that. 

Yes, we are aware of the TV stations requirement in broadcasting industry for interlaced content but as you know many of them still using H264 and making slow transition to HEVC, that's why we are open to enable it in coming releases. But till now we didn't see this as a show stopper requirement for Media SDK last couple of releases from our customer base.  

Again, I am happy to report your feedback and discuss the prioritization with the stakeholders. 

Thanks,
Surbhi

0 Kudos
Fedor_B_
Beginner
805 Views

Yes, we are aware of the TV stations requirement in broadcasting industry for interlaced content but as you know many of them still using H264 and making slow transition to HEVC, that's why we are open to enable it in coming releases. But till now we didn't see this as a show stopper requirement for Media SDK last couple of releases from our customer base.

Hello Subrbhi. I'm from Elecard company - developer of a professional software-defined video transcoder based on Media SDK. Since beginning of 2017, we receive massive requests from Korean TV stations, broadcasters and their system integrator companies to have HEVC Interlace encoding functionality as a part of Elecard tools. Those leads are testing now hardware-based equipment from Harmonic and others, because we are not able to provide Intel-based solution. You're losing the market, we're losing the customers. How can we make it work? Should we initiate another conversation with Elecard team and Intel where we can exchange more details on this including names and whatever can help Intel to understand the need? Thank you.

0 Kudos
Reply