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.

skylake platform decode hevc - 4800x3840 picture falied

zhou__Anne
Beginner
1,161 Views

as the title described,  I tryed to decode a hevc stream(resolution 4800x3840) larger than 4k size on skylake platform , by using ffmpeg + vaapi , only the left upper corner of the picture is decoded correctly,  the other most areas of the picture is purely green, it seems that gpu hw decoder doesnt decode. My question is whether the skylake support decoding hevc pictures larger than 4k ?  and whether vaapi support decoding hevc pictures larger than 4k ? 

0 Kudos
12 Replies
Mark_L_Intel1
Moderator
1,161 Views

Hi Anne,

It should support this resolution, according to the following release note, HEVC decoder should support up to 8192x8192, I think there is something else wrong. And in case of no support, the error should happen at the configuration time and will not allow the decoding process executed.

https://software.intel.com/sites/default/files/managed/e7/e4/media_server_studio_sdk_release_notes-linux.pdf

One thing you can try is to use sample_decode of the sample code, if sample_decode has the same problem, this means the issue happens in the Media SDK library, if it doesn't have the problem, it should happen in ffmpeg layer.

Mark

0 Kudos
zhou__Anne
Beginner
1,161 Views

Hi Mark,

Thanks for the reply, i have taken a test by using mediasdk, it is verified that Hevc decoder can support up  to 8k. but at the meantime, ffmpeg soft decoder(without vaapi) can decoder 4800x3840 video too.  does it mean that vaapi layer has some bugs?   or i need to used the specific version of the vaapi libarary, if so, which version is suitable?

0 Kudos
Mark_L_Intel1
Moderator
1,161 Views

Hi Anne,

You can either use QSV plugin or Intel FFmpeg plugin to enable the hardware acceleration, this should solve the problem.

For QSV plugin, you can refer to this article: https://software.intel.com/en-us/articles/accessing-intel-media-server-studio-for-linux-codecs-with-ffmpeg

For Intel FFMpeg plugin, you can refer to this GitHub project:

https://github.com/Intel-FFmpeg-Plugin/Intel_FFmpeg_plugins

When you say "ffmpeg + vaapi", did you refer to this web page?

https://trac.ffmpeg.org/wiki/Hardware/QuickSync

Mark

0 Kudos
zhou__Anne
Beginner
1,161 Views

Hi Mark,

The "ffmpeg + vaapi" I mentioned above  is just as you say, I use the vaapi to do the HW Accelerator things. with this ffmpeg + vaapi framework, those hevc videos smaller than 4k can be decoded successfully, but once the resolutions is larger than 4k, the decode options would cause gpu hang. my vaapi version is 1.8.0, i have a idea that may the 1.8.0 vaapi doesnt support 4k larger video?  i have looked up the vaapi documents , but found nothing about the related performance , could you help to figure it out ?

thank you

0 Kudos
Mark_L_Intel1
Moderator
1,161 Views

Hi Anne,

The problem is not VAAPI, the problem is driver. In the path you tried, can you tell if it uses i965 or i915 driver?

i915 or iHD driver should be able to do over 4k resolution, if you are using i965, you have to following the document I mentioned above to enable i915(iHD)

Mark Liu

0 Kudos
zhou__Anne
Beginner
1,161 Views

Hi Mark,

The whole framework I used is ffmpeg(version:2.6.2) + libva(version:1.8.0) + intel-vaapi-driver(version:1.8.0) + linux kernel(version:4.4.77)

the linux kernel driver i used is "drivers/gpu/drm/i915", does this is the i915 driver you refer to?  now i have doubt about the kernel version or the intel-vaapi-driver version, how do you think about it?

0 Kudos
Mark_L_Intel1
Moderator
1,161 Views

Hi Anne,

Although you can see this driver, you are probably not using i915. If you want to use i915 during runtime, you have to patch the kernel and re-build it during the installation of Media Server Studio.

So you will expect following output if you use command "vainfo" to validate the MSS installation:

$ vainfo
libva info: VA-API version 0.99.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'iHD'
libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so
libva info: Found init function __vaDriverInit_0_32
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.99 (libva 1.67.0.pre1)
vainfo: Driver version: 16.4.4.47109-ubit
vainfo: Supported profile and entrypoints
      VAProfileH264Baseline           : VAEntrypointEncSlice
......

In this case, VAAPI version is not very important, the important is loading iHD_drv_video.so, this is the user mode driver of i915.

I have give you the following article to describe how to install ffmpeg with the Media Server Studio:

https://software.intel.com/en-us/articles/accessing-intel-media-server-studio-for-linux-codecs-with-ffmpeg

The key part of this FFmpeg installation is to install Media Server Studio first, let me know if you need any help on this.

Mark

0 Kudos
zhou__Anne
Beginner
1,161 Views

Hi Mark,

I do not install mediasdk, but use the intel-vaapi-driver to build i965_drv_video.so, it the backend implementation of vaapi. As it is described:

#Intel-vaapi-driver Project

VA-API (Video Acceleration API) user mode driver for Intel GEN Graphics family

VA-API is an open-source library and API specification, which provides access to graphics hardware acceleration capabilities for video processing. It consists of a main library and driver-specific acceleration backends for each supported hardware vendor.

The current video driver backend provides a bridge to the GEN GPUs through the packaging of buffers and commands to be sent to the i915 driver for exercising both hardware and shader functionality for video decode, encode, and processing.

you can refer to theURL for more information:

https://github.com/intel/intel-vaapi-driver

I think it is the user mode driver of i915 you pointed above,   intel-vaapi-driver is a open source library ,  i wonder how to get "iHD_drv_video.so" ? is it also a opensource library  or a closed source ?

0 Kudos
Mark_L_Intel1
Moderator
1,161 Views

Hi Anne,

i915 was closed source but it started open source from the end of last year.

When it closed source, it only supports certain kernel version, it should support kernel above 4.14.15 above if you build the media stack from open source.

To get i915, you must install Media Server Studio in Linux or Media SDK in Windows. You can either install the release or build it by yourself.

Mark

0 Kudos
zhou__Anne
Beginner
1,161 Views

Hi Mark,

I have some questions to confirm:

1. the open source distributed in the end of last year you mentioned is this below?

The Intel(R) Media Driver for VAAPI is a new VA-API (Video Acceleration API) user mode driver supporting hardware accelerated decoding, encoding, and video post processing for GEN based graphics hardware.

https://github.com/intel/media-driver

 

or Intel® Media SDK

Intel® Media SDK provides an API to access hardware-accelerated video decode, encode and filtering on Intel® platforms with integrated graphics.

https://github.com/Intel-Media-SDK/MediaSDK#how-to-build

2.  if the intel Media Driver for VAAPI is the one you sayed,  i have to install the 4.14.15 version linux to match this intel Media Driver?

 

 

0 Kudos
Mark_L_Intel1
Moderator
1,161 Views

Hi Anne,

Here are answers:

#1, What I meant is media-driver, actually the whole media stack include Media SDK, VAAPI, media-driver, kernel, you can refer to the first diagram of the article.

#2. Yes, you need any kernel version from 4.14.15 above.

Mark

0 Kudos
zhou__Anne
Beginner
1,161 Views

Hi Mark,

Really thank you for your reply, it does help me a lot. I am going to transplant media-driver to my framework , and take a look at its effort.  

0 Kudos
Reply