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.
- 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+.
- 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)