Chromecast vs Apple TV

I have an Apple TV 3. Recently a friend of mine gave me a Chromecast to try out. After playing with it for a while, I think I could share my experience and compare the two devices from a geek's perspective.

Hardware

On the hardware side, Chromecast beats Apple TV 3 hand down. Chromecast is about the size of a large USB stick. It plugs directly into HDMI port on the TV and it's powered by USB. On newer flat TVs there is usually a USB port near the HDMI port, so you can use that to power the Chromecast and skip the original power supply altogether with the mess of power cords. I plugged it that way, and now it is completely hidden on the back of my TV.

Apple TV 3 is a much bigger set-top box. The use of a slim, sexy aluminum, but unfortunately IR remote requires the box to be visible to the user in direct line of sight, otherwise IR control signals would not reach the box properly. Additionally, Apple TV 3 has a tiny white LED dot which is illuminated when the device is on, possibly to guide users to point the remote control at the device for better signal reception. However, the light shed through the LED could be rather distracting when you watch movies in a dark room.

The genius of Chromecast's plug-in design is that it avoids the need for an HDMI cable. The HDMI cable scam is beyond crazy at traditional outlets like BestBuy, where the price of a 6-foot HDMI cable is in the range of $30~$60, and the even crazier, gold-coated ones can set you back over $80. Geeks like me know how to get a decent cable from eBay for a couple of bucks, but ordinary people might not know about this and get royally screwed over by the sales people.

The official price of an Apple TV 3 is $99, but the cheapest HDMI cable you can order together with it on Apple.com is $19. That adds up to $118. For comparison, a Chromecast costs just $35 and there is no need for any extra cable.

If anything, the form factor and price of Chromecast is what Apple TV should be.

Initial Setup

Since Chromecast does not come with a remote, initial setup has to be done on a computer or a smartphone with a Google-supplied app. The process is pretty straightforward for geeks, but I could image it might very well confuse ordinary folks by switching the wireless network of the computer/phone during the setup.

For comparison, the initial setup of Apple TV 3 is straightforward but very annoying in another way. The remote came with Apple TV has only a 5-way navigation control plus two buttons for confirmation/cancelation. It relies on a on-screen keyboard to input texts and passwords. My Wi-Fi password is over 20 characters long and of mixed digits, letters and symbols. It's difficult and frustrating to input that password using the remote.

Luckily, since software update version 5.2, you can connect a Bluetooth keyboard to the Apple TV, and typing longer texts and passwords is much easier. Still, tying a rather expensive Bluetooth keyboard to the Apple TV seems to be pointless after the initial setup, since you could control it using a free iPhone app from Apple over Wi-Fi.

Rumors are that in iOS 7 we might be able to setup Apple TV by an iPhone/iPad directly using Bluetooth. It would be awesome if Apple could also allow controlling the Apple TV by iPhone/iPad over Bluetooth. Bluetooth does not require direct line of sight, and it might be possible for next generation Apple TV to adopt similar designs to Chromecast to be completely hidden.

Speaking of Wi-Fi, Chromecast only supports 2.4 GHz wireless. In crowded urban areas with lots of Wi-Fi traffic around, transmission might become an issue. Apple TV additionally supports 5 GHz, which is much more resilient to interferences.

Controlling TV

I've always wanted to get rid of the stupid remote control of my TV. It has a huge number of buttons I barely use (I'm a cable cutter for years), and every time I have to look down in darkness to find the right one to click. I'd rather just use the slim remote of the Apple TV, or even skip remotes altogether and use my iPhone to control the TV.

But I can't. I need the TV remote to turn it on, switch input sources (I have two HDMI devices now that I have a Chromecast), and adjust sound volume. I've been wondering if there is anyway to control the TV from a connected HDMI device?

Turns out the HDMI specification has this little known feature called Consumer Electronics Control (CEC) which does exactly that. Problem solved, right? So I was pretty excited when I learned that Chromecast supports HDMI-CEC and several people reported success automatically turning on their TV using Chromecast.

Except that it doesn't.

Apparently the marketing departments of TV manufactures decided to show off their creativity by custom branding HDMI-CEC in their own stupid and confusing terms: Samsung calls it Anynet+; Sharp calls it Aquos Link; Sony calls it BRAVIA Link/Sync; LG calls it SimpLink; Philips calls it EasyLink; and so on and on.

The end result is it totally murdered interoperability: Chromecast can do absolutely nothing to control my 2012 Samsung TV. What a bummer.

Content

As of now you can only playback content from very limited sources (YouTube, Netflix, Google Play) on the Chromecast. Apple TV has fantastic support for YouTube and Netflix, and I don't use Google Play at all. So the usefulness of Chromecast to me is nearly zero.

Unlike AirPlay, Google Cast is not system-level API. Content providers have to explicitly change their websites/apps in order to support playback on Chromecast. That means adoption of Chromecast is at the mercy of the often user-hostile content providers.

AirPlay is much, much better in this regard. Especially on iOS where AirPlay is deeply integrated, most content can be AirPlay'ed to Apple TV or other AirPlay-compatible devices without content providers doing any extra work. In fact, content providers have to explicitly disable AirPlay if they do not want to support it.

The difference magnifies significantly when you want to playback local media. I have a Network Attached Storage device to store personal videos, and I've made a very simple webapp (basically a list of video files with mobile-friendly CSS stylesheets) to access it. I can visit that webapp using the browser on my iPhone, then choose a video file to play. Once the playback starts, I click the AirPlay button to send the video to the Apple TV. Then I can lock my phone and enjoy the video on the bigger TV screen: the video is streamed from the NAS device to Apple TV directly, and only tiny amount of playback control data is sent to my phone so that I can jump around.

There's much more work involved to achieve similar result on Chromecast. I have to register a developer account and whitelist my Chromecast device, then write a dedicated Chrome/iOS/Android app to control it. Worse still, Google just banned the playback of local media in recent software update.

I'm not sure how Google will push forward on the content front. Based on their track record with content providers in the now dead Google TV project, I'm very skeptical. Apple seems to be miles ahead of Google on the content race. Recent software updates to Apple TV adds several interesting channels and future progress seems to be on track. Maybe they did crack the TV problem.

Mirroring

Another important feature of Chromecast is Chrome Tab Cast. Essentially it mirrors the content of a Chrome Tab and displays it on the TV, which is similar to AirPlay Mirroring. The difference is that AirPlay Mirroring sends the entire screen of OS X/iOS to the TV, which I found is much more useful.

The latency of Chromecast mirroring is rather high, thus it's not suitable for interactive usage. The latency of AirPlay mirroring is much lower, and in most cases you probably would not notice. That's probably why in the coming OS X 10.9 Mavericks Apple dares to support using AirPlay to make your TV an extended screen of the desktop.

The root cause of the difference in latency between Chromecast and AirPlay mirroring seems to be a performance one. Chromecast mirroring uses Google's VP8 video codec, while AirPlay uses the industrial standard H.264. The devices I tested on all have hardware-accelerated H.264 encoding, but not for VP8. On my Retina MacBook Pro with Core i7 2.6 GHz CPU, the additional CPU load introduced by Chromecast mirroring is around 40% when choosing the highest setting (720p with bit-rate at around 6 Mbps), while the additional CPU load introduced by AirPlay mirroring is barely noticeable when outputting 1080p video with bit-rate at around 10 Mbps.

On mobile devices with weaker processors, it's infeasible to mirror without hardware-accelerated video encoding. Only very recent ARM processors come with hardware support for VP8, and I doubt that's the one of the reasons that you cannot mirror to Chromecast from a mobile device right now.

Conclusion

Overall I think Chromecast is an interesting little device with lots of potentials. It has clearly better hardware design than Apple's current offering, but the software and content are far behind.

Without deep system-level integration it can't compete with AirPlay on OS X and iOS. Google intends to make it work well with Chrome, so maybe things could get better over time. The choice of using VP8 without proper hardware support is debatable but understandable since Google is pushing VP8 hard on all its other properties like YouTube and Google Hangouts. The content problem, though, is a much tougher nut to crack given the current design, and it's not clear how Google can fix that.