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 ?
- Development Tools
- Intel® Media SDK
- Intel® Media Server Studio
- Media Processing
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.
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.
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？
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:
When you say "ffmpeg + vaapi", did you refer to this web page?
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 ?
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)
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?
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: 188.8.131.52109-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:
The key part of this FFmpeg installation is to install Media Server Studio first, let me know if you need any help on this.
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:
you can refer to theURL for more information:
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 ?
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.
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.
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.
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?
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.