Further Reading

Google's Chromecast has followed a typical arc for a Google product: it was released with a limited-but-promising feature set, and it has since improved slowly but steadily thanks to a constant stream of minor updates. Today, Google finally opened its HDMI dongle all the way up, delivering a public software development kit that should enable any iOS, Android, or Chrome app developer to integrate Chromecast streaming directly. Just as iOS apps can use the AirPlay API to stream to the Apple TV, any developer who wants to can use Google's APIs to stream to Chromecast.

The company also released a list of user experience guidelines and a design checklist detailing some best practices and dictating what a developer must do to earn the "Google Cast Ready" branding. For example, any Google Cast-ready mobile app needs to include a Cast button at the top level of its UI, and that button should always be visible in a consistent location no matter what the user is doing.

To date, the only way to get content from your device to the Chromecast has been to use the Chrome browser or one of the relatively small number of apps that Google has given the green light (Netflix was the first, but others have since been added). Preview APIs were available in July of 2013 for developers who wanted to "experiment," but they were subject to change and not really intended for use in real apps. The new SDK is the first "official" release that's ready for public consumption.

Google has updated its Google Cast extension to version 14.123.1.2 to support the new SDK, and it has integrated the Google Cast Android API into version 4.2 of the Google Play services package for Android devices. Integrating the API into the Google Play Services package should give any device with Android 2.3 or higher the ability to stream to Chromecast using supported apps.

One matter of note is that instead of tying it to a separate jar/support library (like it appeared they would), they tied it to the Play Services. This means that where as before it was looking like I could give Chromecast support to Amazon devices, I now know that I cannot. I understand limiting access to all of their cloud services to only Google Android, but limiting a service that only deals with hardware that the user bought both peices of seems kind of petty to me.

They need to add MPEG2-TS in addition to h.264 so that you can cast television to it. The CPU supports MPEG2-TS decode, Google just didn't include it in their firmware.

For example you can put a Cable Card in a $99 HDHomerun right now and have three separate channels (tuners) as MPEG2-TS streams. My Samsung TV understands MPEG2-TS and can show these channels. These would be castable if Chromecast understood MPEG2-TS.

SiliconDust is trying to address this by building hardware that can transcode MPEG2-TS to h.264 on the fly, but that's not a very good solution. Transcoding takes extra hardware and distorts the signal. Much better to just fix Chromecast to under MPEG2-TS.

One matter of note is that instead of tying it to a separate jar/support library (like it appeared they would), they tied it to the Play Services. This means that where as before it was looking like I could give Chromecast support to Amazon devices, I now know that I cannot. I understand limiting access to all of their cloud services to only Google Android, but limiting a service that only deals with hardware that the user bought both peices of seems kind of petty to me.

Youre saying you shouldn't have to buy hardware?

Kindle has always been much more closed than Android. Not sure why you would expect differently now.

Kindle has always been much more closed than Android. Not sure why you would expect differently now.

I think you're misunderstanding.

Because it's a closed API, and because it's tied to Google Play Services, this cannot be used with an app that runs on a Kindle device, even if the same app has the feature on a Samsung Phone.

As an example, if Netflix implements Chromecast on their Android app, they cannot implement it on their Android app in the Amazon app store. Software features are now being fragmented for no reason besides who the hardware manufacturer is.

Another downside is that this will never come to Windows Phone. Since there's only 3 of them, it doesn't matter to most people, but unfortunately I'm one of them :'(

Kindle has always been much more closed than Android. Not sure why you would expect differently now.

I think you're misunderstanding.

Because it's a closed API, and because it's tied to Google Play Services, this cannot be used with an app that runs on a Kindle device, even if the same app has the feature on a Samsung Phone.

As an example, if Netflix implements Chromecast on their Android app, they cannot implement it on their Android app in the Amazon app store. Software features are now being fragmented for no reason besides who the hardware manufacturer is.

Actually Netflix has implemented Chromecast support on their Android app and it works on the Kindle as well, I guess you didn't actually try it out on a Kindle before complaining.

Kindle has always been much more closed than Android. Not sure why you would expect differently now.

I think you're misunderstanding.

Because it's a closed API, and because it's tied to Google Play Services, this cannot be used with an app that runs on a Kindle device, even if the same app has the feature on a Samsung Phone.

As an example, if Netflix implements Chromecast on their Android app, they cannot implement it on their Android app in the Amazon app store. Software features are now being fragmented for no reason besides who the hardware manufacturer is.

Actually Netflix has implemented Chromecast on their Android app and it works on the Kindle as well, I guess you didn't actually try it out on a Kindle before complaining.

Netflix has worked directly with Google on getting Chromecast support, and is linked against the previously available separate library. This change to having the Chromecast API as part of the Play Services framework just went live today. Of course a app that added Chromecast support two months ago would still work on Kindles. Now the main questions are:

1) Will Netflix continue to be able to have Chromecast support for Android without Play Services.2) Will only big players that get permission from Google be allowed to, or will everyone?

Amazon forked android on the kindle, and decided to include its own store instead of the google play store.You could not blame google for an amazon decision to remove standard android features.

I honestly don't understand what the point is that you think you are making, or why so many people seem to agree with it. Forget Kindle. This has not a single thing to do with Kindle. Kindle is merely the most visible consequence of Google's actions. Any Android device without the Google Play services will not work with this method. It has nothing to do with forking. This does not require the use of Google's cloud services. Chromecast is not a service that Google hosts. You buy the hardware (a ChromeCast), and you buy the only thing required to cast to the device. Google choose to implement this service in the Play Service framework anyways. The availability of the preview SDK proves that Google didn't need to do this. It worked fine as a separate library.

Just for good measure I again repeat, this has nothing to do with Kindle.

Kindle has always been much more closed than Android. Not sure why you would expect differently now.

I think you're misunderstanding.

Because it's a closed API, and because it's tied to Google Play Services, this cannot be used with an app that runs on a Kindle device, even if the same app has the feature on a Samsung Phone.

As an example, if Netflix implements Chromecast on their Android app, they cannot implement it on their Android app in the Amazon app store. Software features are now being fragmented for no reason besides who the hardware manufacturer is.

Actually Netflix has implemented Chromecast on their Android app and it works on the Kindle as well, I guess you didn't actually try it out on a Kindle before complaining.

Netflix has worked directly with Google on getting Chromecast support, and is linked against the previously available separate library. This change to having the Chromecast API as part of the Play Services framework just went live today. Of course a app that added Chromecast support two months ago would still work on Kindles. Now the main questions are:

1) Will Netflix continue to be able to have Chromecast support for Android without Play Services.2) Will only big players that get permission from Google be allowed to, or will everyone?

If I am not mistaken, it is Amazon that keeps Google Play Store off its devices. At least, the only way I've found to get GPS on my Kindle Fire would void the warranty.

Kindle has always been much more closed than Android. Not sure why you would expect differently now.

I think you're misunderstanding.

Because it's a closed API, and because it's tied to Google Play Services, this cannot be used with an app that runs on a Kindle device, even if the same app has the feature on a Samsung Phone.

As an example, if Netflix implements Chromecast on their Android app, they cannot implement it on their Android app in the Amazon app store. Software features are now being fragmented for no reason besides who the hardware manufacturer is.

Actually Netflix has implemented Chromecast on their Android app and it works on the Kindle as well, I guess you didn't actually try it out on a Kindle before complaining.

Netflix has worked directly with Google on getting Chromecast support, and is linked against the previously available separate library. This change to having the Chromecast API as part of the Play Services framework just went live today. Of course a app that added Chromecast support two months ago would still work on Kindles. Now the main questions are:

1) Will Netflix continue to be able to have Chromecast support for Android without Play Services.2) Will only big players that get permission from Google be allowed to, or will everyone?

If I am not mistaken, it is Amazon that keeps Google Play Store off its devices. At least, the only way I've found to get GPS on my Kindle Fire would void the warranty.

I think Google Play Services is the best place for it on android devices running google's framework. It means that you don't have to put a ton of bloat in each app and fixes can get immediately applied by google instead of making the app developers release another patch of their app anytime something changes.

You're implying that there aren't alternate means of getting to Chromecast, meaning that it would be impossible to run on something like Kindle. I'd have to see some sort of documentation that they aren't allowing third parties to implement. The fact that people can include the code in their iOS app makes me think that they will probably be releasing the necassary hooks to the public so that Amazon (and others) can either implement a centralized method like google play services or that app developers will be able to put it in non-google play services android apps.

One matter of note is that instead of tying it to a separate jar/support library (like it appeared they would), they tied it to the Play Services. This means that where as before it was looking like I could give Chromecast support to Amazon devices, I now know that I cannot. I understand limiting access to all of their cloud services to only Google Android, but limiting a service that only deals with hardware that the user bought both peices of seems kind of petty to me.

Just to play devils advocate for a sec...

It's not quite like that... You own the phone, and you own the dongle, but who owns the experience on the devices? With the functionality tied to Play Services, not only does Google have a direct path to force updates, to insure that you are up to date with any bug fixes related to it, it also ensures that the device is certified, since Google requires licensing and certification to include GAPPS. That means they can guarantee that the thing works as intended. If they just release the jar files, they can't really guarantee anything. For starters, they can't force updates in the store, because the user needs to allow the update. Secondly, Google would have no idea what else is included on the platform. It'll be like when Netflix first came to Android. It was trial and error as to a device was supported, and if the right stuff was included in the ROM, etc.

You can fork Android all you want, but you can't actually use the Android name, use GAPPS, etc without going through compatibility/licensing/certification/etc. This is why Kindle can't call their OS "Android", and is why many Android apps may work fine on it, they are not guaranteed to work.

Besides, what if the Chromecast SDK used Google Cloud Messaging to push notifications to the client endpoints that are controlling the stream? It would certainly simply things because why re-invent the wheel for things that are already in place, particularly since GCM is already optimized for low power. That means if the SDK requires GCM, it would require Play Services anyways, because that's where it's implemented.

Kindle has always been much more closed than Android. Not sure why you would expect differently now.

I think you're misunderstanding.

Because it's a closed API, and because it's tied to Google Play Services, this cannot be used with an app that runs on a Kindle device, even if the same app has the feature on a Samsung Phone.

As an example, if Netflix implements Chromecast on their Android app, they cannot implement it on their Android app in the Amazon app store. Software features are now being fragmented for no reason besides who the hardware manufacturer is.

Actually Netflix has implemented Chromecast on their Android app and it works on the Kindle as well, I guess you didn't actually try it out on a Kindle before complaining.

Netflix has worked directly with Google on getting Chromecast support, and is linked against the previously available separate library. This change to having the Chromecast API as part of the Play Services framework just went live today. Of course a app that added Chromecast support two months ago would still work on Kindles. Now the main questions are:

1) Will Netflix continue to be able to have Chromecast support for Android without Play Services.2) Will only big players that get permission from Google be allowed to, or will everyone?

If I am not mistaken, it is Amazon that keeps Google Play Store off its devices. At least, the only way I've found to get GPS on my Kindle Fire would void the warranty.

I think Google Play Services is the best place for it on android devices running google's framework. It means that you don't have to put a ton of bloat in each app and fixes can get immediately applied by google instead of making the app developers release another patch of their app anytime something changes.

Agreed.

Quote:

You're implying that there aren't alternate means of getting to Chromecast, meaning that it would be impossible to run on something like Kindle. I'd have to see some sort of documentation that they aren't allowing third parties to implement. The fact that people can include the code in their iOS app makes me think that they will probably be releasing the necassary hooks to the public so that Amazon (and others) can either implement a centralized method like google play services or that app developers will be able to put it in non-google play services android apps.

Me? No, I've stated that Amazon blocks Google Play Store (and various Google apps) from its Kindle line. Others have already noted, and I will echo now, that Netflix will cast from a Kindle Fire HDX. So will Pandora. (HBO Go won't, though.)

I'm implying that anyone who laments any loss of functionality on a Kindle should point the finger at Amazon - the device manufacturer who sees fit to block Google services whenever it sees fit.

Kindle has always been much more closed than Android. Not sure why you would expect differently now.

I think you're misunderstanding.

Because it's a closed API, and because it's tied to Google Play Services, this cannot be used with an app that runs on a Kindle device, even if the same app has the feature on a Samsung Phone.

As an example, if Netflix implements Chromecast on their Android app, they cannot implement it on their Android app in the Amazon app store. Software features are now being fragmented for no reason besides who the hardware manufacturer is.

Another downside is that this will never come to Windows Phone. Since there's only 3 of them, it doesn't matter to most people, but unfortunately I'm one of them :'(

I'm glad this has happened, I find casting a chrome tab to be unbearable for video but the Youtube app works well. I was considering an Apple TV but I think I'll wait and see what comes of this.

You need a pretty beefy CPU (Core i5 and up recommended) to stream HD in a tab. YouTube, Netflix, HBO Go, and any other native Chromecast app works quite differently, and grabs the video stream straight off the internet, with the phone or tablet only acting essentially as a remote control. The picture quality in those apps is OUTSTANDING! Hulu in particular, I find looks better on Chromacast than even the PS3!

One matter of note is that instead of tying it to a separate jar/support library (like it appeared they would), they tied it to the Play Services. This means that where as before it was looking like I could give Chromecast support to Amazon devices, I now know that I cannot. I understand limiting access to all of their cloud services to only Google Android, but limiting a service that only deals with hardware that the user bought both peices of seems kind of petty to me.

Pretty sure I've seen others comment that Play Services seems to be the way Android is moving to a model where OEM updates affect less and less the capabilities of your Android device. Meaning, the point of Play Services is to bring as much capability to your device as possible, regardless of whether the OEM still wants to support it with updates.

This also means that client apps are smaller if they rely on a local system service/library, than they would if they each bundled their own copy of the SDK/jar. Then too, this means that *everybody* is using the same version, so you've got much more consistent behavior and performance across apps, and the ability to fix a class of bugs for everyone at once, rather than relying on external devs to test and push a fix to all their customers.

is it likely this will mean that an app could be developed for Android to enable full screen mirroring (no matter which other app is at the front)?

That would be nice.

To be honest, I don't even care that much about full screen mirroring (though it would be nice), I just want it to "just work", no matter *what* media I throw at it.

It's absolutely ridiculous that it's 2014, that we have streaming for years and that it's still a giant mess to throw content we can already use/own/rent/wtf from PC to living room screen without half a dozen different boxes, dongles, cables.

To the folks who are downvoting comments stating that Amazon forked the Android market, care to explain your votes?

It's a genuine question.

I didn't downvote, but ... Google forked linux to better serve their customers. Amazon forked that fork to better serve their customers. They both have enough sales to justify the merits of their respective forkings...

I think Google Play Services is the best place for it on android devices running google's framework. It means that you don't have to put a ton of bloat in each app and fixes can get immediately applied by google instead of making the app developers release another patch of their app anytime something changes.

You're implying that there aren't alternate means of getting to Chromecast, meaning that it would be impossible to run on something like Kindle. I'd have to see some sort of documentation that they aren't allowing third parties to implement. The fact that people can include the code in their iOS app makes me think that they will probably be releasing the necassary hooks to the public so that Amazon (and others) can either implement a centralized method like google play services or that app developers will be able to put it in non-google play services android apps.

I had never thought about it from that point of view to be honest. Yes, implementing it inside of the framework makes sense from the point of view that it then can quickly be propogated to everyone with bug fixes and changes to the general API. This makes it so that they are therefore not at the mercy of lazy developers to make any sort of breaking changes to the backend ChromeCast API's.

One matter of note is that instead of tying it to a separate jar/support library (like it appeared they would), they tied it to the Play Services. This means that where as before it was looking like I could give Chromecast support to Amazon devices, I now know that I cannot. I understand limiting access to all of their cloud services to only Google Android, but limiting a service that only deals with hardware that the user bought both peices of seems kind of petty to me.

Just to play devils advocate for a sec...

It's not quite like that... You own the phone, and you own the dongle, but who owns the experience on the devices? With the functionality tied to Play Services, not only does Google have a direct path to force updates, to insure that you are up to date with any bug fixes related to it, it also ensures that the device is certified, since Google requires licensing and certification to include GAPPS. That means they can guarantee that the thing works as intended. If they just release the jar files, they can't really guarantee anything. For starters, they can't force updates in the store, because the user needs to allow the update. Secondly, Google would have no idea what else is included on the platform. It'll be like when Netflix first came to Android. It was trial and error as to a device was supported, and if the right stuff was included in the ROM, etc.

You can fork Android all you want, but you can't actually use the Android name, use GAPPS, etc without going through compatibility/licensing/certification/etc. This is why Kindle can't call their OS "Android", and is why many Android apps may work fine on it, they are not guaranteed to work.

Besides, what if the Chromecast SDK used Google Cloud Messaging to push notifications to the client endpoints that are controlling the stream? It would certainly simply things because why re-invent the wheel for things that are already in place, particularly since GCM is already optimized for low power. That means if the SDK requires GCM, it would require Play Services anyways, because that's where it's implemented.

Another good post. I also hadn't considered the part about GCM. At that point, it would be leveraging their personal cloud infrastructure, so it would tehn make perfect sense to include it only in their private API's. I'm not sure whether it does, but if it did at least...

To the folks who are downvoting comments stating that Amazon forked the Android market, care to explain your votes?

It's a genuine question.

I already did. And so far the only counter to it people are coming up with is repeating the same thing that it's Amazon's fault. This entire discussion has nothing to do with Amazon's fork. It is not Amazon vs Google. It is Google vs everyone, including stock android without Gapps.

is it likely this will mean that an app could be developed for Android to enable full screen mirroring (no matter which other app is at the front)?

http://en.wikipedia.org/wiki/Miracast is what you're looking for. It was put into Android 4.2. I don't think the chromecast supports it though. Not sure if they plan to. I'm pretty sure that my blu-ray player supports it, but I haven't felt the need to try it yet.

If all Chromecast was is a miracast receiver, it would actually suck (and not be unique). What makes Chromecast so cool is that your phone with a limited battery doesn't have to be in stream. Your phone basically says "go on the net, find this and play it" and then your phone can go back to sleep.

To the folks who are downvoting comments stating that Amazon forked the Android market, care to explain your votes?

It's a genuine question.

I didn't downvote, but ... Google forked linux to better serve their customers. Amazon forked that fork to better serve their customers. They both have enough sales to justify the merits of their respective forkings...

Wait.. what? Linux has been forked and forked and forked and forked for a long time. Google forked it to put it into a mobile OS. Amazon took Google's mobile OS, put it into their own mobile devices, then locked Google out of said devices.

Amazon didn't do this for their customers. Indeed, if you look at reviews of the Kindle Fire HDX, one of the biggest gripes has been the lockdown of the damn thing. They did it to lock the devices to Amazon content services. They don't want customers buying movies from the Google Play store; they want us buying from Amazon Instant. They don't want customers buying music from Google Play Store; they want us buying from Amazon. For those of us with libraries with these services, too bad - and, as a Kindle owner, I can tell you that the lockdown does not "better serve" us at all.

To the folks who are downvoting comments stating that Amazon forked the Android market, care to explain your votes?

It's a genuine question.

It's like blaming the American colonies for "forking" the British empire. Maybe there are good reasons for Amazon to not want to be under Google's control. Profit for Amazon is definitely one of them, but philosophically, are the only two companies we want in charge of phones Apple and Google?

Kindle has always been much more closed than Android. Not sure why you would expect differently now.

I think you're misunderstanding.

Because it's a closed API, and because it's tied to Google Play Services, this cannot be used with an app that runs on a Kindle device, even if the same app has the feature on a Samsung Phone.

As an example, if Netflix implements Chromecast on their Android app, they cannot implement it on their Android app in the Amazon app store. Software features are now being fragmented for no reason besides who the hardware manufacturer is.

Another downside is that this will never come to Windows Phone. Since there's only 3 of them, it doesn't matter to most people, but unfortunately I'm one of them :'(

So telling Amazon will get the SDK in AOSP (or somewhere detached from Google services) rather than Play Services? Both arguably fragment AOSP through introduction of dependencies and DRM schemes. Who would you like me to complain to for it not working on a AOSP/Cyanogenmod/AOKP device lacking Play Services? Having interoperability between all Android variants is ideal. Now if there is a technical reason a Google account is absolutely necessary for Chromecast, then this is understandable, but I'm not sure this is the case.

To the folks who are downvoting comments stating that Amazon forked the Android market, care to explain your votes?

It's a genuine question.

It depends on perspective and what you define to be Android. If you define Android as what appears on a Nexus device, then sure, Amazon is fragmenting the market. On the other hand if Android is defined as solely AOSP, then Google is arguably fragmenting it as well. In other words, if I build AOSP from source and install it on a compatible device, will I be able to run an application reliant on Google Play services without running afoul the law/DMCA?

I understand Google may have also taken this route because others complained of fragmentation between AOSP version numbers and delayed updates from hardware OEMs, but unless Google also ports feature additions from their propriety suite into AOSP regularly, they're not really solving the issue (assuming they want Android to remain open).

To the folks who are downvoting comments stating that Amazon forked the Android market, care to explain your votes?

It's a genuine question.

I already did. And so far the only counter to it people are coming up with is repeating the same thing that it's Amazon's fault. This entire discussion has nothing to do with Amazon's fork. It is not Amazon vs Google. It is Google vs everyone, including stock android without Gapps.

You make it sound like the only way to get chromecast on android devices is if they use google play services and that there won't be a separate SDK that others could compile into their apps. Since I know that chromecast will work in the future on iOS apps, I assume that the SDK will also be public. Do you have proof that it won't be?

To the folks who are downvoting comments stating that Amazon forked the Android market, care to explain your votes?

It's a genuine question.

I didn't downvote, but ... Google forked linux to better serve their customers. Amazon forked that fork to better serve their customers. They both have enough sales to justify the merits of their respective forkings...

Wait.. what? Linux has been forked and forked and forked and forked for a long time. Google forked it to put it into a mobile OS. Amazon took Google's mobile OS, put it into their own mobile devices, then locked Google out of said devices.

Amazon didn't do this for their customers. Indeed, if you look at reviews of the Kindle Fire HDX, one of the biggest gripes has been the lockdown of the damn thing. They did it to lock the devices to Amazon content services. They don't want customers buying movies from the Google Play store; they want us buying from Amazon Instant. They don't want customers buying music from Google Play Store; they want us buying from Amazon. For those of us with libraries with these services, too bad - and, as a Kindle owner, I can tell you that the lockdown does not "better serve" us at all.

First off - What the heck is a knowledgeable ars reader such as yourself using a Kindle Fire for? I always assumed they were for what call "the happy ignorant" (many people I love are in this camp). If you know and love amazon services and want something crazy simple, it's a great device. You sound more like me and should go back in time and get a Nexus 7 or something similar.

Although I was saddened that Amazon forked and isn't a part of official Android, I think it makes a ton of sense. If you want Google Services, you simply have to sign away too many rights when you're whole idea is to make money selling a device to get to your services. It's not about the apps, I think that was a huge negative for Amazon. It was about not wanting to put the Google Play Store front and center for books, movies and music. They made a device for people who want to consume through Amazon and no where else.

They need to add MPEG2-TS in addition to h.264 so that you can cast television to it. The CPU supports MPEG2-TS decode, Google just didn't include it in their firmware.

For example you can put a Cable Card in a $99 HDHomerun right now and have three separate channels (tuners) as MPEG2-TS streams. My Samsung TV understands MPEG2-TS and can show these channels. These would be castable if Chromecast understood MPEG2-TS.

SiliconDust is trying to address this by building hardware that can transcode MPEG2-TS to h.264 on the fly, but that's not a very good solution. Transcoding takes extra hardware and distorts the signal. Much better to just fix Chromecast to under MPEG2-TS.

Let's get rid of cable boxes and make television castable.

I don't think it's possible to stream MPEG2-TS over WiFi with acceptable quality. You need a modern and efficient compression algorithm.

Converting a TV stream to h.264 works perfectly fine with an EyeTV. I don't see how you can call it "not a very good solution".

Kindle has always been much more closed than Android. Not sure why you would expect differently now.

I think you're misunderstanding.

Because it's a closed API, and because it's tied to Google Play Services, this cannot be used with an app that runs on a Kindle device, even if the same app has the feature on a Samsung Phone.

As an example, if Netflix implements Chromecast on their Android app, they cannot implement it on their Android app in the Amazon app store. Software features are now being fragmented for no reason besides who the hardware manufacturer is.

Another downside is that this will never come to Windows Phone. Since there's only 3 of them, it doesn't matter to most people, but unfortunately I'm one of them :'(

No, I'm clearly not misunderstanding. I know it's a closed API because it goes through Play Services and it's not a separate jar file you can just include.

Chromecast works well with iOS, and Google does not sell iOS devices. What I take away from that and the idea of a locked down service is that Google wants to carefully control it to ensure the user experience is always optimal. If you want something more open (and buggy) then there are other devices for that.