Hide

Google Cast Release Notes

As new versions of Google Cast are released, this page will provide important information.

March 18, 2015

Cast SDK release 2.6.

Android

  • Various bug fixes

iOS

API changes:

  • GCKCastContext: New class. Reserved for future use
  • GCKCastChannel: New property deviceManager
  • GCKDevice: Added property deviceVersion; method hasCapabilities:; constant kGCKDeviceCapability*
  • GCKDeviceManager: Added properties activeInputStatus and standbyStatus.
  • GCKFilterCriteria: -[criteriaForRunningApplicationWithID:supportedNamespaces:] is deprecated. It now delegates to -[criteriaForRunningApplicationWithSupportedNamespaces:]. Filtering by running application ID is not supported
  • GCKGenericChannel: New class
  • GCKGenericChannelDelegate: New class
  • GCKJSONUtils: New method, +[isJSONObject:equivalentTo:]
  • GCKMediaInformation: Now implements NSCopying, -[isEqual:], and -[hash]
  • GCKMediaInformation: mediaTracks property now may not be set to an empty NSArray instead of nil
  • GCKMediaMetadata: Now implements NSCopying and has a corrected -[isEqual:] implementation
  • GCKMediaStatus: Now implements NSCopying, -[isEqual:], and -[hash]
  • GCKMediaTextTrackStyle: Now implements -[hash]
  • GCKMediaTrack: Now implements -[hash]
  • GCKDeviceScanner: improvements to the device discovery mechanism

Bug fixes and other changes

  • When player state goes to IDLE, metadata isn't cleared (fixed)
  • Receive Text Messages using GCKCastChannel without subclass (fixed)
  • Log discovery requests for iOS in a manner similar to the Chrome Extension
  • Cast SDK images should be rendered as template images by default (fixed)
  • Make activeInputStatus and standbyMode properties public
  • GCKCastChannel should have a reference to its owning GCKDeviceManager (fixed)

Receiver

  • Bug Fix: Avoid a condition where the player state is not properly reported if the application has called PLAY on the media element before the loadedmetadata event has been raised
  • Provided new API getStandbyState and modified the internal behavior to report more accurate CEC information with getVisibilityState
  • Added capabilities API to support Cast for audio devices
  • Added NEXT/PREV APIs to support hardware remote controls on Cast for audio devices

Media Player Library

  • Provide media time for id3 tags in host.processMetadata callback
  • Content preloading - Player.preload and host.onMediaDownloadEnded
  • Fixed smooth streaming regression hit by some partners

February 3, 2015

Cast SDK release 2.5.2.

Android

  • Bug fixes to accompany the intermediate release of GMS Core

iOS

Bugs fixed:

  • Passing INFINITY for stream duration causes exception
  • Bad Cast icon state on ios - problem with GCKDeviceManager
  • Icon URLs have wrong port number
  • Media status updates may not be passed to the client

Chrome

  • Cross-site scripting fix for vulnerability in device name
  • ICA whitelisting in support of new devices
  • cast_sender.js no longer loads Cast API on non-Chrome browsers
  • Warning for users on old Chrome versions
  • Cast sender information now included in virtual connection message
  • Dynamic latency for mirroring, based on past session
  • Support for Cast audio policy enforcement

Receiver

Bugs fixed:

  • Restore support for visibility and standby information when the platform supports it
  • Fixed showing Play Movies spinner while video is playing
  • Captions support: close caption default fonts now part of platform
  • Loading a video with autoplay=true leads to state PAUSED instead of BUFFERING

Media Player Library

Bugs fixed:

  • Fix access of incorrect properties (also fixes HLS live point playback regression)
  • Expose host.processManifest to enable change to the manifest after it is downloaded, but before it is parsed
  • Improved support for smooth streaming url pattern
  • Make useSingleKeySession true by default (Android TV) - more info
  • Enable E-AC-3 by default if pass through is enabled - more info
  • Fix HLS audio only support and add a unit test
  • Clean up the use of H.264 codec string for Chromium compatibility
  • Add a single key session mode (Android TV)
  • Make MPL to handle the marker between playback and ads

December 17, 2014

iOS sender API (version 2.5.1 1396)

This update fixes a bug in the previous release that causes apps to crash.

December 1, 2014

iOS sender API (version 2.5.0 1346)

  • GCKColor now implements -(NSString *)description.
  • GCKError now includes a human-readable localizedDescription and a new error code GCKErrorCodeInvalidState.
  • GCKDeviceManager added -[disconnectWithLeave:(BOOL)leaveApplication] which can be used to perform an “implicit” disconnect.
  • GCKDeviceScanner added passiveScan property.
  • GCKMediaControlChannel added -[cancelRequestWithID:] to allow the app to stop tracking (cancel) in-progress requests.
  • GCKMediaControlChannelDelegate added -[mediaControlChannel:didCancelRequestWithID:].
  • Calling any GCKDeviceScanner or GCKDeviceManager methods or accessing their properties from a thread other than the main thread will raise an assertion.
  • It’s now possible to start a new media load request (using -[GCKMediaControlChannel load]) while a load request is already in progress. The new request will replace the old one, which will no longer be trackable.
  • No new framework dependencies.
  • No backwards-incompatible changes.

Chrome sender API (version 2.10)

  • Faster app discovery after connection establishment.
  • Improved reconnection handling in poor network environments.
  • Media metadata constant consistency with Android, iOS.

Media Player Library (version 1.0)

  • E-AC-3 pass through support.
  • Call host.processLicense for HLS key.
  • Provide host.onManifestReady callback.
  • Allow override of network responses for Host updateManifestRequestInfo, updateLicenseRequestInfo, and updateSegmentRequestInfo
  • Fix duplicated HLS VTT cues when segment's last cue segment ends with a newline.
  • Expose stream name in cast.player.api.StreamInfo.
  • Add smooth streaming sparse tracks support.
  • Reduce maximum buffer duration from 30 seconds to 20 seconds.
  • Fix HLS EXT-EX-KEY parsing to allow commas in the key url.
  • Expose streaming protocol from player.
  • Add Player playWhenHaveEnoughData.
  • When seeking do not load segment data before seek time.
  • Add response header and body to error information for network requests.

Receiver API (version 2.0.0)

  • Exposed new API loadTracksInfo by the MediaManager that allows applications to override onLoad but still set the text tracks and their styling. In this way applications can use the MediaManager to load only tracks information but not load the actual media and take advantage of the built-in text track styling capabilities of the MediaManager.
  • Fixed bug where on some TVs the visibility state was not reported properly by the platform.
  • Optimization to not seek if the requested time is already the current time. This also optimizes loading times as we avoid a seek to currentTime = 0 during load.

Players

Bug fixes, including but not limited to the following:

  • Ensuring that the loading screen is displayed before playback starts.
  • Fixes to thumbnail cropping.
  • Use CastReceiverManager.onVisibilityChanged() to detect input change.
  • Send BUFFERING event when MPL pauses media for buffering.

Additional support in the generic player for closed caption formats:

  • Out of band TTML close captions.
  • TTML close captions embedded in the SmoothStreaming manifest.
  • VTT close captions embedded in the HLS manifest.
  • VTT close captions when using HLS.

October 8, 2014

Android sender API

The Android sender API has been updated with the following:

  • Released with update to GMS Core library
  • Improved device discovery
  • Fixed bug where loadMedia() function did not accept activeTrackIds parameter

September 24, 2014

iOS sender (version 2.4 1210)

Breaking changes

The following APIs have changes incompatible with previous versions.

SystemConfiguration.framework library now required
See Xcode setup
GCKApplicationMetadata
This class now implements NSCopying
senderApplicationInfo is now a method rather than a property
GCKDeviceFilter
Removed from the API
Device filtering is accomplished by setting the filterCriteria property of the GCKDeviceScanner, as described in Device scanner
GCKDeviceManagerDelegate
Renamed method deviceManager:didReceiveApplicationMetadata: was deviceManager:didReceiveStatusForApplication:
New methods that notify the application of connection suspension and automatic reconnection:
  • deviceManager:didSuspendConnectionWithReason:
  • deviceManagerDidResumeConnection:rejoinedApplication:
New methods:
  • deviceManager:didReceiveApplicationStatusText:
  • deviceManager:request:didFailWithError:
Non-breaking changes

Enhancements to the API also include the following.

GCKFilterCriteria
Now implements NSCopying and NSCoding
GCKDeviceScanner
New property, filterCriteria
GCKDeviceScannerListener
New method, deviceDidChange:
GCKDeviceManager
New properties:
  • connectionState
  • deviceVolume
  • deviceMuted
  • applicationSessionID
  • applicationMetadata
  • applicationStatusText
New initializer with parameter, ignoreAppStateNotifications
New methods:
  • launchApplication:withLaunchOptions:
  • joinApplication: (when the session ID is irrelevant)
All request methods now return an NSInteger which is the request ID, rather than a BOOL. If there is an error enqueuing the request, methods return kInvalidRequestID (which is 0).
GCKDevice
New property, statusText
New method, isSameDeviceAs:
GCKCastChannel
Updated methods no longer require you to call their superclass methods:
  • didConnect
  • didDisconnect
GCKError
New error code, GCKErrorCodeDisconnected
GCKJSONUtils
New method, parseJSON:error:
GCKMediaControlChannelDelegate
New method, mediaControlChannel:didReplaceRequestWithID:
New class, GCKLaunchOptions
Supports the sender language

Chrome sender API

The Chrome sender API has been updated with the following:

  • New method: Session.leave to allow disconnect from a specified session
  • Increase Cast SDK connection timeout to 20 seconds
  • Now always show mute/unmute button
  • When user selects to include device logs, default to most recently discovered Cast device if no device was used
  • Fixed timeout-caused launch failures on Samsung and possibly other TVs
  • Launch initial experiment on variable bitrate in beta channel
  • Remove all notifications and log collections regarding switch to Cast streaming
  • Collect and upload chrome.cast.channel event logs in feedback

Receiver API (version 2.0.0)

The Receiver API has been updated with the following:

  • New Player interface ( cast.receiver.media.Player) to simplify porting players in scenarios with legacy code where the existing player does not provide direct access to the HTML5 media element. The Media Manager constructor can now be passed either a HTMLMediaElement or a cast.receiver.media.Player object
  • Added track support to the new cast.receiver.media.Player interface. If the player does not support tracks it can simply ignore the editTracksInfo method
  • Fixed problem where Receiver's response to Media Namespace's load request with autoplay=true was PLAYER_STATE_PAUSED
  • Fixed: activeTrackIds doesn't get updated when the second LOAD does not provide any active track IDs

Media Player Library (version 1.0)

The first (non-beta) release of the Media Player Library includes the following enhancements:

  • DASH support now includes:
    • Dynamic manifest support for live streams
    • SegmentTimeline
    • Templates $Time$
    • Captions
  • CEA-608 closed captions updates:
    • Fixed parsing of h264 with long SEI runs
    • Fixed timestamp discontinuity handling
    • Check correct bit for the presence of closed caption data
    • Fixed blocky characters sometimes incorrectly displayed
  • HLS support updates:
    • Do not re-request HLS key if the key URL stays the same in the manifest, but is changed in the updateLicenseRequestInfo callback
    • Fixed sync when seeking
    • Fixed key url being uudecoded for the key request
    • Improved manifest parsing performance
  • Report seekable range in player.getState to enable seeking for live streams
  • Do not auto-pause media element when time is close to duration to avoid restart
  • Source buffer manager fixes related to Chrome M37 transition
  • Expose HTTP status code for a license error
  • Do not append duplicate cues to the text track for segmented captions
  • TTML support for time offset format
  • Fix smooth streaming playback at live point

July 29, 2014

Media Player Library (v0.9.0 beta)

  • Updated DASH specification-compliant PlayReady and Widevine support
  • Updated TTML italic support
  • Fixed Smooth streaming live support
  • Improved HLS robustness

July 8, 2014

Android sender API

iOS sender API (2.3.0 953)

Receiver API

  • Fix incorrect reporting of PAUSED after LOAD when autoplay is true
  • Media Tracks data structures and APIs:
    • Track

      Although the media protocol supports different types of Tracks (TEXT, VIDEO, AUDIO) the generic/styled receivers only support TEXT tracks (VTT format only). Of course now custom receivers have standard messages to control multiple audio tracks but they need to manage the tracks on the receiver code.

    • TextTrackStyle

      Some of the fonts are not currently included in the Chromecast device, so the styled/default media receivers can't use them. This will change in a future Chromecast release. Developers with their own custom receiver can just include the proper web font (links are included below).

      Font families currently included in Chromecast:

      • SANS_SERIF: 'Droid Sans'
      • MONOSPACED_SANS_SERIF: 'Droid Sans Mono'
      • SERIF: 'Droid Serif Regular'

      Font Families that require a web font for now (not supported in the styled/default media receivers):

    • MediaInformation
    • MediaStatus
    • MediaManager.onLoad
    • MediaManager.onEditTracksInfo

Media Player Library (v0.8.0 beta)

  • Added support for supplementary HLS audio streams
  • Made improvements to ABR heuristics
  • Made improvements to CEA-608 closed captions decoder
  • Fixed stream count regression issue

Styled and Default Media Receiver

  • Do not display progress bar for live streams.
  • Support for VTT text tracks: Now the sender can pass the media URL and the VTT files URL to enable VTT closed caption support. NOTE: To support closed captions, both the VTT files and the media files have to be hosted on a server that supports CORS.

June 12, 2014

Google Cast Chrome extension - beta release 14.605.0.3

The Google Cast Chrome extension is available in a beta channel. See this Google Cast Developer Community post for more information. Instructions for using the beta channel version are here.

In this release:

  • Beta Chrome Sender API event, chrome.cast.addReceiverActionListener fires immediately upon launch, allowing a site to respond as soon as a receiver has been picked.
  • Improved ability to represent DIAL and custom devices & activities in Cast extension UI.
  • Fixes for device discovery issues following sleep/wake cycles.
  • Users can share non-personal statistics to help identify & resolve issues and to improve the Cast experience.

May 30, 2014

Media Player Library (beta)

  • New version, 0.7.0
  • New URL: http://www.gstatic.com/cast/sdk/libs/mediaplayer/0.7.0/media_player.js
  • Improvements to adaptive bitrate heuristics
  • Contains refactoring of all aspects of the library code
  • Fixes handling of HLS discontinuities
  • Improves HLS playlist reloading
  • Improves tracking of buffered time for HLS
  • Adds server 408 response retry handling

May 21, 2014

iOS sender API

  • New version 2.2.1
  • Fix to prevent app crashing when binary is run on iOS 5.

    Note: Cast API calls will run only on iOS 6 and above. The application binary that is installed on all versions was causing iOS 5 applications to crash if the binary included Cast API calls.

  • Various bug fixes
  • Application going into background is now handled as an implicit disconnect so it will not cause the styled/default media receiver to terminate

Android sender API

  • Various bug fixes
  • Updated JavaDoc for RemoteMediaPlayer to explain what RemoteMediaPlayer requestStatus does
  • Detach data channel when disconnecting
  • Enforcing valid custom namespace name

Styled and Default Media Receivers

  • Implemented explicit disconnect logic.

May 7, 2014

Receiver API

In this release:

April 25, 2014

Media Player Library (beta)

In this release:

  • New version 0.6.0
  • New URL: http://www.gstatic.com/cast/sdk/libs/mediaplayer/0.6.0/media_player.js
  • WebVTT polyfill to support WebVTT specification changes.

    Important: all applications using closed captions of any type in the Media Player Library will need to switch to 0.6.0 or later to support upcoming WebVTT specification related changes in Chrome on Chromecast that make the previous implementation of closed captions (including WebVTT, TTML, and CEA-608) not work. Version 0.6.0 has code that enables closed captions to work on current and future builds of Chrome on Chromecast.

  • Fixes in 608 closed captions decoder.
  • Updated timeout logic when downloading segments to be based on segment duration.
  • Support MPEG DASH BaseUrl in adaptation and representation when resolving segment url.

Google Cast Chrome extension - beta release 14.421.1.0

The Google Cast Chrome extension is available in a beta channel. See this Google Cast Developer Community post for more information. Instructions for using the beta channel version are here.

In this release:

  • Security change for Cast channel
  • Zoom suppression for fullscreen-in-tab

April 4, 2014

Google Cast Chrome extension - beta release 14.402.0.3

The Google Cast Chrome extension is available in a beta channel. See this Google Cast Developer Community post for more information. Instructions for using the beta channel version are here.

In this release:

  • Universal media controls in extension UI
  • Device discovery using mDNS or DIAL
  • Allows app filtering to show only devices usable for a given context
  • UI selector for casting vs. mirroring

April 2, 2014

Media Player Library (beta)

  • New version 0.5.0
    • New URL: http://www.gstatic.com/cast/sdk/libs/mediaplayer/0.5.0/media_player.js
    • Test your app with this version before switching to the new library in your production app
    • Added 608 closed captions support for HLS mpeg2 transport streams
  • Issues fixed in this version:
    • Extract segment info of live smooth streaming from Tfrf box
    • Audio out of sync for live smooth streaming - Issue 203
    • Live SmoothStreaming have audio and video a few seconds off
    • Audio only HLS stops playback 10 mins after playback starts
    • Do not insert a 30 ms gap when detecting discrepancy between processed time and end of range in the source buffer for HLS - Issue 199

March 25, 2014

Google Cast Android SDK

Now using Google Play Services version 4.3, including the following specific to Cast:

  • The Cast sender application now maintains a WiFi lock while casting
  • Various bug fixes for handling connection and disconnection issues
  • Fix for photo MediaMetadata incorrectly imports/exports JSON objects
  • Fix for Cast.CastApi.getApplicationMetadata returns null
  • Fix for Cast device list not removing devices that have powered down
  • Various bug fixes in the SDK sample apps
  • Improved error and exception handling

The Cast SDK includes the following API changes:

  • The com.google.android.gms.cast.RemoteMediaPlayer stop, pause and play methods no longer throw IOException and now return PendingResult<RemoteMediaPlayer.MediaChannelResult>
  • The com.google.android.gms.cast.Cast.CastOptions.Builder method setDebuggingEnabled has been changed to setVerboseLoggingEnabled
  • com.google.android.gms.cast.Cast.CastApi.removeMessageReceivedCallbacks removed IllegalStateException and added IllegalArgumentException

Google Cast iOS SDK

Updates to the SDK for iOS, version 2.1.0.529 include the following:

  • 64-bit builds are now fully supported
  • Fixed: setVolume doesn't work when the sender device is muted
  • Logs provide a warning when a given namespace does not start with urn:x-cast:
  • The SDK version number appears in the API reference documentation in the lower left corner of each page
  • The SDK version number is listed in the Bundle version property of the Info.plist file

March 19, 2014

Media Player Library (beta)

  • New version 0.4.0, Revision 1
    • New URL: http://www.gstatic.com/cast/sdk/libs/mediaplayer/0.4.0/media_player.js
    • Test your app with this version before switching to the new library in your production app
  • Issues fixed in this version:
    • Some HLS VOD/sVOD trailers could not be displayed on the Chromecast
    • HLS video doesn't resume playback, when network recovered
    • Node namespaces sometimes not ignored in TTML parsing

March 10, 2014

Media Player Library (beta)

  • Allow starting at "live" by using the Infinity property as the initialTime parameter to the player.load API call
  • Fixed issues with multiple, consecutive seeks
  • Fixed issues with seeking/playing to the end of the stream then seeking after sourceclose and ended
  • Fixed a crash that can happen if captions are disabled more than once
  • Print out bitrates in debug output when bitrate quality level changes

March 7, 2014

Updated the Design Checklist - check it out! The specifics are in the changelog.

Google Cast Chrome extension

Stable channel, version 14.218.0.5 includes the following:

  • All changes from the beta release of February 20, 2104
  • Fixes for full screen and DIAL discovery

Beta channnel, version 14.305.0.0 includes the following:

  • Cleanup session info when receiver leaves
  • Files are checked correctly for forbidden strings
  • Specify Chromecast IP address in advanced extension options
  • Update demo app to use asyncronous script load instead of script tag
  • Return EXTENSION_MISSING error for any subsequent API method call after extension enabled-and-reenabled

Media Player Library (beta)

The Media Player Library has been updated with the following:

  • Add support for DASH segment template within representation
  • Expose auto pause and auto resume duration to the application
  • Calculate default audio codec private data based on sampling rate
  • Big numbers support for smooth streaming to handle live scenarios
  • Improvements in ID3 tag handling
  • Prevent changes in quality if already at the end of stream
  • Explicitly fix up mdat offset in trun
  • To work around media element precision issues around 'ended' event, fixed duration precision to 4 digits after the decimal point
  • Reset time offset in HLS on quality changes
  • Expire license generate key request after 2 minutes
  • ABR quality level changes improvements

February 24, 2014

Media Player Library (beta)

The Media Player Library has been updated with the following:

  • Add APIs to get the HTTP status code that is received from the server:
  • Change manifest loader to retry only on http timeouts and not on http errors
  • When parsing mp4, don't assume that mdat follows uuid sample encryption box
  • When parsing mp4, fix up data offset in trun since some content is encoded with the wrong offset that fails in Chrome mp4 parser

February 20, 2014

Google Cast Chrome extension - beta release

The Google Cast Chrome extension is now available in a beta channel. See this Google Cast Developer Community post for more information. Instructions for using the beta channel version are here.

Google Cast Chrome Sender API - beta updates

With the beta release of the Google Cast Chrome extension the following APIs have been updated in the beta channel.

Also, to determine if the API is available and initialize it, you can provide a callback function, window['__onGCastApiAvailable'] instead of calling cast.isAvailable. See Initialization in the Chrome Sender App overview for more information.

February 3, 2014

  • Official Google Cast SDK Release!!!
  • Completely overhauled APIs
  • Google Cast Android API now incorporated with Google Play services for Android
  • Support for adaptive streaming: MPEG-DASH, SmoothStreaming, HTTP Live Streaming (HLS)
  • Security enhancements
  • Update of the Cast_Icons and GoogleCastIcons

Chrome Sender SDK update

This release of the Chrome Sender SDK works with the following Cast Receiver build, Cast extension, and Chrome versions:

Cast Chrome SDK version Cast Receiver build Cast extension version Chrome version
February 3, 2014 15250 14.123.1.2 32.0.1700.72
Google Cast extension - version 14.123.1.2
  • Major update to support the public Google Cast SDK. See the Google Developer blog for more information.
  • API is now included by the site instead of being injected by the extension.
  • Device selection is now always handled by the extension.
  • App launches can now be initiated from the extension-provided Cast icon.
  • Continuity of a Cast session across page transitions is now supported.
  • Navigating to a Cast-enabled page while mirroring can automatically launch the corresponding app.
  • Media can be played on an available Cast receiver using the Default Media Receiver, eliminating the need to write receiver-side logic for some use cases.
The API requires at least Chrome 32, and Cast extension version 14.123.1.2 or higher

October 24, 2013

  • Update of the Cast_Icons and GoogleCastIcons

1.0.7

October 8, 2013

Updates for iOS:

  • Minor GCKWebSocket bug fix
  • Fix crash when ending session, plus some other fixes.
  • Fix buffer state bug.
  • 1.0.6 was not released

1.0.5

September 25, 2013

Android
  • Avoid pointless DNS lookups when converting dot-separated IP address string to InetAddress object.
  • Make player state optional. (Fixes a crash)
  • Separate two distinct error conditions when checking if socket is still connected.
  • Checking to make sure mSelectInterfaceTask is the current object, before setting it to null in onCancelled.
iOS
  • Multiple bugfixes - including crashing bugs
  • Give socket time to drain before closing it.
  • Made delegate properties weak, and wrote a logging facility for the SDK.
  • Minor fix in CGKWebSocket

1.0.4

September 12, 2013

  • Update Android and iOS SDK's to 1.0.4 - 1.0.2 and 1.0.3 were internal updates
  • Android – Raw discovery API in Android has been deprecated - MediaRouterProvider should be used.
  • Android – Removed obsolete classes
  • iOS - End Session in background task
  • iOS - Fixed uncaught exception crash in GCKSimpleHTTPSrequest when used with file:// URL
  • iOS - Fixed a crash related to when app responds to a message by ending the session
  • Cast Icons and artwork are now avaiable on the downloads page

1.0.1

August 21, 2013

  • Update Android and iOS SDK's to 1.0.1
  • Documentation updates for Chrome, Android, iOS, and the Receiver
  • iOS - 'namespace' renamed to 'protocolNamespace' to allow Objective-C++ development

1.0

July 24, 2013

First release!

This release of Google Cast is a developer preview to let you experiment with this unique second-screen functionality in your applications. The APIs in this preview release are subject to change.