July 31, 2017

This method checks for video and audio capabilities
of the receiver device and display by validating the media parameters
passed in. It returns a boolean. All parameters but the first are
optional — the more you include, the more precise the
check will be.

Examples:

Checks whether the receiver device and display support the video/mp4 mimetype
with this particular codec, dimensions, and framerate:

canDisplayType("video/mp4", "avc1.42e015,mp4a.40.5", 1920, 1080, 30)

Checks whether the receiver device and display support 4K video
format for this codec by specifying the width of 3840 and height of 2160:

canDisplayType("video/mp4", "hev1.1.2.L150", 3840, 2160)

Checks whether the receiver device and display support HDR10 for this codec,
dimensions, and framerate:

canDisplayType("video/mp4", "hev1.2.6.L150", 3840, 2160, 30)

Checks whether the receiver device and display support Dolby Vision (DV)
for this codec, dimensions, and framerate:

canDisplayType("video/mp4", "dvhe.04.06", 1920, 1080, 30)

Added two new
device
capabilities:is_dv_supported, for Dolby Vision, and
is_hdr_supported, for High Dynamic Range. These are
keys for the object returned by
getDeviceCapabilities.
See an example
that checks for both of these device capabilities.

Media Player Library

Increased cached DRM keys from 5 to 8.

Ignore streamId as part of start_code
checking in ID3 extraction path.

July 27, 2017

iOS Sender v3.5.2

Fixed various issues with Guest Mode session creation and resumption

Fixed issue with session resumption when WiFi is re-enabled from the
Control Center

Fixed a rare crash due to a timing issue in networking logic

Note: iOS Sender v3.5.1 was initially an internal release that we have
made public by folding into this v3.5.2 release.

Added new class
GCKUIStreamPositionController,
and associated new property
streamPositionController
on GCKUIMediaController. This class can be used to implement a
custom stream position and/or seek UI, in situations where ordinary UISlider,
UIProgressView, and UILabel controls would not suffice.

Added ability to style the "Stop casting" and "Cancel" buttons in the Cast dialog.

March 14, 2017

Add callback onCue to signal presence of in-band caption
streams: A new
onCue
callback function has been added to the
Host class.
This callback is triggered right before a caption is added to the screen. This enables
apps to respond to the presence of in-band caption streams, such as CEA-608,
which are transmitted in the same stream as audio and video content. For more
details, see
In-Band Caption Streams.

December 6, 2016

TTML position: Added a property
ignoreTtmlPositionInfo
which lets the specified TTML position be ignored, causing
the captions to be centered.

Relative timestamps for WebVTT: Added a property
useRelativeCueTimestamps
to use relative cue timestamps rather than the default
absolute timestamps.

December 5, 2016

iOS Sender v3.3

4K video format: Added a new property
GCKMediaStatus.videoInfo
to enable your app to know the resolution of the currently playing media.
This property gets the current instance of
GCKVideoInfo,
a new class. This instance contains the type of HDR TV format and the height
and width in pixels. Variants of 4K format are indicated in the
hdrType property by enum values
GCKVideoInfoHDRType. See
4k Video Format.

Guest Mode Permissions: Since iOS 10, for Guest Mode to
work, permissions are required to access Bluetooth and microphone. You must
therefore add entries to the application's Info.plist.
See Bluetooth and Microphone Permissions
for details.

App Store: Added a shell script
strip_unused_archs.sh to the SDK package that strips unused
architectures from an app bundle. This enables submitting to the App Store.
For example, this script removes simulator slices, which are included in
the framework but are not allowed in the App Store.

Loading state: Added a new enum value
GCKMediaPlayerStateLoading
to the GCKMediaPlayerState enum type. When the receiver begins
loading the media, the SDK sets the
playerState
property in MediaStatus to GCKMediaPlayerStateLoading
and holds that state until it begins buffering or playing content.
In most cases, the app should handle this state the same way it was handling
GCKMediaPlayerStateBuffering. However, buffering and loading
states are not always interchangeable. While loading, the receiver has not yet
resolved all the media information, and so the only media information available
is what was present in the sender's load media request. While buffering, the
media information may contain additional information resolved by the receiver.

Custom styles: A new class
GCKUIStyle
holds the root of a style attribute tree and can apply styles. New interface
GCKUIStyleAttributes
defines the style propreties (colors, fonts, icons). This interface has 11 new subclasses
which specify the values for different views of UI elements that can be styled.
For details, see Apply Custom Styles.

Device types: Added new property
GCKDevice.type.
Its type is a new enum
GCKDeviceType,
which can indicate the device is a TV, speaker, or another type.

Ad breaks: New properties
adBreaks
and
adBreakClips
on GCKMediaInformation list the ad breaks and ad break clips,
respectively, in the current content. A new class
GCKAdBreakClipInfo
has been added to represent each ad break clip that plays within an ad break.
New property
adBreakStatus
(on GCKMediaStatus) is of type
GCKAdBreakStatus
which holds status information about an ad break, such as the ID and playback
position of the current ad break and ad break clip.

Fix image aspect ratio:
ImagePicker
now has an onPickImage
handler that takes an
ImageHints
class with the expected aspect ratio that you can use to customize the
MediaMetadata images that you provide to the SDK.

Route selector: New method
CastContext.getMergedSelector()
exposes
MediaRouteSelector,
which describes the routing of media channels and streams, from the current
sender device to external screens, speakers, and other destination devices.
Sender apps can discover and use these routes. Most developers don't need to use
this method since the v3 (framework) SDK does this and will work fine for most
use cases.

Ad breaks: Two new classes have been added:
AdBreakClipInfo
contains static information about an ad break clip, such as the clip's ID,
content URL, mime type, total duration, and click-through URL.
AdBreakStatus
holds status information such as the playback position of the current ad break
and clip.

Remote Control Notifications: When a user is casting, other
devices on the same network will get a sticky notification to also control the
playback. The user of the primary sender device can turn off these remote
notifications globally in the Settings app at Google > Google Cast >
Show remote control notifications.

CastContext methods: All methods in
CastContext
that your app calls must be called from the main thread, otherwise an
Exception will be thrown.

October 26, 2016

Chrome Sender

The Chrome Sender SDK provides a new application framework, available through
the Sender Framework API.
This framework significantly reduces the amount of code you need to write to
integrate Cast into your Chrome app. The framework also provides full state
management that helps you implement the right abstraction between your
app and Cast. This upgrade also makes Chrome sender apps more reliable and
easier to maintain. This new framework is analogous to the frameworks in
Android and iOS which were introduced in the
v3 release.

July 13, 2016

Chrome

June 27, 2016

Cast SDK v3

This release of Cast SDK v3 is a major upgrade of the Cast Sender v2 APIs
for Android and iOS. Improvements focus on significantly
reducing the amount of code it takes for you to integrate
Cast into your Android and iOS sender apps, while making Cast
more reliable and easier to maintain. This was done by standardizing
and moving much of the code into a new sender application framework.
In addition, these framework APIs were re-designed to be
consistent across Android and iOS. And the framework
includes full state management that helps you implement the
right abstraction between your app and Cast.

Known issue with iOS: Guest Mode doesn't work with this version
of Cast SDK for iOS — use version 3.2 instead.

Note that we use "v2" to refer to an SDK before the framework was added
and "v3" to refer to an SDK after the framework was added.
As of this date, only the Android Sender SDK and iOS Sender SDK have
been upgraded to v3; the Chrome Sender SDK and Receiver SDK have not
yet been upgraded.

Important:
Do not base new Android and iOS sender app development on v2 —
use the v3 framework instead.

iOS classes, members, and other program elements that
are new in v3 are marked "Since v3". Example:
GCKCastContext.
Program elements that cannot be mixed with v3 are deprecated and are
found in the Deprecated List.
Example: GCKDeviceManager.

April 11, 2016

Remote Display Unity Plugin 1.1

Framework Changes

Unity Plugin 1.1 now requires Remote Display iOS v2.10.4

API Changes

Added SetCastVolume, GetCastVolume, and CastVolumeUpdatedEvent to
CastRemoteDisplayManager.
These are already used in our default UI. For more details about how they are used, see CastDisconnectDialog.

Bug Fixes

Fixed crash when running iOS 7 applications compiled with the plugin. (Note: Despite this fix, Remote Display is still disabled on iOS 7.)

Fixed the status field of idle devices to display nothing rather than the model name.

March 29, 2016

Cast Test Cases

Test cases are now available for developers to test their
applications. Please run these test cases to help make the Cast user experience consistent
across all platforms.

March 17, 2016

iOS v2.10.4

This release is not aligned with a GMS Core release.

New Framework Dependencies

None

API Changes

None

Bug Fixes

When iOS is set to non-Engish, Guest Mode UI has some English text after canceling PIN detection

iOS GCKDevice setAttribute:forKey: always crashes

iOS v2.10.2 google-cast-sdk framework doesn't contain module map

Known Issues

In iOS Cast app, renaming device name during cast session fails to update the device name

Note: iOS v2.10.3 was an internal-only build

March 2, 2016

iOS v2.10.2

Behavioral Changes

Disconnecting from a device is now synchronous in all cases. If there are any messages in the
send buffer that have not yet been written to the socket at the time of disconnect, they will be
discarded.

Other Changes

Known Issues

Changing device's friendly name during Cast session fails to update the friendly name in the UI.

December 4, 2015

iOS v2.10.1

There are no backwards-incompatible API changes in this release.

New framework dependencies

The following framework dependencies affect the v2.10 release as well as this release:

Accelerate

AudioToolbox

AVFoundation

MediaPlayer

CoreBluetooth

libc++.dylib

Behavioral change

If a GCKDeviceManager instance is deallocated while it is still in a connected (or connecting or
disconnecting) state, it will now immediately synchronously tear down the connection. This prevents
a memory-violation crash caused by an async I/O event being triggered after the dealloc. A delegate
callback (e.g., -[deviceManager:didDisconnectWithError:]) will not be invoked in this
case.

Other changes

Added Bitcode support in Google Cast SDK for iOS

Added Bitcode support in Google Cast Remote Display SDK for iOS

Note: The Cast framework bundle is now significantly larger due
to the presence of bitcode in the binary. However, applications linked with the framework will not
proportionately increase in size due to this.

October 19, 2015

Cast SDK release 2.10

iOS

Note: This SDK release enables diagnostic logging meant to
provide data Google can use to improve reliability. This logging is not intended to collect
personal information of users; it is focused on device discovery-related data. You can disable this
logging by changing the value of GCKAnalyticsLoggingEnabled to NO.

GCKGlobalFlags: New header file. Contains a single constant GCKAnalyticsLoggingEnabled which is used to enable or disable collection of diagnostic data to improve the reliability of cast device discovery. The default value is YES (feature enabled); app developers may disable it by setting the value to NO.

GCKMediaControlChannel: New methods -[queueInsertAndPlayItem:beforeItemWithID:], -[queueInsertAndPlayItem:beforeItemWithID:playPosition:customData:], -[queueLoadItems:startIndex:playPosition:repeatMode:customData], -[queueJumpToItemWithID:playPosition:customData:]. New property lastError, which is set in response to any synchronous or asynchronous request failure.

GCKMediaStatus: New method -[queueIndexForItemID:].

GCKMediaCommon: New constant kGCKInvalidTimeInterval (equal to NaN)

GCKMediaQueueItem: If kGCKInvalidTimeInterval is passed as the playPosition parameter in methods
on GCKMediaControlChannel that accept that parameter, the parameter will be omitted from the
corresponding media namespace protocol message

GCKRemoteDisplaySession: Breaking change: this is now a @protocol, not an @interface. New
targetDelay property which is set to one of the GCKRemoteDisplayTargetDelay enums. Similar to
targetDelay property added to GCKRemoteDisplayConfiguration but this property can be changed on
the fly during a session. This is intended to temporarily increase the target delay to show
non-interactive content such as a video in the middle of a remote display session.

GCKRemoteDisplayAudioInput: New class to allow applications to provide arbitrary PCM formatted
audio buffers that will be automatically converted into a remote display compatible audio format
and sent to the Cast device in a remote display session. This is intended to complement graphics
sent via GCKOpenGLESVideoFrameInput and GCKMetalVideoFrameInput.

GCKOpenGLESVideoFrameInput and GCKMetalVideoFrameInput: Both have new textureCoordinateMatrix
property that can be applied to OpenGLES and Metal frames to perform transformations (e.g. a
y-coordinate flip) without needing a separate rendering pass.

GCKAVPlayerItemVideoTap and GCKAVPlayerItemAudioTap: New classes to allow applications to
redirect the video and audio output of an AVPlayerItem to a remote display session, maintaining
audio-video sync. This is intended to support movie / video playback

GCKRemoteDisplayConfiguration: New targetDelay property which is set to one of the
GCKRemoteDisplayTargetDelay enums. This allows applications to customize the time allotted to
encode, transmit, retransmit, decode, render video and audio in a remote display session.

Receiver API, Media Player Library, Players

Support unprefixed EME API

HLS content key protection

Update MPL player to comply with recent changes in Chrome media pipeline that require that for
live streams, i.e. streams with duration = Infinity, currentTime can only be set if there are
buffered ranges in the media element

Consider offset of init segment when getting segment offset in SIDX

Guess location of init segment when Initialization is not present

Process 't' attribute of SegmentTimelne element

Support formatting in Number tag in URL

Support self initializing streams

Support SchemeIdUri of "urn:mpeg:dash:mp4protection:2011"

Support host.onAutoPause for easier buffering detection

Use PSSH box for license custom data

Add Host.autoResumeNumberOfSegments to provide more options of control auto resume duration

Handle self-initializing segments for manifests with segmentTemplate

Extract license url from initialization data in pssh

Expose host.processSegment callback

Recognize "ec-3" codec as DD+

June 25, 2015

Cast SDK release v2.7.1

iOS (patch)

This fixes a bug in iOS SDK release v2.7 that that prevents the user from disabling closed captions.

June 4, 2015

Cast SDK release v2.7

iOS

Media Queuing SDK

Remote Display SDK

Game Manager SDK

New string constant kGCKFrameworkVersion (in GCKCommon.h) which contains the framework’s version number.

GCKFilterCriteria: -[criteriaForRunningApplicationWithID:supportedNamespaces:] is deprecated.
It now delegates to -[criteriaForRunningApplicationWithSupportedNamespaces:]. Filtering by
running application ID is not supported

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.

Receiver API (v2.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.

October 8, 2014

Android sender API

Fixed bug where loadMedia() function did not accept activeTrackIds parameter

September 24, 2014

iOS sender (v2.4 1210)

Warning: The v2.4 release of the Cast iOS sender SDK contains
changes incompatible with previous versions: some API members have been renamed or deprecated. You
must rewrite some code to adapt to these changes. Details are below.

Receiver API (version 2.0.0)

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

Receiver API

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.

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):

Media Player Library (v0.8.0 beta)

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.

April 25, 2014

Media Player Library (beta)

In this release:

New version, v0.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 v0.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. V0.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.

The new Media.getEstimatedTime provides an estimate of the real playback position based on the last information reported by the receiver; this is preferred over the currentTime property.

The Error constructor now includes the opt_details parameter to provide for error objects.

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: