I am little confused about the encoding performance of the Intel HD 4600:
I am encoding to H.264 using the following settings from a 1080i50 YUV file from a SSD which can read 122fps max:
- Interlaced TFF
- 8,5 MBit CBR
- Closed GOP, M=4, N=24
- Best Quality Profile
When encoding one file I am getting 47fps.
When encoding 2 files in parallel I am getting 35 fps on each file -> 70fps in total
With 3 files I am getting 24fps on each -> 70fps in total again
I have tried changing the AsyncDepth parameter but it has only little influence on the encoding speed.
Why encoding 2 files simultanios results in a better total performance?
And the LimeVideoBenchmarkTool it shows 300+ FPS for 1080p BEST_QUALITY...
Is there something wrong in the sample_encode example, or why do I get such strange results?
To capture benchmarks that accurately reflect the HW acceleration performance only I strongly suggest you try to remove the large overhead which is tied to reading or writing raw frame data form the file system.
But in general it is not uncommon or surprising to see better overall performance when running two or more workloads vs. running only one. This is due to the nature of Intel Turbo boost technology, which has the ability to increase the processor frequency for heavy load scenarios.
The Limewire tool is not an Intel tool, so we cannot comment on those benchmarks or tool behavior.
the Filesystem is not the limiting factor here. FFMPEG can read 122 fps from this file. Also encoding on Linux from a RAM disk shows the same results...
Are this 70 fps the hardware limit of QuickSync?
the performance depend on many things such as the HW platform, encoder configuration, the memory type (sysmem vs. gfx mem) etc. so it is not possible to provide specific benchmark goals for all possible workloads and configurations. However, ~70fps does not sound at all unreasonable for the workload you describe, but I suggest you experiment with various configurations. If you have not explored it already, the Media SDK Tutorial provides details on how to achieve optimal performance for a range of workloads.