text:
For each new version of Google Cast that is released, the changes are described below and the API references are updated. For changes to the Design Checklist, see its changelog.
August 3, 2020
iOS sender 4.4.8
- Introduced Cast Connect, which enables iOS apps to cast to Android TV apps. For details, see the Android TV Receiver documentation.
July 29, 2020
Android Sender 19.0.0 and Android TV Receiver 17.0.0
- Introduced Cast Connect, which allows Android TV apps to
be compliant to the Cast protocol so that they behave as Receiver apps. For
details, see the Android TV Receiver
- Released play-services-cast-tv:17.0.0 as the receiver SDK for Android TV apps.
- Released play-services-cast:19.0.0 and play-services-cast-framework:19.0.0, including Cast Connect sender APIs and APIs used by play-services-cast-tv.
- API updates:
- Deprecated
AdBreakStatus#AD_BREAK_CLIP_NOT_SKIPPABLE, use
- Renamed
CastRemoteDisplayLocalService#getCastRemoteDisplay()to avoid an API conflict on Android 11.
- Added
- Added detailed supported command bit constants
MediaStatus#COMMAND_*) in
- Exposed
- Exposed
- Deprecated
July 13, 2020
CAF Receiver
- Improved media category detection for the default UI (video vs audio).
- Added support for live absolute time from Shaka Player.
- Fixed an issue with audio glitches on Nest Hub Max devices.
- Upgraded Shaka Player to 2.5.12.
May 4, 2020
CAF Receiver
- Timeout values for Google Assistant commands are now configurable.
- Detailed MPL error codes are now exposed in error events.
- Supported media commands can now be enforced by using the
- Fixed the supported commands reported during a break in playback.
- Fixed an issue with an Assistant shuffle load request.
- Fixed a bug in
March 12, 2020
CAF Receiver
- Added new device capability
- Upgraded Shaka Player to 2.5.8.
February 27, 2020
iOS Sender v4.4.7
- Fixed the physical volume buttons for apps that don't use any UI components from the SDK.
- Fixed an issue with the
currentTimelabel in the expanded controller when pressing the forward or backward buttons repeatedly.
- Media items in
GCKMediaQueueare persisted after the app moves to the background.
- UI customization updates:
- The progress bar of the mini controller is now customizable.
- The background color of the navigation bar and toolbar of the Cast dialog is now customizable.
- Fixed UI issues specific to iPhone X.
- Fixed a few issues causing stalls and crashes.
February 24, 2020
Android Sender 18.1.0
- Added pre-defined constants
MediaErrordetailed error codes and error reasons.
January 22, 2020
CAF Receiver
- Fixed an issue where multiple media statuses are broadcast when changing supported commands.
Receiver v2
- Improve bitrate selection for VAST Ads.
- Added support for session key prefetching. See the HTTP Live Streaming 2nd Edition draft for more information.
January 7, 2020
CAF Receiver
- Added support for ID3 timed metadata in
cast.framework.events.EmsgEvent. Additionally,
EmsgEventis now dispatched for HLS/CMAF content.
- Fixed an issue where player data was missing during
PLAYER_LOAD_COMPLETEwhen transitioning to a new media session.
- Fixed an issue where the media icon was overlapping the break clip number and countdown.
- Fixed issue where the countdown of the first break clip would always display 0:00.
- Upgraded Shaka Player to 2.5.6.
Receiver v2
- Added new device capability
deviceCapabilities. If set, the Cast device is registered in the Cast Developer Console for debugging.
- Fixed a stalling load issue.
- Individual media error messages are now sent for every failed item in the queue.
- Fixed an issue with live streams where audio would continue to play for some time after a stop message was received.
- Fixed an issue where video compression artifacts would show during quality level changes.
- Fixed an issue where HLS streams using *.m4s segments were failing.
December 5, 2019
Android Sender 18.0.0
- Added
setMediaSessionEnabledfor developers to enable and disable a media session created by Cast SDK.
- Changed how media notifications show during a Cast session. If media notification is enabled, it will always show during a cast session. Previously, it would only show when the app was in the background.
- Changed some media-related classes to implement a
November 11, 2019
iOS Sender v4.4.6
- Fixed an issue related to the minimum supported version of iOS 9.
October 7, 2019
CAF Receiver
- Exposed tracks roles as part of tracks metadata.
- Upgraded Shaka Player version to 2.5.5.
September 23, 2019
iOS Sender v4.4.5
- Improved support for Cast device discovery and session management.
- Added new media commands to
- Added
whenSkippableproperty to
- UI fixes for Ads and iOS 13.
September 11, 2019
Android Sender 17.1.0
- Added
MediaErrorfield to RemoteMediaClient.MediaChannelResult that can be used to access the detailed error code for failed media commands.
- The
MediaStatus.COMMAND_SKIP_BACKWARDare deprecated. Apps should use
- Added a new dependency on
September 9, 2019
CAF Receiver
TV_SHOWmetadata type now has a "Playing Next" preview in the default player if the next item is preloaded.
- Added the
ContentRatingclass to the
- Updated the default UI audio title so that
metadata.artisttakes precedence over
- Added support for negative startTime values to indicate start time relative to content end or live edge.
- Media Browse:
- Media Browse drawer is now automatically hidden after 30 seconds of user inactivity.
- Added Play/Pause button and media item thumbnail to the top right corner of the Media Browse overlay.
- Updated Media Browse list behavior. Now horizonal scroll is reset to the initial left-most position every time Media Browse content is set.
- Bug Fixes:
- Delayed resolving
BasePlayerend promise to allow media element event to be fired.
- Handled load error for Ad preloading.
- Watermark is now displayed with the rest of the metadata.
- Default audio UI on Chromecast respects
- Eliminated splashing of an IDLE screen before LOADING and between playing of subsequent media items.
- Fixed seek stall for Dash content.
Receiver v2
- Added the
ContentRatingclass to the
- Fixed a bug where error data propagated incorrectly when there were multiple items in queue.
Media Player Library
- Added HLS #EXT-X-MEDIA attributes to the API.
- Bug Fixes:
- Fixed an issue with failed SourceBuffer remove() operations causing audio track switching to crash playback.
- Fixed a parsing issue when a packed audio format type was specified (for example, *.ec3) but MPEG-4 based segments are used (for example, *.mp4, *.mp4a, and so on).
- Fixed an HLS issue where inband CEA608 captions were displayed with noticeable latency.
- Fixed HLS and Smooth content with no audio failing to load.
August 27, 2019
CAF Web Sender
- Web Sender now uses the new Custom Elements v1 syntax. This version replaces v0, which has been deprecated.
- Fixed changed events for
breakClipTime, and
liveSeekableRange, using new the
getEstimatedBreakClipTime, and
getLiveSeekableRangefunctions added to Chrome M77.
August 12, 2019
iOS Sender v4.4.4
- Improved experience on iOS 13.
- Improved support for Cast device discovery.
July 30, 2019
CAF Receiver
- Upgraded Shaka Player version to 2.5.1.
- Fixed issue where metadata overlay disappeared too quickly during content loading.
- Fixed handling of rejection in load interceptor to clear load state.
- Updated
setBrowseContentto be nullable.
- Fixed issue where reported current time was incorrect when seeking over Ad breaks.
- Added support for ignoreTtmlPositionInfo to ignore TTML captions positioning.
- Improved support for handling of load errors:
- Avoided firing multiple
- Triggered media manager error callback to clear player on load error.
July 22, 2019
iOS Sender v4.4.3
- Improved support for handling of load errors by providing an error_reason.
- Released a version of the SDK without Guest Mode.
June 17, 2019
Android Sender 17.0.0
- The latest SDK switches from Android Support Libraries to Jetpack (AndroidX) Libraries. Libraries will not work unless you make the following changes in your app:
- Upgrade
com.android.tools.build:gradleto v3.2.1 or later.
- Upgrade
compileSdkVersionto 28 or later.
- Update your app to use Jetpack (AndroidX). Follow the instructions in Migrating to AndroidX.
- For more information see the Google APIs for Android Release Notes.
June 10, 2019
CAF Receiver
- Introduced support for Media Browse, a new feature for discovering content on smart displays.
- Added localization in the default UI for 9 new locales:
- Danish
- English (UK)
- English (India)
- English (Singapore)
- French (Canada)
- Italian
- Norwegian
- Dutch
- Swedish
- Removed rounded corners from album art for the remote UI.
- Bug fixes for Live and other areas.
iOS Sender v4.4.2
- Guest Mode
- Added support for the "Enable Guest Mode" option from the Cast Developer Console.
- Fixed a Guest Mode session management issue.
- Bug Fixes
- Fixed a localization issue introduced in v4.4.1.
April 24, 2019
iOS Sender v4.4.1
- Introduced alpha support for live streams. For details, see the developer guide.
- Added new data structures and attributes for live stream status.
- Added new GCKMediaMetadata keys.
- Added Live stream media commands:
- [GCKRemoteMediaClient loadMediaWithLoadRequestData:]
- [GCKRemoteMediaClient seekWithOptions:]
- Improved expanded controller UI to support live streams:
- Changed the layout and appearance of the expanded controller.
- Bug Fixes
- Fixed GCKUICastContainerViewController's bottom on iPhone X.
- Fixed reconnection issue when the OS is performing extensive network activities.
- Fixed crash in accessibility label initialization with GCKUICastButton.
April 23, 2019
CAF Receiver
- Introduced alpha support for live streams. For details, see the developer guide.
- Updated UI to support live streams including live indicator.
- Added mediaCategory field to media status to indicate if a media is a video, audio, or a photo.
- Bug Fixes
- Fixed usage of the playbackConfig.segmentHandler return value.
Media Player Library
- Added HEVC codec support to HLS in MPL.
CAF Web Sender
- Introduced alpha support for live streams. For details, see the developer guide.
- Introduced support for ads. For details, see the developer guide.
- Added RemotePlayerController.skipAd() for skippable ads.
Android Sender 16.2.0
- Introduced alpha support for live streams. For details, see the developer guide.
- Added new data structures and attributes for live stream status.
- Added new MediaMetadata keys.
- Added Live stream media commands:
- RemoteMediaClient#load(MediaLoadRequestData)
- RemoteMediaClient#seek(MediaSeekOptions)
- Improved expanded controller UI to support live streams:
- Added live stream support to the expanded controller UI widgets.
- Changed the layout and appearance of the expanded controller.
- Introduced the live stream compatible CastSeekBar widget to replace the native SeekBar.
- Modified the ExpandedControllerActivity to use the CastSeekBar instead of SeekBar for live stream compatibility. The ExpandedControllerActivity#getSeekBar() is now deprecated and will return a dummy instance.
- Added a new MediaStatus#PLAYER_STATE_LOADING player state:
- When the receiver begins loading the media, the playerState property in MediaStatus is set to MediaStatus#PLAYER_STATE_LOADING until it begins buffering or playing content.
- In most cases, the app handles this state the same way it was handling MediaStatus#PLAYER_STATE_BUFFERING.
- 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.
- Modified MediaMetadata to support audio books:
- Added new MediaMetadata keys.
- Added new metadata type for audiobooks.
March 25, 2019
CAF Receiver
- Replaced usage of
customElements.define()to make the Cast Receiver SDK compatible with newer versions of the Cast platform.
MediaStatus.breakStatusnow returns an empty object when ad breaks are present for content but an ad break is not currently playing.
- Fixed an issue with inline VAST tags parsing.
Media Player Library
- Fixed the issue of ~20s delay when switching audio tracks.
February 13, 2019
CAF Receiver
- Fixed the sudden appearance of the Skip Ad button for Touch UI.
- Fixed displaying breaks information on remote control.
Media Player Library
- Fixed an issue with handling licenseUrl for preloaded media.
February 5, 2019
iOS Sender v4.3.5
- Added support for Audiobook metadata, see GCKMediaMetadata.h for more details.
- Set correct value for static_framework on the podspec.
- Split styleAttributes for the navigation bar and the toolbar in the connection controller.
- Bug Fixes
- Fixed a crash on certain failed database initializations.
- Fixed an issue with the receiver volume bar during incoming phone calls or alarm rings.
- Fixed the redundant calling of certain delegate methods during discovery.
- Fixed an issue where the media queue list wouldn't clear after the last item in the queue finished playing.
- Disallowed showing non-reachable nearby devices when the network is not available.
- Disabled the volume slider on the device view controller for devices in which the volume cannot be controlled.
December 17, 2018
iOS Sender v4.3.4
- Improved Ads Support
- Multiple UI and handling improvements for Ads.
- VMAP support.
- GCKMediaQueue
- See GCKMediaQueue.h for more details.
- API Updates:
- GCKAdBreakClipInfo
- A builder object GCKAdBreakClipInfoBuilder has been added for constructing new or derived GCKAdBreakClipInfo instances.
- GCKAdBreakInfo
- A builder object GCKAdBreakInfoBuilder has been added for constructing new or derived GCKAdBreakInfo instances.
- GCKMediaInformation
- New APIs have been added to represent media streams with either contentURL or entry.
- GCKMediaQueue
- A media queue data model that contains the full list of queue items for the CAF receiver.
- Bug Fixes
- Fixed a crash when parsing an invalid GCKMediaInformation JSON file.
December 13, 2018
Android Sender 16.1.2
- Fixed a bug where the Cast SDK may try to resume the session if the session was stopped by another sender.
- Fixed a notification bug that occurred on devices running Android O or later when the Casting app was in background.
- Fixed a bug where the Cast media notification might be unresponsive after the Casting app is killed.
December 12, 2018
CAF Receiver
- Fixes for touch control initialization and image URL escaping.
- Added Repeat and Shuffle states to audio UI.
- Polished the CAF Video playback UI.
- Fixed an issue in playing an Ad after seek.
- Deprecated PresentationData in PlayerData.
Receiver v2
- Fixes for touch controls initialization and image URL escaping.
- Added user customData to store session response.
Media Player Library
- Fixed a bug in Smooth Live streams with small segments.
- Fixed a bug in HLS live stream where it failed to correctly recognize manifest changes.
November 28, 2018
CAF Receiver
- Improved the default UI:
- Added support for audiobook chapter metadata.
- Fixed an issue related to skippable Ads.
- Improved media controls:
- Added support for group volume control.
- Improved "Back" button behavior.
- Added talkback support for the "Stop" button.
- Fixed an issue when seeking in a live stream.
- Added an opt-in flag for Smooth Live streaming seek.
Receiver v2
- Improved the default UI:
- Added support for audiobook chapter metadata.
- Fixed an issue related to skippable Ads.
- Improved media controls:
- Added support for group volume control.
- Improved "Back" button behavior.
- Added talkback support for the "Stop" button.
- Fixed an issue when seeking in a live stream.
Media Player Library
- Fixed an issue with HLS/CMAF CEA-608 captions.
October 22, 2018
iOS Sender v4.3.3
- The minimum version supported by iOS SDK is now iOS 9.
- Bug Fixes
- Fixed a build issue when using the Cast SDK with certain other Google-released SDKs.
- Fixed a crash on certain failed initializations.
- Fixed a crash when adding a nil channel through addChannel in GCKCastSession.
- Changed the visibility of certain symbols.
October 18, 2018
Android Sender 16.1.0
- Improved UI for a better Ads experience:
- Changed the default color and z-position of ad break markers.
- Changed the default color of the progress bar.
- Added support to load ads through VmapAdsRequest in MediaInfo.
- Added android.permission.FOREGROUND_SERVICE permission to the CAF manifest file so that CAF media notifications show up properly on Android API level 28.
- Updated documentation for UIMediaController.bindSeekBar(). The bound SeekBar should not be used for livestreams, as it results in undefined behavior.
October 4, 2018
CAF Receiver
- Improved touch controls: added a "Stop" button and handled missing metadata.
- Fixed a bug where skipping a paused ad didn't start playing the main content.
Receiver v2
- Improved touch controls: added a "Stop" button and handled missing metadata.
- Updated metadata display in touch compatibility mode.
Media Player Library
- Different encryption methods used in video and audio are now handled from one stream.
- Fixed issues in Smooth Live stream seek.
- Fixed issues with the order of stream handling when refreshing the Smooth Live manifest.
- Added an opt-in flag for Smooth Live manifest refresh.
September 20, 2018
CAF Receiver
- Added support for explicit filtering for load.
- Fixed issues in detecting video/mp2t audio stream type.
Media Player Library
- Added HLS support to audio streams without default=yes.
- Fixed issues in handling demuxed HLS streams.
- Fixed issues in CMAF 608/708 captions support.
- Fixed issues in HLS streams with multiple encryption methods.
- Fixed issues in handling CMAF live content.
- Fixed issues in DRM playback of streams with Timescale.
- Improved Smooth Live stream support.
September 10, 2018
iOS Sender v4.3.2
- Bug Fixes
- Fixed an issue with relaunching on certain failed initializations.
- Improved the SDK initialization time.
September 5, 2018
Android Sender 16.0.2
- Fixed the IllegalStateException thrown when ReconnectionService is started in background if the app targets to Android O or higher. Apps that enable reconnection service should update to use this version to avoid being affected this bug.
August 13, 2018
CAF Receiver
- Added presentation data to playerDataBinder to draw UI easily.
- Added Ad duration indicator and "Skip Ad" button for Media Controls UI.
- Fixed a bug where CAF would report buffering state even after media is playing.
- Updated playerDataBinder events timing: If multiple fields of playerData are getting updated in the same time, delay PlayerDataBinder field update events until all fields will have updated values.
- Added support for rejected promise from a load interceptor.
- Fixed an issue where player UI enters buffering state after loading.
- Changed logic so that we trigger media status event only after the media status interceptor promise is resolved.
- Stopped showing "pause" icon on Media Controls for media with PhotoMediaMetadata.
- Added image loading animation for audio player on touch screens.
- Fixed bug of showing progress of previous item during loading.
Media Player Library
- Fixed a live start time issue with CMAF streams.
August 2, 2018
Android Sender 16.0.1
- Fixed an IllegalStateException which happens when a seek request times out in RemoteMediaPlayer and RemoteMediaClient. This is a regression introduced in 15.0.0. Clients should update to 16.0.1 or newer to get the fix.
July 30, 2018
iOS Sender v4.3.1
- Static build - We're now releasing both a static build and a dynamic build to help with some build issues regarding duplicate symbols when using our SDK with a few other Google released SDKs. The static build will be distributed through cocoapods and rely on the Protobuf pod while the dynamic build will have the protobuf pod compiled into the SDK and will be available for download via the downloads section.
- Bug Fixes
- Fixed an issue where the video progress bar would be disabled after the skip ad button was tapped.
- Fixed a crash when parsing certain UDP packets.
- Fixed a crash in the teardown of sessions.
July 27, 2018
Android Sender 16.0.0
- Introduced CastDevice.getInetAddress(), and
deprecated CastDevice.getIpAddress().
- getInetAddress() is both IPv6 and IPv4 compatible.
- getInetAddress() and getIpAddress() can be nullable.
- Notice: The large icon of the media notification may not show up for Android API levels less than 27.
- Please update to release 16.0.0 or later to fix this issue. No code changes necessary.
June 26, 2018
Cast Button Update NoticeWe have updated the Cast sender button to be forward compatible with new Custom Element API. See new usage in our documentation guide.
Media Controls
- Improved overall accessibility and UI for touch controls.
- Stopped hiding controls overlay when screen reader is enabled.
- Decreased overlay timeout to 4.5 seconds for video controls only; audio is still 8 seconds
CAF Receiver
- Fixed issue where getLiveSeekableRange being called before play start would return null. It now sets start time reference and returns a live range.
- Added support for intercepting the media user action message in CAF. The same interceptor will handle both CAC and media user action requests.
- Fixed issue where url parser would break with "/" in parameter values.
- Updated UI to match whether seek is disabled in supported commands.
- Fixed issue where the player state would turn into playing while receiver was still buffering.
CAF Web Sender
- Fixed issue where removing an event listener from within an event handler would occasionally result in event handlers being skipped.
- Updated Cast sender button to be forward compatible with new Custom Element API.
June 13, 2018
iOS Sender v4.3.0
- IPv6 support
- Support for this has been turned on.
- Note: if a device is on an IPv6 only network, the deprecated IPAddress field on GCKDevice can now be nil (applies to v4.2.0 as well)
- GCKRemoteMediaClient
- Supports skipping ads.
- GCKMediaInformation
- Initializer now supports Ad break clips and entity, the old initializer has been deprecated.
- GCKAdBreakClipInfo
- whenSkippableInMs is renamed to whenSkippable.
- In seconds instead of milliseconds now.
- Bug Fixes
- Fixed a discovery issue with groups.
- Fixed a discovery issue with certain Vizio TVs.
May 31, 2018
CAF Receiver
- Introduced new Media Controls Library to enable receiver apps for Smart Displays.
- Created new Default UI for audio specific receiver apps.
- Added support for CEA608 track coming from a load request.
- Added breakId to BreaksEvent.
- Added new CaptionMimeType enum for CEA608, TTML, VTT, TTML_MP4.
- Added new convenience methods to change supportedMediaCommands in PlayerManager.
- getSupportedMediaCommands
- setSupportedMediaCommands
- addSupportedMediaCommands
- removeSupportedMediaCommands
- Bug Fixes:
- Fixed url parser to parse media content type.
Media Player Library
- Added encrypted CMAF support.
- Added ability to tell whether a smooth stream is a live stream or event stream.
April 20, 2018
iOS Sender v4.2.0
- IPv6 support
- Discovery and casting should work on IPv6 only networks now.
- Networks that have support for IPv4 should not be affected as the IPv4 network will be preferred.
- Guest mode connections aren't supported yet for IPv6 only networks.
- Support for this will be turned on when Cast Receivers support IPv6.
- Bug fixes
April 17, 2018
Android Sender 15.0.0
- The following class and methods are deprecated:
- Fixed inconsistency issues with TracksChooserDialogFragment that led to crashes
- The following methods are deprecated:
- A new method is added to create a TracksChooserDialogFragment:
- Deprecated RemoteMediaClient.Listener class. Use the new RemoteMediaClient.Callback class instead.
- The following class and methods are added:
- RemoteMediaClient.Callback
- RemoteMediaClient.registerCallback(Callback)
- RemoteMediaClient.unregisterCallback(Callback)
The following class and methods are deprecated:
- RemoteMediaClient.Listener
- RemoteMediaClient.addListener(Listener)
- RemoteMediaClient.removeListener(Listener)
CAF Queueing
Introduced CAF queue sender APIs. The new APIs are a replacement for the existing media queue mechanism with the following features:
- The MediaQueue class is a sparse model representing the queue. It keeps track of the list of item IDs in the queue, but only fetches the MediaQueueItem details on demand.
- Provides MediaQueueRecyclerViewAdapter and MediaQueueArrayAdapter as convenient adapter classes to be used in RecyclerView and ListView.
- Previously, the media queue comes with the media status, which can be accessed through MediaStatus#getQueueItems(). This will be deprecated in the future and MediaStatus#getQueueItems() will return a maximum of 3 items.
Ads Support Update
- Cast Sender API now supports loading VAST ads. Content providers provide an AdTagURL that is sent to the server to load an AdsResponse (sample response). The response is an XML document that contains the actual ad information.
Skip Ads UI:
- If an Ad is skippable, a countdown text will appear in the expanded controller mode, counting down to when the ad can be skipped.
- A functional "Skip Ad" button will also appear in the new SDK when the ad can be skipped.
Other changes:
- Added API CastContext#getSharedInstance() without Context as parameter.
- Fixed an IllegalStateException crash. The crash happens when the device connection is temporarily suspended but the GoogleApiClient is not suspended yet. After the fix, calling Cast APIs will no longer throw an IllegalStateException, and the PendingResult for the API call will be completed with a new result code CastStatusCodes#DEVICE_CONNECTION_SUSPENDED.
April 16, 2018
CAF Receiver
- Improved Ads VAST support and added VMAP support
- Added getStats to receive playback statistics
- Improved support for cea608 text tracks
- Added events for range mode changes in Live streams
- Added support for unencrypted HLS CMAF streams
- Added HLS audio-only Streaming MimeTypes
- Added E_AC3 as a HlsSegmentFormat option
Receiver v2
- Added better support for queue change messages and broadcasting changes to queue data
- Added support for CMAF and E_AC3 segment format
Media Player Library
- Fixed a race condition where the duration would be reported as -1
- Fixed a failure that occurred during preload
- Improved live end of stream detection
March 20, 2018
Android Sender for Google Play services APK 12.0.0
- Ads support
- Updated AdBreakInfo and AdBreakClipInfo data formats.
- Provides a way for the sender to send advertisement break and clip information in the media load request in MediaInfo.
- Support new CAF Receiver APIs
- Added credentials and credentialsType to MediaLoadOptions when loading message from sender to receiver.
- Added entity to MediaInfo that represents an application-specific deep link for loading the media.
- Added CastContext.setReceiverApplicationId() to enable mutable application ID support.
- Bug fixes
- Previously, when the version of Google Play services installed on the device was older, calling CastContext.getSharedInstance() would cause a crash. Clients should check the Google Play services version and notify the user to update Google Play services or silently fail and disable Cast-related features. Previously, some UI widgets provided by the SDK would call CastContext.getSharedInstance(Context) when inflating the layout, which would crash the app without explicitly calling CastContext.getSharedInstance(Context). Starting with this release, those UI widgets would silently fail to initialize so they won't crash the app.
March 15, 2018
Media Player Library
- Fixed an HLS manifest parsing issue that could lead to a stream duration of -1 which could then disable sender media controls.
- Fixed an issue with missing APIs for SMPTE-TT.
March 8, 2018
iOS Sender v4.1.0
- Vast Ad format support
Added new member fields in
- Cast Overlay Instructions - updated method to handle a wider variety of cases.
DiscoveryManagerhas a new method for easier tracking of the removed device.
- CAF Queues - Remote media client now has internal support for Queues!
- Bug Fixes - Fixed a couple of connectivity issues that prevented reconnection in certain conditions. Also other general bug fixes to improve stability.
March 2, 2018
CAF Receiver
- Added support for inband CEA608 text streams from HLS data segments.
- Improved live stream support including live and event stream detection and seek range handling.
- Updated default UI to display better metadata about playing media.
- Added support for VAST ads servers.
- Text track language selection now persists within an app session across media sessions.
- Playback bitrate now persists within an app session across media sessions.
- Added a CAF queue parameter to report the number of queue items in media status.
- Added "skip ad" flag to supported commands in media status.
Bug fixes:
- Fixed a lifecycle state issue where LOADED was treated as BUFFERING.
- Fixed a mime type handling issue where audio/mp4 was treated as video/mp4.
- Fixed various minor CAF queue issues.
February 21, 2018
Media Player Library
- Added support for unencrypted HLS/CMAF.
- Allow skipping over segments in case of network failure.
- Added support for Promise return values on the following host processing methods: processManifest(), processSegment(), and processLicense().
- Added stream indicators isLiveStream() and isEventStream() that describe live streams.
- Bug fixes:
- Fixed an SMPTE-TT issue where captions were being shown incorrectly.
- Fixed an MPEG-DASH parsing issue that caused TTM XML in MP4 tracks to fail.
February 16, 2018
Receiver v2
- Added LiveSeekableRange object to the media namespace to indicate the live seek range to senders.
- Added SKIP_AD enum to supported commands in media status.
- Bug fixes:
- Fixed an issue where "Stop casting" would disconnect the sender but the receiver would not tear down, causing the media to continue streaming.
- Fixed StreamType to correctly report as live.
December 18, 2017
Android Sender for Google Play services APK 11.8
Made the following improvements to the
When binding views to
UIMediaController, listeners will be registered such that when a user interacts with the views, those listeners will call the appropriate event handling methods to handle the interactions. The following event handling methods have been added to
UIMediaControllerto handle these interactions.
onSeekBarProgressChanged(SeekBar, int, boolean)
onForwardClicked(View, long)
onRewindClicked(View, long)
- Clients are able to override the event handling methods to customize the behavior.
- Improved the documentation of
UIMediaControllerto clarify the implementation.
- Bug fix - Inverted the mute toggle button display so that it shows a speaker icon when unmuted and a crossed speaker icon when muted.
- When binding views to
- Instant apps - Cast SDK for Android now supports Instant apps.
December 4, 2017
iOS Sender v4.0.2
- Support iOS 8.0 - A previous release had removed support for iOS 8.0 and earlier.
- Include high-resolution icons - Include @2x and @3x images as part of the resources.
- Fixed length of
CFBundleShortVersionStringin Info.plist
November 17, 2017CAF Receiver
- Localization support for English, Spanish, French, Japanese and German.
- Customizable ad seek behavior. See new class BreakManager.
- Added event for ID3 in HLS streams. See new Id3Event and EventType ID3.
- Added event for EMSG in MPEG-DASH streams. See new event EmsgEvent and EventType EMSG.
- Added the following splash, logo, and watermark customization
--splash-background --logo-repeat --watermark-background --splash-size --logo-background --watermark-position --splash-color --logo-size --watermark-size --logo-color --watermark-color --watermark-repeat
- Added slideshow parameters to cycle through up to 10 images.
- Added boolean property to enable/disable text tracks. See
- Bug fixes
- Fixed issue to make the preload behavior of ad breaks and queue items consistent.
- No longer display scrubber time and duration for invalid duration.
- Fixed issue where an ad icon was not shown if paused or buffering during an ad break.
- Fixed an issue where an event listener removing itself caused the next event listener to be ignored.
- Improved preloading logic for queues.
- Added receiver
CastReceiverManager.Configfor you to track your receiver app version.
- New property to enable/disable text tracks. See
- Bug fixes
- Fixed issue where receiver would fail on older Chromecast versions that
don't support
- Fixed issue where if the receiver was playing a queue and the item failed to load, the playback would stop even though there were more items in the queue. Now the playback will continue to the next item, if it exists.
- Added support for GROUP-ID attribute in HLS Rendition Groups.
- Added support for HLS streams with raw
- Trigger event when quality level changes. See
- Added method
player.onAudioChange(), which will try to reuse the audio source buffer before resorting to reloading the entire player. Previously
player.reload()had to be called for each audio change.
- Bug fixes
- Fixed bug where audio-only streams contained in TS segments were not recognized as audio only.
November 14, 2017
iOS Sender v4.0
Variable playback rate - Added UI elements to display and
change the playback rate for the current media item. Made changes to
GCKUIMediaController, and
GCKUIPlaybackRateController. For details, see variable playback rate.
- Removed all deprecated classes from 2.x versions -
The major ones are
GCKMediaControlChannel, and all the Game Manager APIs.
GCKAnalyticsLoggingEnabledhas also been removed.
- Bug fix - Fixed an issue where some memory would leak when a Cast session ended.
November 6, 2017
Android Sender for Google Play services APK 11.6
Made the following changes to methods in the RemoteMediaClient class.
- Consolidated
load()methods - Added the method
load(MediaInfo, MediaLoadOptions)which has the same functionality as the other
load()methods in
RemoteMediaClient, which are now deprecated:
load(MediaInfo mediaInfo, boolean autoplay, long playPosition)
load(MediaInfo mediaInfo, boolean autoplay, long playPosition, long[] activeTrackIds, JSONObject customData)
load(MediaInfo mediaInfo, boolean autoplay, long playPosition, long[]
load(MediaInfo mediaInfo)
load(MediaInfo mediaInfo, boolean autoplay, long playPosition, JSONObject customData)
load(MediaInfo mediaInfo, boolean autoplay)
- Variable Playback Rate - Added the methods
setPlaybackRate(double, org.json.JSONObject). Call these methods to set the playback rate for the current media item.
Known Issue
- Issue with notifications for Cast SDK in Google Play services API 11.6 and earlier. Cast media notifications and remote display notifications will not work for apps that target Android O (and O-specific features that require API level 26). This issue will be addressed in Cast SDK Google Play services APK 11.8.
October 12, 2017
iOS Sender v3.5.6
GCKCastContextmust be initialized from the main thread. This condition is now enforced with an assertion.
- A new method on
GCKCastContexthas been added:
+[isSharedInstanceInitialized]. It checks if the context has already been initialized.
- Optimization of download requests.
The default internal implementation of
GCKUIImageCacheis now optimized to perform only a single HTTP download when it receives multiple overlapping fetch requests for the same URL.
- Bug fixes
- Fixed an issue where device discovery was nonfunctional when running on a Simulator.
- Fixed a rare crash that can occur when making HTTP requests.
- Fixed a rare crash when app remained active in the background and battery state changed.
- Fixed a rare network socket related crash.
September 28, 2017
CAF Receiver
Cast Application Framework Receiver SDK is a major upgrade from the existing Receiver v2 SDK. Improvements focus on significantly reducing the amount of code it takes to implement a receiver app, while making Cast more reliable and easy to maintain. This was done by implementing all common use cases into the new Cast Application Framework (CAF).
The resulting improvements in reliability and performance benefit both existing receiver apps that you upgrade, as well as new receiver apps. Moving forward, your app will automatically benefit from new features such as Google Assistant.
CAF Receiver SDK also comes with a built-in media player, which provides a seamless and easy playback experience. It also provides the same flexibility as before, allowing your own player UI that can intercept and override messages and methods to execute your custom business logic.
Features Application configuration and options, audio tracks, closed captions, styling the player, custom UI data binding, event handling, message interception, custom messages, ad breaks, device capabilities, check for display type, queueing and DRM.
Developer code samples and documentation
- Sample CAF Receiver app
- Overview of CAF receiver features
- Create a basic CAF receiver
- Add features to your CAF Receiver
- CAF Receiver API reference
September 22, 2017
Android Sender for Google Play services APK 11.4
- startSession method - Added the
startSession(Intent)method to the
SessionManagerclass. Call this method to join a cast session when the sender app is launched by an implicit intent.
- Known issue: Remote Display should not be used with this version of Google Play Services APK.
August 14, 2017
Android Sender
- Added support for custom media notification actions. This enables you to add custom buttons on Cast notifications. For details, see NotificationActionsProvider.
- Deprecated the Games Manager com.google.android.gms.cast.games package.
Aug 11, 2017
iOS Sender v3.5.3
- Bug fix: Fixed an issue where receipt of a large message from the receiver can lead to a corrupted message stream.
- Bug fix: Fixed an issue where receiver device authentication checks can fail in certain time zones and/or when the sender device's 12/24 hour clock time setting is changed.
July 31, 2017
- Added the
canDisplayTypemethod. Its signature is
canDisplayType(mimeType, codecs, width, height, framerate).
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.
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
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
streamIdas part of
start_codechecking 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.
June 14, 2017
Media Player Library
- Segmented TTML: Support MP4 segmented TTML captions in DASH.
- Encryption/decryption: Allows transition between unencrypted ads and encrypted programs.
- MediaKeySystemConfiguration is now properly configured with
- Switch audio tracks: Support switching audio tracks in MPL
based on the current language.
Chrome Sender
- Bug fix: mediaSession items are not synchronized with receiver.
- Bug fix: Mirroring to Android TV shouldn't show volume control.
- Bug fix: Second SESSION_START_FAILED event not fired.
May 15, 2017
iOS Sender v3.5
Bug fixes
Fixed ambiguous layout constraints in
GCKUIMiniMediaControlsViewControllerwhen there is no media title or subtitle.
- Fixed several other minor bugs.
- Fixed ambiguous layout constraints in
- No API changes
May 8, 2017
Android Sender
- Doc update: Significantly upgraded the Migrate CCL Sender App to Cast SDK v3 doc with detailed steps.
- Doc update: Wrote up procedures for adding custom buttons to mini controller and expanded controller.
April 12, 2017
iOS Sender v3.4
- Added custom views for Cast media play/pause controls and stream position controls.
Added new class GCKUIPlayPauseToggleController and associated new property playPauseToggleController on
GCKUIMediaController. This class can be used to implement a custom play/pause toggle UI, in situations where a
GCKUIButtonwould not suffice.
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
UIProgressView, and
UILabelcontrols would not suffice.
- Added ability to style the "Stop casting" and "Cancel" buttons in the Cast dialog.
Added the following properties to
GCKUIStyleAttributes: buttonTextFont, buttonTextColor, buttonTextShadowColor, and buttonTextShadowOffset.
- Other API changes
All API changes are backward compatible and are available in the iOS API documentation.
- New notifications kGCKUICastDialogWillShowNotification and kGCKUICastDialogDidHideNotification
and -[setDeviceMuted:]
GCKSessionnow return
GCKRequest*instead of
New methods on
GCKRequest: -[complete], -[failWithError:], -[abortWithReason:], and +[applicationRequest]; new property external.
New properties
disableDiscoveryAutostart on
New property
The Game Manager APIs (
GCKPlayer*classes) have been deprecated.
- Bug fixes
- Fixed a large and a small memory leak.
- Fixed a bug where a background task ran for too long under certain conditions.
- Fixed a bug where an app failed to reconnect after disabling and enabling Wi-Fi to the Cast session.
- Fixed a bug where multiple connect attempts that were made before a connection succeeded could lead to session failure.
March 24, 2017
iOS Sender
- Doc update: Updated the Logging doc for how to produce verbose debugging messages and log them to the system console.
- Doc update: Updated the User Experience page and Cast branding guidelines for "Chromecast built-in" and "Chromecast-enabled" terminology, and new Chromecast badges.
March 14, 2017
Media Player Library
- HLS with raw MP3 segments: Media Player Library now supports raw MP3 media segments in HTTP Live Streaming (HLS). For more information, see Frequently Asked Questions.
Add callback
onCueto 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.
- Doc update: Supported Media for Google Cast has been updated.
- Bug fix: Fixed media information events when the media is stopped.
- Bug fix: Fixed an MPL error when trying to select EC-3 audio tracks.
December 6, 2016
Media Player Library
- 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
to enable your app to know the resolution of the currently playing media.
This property gets the current instance of
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
hdrTypeproperty 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.shto 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
to the
GCKMediaPlayerStateenum type. When the receiver begins loading the media, the SDK sets the playerState property in
GCKMediaPlayerStateLoadingand 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
GCKMediaInformationlist 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.
- Controlling media playback: A new class GCKRemoteMediaClient (Protected) has methods that can be called only by GCKRemoteMediaClient subclasses.
- UX bug fix: The expanded controller (in the framework) now displays total duration, instead of remaining playback time, at the right end of the seek bar.
Bug fix:
GCKFrameworkResourceshas been removed from the public API.
November 21, 2016
Android Sender
Requires Google Repository revision 39. (For Google Play services APK version 10.0.)
- 4K video format: New method getVideoInfo() in MediaStatus gets the current instance of VideoInfo, a new class. 4K format is indicated by constants HDR_TYPE_*.
- States of Cast session: New method CastContext.getCastState() exposes CastState which holds the current session state, such as whether devices are available and a session has been established.
- New @drawable button attributes: Use these attributes to customize button styles in themes for mini controller and expanded controller.
Fix image aspect ratio:
now has an onPickImage
handler that takes an
class with the expected aspect ratio that you can use to customize the
MediaMetadataimages 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.
CastContextmethods: All methods in CastContext that your app calls must be called from the main thread, otherwise an
Exceptionwill 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.
For details, see Chrome Sender setup, integration, advanced features, and Chrome Sender API reference.
October 24, 2016
Android Sender
Requires Google Play services SDK revision 37. (For Google Play services APK version 9.8.)
- When playing ads, the appearance (color and transparency) of the seek bar has been improved, and the background poster images get blurred.
- Added ability to customize the style of mini controllers: added castBackground for setting its background color, castButtonColor to color all buttons used in the mini controller, and castProgressBarColor to color the progress bar.
- ImageHints provides hints to an ImagePicker about the type and size of an image to be selected for display in the UI.
October 20, 2016
- Minor updates to Receiver API
- Support 4K info in MediaStatus
Media Player Library
- EMSG box callback support for MPEG-Dash
- Improved bandwidth calculation logic for initial playback
- New documentation: Streaming Protocols
September 21, 2016Android sender
- Ads - On Android, you can now draw ad breaks on the seek bar in the expanded controller. In addition, for ads, expanded controller, mini controller and notification control, play/pause are disabled.
- Live Streams - When an Android sender app is playing a video or audio live stream, the SDK automatically displays a play/stop button in place of the play/pause button in the expanded controller, mini controller, and notification control.
- API changes:
- New classes for ad break information:
- New method in CastSession:
- New method in UIMediaController:
bindTextViewToStreamDuration(TextView view, View liveStreamIndicator)
- Ads - In iOS, background poster image gets blurred while displaying ads.
- Supports dynamic frameworks - Consequently, Xcode setup now requires that the GoogleCast framework be embedded.
- Fixed issue: Guest Mode works with this version of Cast SDK for iOS.
- API changes:
- Converted GoogleCast.framework to a dynamic framework
- New Framework Dependency: CoreGraphics.framework
- New methods on
- New property
- Moved
remoteMediaClientproperty from
- Removed properties
September 12, 2016
Media Player Library
- Redesigned and Improved Failover Policy for both segments and manifests downloads.
- Support for W3C Clear Key DRM System and options for preferred content protection system.
- Use setLiveSeekableRange in MediaSource for live streams.
- Support for audio playlist in MPEG2 TS.
- Support for using either sequence number or program date time; the default will remain program date time.
August 1, 2016
- An expanded controller widget for Android and iOS is now provided by the Cast framework so you don't have to implement it yourself.
- You can now customize widgets by setting themes, setting styles and choosing buttons and for Android and iOS.
- In iOS sender apps, you can now draw ad breaks on the seek bar in the expanded controller. In addition, for ads, expanded controller, mini controller and notification control, play/pause are disabled. Android support is coming soon.
- Known issue: Guest Mode doesn't work with this version of Cast SDK for iOS — use version 3.2 instead.
Published guides to migrate to Cast SDK v3:
- From Cast Companion Library
- From Android Cast SDK v2
- From iOS Cast SDK v2
July 14, 2016
Media Player Library
- (Encrypted) Packed Audio Surround Sound Support.
- Support Dolby Vision codec matching for various formats.
July 13, 2016
The release of Chrome v51 removes the requirement to install the Cast extension. The Chrome Sender app documentation has been updated accordingly.
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.
New documentation:
- Android sender setup, integration and advanced features. Android API reference.
- iOS sender setup, integration and advanced features. iOS API reference.
- Guides to migrate to Cast SDK v3.
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.
Cast SDK v3 contains two distinct parts:
- v2 compatibility - v3 includes sender API v2 so that existing v2 sender apps will continue to run.
- Framework - v3 adds a new application framework that provides all of the improvements.
In the v3 API reference docs, the parts that make up the new framework are annotated as follows:
- Android packages that are new in v3 are marked "New in v3". Example: Cast package summary.
- 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.
This release includes reference sample apps that implement a full Cast user experience, compliant with the Google Cast Design Checklist. It also includes Cast codelab tutorials for Android and iOS.
May 16, 2016
Media Player Library
- Segment download and source buffer integration improvements.
- Improved fine grain error reporting, bandwidth tracking, and stall prevention logic for video analytics and quality.
- SMPTE-TT backgroundImage support to captions.
- Sublevel support for DASH.
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 "No texture or camera set" error sometimes being thrown before casting begins.
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
API Changes
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.
Bug Fixes
- Assertion raised by GCKCastSecureSocket during dealloc
- Crash after switching networks
- Logging override doesn't log if app hasn't wired up the GCKLogger delegate
- Guest Mode UI remains in English despite device language settings.
- Crash on armv7 introduced by linking with GoogleCastRemoteDisplay
Other Changes
- Added more diagnostic logging in the SDK.
- Fixed incorrectly formatted log message timestamps.
- Include hardware model info in UserAgent string.
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
Other changes
- Added Bitcode support in Google Cast SDK for iOS
- Added Bitcode support in Google Cast Remote Display SDK for iOS
Bug fixes
- Message delivery delayed
- Downgrading sdk v2.10.0 -> v2.9.0 leads to crash
- Display and color space corruption after removal of keyframes (remote display)
Known issues
- Cannot get background color from accessibility system settings
- Guest Mode UI has some English text after canceling PIN detection
December 3, 2015
Cast Unity Plugin
The initial release:
- Cast Remote Display Plugin for Unity Game Engine
- Remote Display Unity Plugin API Reference
- Remote Display App for Unity Game Engine
December 2, 2015
Media Player Library
- Improved content protection handling when DASH manifest is reloaded
- Removed requirement to have ending comma on #EXTINF
- Report MANIFEST_ERROR when MPL cannot parse dash manifest
- Added ability to skip a segment when a download fails after retries
- Use PROGRAM-DATE-TIME tag to find segment when playlist switching
October 19, 2015
Cast SDK release 2.10
Framework dependencies
- Accelerate
- AudioToolbox
- AVFoundation
- MediaPlayer
- CoreBluetooth
- libc++.dylib
API updates
- Remote Display API has a new dependency on MediaToolbox.framework
- GCKDevice: New property -[isOnLocalNetwork] - returns NO for Guest Mode device, YES for mDNS discovered device
- GCKError: New error codes GCKErrorCodeMessageTooBig, GCKErrorCodeNoMediaSession
- 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.
- GCKStreamDescriptor, GCKAudioStreamDescriptor, GCKVideoStreamDescriptor: bitrate property is deprecated. Remote display will ignore this value and automatically the configure bitrate.
- Remote Display API will automatically adjust the bitrate based on network congestion.
- Now includes Guest Mode support - these devices are discovered by the GCKDeviceScanner automatically (if Bluetooth is enabled on the iOS device).
- Known issue: cannot get background color from accessibility system settings
- Bug Fixes:
- [iOS SDK] Support a one-time startTime in the queueing APIs
- Long queue fails to load with Invalid Request error
- requestDidCompleteWithID not called when a loadMedia request completes
- sessionId not covered in IOS sdk documentation
- GCKDeviceManager fails to launch application more than once
- iOS metadata is not being sent in Clearcut logs
- Subtype is not logged in AdaptiveDiscoveryResult event
- Log model name in adaptive discovery result
- Filter thread id isn't logged in filter events
- Missing sender_id in filter, device controller and application events
- iOS Guest Mode UI remains in English with mobile device set to another language on iOS 9
Fixed: Missing Status update message when an item in the middle of a queue fails to load.
Players and Media Player Library
- Fixed an issue with CEA-608 processing in transport streams
- Improved ID3 tag processing for transport streams
- Fixes for EME handling on Android TV
- Improved bitrate switching for segments with short duration
- Deprecated host.useSingleKeySession
- Adjust the estimated interval time based on the source buffer to avoid buffering if the manifest time is not precise
September 17, 2015
Cast SDK release v2.9
Neither the iOS SDK nor the Chrome SDK are updated with this release.
Ships with the Google Play services 8.1 release.
- Media Queue API enhancements:
RemoteMediaPlayer.queueInsertAndPlayItemvariant that doesn't take in an initial play position
- Ability to set the playback duration in a
- Remote Display updates:
- New callback,
CastRemoteDisplayLocalService.Callbacks.onServiceCreatedcalled when the local service has been created. Apps must be recompiled to use the new client library.
- New callback,
- Various bug fixes
currentTimeproperty in the queueing APIs
currentItemIndexproperty in
MediaManager.PreloadRequestDataevent so the app can decide when to hide the autoplay UI
Media Player Library
- Added CEA-608 support for MPEG-DASH and Smooth Streaming
July 28, 2015
Cast SDK release v2.8
Neither the iOS SDK nor the Chrome SDK are updated with this release.
- Enabled Cast Screen Mirroring from QuickSettings for all Android devices running Android version 4.4 (API 19)
- Fixed crash in CastRemoteDisplayLocalService
- Fixed memory leak in CastRemoteDisplayLocalService
- Bug fixes related to Chromecast discovery
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
- Media queueing SDK
- Remote Display SDK
- Game Manager SDK
- New string constant kGCKFrameworkVersion (in GCKCommon.h) which contains the framework's version number.
- Deprecated initializer, GCKDeviceScanner -[init]. Replaced with new initializer, -[initWithFilterCriteria:].
- Various bug fixes
May 28, 2015
Cast lSDK release v2.7
- Media queueing API
- Remote Display API
- Game Manager API
- Various bug fixes
- Media queueing API
- Game Manager API
- Various bug fixes
- Media queueing API
- Remote Display API
- Game Manager API
- System Volume Control API
May 8, 2015
Cast SDK release v2.6.1
There are no backwards-incompatible API changes in this release.
- Namespace filtering in mDNS
- Expose capabilities for each device to Sender app (for Cast for Audio)
- Various bug fixes
See iOS Sender API for download information.
GCKDeviceCapabilities constants are now an enum. The names of the values have changed to drop the leading 'k' prefix. The old names are still present and will continue to work.
Bug fixes:
- Client is not notified of disconnection if app is in background
- netServiceBrowser:didRemoveService delegate callback should be implemented for goodbye mdns message
- GCKDeviceCapabilities should be an enum
- Constant logspam: "MdnsDeviceScannerEntry: Invalid non-absolute icon path: null"
- Bad GCKMediaInformation JSON can crash in the SDK
- Cast SDK disconnects when coming back from lock screen
- Rescan when foregrounding
Media Player Library
Bug fixes:
- Properly reset source ended state after seeking.
- Ensure that the initialization segment is not request for text (closed caption) streams.
- Jump over gaps in the media source based on media element buffered time ranges.
- Ensure that a source buffer is created after the manifest is loaded for player preload.
- Ignore init segment when computing buffer duration to improve ready to play time.
March 18, 2015
Cast SDK release v2.6.
- Various bug fixes
API changes:
- GCKCastContext: New class. Reserved for future use
- GCKCastChannel: New property
- GCKDevice: Added property
deviceVersion; method
hasCapabilities:; constant
- GCKDeviceManager: Added properties
- 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,
- GCKMediaInformation: Now implements NSCopying,
-[isEqual:], and
- GCKMediaInformation:
mediaTracksproperty now may not be set to an empty NSArray instead of nil
- GCKMediaMetadata: Now implements NSCopying and has a corrected
- GCKMediaStatus: Now implements NSCopying,
-[isEqual:], and
- GCKMediaTextTrackStyle: Now implements
- GCKMediaTrack: Now implements
- 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
standbyModeproperties public
- GCKCastChannel should have a reference to its owning GCKDeviceManager (fixed)
- Bug Fix: Avoid a condition where the player state is not properly reported if the application
has called
PLAYon the media element before the
loadedmetadataevent has been raised
- Provided new API
getStandbyStateand modified the internal behavior to report more accurate CEC information with
- 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
- Content preloading - Player.preload and host.onMediaDownloadEnded
- Fixed smooth streaming regression hit by some partners
February 3, 2015
Cast SDK release v2.5.2.
- Bug fixes to accompany the intermediate release of GMS Core
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
- 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
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)
- Enable E-AC-3 by default if pass through is enabled
- 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 (v2.5.1 1396)
This update fixes a bug in the previous release that causes apps to crash.
December 1, 2014
iOS sender API (v2.5.0 1346)
- GCKColor now implements
-(NSString *)description.
- GCKError now includes a human-readable
localizedDescriptionand a new error code
- GCKDeviceManager added
-[disconnectWithLeave:(BOOL)leaveApplication]which can be used to perform an "implicit" disconnect.
- GCKDeviceScanner added
- GCKMediaControlChannel added
-[cancelRequestWithID:]to allow the app to stop tracking (cancel) in-progress requests.
- GCKMediaControlChannelDelegate added
- 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 (v2.10)
- Faster app discovery after connection establishment.
- Improved reconnection handling in poor network environments.
- Media metadata constant consistency with Android, iOS.
Media Player Library (v1.0)
- E-AC-3 pass through support.
- Call
host.processLicensefor HLS key.
- Provide
- Allow override of network responses for Host
updateLicenseRequestInfo, and
- Fix duplicated HLS VTT cues when segment's last cue segment ends with a newline.
- Expose stream name in
- 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
- When seeking do not load segment data before seek time.
- Add response header and body to error information for network requests.
Receiver API (v2.0.0)
- Exposed new API
loadTracksInfoby the MediaManager that allows applications to override
onLoadbut 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 = 0during load.
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
September 24, 2014
iOS sender (v2.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
senderApplicationInfois now a method rather than a property
- GCKDeviceFilter
- Removed from the API
- Device filtering is accomplished by setting the
filterCriteriaproperty of the
GCKDeviceScanner, as described in Device scanner
- GCKDeviceManagerDelegate
- Renamed method
- New methods that notify the application of connection suspension and automatic reconnection:
- New methods:
Non-breaking changes
Enhancements to the API also include the following.
- GCKFilterCriteria
- Now implements
- GCKDeviceScanner
- New property,
- GCKDeviceScannerListener
- New method,
- GCKDeviceManager
- New properties:
- New initializer with parameter,
- New methods:
joinApplication:`g(when the session ID is irrelevant)
- All request methods now return an
NSIntegerwhich is the request ID, rather than a
BOOL. If there is an error enqueueing the request, methods return
kInvalidRequestID(which is 0).
- GCKDevice
- New property,
- New method,
- GCKCastChannel
- Updated methods no longer require you to call their superclass methods:
- GCKError
- New error code,
- GCKJSONUtils
- New method,
- GCKMediaControlChannelDelegate
- New method,
- 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
HTMLMediaElementor a
- Added track support to the new cast.receiver.media.Player interface. If the
player does not support tracks it can simply ignore the
- Fixed problem where Receiver's response to Media Namespace's load request with
- Fixed:
activeTrackIdsdoesn't get updated when the second LOAD does not provide any active track IDs
Media Player Library (v1.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
- Fixed sync when seeking
- Fixed key url being uudecoded for the key request
- Improved manifest parsing performance
- Do not re-request HLS key if the key URL stays the same in the manifest, but is changed in the
- Report seekable range in
player.getStateto 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
- New Media Track APIs:
- MediaTrack
- TextTrackStyle
- MediaStatus.getActiveTrackIds()
- MediaInfo methods, getMediaTracks() and getTextTrackStyle()
- RemoteMediaPlayer methods, setActiveMediaTracks() and setTextTrackStyle()
- MediaChannelResult.getCustomData()
- Updated sample application, DemoCastPlayer (included with the Cast for Android SDK in <sdk_root>/extras/google/google_play_services/samples/cast/democastplayer) to support media tracks
- Route picker dialog now shows the name of the receiver app running on the Cast device
iOS sender API (2.3.0 953)
- New Media Track APIs:
- GCKMediaTrack
- GCKMediaTextTrackStyle
GCKMediaTextTrackStyle's createDefault method requires iOS7; on older platforms it returns nil. This method introduces a dependency on the MediaAccessibility and CoreText frameworks.
- GCKColor
- GCKMediaStatus.activeTrackIDs
- Updates to GCKMediaInformation:
- New properties:
- contentID
- mediaTracks
- textTrackStyle
- New initWithContentID:streamType:contentType:metadata:streamDuration:mediaTracks:textTrackStyle:
- Deprecated initWithContentID:streamType:contentType:metadata:streamDuration:customData:
- New properties:
- GCKMediaControlChannel new methods:
- loadMedia:autoplay:playPosition:activeTrackIDs:customData:
- loadMedia:autoplay:playPosition:activeTrackIDs:
- setActiveTrackIDs:
- setTextTrackStyle:
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):
- MONOSPACED_SERIF: 'Cutive Mono'
- CASUAL: 'Short Stack'
- CURSIVE: 'Quintessential'
- SMALL_CAPITALS: 'Alegreya Sans SC'
- MediaInformation
- MediaStatus
- MediaManager.onLoad
- MediaManager.onEditTracksInfo
- Track
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. 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, v0.7.0
- New URL: https://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:
- New events to enable better connection/disconnection management, application visiblility changes, and volume changes
- CastReceiverManager properties and methods to support new events
- CastReceiverManager.setInactivityTimeout method added to help with debugging long-running sessions
April 25, 2014
Media Player Library (beta)
In this release:
- New version, v0.6.0
- New URL: https://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.
Google Cast Chrome extension - beta release 14.421.1.0
The Google Cast Chrome extension is available in a beta channel. Instructions for using the beta channel version are in the Chrome Sender setup.
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. 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, v0.5.0
- New URL: https://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
playmethods no longer throw
IOExceptionand now return
- The
setDebuggingEnabledhas been changed to
IllegalStateExceptionand added
Google Cast iOS SDK
Updates to the SDK for iOS, version 184.108.40.2069 include the following:
- 64-bit builds are now fully supported
- Fixed:
setVolumedoesn'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, v0.4.0, Revision 1
- New URL: https://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
initialTimeparameter 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 220.127.116.11 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:
- cast.player.api.ErrorCode.NETWORK
- Optional
cast.player.api.RequestStatusparameter to host.onError passed when
- cast.player.api.RequestStatus
- 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. 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.
- Media metadata properties have been updated:
- GenericMediaMetadata.releaseDate replaces
- MovieMediaMetadata.releaseDate replaces
- TvShowMediaMetadata.title replaces
- TvShowMediaMetadata.season replaces
- TvShowMediaMetadata.episode replaces
- TvShowMediaMetadata.originalAirdate replaces
- MusicTrackMediaMetadata.artist replaces
- MusicTrackMediaMetadata.releaseDate replaces
- GenericMediaMetadata.releaseDate replaces
- The MusicTrackMediaMetadat API has the following new properties:
- 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_detailsparameter 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:
|Cast Chrome SDK version
|Cast Receiver build
|Cast extension version
|Chrome version
|February 3, 2014
Google Cast extension - version 22.214.171.124
- 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.
October 24, 2013
- Update of the Cast_Icons and GoogleCastIcons
October 8, 2013
Updates for iOS:
- Minor GCKWebSocket bug fix
- Fix crash when ending session, plus some other fixes.
- Fix buffer state bug.
- v1.0.6 was not released
September 25, 2013Android
- 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.
- 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
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
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
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.


text:
- Description
Details* We are unable to ship this product outside of the UK*
The CCL traditional stock finishing kit is supplied with all that you require to either completely re-finish or enhance the current finish of your stock. The kit contains several pieces of sandpaper to cut the woodwork back followed by a bottle of cleaning & polishing compound to prepare the wood for oiling. A bottle of red root oil is supplied to help feed the woodwork followed by an oil hardening or finishing compound.
Full instructions are supplied with the kit and additional bottles of oil are kept in stock should you require it.
Sandpaper Provided.
Cleaning & polishing compound.
Red root oil.
Oil hardening/Finishing compound.
A perfect product to enhance or re-finish all stocks.
- Additional Information
Additional Information
Stock Number 71323 Brands CCL Barcode 71323 Colour No Manufacturer CCL Condition New Size No Calibre No

subset: commoncrawl


text:
Recently lost a colleague, who was struggling with cancer. A person who was disciplined, focused and always working for the future. He seldom enjoyed the present as that diverted him from his focus. After the feeling of sadness and loss, came the reiteration to my learning of cherishing the present.
Most of us know this very well, we have read & heard about it all the time. Then what makes it so difficult to follow.
I would say one major reason is the people we are with. I am a true believer of "the power lies within us" but at the same time totally appreciate the significance of Influencers. These are the people who give direction to our thought processes, change our moods & can play with our feelings. These influencers can be easily categorized into the positive, neutral & negative.
Think of the people you stay with and you can see them fitting into one of these categories. There are the ones who make you feel better, good about yourself as well as the situation you are in, consequently encouraging you to live in the moment. The second category is of those who are there but very rarely cross your path of thoughts and feelings, usually is in sync with almost everything you say or do. Then there are those who make you feel unsure, doubts yourself and everyone and fills you with negativity forcing you to leave the present.
But the most integral part about these influencers are their dynamic state. It is interesting to observe that a single person is in different categories viz a viz various people. A single person could be the positive influencer for someone while can play the negative one for someone else.
Take our relationships as chemical reactions. Certain types of personality types with distinct personality traits when mixed with other kinds can yield different results. Which can or can't be pleasant.
As two substances when mixed gives a totally rare output the same is true with us. When we interact with a certain person the whole experience is typical to that person only. From here it becomes simple to understand the chemical reaction which we have with some people yielding positive or negative results.
Be aware, start reflecting on your relationships & interactions. Start spending more time with people who help you live in the moment. Bring out the positives in you, love to laugh and can make you see the good part in all the situations. Stay away from those who drain the energy out of you, make you run away from the present and make you doubt yourself.This means you need to start assessing the people around you.
I am not encouraging you to be selfish but just to start loving yourself!
Related articles
- Find your key to happiness! (unwrappingminds.wordpress.com)