Per my previous post, changing the Citrix HDX Thinwire Encoder on the fly, we can test the performance differences in the different encoder’s Citrix provides. I have done so by running through a demo of the Uniengine Heaven benchmark. The demo is exactly 4 minutes and 20 seconds long. I did a perfmon trace of the CPU %, total bytes sent in MBits/sec and the Thinwire Output in MBit/sec.
Time for some results!
Compatibility Mode (Encoder 0x0)
DeepCompressionV2Encoder (Encoder 0x1)
DeepCompressionEncoder (Encoder 0x2)
(Rollover the mouse on the next images to compare graphs)
CompatibilityMode vs DeepCompressionV2Encoder
CompatibilityMode vs DeepCompressionEncoder
DeepCompressionV2Encoder vs DeepCompressionEncoder
The cumulative totals should help us get an understanding of the differences between the encoders:
CPU Total
ThinWire Total
Network Total (Mbytes)
DeepCompressionEncoder
5531.00
3693.28
540.51
DeepCompressionV2Encoder
5621.67
3684.75
539.74
CompatibilityMode
4197.54
3690.58
553.21
CPU Total
ThinWire Total
Network Total (Mbytes)
DeepCompressionEncoder
98.4%
100.0%
97.7%
DeepCompressionV2Encoder
100.0%
99.8%
97.6%
CompatibilityMode
74.7%
99.9%
100.0%
Interestingly, CompatibilityMode uses 25% less CPU then either DeepCompression Encoder. From what I see though the frames per second appears less for CompatibilityMode then the other two.
Encoder = 2 is Pure H.264 (YUV 4:2:0). As with most vendors this is H.264 4:2:0 format, it’s designed for a balance of quality and bandwidth primarily on video and high-bandwidth CAD parts (not much text). This is used by the HDX 3D Pro VDA.
Encoder = 1 is H.264+lossless text. This is used by default by the XenDesktop standard VDA and XenApp VDA.
The cool thing about these encoders is you can modify their values *on the fly* and it will take place immediately in your Citrix session. This video I made demonstrates this. I ran a 3D benchmark application and modified the encoder’s on the fly. I zoomed into the FPS counter and put this in the bottom left corner as the text with moving images shows much better the difference in the encoders. Without a doubt, the CompatibilityEncoder has the worst quality of all the encoders when it comes to video/moving images/3D/gaming.
Try to watch it in 1080p for maximum quality.
To change the encoder, you need to add/modify a registry key at HKLM\Software\Citrix\Graphics. The type is DWORD32 named “Encoder” and the value is 0x0 to 0x2, depending on the encoder you want to try and use.
All testing was done with XenApp 7.6 on my home built lab.