Just a small tool here to try a few of a popular resolutions and measure video encoding latency. The encoder is running in configuration to address needs of real-time encoding with speed over quality setup.
Note that the performance might be affected by side load, such as graphics application (I often use this application for my needs with parameters that produce higher or lower GPU load). Also, the application itself is using Direct2D to generate actual input video frames so this activity also has certain impact, presumably low enough due to primitive operations, yet still.
The main point here is to measure the latency in first place for a particular piece of hardware, see how things possibly improve with driver updates, and how codecs compare one to the other and what is the effect of the resolution choice. Also, the question is whether the encoder is fast enough to process data real-time in first place.
The application keeps drawing a simple chart and then the same data is fed into encoder. The application writes raw elementary stream into .H264 and .H265 files respectively (use Media Player Classic to play them out), also saves last frame as a .PNG file.
You will need to let the application run for a bit because it attempt to encode 30 seconds for every resolution. Finally there also is a summary printout (also also the app would share the summary with a Telegram bot).
Below, for example, are results with my Radeon RX 570 Series video card in development machine.
C:\>AmaEncode
DXGI_ADAPTER_DESC1.Description: Radeon RX 570 Series
Video: 1280 x 720, 32-bit RGB, 60.00 frames per second, 30 seconds
File: C:\20200421-151329-1280x720@60.h264
Average Encoding Time: 6.32 ms
Elapsed Time: 30.0 seconds (100.05% to expected)
Video: 1280 x 720, 32-bit RGB, 120.00 frames per second, 30 seconds
File: C:\20200421-151359-1280x720@120.h264
Average Encoding Time: 6.26 ms
Elapsed Time: 30.0 seconds (100.08% to expected)
Video: 1920 x 1080, 32-bit RGB, 60.00 frames per second, 30 seconds
File: C:\20200421-151429-1920x1080@60.h264
Average Encoding Time: 10.64 ms
Elapsed Time: 30.0 seconds (100.16% to expected)
[...]
Video: 3840 x 2160, 32-bit RGB, 30.00 frames per second, 30 seconds
File: C:\20200421-151846-3840x2160@30.h264
Average Encoding Time: 36.38 ms
Elapsed Time: 30.1 seconds (100.34% to expected)
[...]
1280x720@60 6.32
1280x720@120 6.26
1920x1080@60 10.64
1920x1080@72 10.60
1920x1080@90 10.88
1920x1080@120 12.35
1920x1080@144 FAIL
2560x1440@60 17.46
2560x1440@72 215.39
2560x1440@90 FAIL
3840x2160@30 36.38
3840x2160@60 FAIL
Video: 1280 x 720, 32-bit RGB, 60.00 frames per second, 30 seconds
File: C:\20200421-152014-1280x720@60.h265
Average Encoding Time: 6.25 ms
Elapsed Time: 30.0 seconds (100.06% to expected)
[...]
Video: 3840 x 2160, 32-bit RGB, 30.00 frames per second, 30 seconds
File: C:\20200421-152521-3840x2160@30.h265
Average Encoding Time: 31.29 ms
Elapsed Time: 30.1 seconds (100.33% to expected)
[...]
1280x720@60 6.25
1280x720@120 6.15
1920x1080@60 10.01
1920x1080@72 10.01
1920x1080@90 10.14
1920x1080@120 10.08
1920x1080@144 FAIL
2560x1440@60 15.71
2560x1440@72 15.91
2560x1440@90 FAIL
3840x2160@30 31.29
3840x2160@60 FAIL
Finalizing... results submitted
C:\>
AMD’s implementation here is a bit faster and more performant in the case of HEVC codec, compared to AVC. The numbers are close but as it can be seen H.265/HEVC can process 2560×1440@72. In the case of H.264/AVC encoding the encoder is choking – yet it can still process 2560×1440@60.
So, there will be a run for H.264 encoding, and then – if the hardware has a capable encoder of course – H.265/HEVC run.
And yeah, it’s AMD only (via AMF). NVIDIA goes next week.
On your marks!
Download links
Binaries:
- 64-bit: AmaEncode.exe (in .ZIP archive)
- License: This software is free to use