Skip to content

Latest commit

 

History

History
4455 lines (3862 loc) · 181 KB

CHANGELOG.md

File metadata and controls

4455 lines (3862 loc) · 181 KB

3.2.0 (2021-07-14)

New Features:

3.1.2 (2021-07-14)

Bugfixes:

Docs:

3.0.13 (2021-07-14)

Bugfixes:

3.1.1 (2021-06-17)

Bugfixes:

Docs:

Demo App:

  • Add MIME type and extra config to custom assets

3.0.12 (2021-06-17)

Bugfixes:

Docs:

2.5.23 (2021-06-17)

Bugfixes:

Docs:

3.1.0 (2021-04-29)

New Features:

3.0.11 (2021-04-28)

Bugfixes:

Ad Features (BETA):

Demo App:

Docs:

Misc:

2.5.22 (2021-04-28)

Bugfixes:

Demo App:

Docs:

Misc:

3.0.10 (2021-03-18)

Bugfixes:

3.0.9 (2021-03-15)

Bugfixes:

Ads (BETA):

  • Change the value of the 'mpt' param we set for tracking
  • Expose native IMA stream manager for SS DAI
  • Hide the ad container when ads aren't playing
  • Add "limited ads" section to the ads tutorial
  • Expand the IMA integration tutorial

Docs:

Demo App:

2.5.21 (2021-03-12)

Bugfixes:

Docs:

3.0.8 (2021-02-08)

Bugfixes:

Ads (BETA):

2.5.20 (2021-02-08)

Bugfixes:

3.0.7 (2021-01-06)

Bugfixes:

Ads (BETA):

Build:

Demo App:

Docs:

2.5.19 (2021-01-06)

Bugfixes:

Build:

  • Fix build issues with Python 3
  • Fix running build scripts on Windows
  • Fix build error about stylelint paths
  • Fix build failure in context of node module

Demo App:

Docs:

3.0.6 (2020-11-12)

Bugfixes:

Ad changes (BETA):

Docs:

Demo App:

Misc:

2.5.18 (2020-11-12)

Bugfixes:

Docs:

Demo App:

  • Remove redundant switch for manifest.dash.ignoreDrmInfo

Misc:

3.0.5 (2020-10-07)

Bugfixes:

Demo App:

  • Change the menu icon to a settings icon
  • Suppress bogus errors displayed during download

Docs:

  • Fix references to built-in CEA 608 support, not available in this branch
  • Add links to the roadmap

2.5.17 (2020-10-06)

Bugfixes:

Demo App:

  • Change the menu icon to a settings icon

Docs:

  • Fix references to built-in CEA 608 support, not available in this branch

3.0.4 (2020-08-25)

Bugfixes:

Docs:

2.5.16 (2020-08-25)

Bugfixes:

Docs:

3.0.3 (2020-08-12)

Bugfixes:

Ad changes (BETA):

  • Add an extra log when replacing ad tag params for tracking adoption
  • Properly set tracking info for SS IMA streams

Demo App:

Docs:

  • Correct very outdated docs on test.py

2.5.15 (2020-08-12)

Bugfixes:

Docs:

  • Correct very outdated docs on test.py

3.0.2 (2020-07-28)

Bugfixes:

Ad changes (BETA):

  • Proxy all client-side IMA events through the ad manager
  • Fire a shaka.Player.Metadata event on detecting ID3 metadata

Docs:

Demo App:

3.0.1 (2020-06-18)

Bugfixes:

Ad changes (BETA):

  • Correct IMA SDK URLs in service worker and docs
  • Fix UI not showing up for server side ad streams
  • Expose more client side IMA info to apps

Demo App:

  • Fix centering of MDL icons
  • Fix error text overflow
  • Fix missing icon for demo app menu

Docs:

2.5.13 (2020-06-11)

Bugfixes:

3.0.0 (2020-06-09)

Ad Features (BETA):

Offline Features:

HLS Features:

UI Features:

Subtitle/Caption Features:

Other Features:

  • Add API to set Cast content metadata in CastReceiver
  • Add liveLatency to stats
  • Allow configuration of presumed manifest accuracy, reduces extra fetches
  • Take into account the playbackRate in bandwidth calculations
  • Add check for E-AC3 JOC in DASH
  • Improve startup performance by lazily creating segment indexes
  • Support pre-standard DASH MIME type
  • Allow running tests without Babel

Bugfixes:

Broken compatibility:

  • Remove support for custom DASH ContentProtection schemas
  • Signature for config callback "drm.initDataTransform" changed

Deprecated (with backward compatibility until v4.0):

  • Uint8ArrayUtils.equal() moved to BufferUtils
  • Factory methods are no longer called with "new"
  • Config "manifest.dash.defaultPresentationDelay" moved to "manifest.defaultPresentationDelay"
  • Storage.getStoreInProgress() deprecated (not needed with concurrent storage operations)

Removed after deprecation in v2.5:

  • Player.selectEmbeddedTextTrack
  • Player.usingEmbeddedTextTrack
  • Player.getManifestUri (renamed to getAssetUri)
  • load() factory parameter (replaced with MIME type parameter)
  • Storage configuration fields (moved into Player config under "offline")
  • UI getPlayer() moved to getControls().getPlayer()

Demo App Features:

  • Added trick play controls option
  • Add 'audio only' to the search terms

2.5.12 (2020-05-29)

Bugfixes:

New Features:

2.5.11 (2020-05-05)

New Features:

Bugfixes:

Docs:

Demo App:

  • Push demo app footer to the bottom of the page

2.5.10 (2020-03-24)

New Features:

Bugfixes:

Docs:

Demo App:

  • Several service worker improvements and fixes
  • Load pwacompat through npm
  • Replace Live search boolean with a drop-down
  • Renamed the "search" tab to "all content"
  • Add search filters to the URL
  • Work around Material Icons font bug
  • Work around MDL button bug in iOS 13

2.5.9 (2020-02-04)

Bugfixes:

Docs:

2.5.8 (2020-01-16)

Bugfixes:

New Features:

Demo App:

  • Update asset list and metadata

2.5.7 (2019-12-18)

New Features:

Bugfixes:

2.5.6 (2019-11-06)

Bugfixes:

New Features:

Demo App:

  • Improve mobile Safari PWA support in demo
  • Added tooltips to the search filters on the demo
  • Added "report bug" button to demo

2.5.5 (2019-08-23)

New Features:

Bugfixes:

Demo App:

2.5.4 (2019-07-19)

Bugfixes:

New Features:

  • Add command-line arg to change the test timeout.

2.5.3 (2019-07-03)

Bugfixes:

Docs:

New Features:

  • Use trick play for fast forward when browser doesn't support high playbackRate

2.5.2 (2019-06-10)

Bugfixes:

New Features:

Demo App:

  • Fix close button styling in compiled mode
  • Fix config settings applied before playback begins
  • Change the style of the download/delete button
  • Fix demo error display for large errors
  • Improve cvox error check
  • Switch to using tippy.js for tooltips

Docs:

2.5.1 (2019-05-20)

New Features:

  • Inline external CSS for quicker load
    • You no longer need to include Material Design Icons font in your app
  • Use clean-css plugin in less.js to minify CSS

Bugfixes:

  • Deprecate ui.getPlayer for controls.getPlayer
  • Fix switching text displayer mid-playback
  • Improve french translations
  • Improve logic for aborting network requests
  • Fix initial bandwidth estimate on Chrome
  • Upgrade mux.js and use minified version
  • Fix exception on network retry
  • Fix API-based UI setup with default config
  • Allow two-argument configure() calls for UI and offline
  • Add missing export on ui.Overlay.getConfiguration
  • Various improvements in test reliability
  • Various fixes for compatibility with newer compiler versions

Demo App:

  • Fix asset card highlight on reload
  • Fix reconnection to cast sessions on reload
  • Fix handling of error events
  • Fix centering of asset card titles
  • Move download button to the corner of asset cards
  • Add WebP variants for asset icons to reduce size by 88%
  • Optimize app load time by pre-connecting to external origins
  • Defer creating tab contents until shown
  • Make name field in custom assets more permissive
  • Add link to support page in footer
  • Allow demo to load custom assets from hash
  • Do not disable controls on startup
  • Added missing config values
  • Catch certificate errors in demo
  • Let demo load even if storage fails to load
  • Re-load current asset if page reloads
  • Fix unsupported button tooltips

2.5.0 (2019-05-08)

The UI is now out of beta! Use shaka-player.ui.js and see the UI tutorials.

Core Bugfixes:

UI Bugfixes:

  • Fix missing resolution menu in UI after playing audio-only content
  • Fix pointer cursor on UI spacer
  • Do not show PIP button if not allowed
  • Fix hiding captions in UI text displayer
  • Fix UI text displayer positioning on IE
  • Make live stream timecode accessible to screen readers in the UI
  • Fix ARIA pressed state for button in text selection menu
  • Show picture-in-picture btn only when the content has video
  • Fix multiline captions in UI text displayer
  • Fix display of cast button in UI
  • Fix conflict between PiP and fullscreen
  • Fix cast receiver styling

New Core Features:

New UI Features:

Demo App:

Docs:

  • Document UI events
  • Update Manifest Parser documentation
  • Clarify track selection callback in offline tutorial
  • Fix jsdoc and markdown formatting of links
  • Add link for Shaka Player Embedded

2.5.0-beta3 (2019-02-20)

New Features:

Bugfixes:

Docs:

2.4.7 (2019-02-19)

Bugfixes:

2.4.6 (2019-01-22)

Bugfixes:

New Features:

Demo App:

2.5.0-beta2 (2018-11-09)

Contains everything in v2.4.5, plus...

Bugfixes:

New Features:

Docs:

  • Update Language Normalization Documentation

2.4.5 (2018-11-09)

Bugfixes:

  • Fix erasure of the database with storage.deleteAll()
  • Fix MediaSource tear down race
  • Fix exception when destroying MediaSourceEngine twice
  • Fix gap jumping test failures on IE/Edge/Tizen
  • Fix stalls on Tizen TV
  • Fix display of external subtitles
  • Fix test failures on Safari
  • Fix filtering of HLS audio-only content
  • Preserve bandwidth estimate between loads
  • Retry streaming when we get back online
  • Fix Storage test contamination
  • Fix advanced DRM settings pollution across key systems
  • Fix TextEngine buffered range calculations

New Features:

Demo App:

  • Show logs prominently in noinput mode
  • Disable uncompiled mode on browsers without async
  • Restore using Enter key to load asset

Docs:

Un-Features:

  • Un-ship VTTRegion support, which is currently broken in Chrome and does more harm than good

2.5.0-beta (2018-08-24)

New Features:

Deprecated:

  • Passing a ManifestParser factory to Player.load is deprecated and support will be removed in v3.0. Instead, please register any custom parsers with a MIME type, and pass a MIME type instead. MIME types can also be used to force the selection of any built-in manifest parsers.
  • The |manifestUri| method on Player was changed to |assetUri|. The old method is deprecated and will be removed in v3.0.

2.4.4 (2018-08-23)

Bugfixes:

Docs:

2.4.3 (2018-08-06)

New Features:

Bugfixes:

Demo app:

  • Clarify persistent license error messages

Docs:

  • Update docs for RESTRICTIONS_CANNOT_BE_MET

2.3.10 and 2.4.2 (2018-06-29)

Bugfixes:

  • Fix ignored configuration when input is partially invalid (v2.4.2 only)
  • Silence DRM engine errors for unencrypted assets
  • Fix infinite seeking with HLS on V1 Chromecasts
  • Fix module wrapper to work with CommonJS, AMD, ES modules, as well as Closure and Electron
  • Fix TextEngine buffered range calculations

Demo App:

  • Fix custom encrypted assets in the demo app

Docs:

  • Fix generated documentation problems (v2.4.2 only)
  • Move CEA-608/708 to list of supported HLS features (v2.4.2 only)

2.3.9 and 2.4.1 (2018-06-13)

Bugfixes:

  • Default to a maximum of 360p for ABR when saveData == true
  • Make AbrManager restrictions "soft" so they do not fail playback
  • Patch Closure Compiler to fix polyfill+wrapper
  • Fix assertion spam when merging a period into itself
  • Upgrade WebDriver module to new W3C protocol, fixes WD tests on Firefox & IE
  • Work around potential hang in transmuxer with multiplexed TS content.

Demo app:

  • Support clearkey license-servers in the demo UI

Misc:

2.4.0 (2018-05-24)

New features:

Broken compatibility:

  • A third-party Promise polyfill is now required for IE 11 support
  • Text parser plugins now take a nullable segmentStart in TextContext. All application-specific text-parsing plugins MUST be updated.
  • Text-parsing plugins that produce region information must do so with the new CueRegion class. Any application-specific text-parsing plugins that produce region information MUST be updated.
  • TextDisplayer plugins that handle region information must do so with the new CueRegion interface. Any application-specific TextDisplayer plugins that handle region information MUST be updated.
  • The API for PresentationTimeline has changed. Manifest parser plugins that use certain PresentationTimeline methods MUST be updated:
    • setAvailabilityStart() was renamed to setUserSeekStart().
    • notifySegments() now takes a reference array and a boolean called isFirstPeriod, instead of a period start time and a reference array.

Deprecated:

  • NetworkingEngine.request() now returns an instance of IAbortableOperation instead of Promise. Applications which make application-level requests SHOULD update to use the new interface.
    • The old interface will be removed in v2.5.
  • Network scheme plugins now return an instance of IAbortableOperation instead of Promise. Application-specific network scheme plugins SHOULD update to the new interface.
    • The old interface will be removed in v2.5.

Demo app:

  • Improve support for custom assets and license servers in demo app URI

Misc:

2.3.8 (2018-05-23)

Bugfixes:

Demo app:

  • Update DASH-IF Big Buck Bunny asset

Docs:

2.3.7 (2018-04-24)

Bugfixes:

Demo app:

2.3.6 (2018-04-11)

Bugfixes:

  • Handle HLS segments tags that occur before playlist tags
  • Avoid telling AbrManager about key-system-restricted streams, to simplify building AbrManager plugins.
  • Fixed exported enum definition for network plugin priorities
  • Fixed ES5 strict mode compatibility in our module wrapper

Demo app:

  • Fixed playback of VDMS assets by updating the license request details

2.3.5 (2018-03-29)

New features:

Bugfixes:

  • Fixed early seeking (immediately upon load)
  • Fixed repeated seeking in HLS live (also affects DASH with timeShiftBufferDepth of zero)
  • Fixed VTT+MP4 parsing with respect to TRUN box
  • Fixed hang in StreamingEngine when playing at the left edge of the seek range on slow embedded devices
  • Work around slow DASH parsing on embedded devices

Demo app:

  • Fixed CSS for display on Chromecast and other TV devices
  • Added "startTime" URL parameter for debugging purposes

2.3.4 (2018-03-22)

New features:

Bugfixes:

Demo app:

  • Added an "unload" button to the demo app
  • Fixed enabling of TS assets in the demo app

Docs:

2.3.3 (2018-03-01)

New features:

Bugfixes:

Docs:

2.3.2 (2018-02-01)

New features:

Bugfixes:

Docs:

2.3.1 (2018-01-22)

New features:

Bugfixes:

Docs:

  • All fixes released in 2.2.10, plus...
  • Fix upgrade guide links

2.2.10 (2018-01-22)

New features:

Bugfixes:

Docs:

2.3.0 (2017-12-22)

New features:

Demo app:

Bugfixes:

Docs:

Broken compatibility:

  • Text parser plugins now take a Uint8Array, not an ArrayBuffer. All application-specific text-parsing plugins MUST be updated.

Deprecated:

  • The AbrManager configuration interfaces and plugin APIs which were deprecated in v2.2 have now been removed. Applications with custom AbrManager implementations MUST be upgraded to the v2.2 API now.
  • The plugin interface for text parsers which was deprecated in v2.1 has now been removed.
  • The remove() method on shaka.offline.Storage now takes a URI instead of a StoredContent instance. Applications which use offline storage SHOULD update to the new API. Support for the old argument will be removed in v2.4.
  • The streaming.infiniteRetriesForLiveStreams config was removed. Applications using this feature MUST use the streaming.failureCallback config and the method player.retryStreaming() instead.

2.2.9 (2017-12-22)

Bugfixes:

2.2.8 (2017-12-06)

Bugfixes:

Demo app:

2.2.7 (2017-11-28)

Bugfixes:

Demo app:

Docs:

2.2.6 (2017-11-14)

Bugfixes:

Demo app:

2.2.5 (2017-11-02)

New features:

  • Add streaming event to allow reconfiguration before streaming starts
  • Add method to get the parsed manifest structure
  • Log about deprecated APIs, even in a compiled build with other logs disabled

Bugfixes:

2.1.9 (2017-11-02)

Bugfixes:

2.2.4 (2017-10-23)

Bugfixes:

Docs:

2.2.3 (2017-10-17)

New features:

  • Publish an event when the CDM accepts a license
  • Added assertions and logging to the debug build
  • Added a debugging method on Player to get buffered ranges

Bugfixes:

Demo app:

Docs:

2.2.2 (2017-09-27)

New features:

Bugfixes:

Demo app:

Docs:

2.2.1 (2017-09-01)

New features:

Bugfixes:

  • Fixed display of old text cues after loading new content
  • Fixed text cue alignment in compiled mode
  • Fixed exception triggered when storing offline content
  • Fixed cast state when multiple cast senders exist at once
  • Fixed several Cast UI issues
  • Fixed (harmless) assertion failures on Cast receivers

Demo app:

Docs:

2.2.0 (2017-08-23)

New features:

Bugfixes:

Demo app:

Docs:

Broken compatibility:

  • The text-parsing plugin API has changed. Plugins now return shaka.text.Cue objects instead of VTTCue or TextTrackCue objects. All application-specific text-parsing plugins MUST be updated.

Deprecated:

  • The configuration for a custom ABR manager has changed. Applications with custom AbrManager implementations SHOULD now configure abrFactory instead of abr.manager.
  • The config API for AbrManager has changed. setDefaultEstimate() and setRestrictions() have been replaced with configure(). Applications with custom AbrManager implementations SHOULD implement the new configure() method.
  • The choice API for AbrManager has changed. chooseStreams() has been replaced with chooseVariants(), and the switch callback now takes a variant.
  • The getTracks() and selectTrack() methods which were deprecated in v2.1 have now been removed.

2.1.8 (2017-08-23)

Bugfixes:

  • Add player.isAudioOnly() to fix flash of audio-only icon when casting
  • Fix cast proxying of isAudioOnly and getMediaElement

2.1.7 (2017-08-14)

Bugfixes:

  • Fixed "Invalid argument" exceptions for subtitles in IE & Edge
  • Fixed buffering at the end of the stream for some content in IE & Edge
  • Fixed seeking with native controls in Edge
  • Fixed role selection to clear audio buffer right away

Docs:

  • Fixed a bug in the upgrade guide for selecting tracks and disabling ABR

2.1.6 (2017-08-09)

New features:

Bugfixes:

Demo app:

2.1.5 (2017-07-17)

New features:

  • Add more information to video errors in Chrome

Bugfixes:

Demo app:

  • Fix missing fullscreen button on IE11
  • Added configuration for gap jumping

Docs:

2.1.4 (2017-06-16)

New features:

  • Allow role to be specified in selectAudioLanguage and selectTextLanguage

Bugfixes:

Demo app:

Docs:

2.1.3 (2017-06-06)

New features:

Bugfixes:

  • Fix offline storage in compiled mode
  • Choose lowest-bandwidth codecs when multiple are possible
  • Fix PlayReady on IE and Edge
  • Fix rounding errors on IE11
  • Clean up demo app loader
  • Fix PlayReady test failures

2.1.2 (2017-05-23)

New features:

Bugfixes:

  • Fix flakiness in RESTRICTIONS_CANNOT_BE_MET errors
  • Make isBrowserSupported more strict about MediaSource
  • Fix detection of audio-only assets in the demo
  • Fix exports and generated externs that were broken in v2.1.0 and v2.1.1
  • Speed up deletion of offline content

Docs:

  • Fix docs on subtitles and captions
  • Add notes on adaptation to upgrade guide

2.0.9 (2017-05-10)

Backported bugfixes from v2.1.x:

2.1.1 (2017-05-10)

New features:

Bugfixes:

2.1.0 (2017-04-25)

New features:

Bugfixes:

Docs:

  • Add offline storage to v2 upgrade guide
  • Add additional docs for AbrManager
  • Add manifest parser plugin tutorial

Broken Compatibility:

  • Track types 'video' and 'audio' have been combined into 'variant'.
    • Any application looking at track.type will need to be updated.
  • Removed useRelativeCueTimestamps option
  • Plugin interface for text parsers has changed
    • Both old & new interfaces still supported
    • Support for old interface will be removed in v2.2
  • Plugin interface for ManifestParser.start has changed
    • Now takes an object with named parameters instead of positional params
    • Both old & new interfaces still supported
    • Support for old interface will be removed in v2.2
  • Retired the INVALID_TTML error code
    • Folded into the INVALID_XML error code

2.0.8 (2017-04-07)

Bugfixes:

  • Suppress controls UI updates when hidden
  • Revert keyboard navigation changes in demo, failing on Firefox

2.0.7 (2017-03-29)

New Features:

  • Improved keyboard navigation in demo page for accessibility
  • Play through small gaps at the start of the timeline
  • Add a method for accessing the HTMLMediaElement from the Player
  • Improved error reporting for HTTP errors

Bugfixes:

  • Fixed a DASH compliance bug in SegmentList w/ presentationTimeOffset
  • Fixed compiler renaming in emsg events.
  • Fix period transitions where text streams may be absent
  • Fix Firefox DRM detection
  • Fix cleanup of expired EME sessions for offline
  • Fix demo app error thrown when offline is not supported
  • Fix infinite loop in offline storage of SegmentTemplate-based DASH
  • Fix contamination between tests

2.0.6 (2017-02-24)

New Features:

Bugfixes:

2.0.5 (2017-01-30)

Bugfixes:

  • Fix several bugs with multi-Period content
    • Possible hang when seeking
    • Fix race between buffering and Period transition
    • Fix race between rapid Period transitions
    • shaka-project#655
  • Fix hang in destroy() when EME sessions are in a bad state
  • Fix doubling of time offset for segment-relative cues

2.0.4 (2017-01-24)

New features:

Bugfixes:

Docs:

  • Added additional docs for offline storage
  • Updated and clarified debugging tutorial

2.0.3 (2017-01-09)

New features:

Bugfixes:

  • Fix race condition in StreamingEngine
  • Fix race in load/unload in Player
  • Update workarounds for Edge EME bugs
  • Add missing events and methods to cast proxy
  • Fix exclusion of standard features in custom builds
  • Be more permissive of text failures
    • Permit text parsing errors as well as streaming errors with the ignoreTextStreamFailures config option.
    • Do not fail StreamingEngine startup because of text streams, regardless of config.
    • shaka-project#635
  • Fix selectTrack() call with no text tracks
  • Fix buffering state for live streams (stop at live edge)

2.0.2 (2016-12-15)

New features:

Bugfixes:

Docs:

  • Link to error docs from the demo app

2.0.1 (2016-10-26)

New features:

Bugfixes:

Demo app improvements:

  • Hide volume & mute buttons on mobile-sized screens
  • Probe both MP4 and WebM support in DrmEngine
  • Update Axinom test assets to v7
  • Fix accessibility issues in the demo app

Docs:

2.0.0 (2016-09-07)

The first full release of v2!

New features:

  • Improved Chromecast support
    • Cast from the built-in Chrome dialog as well as the video controls
    • Use the built-in Chrome dialog to disconnect
  • Support for in-progress recordings (IPR)
  • Can be configured to tolerate text stream failures
  • Ignore small gaps in the timeline
  • Added EMSG box support
  • Reduced test flakiness and improved test speed
  • Improved VTT parsing
  • Improved EME error reporting
  • Improved demo app UI for touch screens
  • Smaller demo app UI (video element above the fold on Nexus 5X)

Bugfixes:

Planned features we cut:

2.0.0-beta3 (2016-07-29)

Restored Features from v1 Missing in v2.0.0-beta2:

New features:

Bugfixes:

Docs:

Broken Compatibility compared to v2.0.0-beta2:

  • The asynchronous Player.support() has been replaced with the synchronous Player.isBrowserSupported() call
  • AbrManager implementations must now handle a partial StreamSet map in chooseStreams()
  • The wrong keys error has been dropped due to false positives

2.0.0-beta2 (2016-05-04)

Restored Features from v1 Missing in v2.0.0-beta:

New features:

Bugfixes:

Docs:

Broken Compatibility compared to v2.0.0-beta:

  • None!

1.6.5 (2016-04-08)

Bugfixes:

2.0.0-beta (2016-04-07)

New Features:

Bugfixes:

Docs:

  • New tutorials!

Missing Features from v1 (to be added later):

  • Custom controls demo for live streams
  • Chromecast demo
  • Trick play demo
  • Track restrictions based on key status
  • Offline support

Broken Compatibility:

  • Almost everything! (v2 upgrade guide coming soon)

1.6.4 (2016-03-03)

Bugfixes:

  • Updated Promise polyfill with fixes backported from v2
  • Fixed Edge EME compatibility & InvalidStateErrors
  • Fixed HttpVideoSource use with clear content (Thanks, Sanborn!)
  • Fixed uncompiled-mode performance regression introduced in v1.6.3

1.6.3 (2016-02-08)

Features:

Bugfixes:

  • Several IE11 stability issues and race conditions fixed
    • Fixed incompatibilities when clearing the SourceBuffer
    • Ignore spurious 'updateend' events
    • Added stack-based messages to all assertions
    • Fixed some unit test compatibility issues
    • Fixed race conditions caused by Promise polyfill
    • shaka-project#251

Docs:

  • Update browser support docs with regard to IE & Firefox

Test app fixes:

  • Fixed slider controls for IE11
  • Turned off seek bar tooltips for IE11

1.6.2 (2015-12-14)

Features:

  • Added a new configure parameter to allow a user to completely disable the cache-buster. This is necessary for certain CDNs, but please note the tradeoffs before using. Bandwidth estimation can be adversely affected, particularly for low-bandwidth users.

Bugfixes:

  • Fixed interpretation of startNumber for SegmentTemplate w/ duration.

1.6.1 (2015-12-07)

Bugfixes:

  • Fixed handling when all streams are removed in a manifest update.
  • Fixed annotation mistakes in preparation for a new compiler release.
  • Fixed Promise polyfill errors in compiled mode.

1.6.0 (2015-11-17)

Features:

Bugfixes:

  • Expired sessions (for example, when using key rotation) are now cleaned up.
  • Manifests can now be reprocessed without an update when availabilityStartTime passes.

Test app features:

  • Added Chromecast support to the demo app. (No changes to the library for this.)
  • Removed force-prefixed feature for improved IE11 support.
  • Added links to the project and the docs.

Broken Compatibility:

  • Removed Player methods deprecated since v1.5.0.
    • enableAdaptation
    • getAdaptationEnabled
    • setStreamBufferSize
    • getStreamBufferSize
    • setLicenseRequestTimeout
    • setMpdRequestTimeout
    • setRangeRequestTimeout
    • setPreferredLanguage
    • setRestrictions
    • getRestrictions
    • shaka-project#203
    • shaka-project#93
  • Removed support for the old-style ContentProtection callback, deprecated since v1.5.0.

1.5.2 (2015-11-12)

A roll-up of recent bugfixes.

Bugfixes:

Test app features:

  • Added a Widevine-encrypted version of the Sintel 4k test asset.

1.5.1 (2015-10-07)

A roll-up of recent bugfixes.

Bugfixes:

  • Fixed a major memory leak introduced in 1.5.0.
  • Deleting encrypted offline content now deletes persistent sessions.
  • Static content using SegmentTemplate is now truncated at the Period's duration.
  • Key status error reporting is now more consistent and provides more information.
  • Reduced flakiness in some tests.
  • Requests used for clock sync no longer allow caching.

1.5.0 (2015-09-17)

Features:

Bugfixes:

Broken Compatibility:

  • Removed Player methods deprecated since v1.3.0.
    • getCurrentResolution
    • getCurrentTime
    • getDuration
    • getMuted
    • getVolume
    • play
    • pause
    • requestFullscreen
    • seek
    • setMuted
    • setVolume
    • shaka-project#118

Deprecated:

  • The following methods on Player are deprecated in favor of configure()/getConfiguration() and will be removed in v1.6.0:
    • enableAdaptation
    • getAdaptationEnabled
    • setStreamBufferSize
    • getStreamBufferSize
    • setLicenseRequestTimeout
    • setMpdRequestTimeout
    • setRangeRequestTimeout
    • setPreferredLanguage
    • setRestrictions
    • getRestrictions
    • shaka-project#93
  • A new two-argument ContentProtectionCallback has been added to DashVideoSource, and the old style is deprecated and will be removed in v1.6.0.

1.4.2 (2015-09-04)

A roll-up of recent bugfixes.

Bugfixes:

  • Fix storage of duplicate session IDs for encrypted offline content.
  • Specify EME sessionTypes, required in newer EME draft.
  • Fix regression in rewind support, once more working outside buffered range.
  • Support renamed output protection errors from newer EME draft.
  • Fix seeking in custom controls on Android.
  • Fix missing final chunk when storing certain videos for offline playback.
  • Prevent crashing of module loaders which use 'define' but are not full AMD loaders.

Test app features:

  • Added 'offline' URL param.

1.4.1 (2015-08-18)

A roll-up of recent bugfixes and small improvements.

Bugfixes:

  • An exception is no longer thrown from StreamVideoSource in uncompiled mode when the stream limits cannot be computed.
  • Fixed support for multiple encrypted audio tracks.
  • Fixed support for manifests that use SegmentList with a single URL.
  • Fixed support for audio and video robustness settings in compiled mode.
  • The MPD 'main' property is now defined in the correct class.
  • The same initialization segment is no longer inserted multiple times into the SourceBuffer.
  • Removed a race in Stream that could stop AdaptationEvents from firing.
  • Stopped the compiler from renaming PersistentState and DistinctiveIdentifier enum values.
  • Removed a race in Player.getStats() that could cause NaN stats.
  • Fixed support to recover from failed segment requests.
  • Made rewind, pause, play, and fast-forward consistent with normal video element behavior, the UI, and Player.setPlaybackRate().
  • Improved seek handling during stream startup.
  • Unnecessary seeking events during stream startup are no longer fired.
  • Segment fetches are no longer retried if the Stream has been destroyed.
  • Fixed support for offline in compiled mode.

Features:

  • The version indicator on the demo page now displays the NPM version (if available) when the git version is unavailable.
  • Added support to clear the audio buffer when switching tracks.
  • Added the ability to detect and recover from multiple buffered ranges.
  • Improved error messages when persistent licenses are not supported.

Testing:

  • Reduced test flakiness overall.
  • Certain (unavoidable) decode errors are now suppressed on Chrome Linux.
  • Added waitUntilBuffered() function to help reduce test flakiness.

1.4.0 (2015-07-06)

Code health release. Major refactoring of streaming logic.

Bugfixes:

  • Overriding a license server URL in the test app no longer causes a PSSH from the MPD to be ignored.
  • Fixed possible event listener leak.

Features:

  • Player.destroy() now returns a Promise.
  • DrmSchemeInfo now has distinctiveIdentifier, persistentState, and robustness parameters.
  • Clarified buffering event policies.
  • Added a license pre-processor.
  • Added support for the MPD Location element.
  • Custom BandwidthEstimators can now allow XHR caching.
  • Added support for startNumber of 0, per the recent DASH spec corrigendum.
  • Added support for server certificate APIs through DrmSchemeInfo.
  • Major refactor of streaming. Switching representations is now faster and more flexible. Live stream seek ranges are more accurate.
  • XHR timeout is now runtime-configurable.
  • Buffering goals are now runtime-configurable.
  • Alternative IAbrManager implementations can now be injected at runtime.

Test app features:

  • Added "buffered ahead" and "buffered behind" indicators.
  • Converted cycle buttons into checkboxes so cycling can be stopped during playback.
  • Test app now jumps to live when the user clicks on the time code in a live stream.
  • Added an example of a trick-play UI built on the Player API.

Testing:

  • Disabled code coverage stats in unit tests by default.
  • Split unit tests and integration tests into separate test runners.
  • Added a Karma config file to make automated testing easier.
  • Added checks for offline features to the support-testing page.

Documentation:

  • Documented the fact that autoplay does not work on mobile, and why.
  • Documented error events and how to handle them.
  • Documented browser support and porting.
  • Documented Player APIs for trick play interface.

1.3.2 (2015-07-06)

A roll-up of recent bugfixes.

Bugfixes:

1.3.1 (2015-05-22)

A roll-up of recent bugfixes and small improvements.

Bugfixes:

Features:

  • Refactored and updated support test page.
  • Simplified polyfill installation. (shaka.polyfill.installAll)
  • New polyfill for CustomEvent.
  • Small improvements to browser compatibility.
    • (node.childNodes, node.textContent, currentScript, CSS fixes, etc.)
  • Documented clock sync and CORS issues with live content.
  • Documented JRE requirements.
  • Test app now accepts a URL parameter to make ChromeCast testing easier.
  • Stopped using deprecated methods in tests and tutorials.
  • Added progress events for storing offline content.
  • Documented offline APIs.

1.3.0 (2015-04-16)

Feature release, introducing live streaming and offline playback.

Bugfixes:

  • Fixed playback and buffering of streams whose index is inaccurate.
  • Fixed EME spec compliance.
  • Fixed FakeEventTarget exception handling.
  • Fixed aggressive dead code stripping by the compiler.
  • Fixed a bug in which subtitles were enabled by default without a subtitle language match.

Features:

  • Added offline playback support.
  • Added offline support for encrypted content (on platforms which support persistent licenses).
  • Added live stream support.
  • Added support for header-based clock synchronization.
  • Added support for inheriting Segment{Base,List,Template} across levels in MPDs.
  • Add polyfill support for fullscreen events.
  • Updated EME usage to the March 12 draft.
  • Added Player.getAdaptationEnabled().
  • Added support for bandwidth restrictions and restrictions not based on license responses.
  • Added support for requireJS and improved support for commonJS.
  • Sped up integration tests and improved test robustness.
  • Bandwidth estimates can now be persisted across playbacks.
  • Custom bandwidth estimator objects can now be injected into the Player.
  • Improved EME v0.1b polyfill consistency with native EME in Chrome.
  • Improved buffering and underflow mechanisms.
  • Improved error reporting if DRM info is missing.
  • Improved robustness in the face of HTTP 404 and 410 errors during segment fetch.
  • Improved documentation for Role tags and multilingual assets.

Test app features:

  • Example player controls in the test app.

Deprecated:

  • The following methods on Player are deprecated. They will be removed in v1.4.0:
    • getCurrentResolution() (replace with video.videoWidth & video.videoHeight)
    • getCurrentTime()/seek() (replace with video.currentTime)
    • getDuration() (replace with video.duration)
    • getMuted()/setMuted() (replace with video.muted)
    • getVolume()/setVolume() (replace with video.volume)
    • play() (replace with video.play)
    • pause() (replace with video.pause)
    • requestFullscreen() (replace with video.requestFullscreen())

Broken compatibility:

  • The license postprocessor callback is no longer given a Restrictions argument. See Player.getRestrictions()/setRestrictions().
  • The suppressMultipleEvents flag has been dropped from DrmSchemeInfo, which changes the constructor signature. This flag interfered with key rotation.

1.2.3 (2015-04-07)

A roll-up of recent bugfixes.

Bugfixes:

  • Fixed consistency of setPlaybackRate(0).
  • Fixed support for mp4a.40.5 audio content.
  • Improved rewind accuracy.
  • Fixed decode of query parameters in content URLs.
  • Fixed FakeEventTarget for Chrome 43+.
  • Removed flaky assertion in EME polyfill.
  • Made AbrManager less aggressive.
  • Fixed EME spec compatibility and encrypted playback in Chrome 43+.

Features:

Test app features:

  • Added a new 4k test asset.

1.2.2 (2015-03-11)

Bugfixes:

  • Version 1.2.1 had multiple issues with its version numbering. These are now corrected, but npm requires unique version numbers to publish. Version 1.2.1 has been pulled from npm.

Features:

1.2.1 (2015-03-10)

A roll-up of recent bugfixes, plus a few minor additions to the test app. Branched from v1.2.0.

Bugfixes:

  • Try to recover from a streaming failure.
  • Ignore spurious error events from the video tag.
  • Update docs WRT content restrictions and folder organization.
  • Fix clearkey errors in Chrome 42+.
  • Fix computation of the number of segments in MpdProcessor.
    • Only affects assets which use SegmentTemplate with a duration attribute.

Test app features:

  • Rename a confusing asset.
  • Add a button to cycle video tracks.
  • Support MPD init data overrides for all DRM schemes.

1.2.0 (2015-02-24)

Lots of internal refactoring and bugfixes, and a few new features.

Bugfixes:

  • Buffer eviction no longer causes hangs on seek.
  • Adaptation no longer causes hangs on looping and seeking backward.
  • StreamStats no longer shows null for width and height before adaptation.
  • Content with differing start times for the audio & video streams no longer exhibits A/V sync issues.
  • DrmSchemeInfo's suppressMultipleEncryptedEvents flag is now correctly honored regardless of the timing of events.
  • Calculations for the $Time$ placeholder in MPD SegmentTemplates has been corrected.
  • The test app no longer causes mixed-content errors when served over HTTPS.
  • Small mistakes in URLs and asset names in the test app have been corrected.
  • Windows checkouts now have consistent newline style.
  • Windows build steps documented.

Features:

  • The isTypeSupported polyfill has been removed and all EME APIs have been updated to the Feb 9 2015 EME spec.
  • Gaps and overlaps in SegmentTimeline are no longer treated as an error. Large gaps/overlaps will still generate a warning.
  • HDCP-related failures are now translated into error events in Chrome 42+.
  • The MPD Role tag is now supported as a way of indicating the main AdaptationSet for the purposes of language matching.
  • More detail added to AJAX error events.
  • The Player now dispatches buffering events.
  • Parser support for the new v1 PSSH layout, including parsing of key IDs.
  • The fullscreen polyfill has been updated and expanded.
  • DashVideoSource refactored to split DASH-independent functionality into the generic StreamVideoSource. This should simplify the implementation of new video sources for non-DASH manifest formats. (Contributions welcome.)
  • Automatic build numbering has been added, with version numbers appearing in the test app UI.
  • The library has been published on npm and cdnjs.
  • Release version numbering follows the semantic versioning spec.

Broken Compatibility:

  • System IDs in PSSH objects are now hex strings instead of raw strings.

1.1 (2015-01-14)

Maintenance release.

Bugfixes:

  • The enabled flag for text tracks is now preserved when switching tracks. Player.enableTextTrack() is no longer required after selectTextTrack().
  • The documentation for Player methods enableTextTrack, setPreferredLanguage, and getCurrentResolution has been corrected.
  • The AbrManager class is now correctly destroyed.
  • Clearkey support for Chrome 41+ has been fixed.
  • A new polyfill has been added to compensate for Chrome 41+'s removal of MediaKeys.isTypeSupported.
  • Several unused internal methods have been removed from the codebase.
  • Fixed a failing assertion in one of the MediaKeys polyfills.
  • Fixed failing code coverage analysis and related parse errors in several tests.
  • Fixed support for MPDs with SegmentTemplate@duration and MPD@mediaPresentationDuration, but no Period@duration attribute.

Features:

  • Tests are now checked for style.
  • Tests have been expanded to increase coverage and exercise more Player features:
    • playback rate
    • stats
    • language preference
    • license restrictions
    • WebM/VP9
    • error events
  • Integration tests now run much faster.
  • MediaKeys polyfills have received minor updates to improve compatibility with Chrome 41.
  • New sample assets and code in app.js to demonstrate how to use a PSSH from an MPD to override what's in the content itself.

Broken Compatibility:

  • None!

1.0 (2014-12-19)

First public release.

Bugfixes:

  • Text tracks are no longer ignored in MPD manifests.
  • Adaptation decisions are now quicker and more reliable.
    • (This bug was more noticeable on faster internet connections.)
  • Playback no longer gets "stuck" on certain content.
  • Playback no longer gets "stuck" after certain seek patterns.
  • Player get/select/enable methods can now be called without a video source.
  • A <video> tag's "videoWidth"/"videoHeight" attributes now update correctly on Chrome >= 40.
  • Manual adaptation while paused no longer unpauses the video.
  • Credentials can now be used on cross-domain license requests.
  • Range headers are no longer sent for all segment requests.
    • (This fixes issues with IIS.)
  • A missing declaration of getVideoPlaybackQuality() has been added.
  • The compiled code no longer pollutes the global namespace.
  • DASH manifests using <SegmentList> are now parsed correctly.
  • Formatting has been fixed in the "Shaka Player Development" tutorial.

Features:

  • The Player is now reusable. You can call load() multiple times without calling destroy().
  • The JS linter is now included in sources, fixing compatibility issues between versions.
  • The test suite now includes playback integration tests.
  • The Player has been updated to support the 01 Dec 2014 draft of the EME specification.
  • The loader in load.js no longer makes assumptions about app.js. You can now use load.js to bootstrap other applications.
  • The test app now uses less screen real estate.
  • All custom events have been documented, and a new tutorial has been added to demonstrate how they can be used.
  • The Player now has a support-check API to determine if the browser has all necessary features for playback.
  • Sample code in the tutorials is now marked up to highlight changes from the previous sample.
  • Code coverage in unit tests has been increased.
  • Flakiness in unit tests has been reduced.
  • DASH manifests using <SegmentTemplate> without a segment index or segment timeline are now supported.
  • The DASH "presentationTimeOffset" attribute is now supported.

Broken Compatibility:

  • ContentProtectionCallback no longer takes a "mimeType" argument.
  • DrmSchemeInfo constructor no longer takes a "mimeType" argument.
  • DrmSchemeInfo constructor's "initData" argument is now an object with fields instead of a Uint8Array.
  • DrmSchemeInfo now takes a "withCredentials" argument.
  • lib.js has been renamed to shaka-player.compiled.js.

0.1b (2014-11-21)

Private beta release.