Citrix HDX Just Got Smarter...Again

By Nick Rintalan posted 09-22-2016 06:07 AM


Let’s talk about one of my favorite subjects again – codecs.  If you haven’t had a chance to check out my BriForum session yet where we looked at the leading display protocols and graphics codecs, Gabe Knuth wrote a nice summary article about it just a couple days ago.  So either download the deck or check out Gabe’s article first.  But one of the things I was really on my soap box about in London was the fact that our default graphics codec in XA/XD 7.x was H264.  Why?  Because it’s a pig in terms of CPU cycles and can really reduce Single Server Scalability (SSS) or density.  And honestly, H264 is just not the right choice for typical XA apps or average XD workloads.  Sure, it might provide better quality for video or those intensive 3D apps where bandwidth is an issue, but you REALLY pay a price.  So I was telling everyone to turn off H264 and to enable our revamped Thinwire protocol (i.e. “Thinwire Plus” or TW+ from here on out).  Because TW+ provides the best of both worlds – a solid UX with minimal bandwidth & CPU cycles.  I think it’s the most balanced protocol we’ve ever built and that’s saying something since we started this protocol adventure two decades ago.

Fast forward to 3 months ago (late June 2016) and we shipped version 7.9.  And we did something awesome – we switched the default from H264 to TW+.  All is well in the world again.

But we didn’t actually enable a policy or anything that says “Enable Thinwire+”.  We changed the now infamous Use video codec for compression HDX policy to Use video codec when preferred.  And we noted in the documentation that this allows the system to make the best decision based on various factors or the given scenario.  And we also noted that the “results may vary between versions as the selection method is enhanced”. 

That last part is important.  I’ll do my best to explain.  We just shipped version 7.11 last week and we essentially changed the mapping of Use video codec when preferred = Thinwire+ to Use video codec when preferred = Thinwire+ with Selective H264.  So now you’re probably wondering what the heck Selective H264 is. 

Stay with me for a minute.  Remember when we introduced “Adaptive Display” in XD 5.5 or XA 6.5 HRP1 back in the day?  It was essentially the smart successor to Progressive Display if you remember that.  Well, with Selective H264 in version 7.11, we’re putting some smarts back in the protocol and making HDX adaptive again (it was actually already adaptive but we’re just taking it a step further).  Because we noticed something over the last year – TW+ is really awesome for 80% of the use cases and apps out there as I mentioned earlier.  But it can struggle a bit (compared with H264) for those heavy graphical workloads, dynamic content or video – basically the other 20%.  Especially in lower-bandwidth scenarios.  So we combined the best of both worlds and Selective H264 was born.  This new default setting in 7.11 will use TW+ for anything static on the screen, such as text or still images.  But if HDX senses or detects that there is dynamic content or video, it will apply H264 to just that portion of the screen.  It selectively applies H264 to those regions, providing higher quality in bandwidth-constrained scenarios and better overall UX. 

So this is pretty cool.  But are there any gotchas?  Two. 

  1. In addition to 7.11, you need to upgrade your Receivers. We only support Selective H264 on Windows and Linux (version 4.5 and 13.4, respectively).  If you don’t have the latest Receivers, then you’ll fallback to TW+.
  2. You might want to consider disabling Selective H264 in certain scenarios.

What?!?  I know, I know…I just told you how awesome TW+ with Selective H264 was and that it’s the new default setting in 7.11.  But it’s my duty to inform you that it’s probably not the best choice for LAN scenarios where bandwidth is plentiful.  Why?  Because H264 is a CPU hog as I mentioned earlier (and was screaming from the mountain tops in London), no matter how small the region is.  It’s just not worth it in those scenarios to take the scalability hit for a slight quality improvement.  So we’re recommending to reserve Selective H264 for those restricted bandwidth scenarios or where UX is simply more important than scalability.  After all, it’s all about trade-offs and everyone values things differently.  I just think you get the best bang for your buck when you leverage straight TW+ across the board.

In order to disable Selective H264, simply change the policy to “Do not use video codec”.  Want to force the use of Selective H264?  Simply change to the new option called “For actively changing regions” as show in the following screenshot.


Lastly, for 3D Pro installs, we’ve left the default mode as full-screen H.264 and not TW+ (with or without Selective H.264) – for now. Why?  We figured that interactivity is king and these installs are going to target intensive workloads on a WAN which H.264 is great at handling.

I know what you’re thinking – it’s a bummer we still have to tweak this.  But not to worry since help is on the way.  Remember that note that says results may vary between versions as the selection method is enhanced?  Well, HDX is going to keep getting smarter.  And instead of you (the IT Admin or Architect) determining what a high vs. low bandwidth scenario is, we’ll make that determination for you and apply the best protocol or codec based on what’s on the screen.  No need to keep fiddling with these HDX policies – super-duper adaptive display on steroids will be coming to a store near you soon.  So hang in there and I hope this guidance helps in the meantime.


Nick Rintalan, Lead Architect – Americas, Citrix Consulting Services (CCS)


09-27-2016 04:36 AM

NVENC hardware encoding

Nick, thanks for this great article!

We’ve been using ThinWire Plus from day one, and it’s indeed really great! The new setting "For actively changing regions" sounds really great but I suppose for Nvidia GRID enabled VDI’s it’s still better to avoid this new setting and completely disable or enable H264 (depending on the LAN/WAN scenario) as the new setting is not supported with the new NVENC hardware encoding which is also released in 7.11 as this gives other incredible benefits?



09-27-2016 01:38 AM

nice summary

Nice summary, as always, Nick. The new and enhanced features do make things much more complicated, so requiring less human intervention is a good direction to go. You are correct that the direction has been towards letting the connected components figure out on their own what works best and that the end user pretty much should just have a say what the minimum quality should be and leave the rest up to the components involved to work it out. The differential treatment of regions, depending on the nature of the video content, is a great addition!

09-25-2016 02:41 AM

Great new features!

Hi Nick, great article about an amazing new feature in XenDesktop 7.11.

One thing I'm struggling with is that for end users I'd like to keep the user experience pretty much similar wherever they are. By switching from T+ internally to H264 remote user experience may be just a bit different. Display quality and "snappieness". Therefor I'd opt for using selective at all times. This would also makes sense in a time where the datacenter is almost always remote and bandwidth is or will become a concern anyway.

09-24-2016 04:56 PM

Thank you for breaking this down.

This is great, Thanks for explaining this. I will be testing this soon.


09-22-2016 10:09 AM


Thanks for sharing. Can't wait to see this in play and see if it can strike a good balance between usability and scalability ;-)