We tried with HW. Apart from using the direct tools in Media SDK, there is also now Intel QSV integration over Intel Media SDK in FFmpeg open source project. We tried that either and couldnt achieve 50 fps in HEVC 4K resolution.
We will be glad if you can share your ideas how to achieve this target on Skylake.
It may not be possible to do this on Skylake with HW HEVC encoding. In my software, the best I can currently do is 3840x2160p24 (this is technically UltraHD, not 4K), but I think I can get up to 30 fps with some changes to my software. And this is on fastest encoding quality. I've found that balanced encoding quality is generally too slow for anything above 1080p30 if you want real-time encoding.
It is highly doubtful that the hardware and underlying software and driver can keep up with any faster frame rates in real-time. I've used Concurrency Visualizer to see what is going on, and when encoding at a quality level and/or frame rate that Skylake HEVC can't handle, you can see the impact of this on one of the Media SDK threads, and the thread quickly gets bogged down by I/O operations, I/O operations that take longer than the time gap between video frames. This may be caused by a limitation of the hardware, but it also may be caused by software inefficiencies.
Things that might help:
- Improved graphics driver (maybe, and this is something that depends on Intel)
- Using a Skylake processor with a higher end version of Intel graphics components, perhaps one that is faster, has more video memory, and has more processing units
- Building a 64-bit executable instead of a 32-bit executable
- More and faster system memory
- Use video memory instead of system memory