Skip to content

Latest commit

 

History

History
4651 lines (4038 loc) · 203 KB

CHANGELOG.md

File metadata and controls

4651 lines (4038 loc) · 203 KB

Changelog

3.2.5 (2022-04-21)

Bug Fixes

3.2.4 (2022-02-17)

Bug Fixes

  • Add explicit release() for FakeEventTarget (#3950) (6242622)
  • Fix download of some HLS assets (#3934) (61c0c09)
  • Fix exception in StreamingEngine for EMSG with HLS (#3887) (0c4a79f), closes #3886
  • Fix memory leak in DASH live streams with inband EventStream (#3957) (7891a85)
  • HLS: skip whitespace in attributes (#3884) (4bfc92e)

3.2.3 (2022-01-28)

Bugfixes:

  • Fix support for TTAF1 namespace (old version of TTML)
  • Fix misdetection of HEVC support on MS Edge
  • Fix caption overlap
  • Support multiple chapter tracks with same language
  • Fix text UI not updating when text is disabled
  • Clear buffer on seek if mediaState is updating
  • Fix thumbnails issues
  • Made nested cues inherit region
  • Fix MediaCapabilities polyfill on Safari
  • Fix usage of Shaka without polyfills
  • Fix playback failure due to rounding errors
  • Fix HLS image track issues
  • Remove caption wrapper bgColor
  • Support "forced-subtitle" role
  • Fix time element height on Safari

3.2.2 (2022-01-06)

Bugfixes:

  • Allow comments in the TTML parser
  • Fix HDR signalling via essential or supplemental property
  • Fix MediaCapabilities polyfill on Playstation 5
  • Add DASH MIME type mapping for src= playback
  • Fix captions not working after a period transition on live DASH streams
  • Fix timestamp offset of CEA-608 cues
  • Force caption update when removing cues
  • Fixes parsing of HLS 'DEFAULT' attribute
  • support stpp.ttml codec in Mp4TtmlParser
  • Fix Russian translation
  • Fix HLS VOD duration
  • Query HDR transfer function
  • Fix styling of UI text cues
  • Fix seek range issues on transition from live to VOD
  • Enforce string-format of event data keys
  • Fix vp09 playback on webOS
  • Dedupe DRM init data
  • Failover in geo-redundant streams
  • Update Cast receiver ID for v3.2

Demo App:

  • Fix 'Tears of Steel (live, DASH, Server Side ads)'

Docs:

  • Fix typo in Fairplay tutorial

3.2.1 (2021-10-13)

Bugfixes:

  • Work around override of MediaCapabilities polyfill in Apple browsers
  • Fix video poster when autoplay is disabled
  • Fix tracking of active variant track in live streams
  • Fixes updating of nested cues
  • Fix ttml erroneously dismissing cues
  • Fix control panel alignment in UI
  • Export missing polyfill install methods
  • Dispose of ad manager on player detach
  • Add ResizeObserver to CS ad manager
  • Avoid seeking on src when start time is 0
  • Tolerate misaligned TS files
  • Account for server-side ad cue points in external text tracks
  • Fix stopping of Server Side Ad manager
  • Fix DRM workaround for Tizen and Xbox with ac-3 boxes
  • Fix DRM workaround for Tizen and Xbox with avc3 boxes
  • Fix BUFFER_READ_OUT_OF_BOUNDS error when CEA caption packets are empty
  • Fix error when un-storing DRM asset
  • Fix CC parsing of EPB and v1 TKHD boxes
  • Always polyfill MediaCapabilities for Apple browsers
  • Add Support to iOS 12 in MediaCapabilities polyfill
  • Add support to file type in MediaCapabilities implementation
  • Display captions with forward slashes
  • Add support to file type in MediaCapabilities polyfill
  • Use "undetermined" for missing CC language
  • Fix FairPlay playback
  • Exit PiP when destroying UI

Docs:

  • Add FAQ entry for common Vue problem

3.2.0 (2021-07-14)

New Features:

  • MediaCapabilities support: configs for preferred codecs, decoding attributes, and key systems
  • Support more frequent segment updates during streaming
  • Add callback for apps to pre-process DASH manifests
  • Add chapters support
  • Add support for HLS Image Media Playlists
  • Add align and vertical settings to WebVttGenerator
  • Add a buffer fullness method
  • Progress toward FairPlay DRM w/ MSE
  • Add serverCertificateUri in DRM advanced config
  • Add goToLive method

3.1.2 (2021-07-14)

Bugfixes:

  • Fix choosing tracks from streaming event
  • Fix multiperiod without consistent thumbnails
  • Fix failure with multiple thumbnails per period
  • Update Play icon after seeking from end
  • Reset forced subs between loads
  • Fix thumbnail position calculation
  • Fix thumbnail duration, expose start time and duration
  • Fix enforcement of cue alignment styles
  • Fix DASH transition from dynamic to static
  • Fix ARIA label on replay button
  • Fix audio language switching while using AirPlay
  • Show captions with rapid seek when ignoreTextStreamFailures is true
  • Fix clearing buffer when requested for already-selected variant
  • Fix hung playback on rapid seek
  • Don't show AirPlay button if unavailable
  • Fix bogus debug logs

Docs:

  • Update upgrade guides

3.0.13 (2021-07-14)

Bugfixes:

  • Fix choosing tracks from streaming event
  • Update Play icon after seeking from end
  • Fix DASH transition from dynamic to static
  • Fix ARIA label on replay button
  • Fix audio language switching while using AirPlay
  • Show captions with rapid seek when ignoreTextStreamFailures is true
  • Fix clearing buffer when requested for already-selected variant
  • Fix hung playback on rapid seek

3.1.1 (2021-06-17)

Bugfixes:

  • Fix buffering due to re-fetch in multi-period DASH
  • Prioritize AVERAGE-BANDWIDTH over BANDWIDTH in HLS
  • Fix EC-3 box support in DRM workaround on smart TVs
  • Fix exception in UI on devices that do not support fullscreen
  • Fix caption positioning and sizing when the container resizes
  • Fix exceptions thrown in content with trick-mode tracks
  • Filter unsupported H.264 streams in Xbox
  • Fix out-of-bounds exception in LL-DASH
  • Fix failures and gaps in LL-DASH
  • Allow muxjs to be loaded after Shaka
  • Choose the configured preferred text role at start
  • Fix STORAGE_LIMIT_REACHED error masked by DOWNLOAD_SIZE_CALLBACK_ERROR
  • Fix "details" field in shaka-ui-load-failed event
  • Ignore network changes if ABR is disabled
  • Fix ClearKey+WebM+src= playback failure

Docs:

  • Document disabling Range header requests in HLS
  • Add Angular integration link

Demo App:

  • Add MIME type and extra config to custom assets

3.0.12 (2021-06-17)

Bugfixes:

  • Fix buffering due to re-fetch in multi-period DASH
  • Prioritize AVERAGE-BANDWIDTH over BANDWIDTH in HLS
  • Fix EC-3 box support in DRM workaround on smart TVs
  • Fix exception in UI on devices that do not support fullscreen
  • Fix caption positioning and sizing when the container resizes
  • Fix exceptions thrown in content with trick-mode tracks
  • Filter unsupported H.264 streams in Xbox
  • Choose the configured preferred text role at start
  • Fix ClearKey+WebM+src= playback failure
  • Fix double-display of embedded and non-embedded captions

Docs:

  • Document disabling Range header requests in HLS
  • Add Angular integration link

2.5.23 (2021-06-17)

Bugfixes:

  • Prioritize AVERAGE-BANDWIDTH over BANDWIDTH in HLS
  • Fix exception in UI on devices that do not support fullscreen
  • Fix caption positioning and sizing when the container resizes
  • Filter unsupported H.264 streams in Xbox
  • Choose the configured preferred text role at start
  • Fix ClearKey+WebM+src= playback failure

Docs:

  • Add Angular integration link

3.1.0 (2021-04-29)

New Features:

  • Ads APIs are now STABLE (no longer BETA)
  • MediaCapabilities support (BETA)
  • Remove support for IE11
  • Low-latency HLS (LL-HLS) and DASH (LL-DASH) support
  • Make DASH keySystems configurable
  • Make DRM sessionType configurable in advanced DRM config
  • Add Loop, PIP, Cast, AirPlay buttons to control panel
  • Network stall detection
  • Store thumbnails for offline playback
  • Extract HDR metadata from DASH manifests
  • Make gap detection threshold configurable
  • Support WebVTT default text color and default text background color
  • Add support for thumbnail tracks
  • Add getKeyStatuses to Player
  • Parse spatial audio from manifest
  • Add support for WebVTT style blocks
  • Add SubViewer (SBV) support
  • Add SubStation Alpha (SSA) support
  • Add downloadSizeCallback before storing offline
  • Extract HDR metadata from HLS manifests
  • add ignoreMaxSegmentDuration config for DASH manifest
  • Add navigator.storage.estimate polyfill
  • Prefer unprefixed EME for Safari
  • Add config to prefer native HLS playback
  • Add LyRiCs (LRC) support
  • Add support for SMPTE namespace 2013
  • Add support for mpegB:cicp:ChannelConfiguration
  • Config to prefer forced subtitles
  • Change default network request timeout
  • Optionally force HTTPS content URIs
  • Add parameter to probeSupport to skip DRM tests
  • Add autoLowLatencyMode config
  • Allow apps to register a custom seek bar UI implementation
  • Parse forced subtitles from manifest
  • Add addTextTrackAsync
  • Allow showing track labels in UI
  • Allow switching between mono and stereo tracks
  • Add support to side-load subtitles in src mode
  • Add SubRip (SRT) subtitle support
  • CEA-708 Decoder
  • Added completionPercent to playback stats
  • Render bold/italics/underline on SimpleTextDisplayer
  • Adds VTT tag rendering for bold, italic, and underline
  • CEA-608 Decoder
  • Add dependencies module to allow custom dependency injection
  • Add HLS PlayReady support
  • Add AirPlay button to overflow menu
  • Use Network Information API to react to network changes
  • Added polyfill for screen.orientation
  • Add support for EXT-X-SESSION-DATA in HLS
  • Add forceLandscapeOnFullscreen UI config

3.0.11 (2021-04-28)

Bugfixes:

  • Assume MP4 in HLS if MIME type can't be deduced
  • Fix resolution changes with lang change
  • Resume previous playback speed after pause
  • Fix updating of the mute icon
  • Fix text writing-mode support in old versions of Tizen and WebOS
  • Show replay icon instead of play when video ends
  • Fix cross-browser focus outline
  • Fix rapid keyboard-based seeking
  • Fix holding keyboard controls
  • Display cursors as pointers on overflow menu buttons
  • Fix failed assertion for eviction logic
  • Fix stalls on a live dash stream
  • Fix HLS content type detection with text codecs

Ad Features (BETA):

  • Fix the skip ad button not being clickable
  • Add the original IMA event to the Shaka AD_CLICKED event
  • Add more info on serving limited ads to the tutorial

Demo App:

  • Fix centering of icons, add hover effect on settings

Docs:

  • Update event docs and event links
  • Add the UI Theme Gallery link to the docs
  • Fixed various grammatical errors and typos
  • Fix offline tutorial to use the correct config

Misc:

  • Allow testing with Chromium-based Edge in Karma
  • Official Xbox One support

2.5.22 (2021-04-28)

Bugfixes:

  • Assume MP4 in HLS if MIME type can't be deduced
  • Fix resolution changes with lang change
  • Resume previous playback speed after pause
  • Fix updating of the mute icon
  • Fix text writing-mode support in old versions of Tizen and WebOS
  • Show replay icon instead of play when video ends
  • Fix cross-browser focus outline
  • Fix rapid keyboard-based seeking
  • Fix holding keyboard controls
  • Fix stylelint on Windows
  • Display cursors as pointers on overflow menu buttons

Demo App:

  • Fix centering of icons, add hover effect on settings

Docs:

  • Update event docs and event links
  • Add the UI Theme Gallery link to the docs
  • Fixed various grammatical errors and typos

Misc:

  • Allow testing with Chromium-based Edge in Karma
  • Official Xbox One support

3.0.10 (2021-03-18)

Bugfixes:

  • Fix stalls in some multi-Period DASH content
  • Fix stylelint errors on Windows

3.0.9 (2021-03-15)

Bugfixes:

  • Fixed build error on Windows
  • Exported SegmentReference.getUris
  • Fix giant gaps in SSAI content
  • Fix TTML background image attribute case
  • Avoid setting global Cast hook
  • Fix codec choice when resolutions differ
  • Fix autoplay for non-zero-start VOD
  • Allow playing Periods with missing text
  • Support localized whitespace preservation in TTML
  • Fix offline storage after a failure
  • Fix repeated seek on start for some content
  • Fix subtitle display in timing edge case
  • Support version 1 emsg boxes

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:

  • Fixed various typos
  • Fixed outdated info and typos
  • Document programmatic UI setup
  • Update doc for manifest and segment ALR
  • Add vue.js, nuxt.js and video.js integration examples

Demo App:

  • Make it possible to add custom ad assets with no manifest uri.
  • Add an ADS tab to the custom content page
  • Add DAI live DASH example to DEMO app

2.5.21 (2021-03-12)

Bugfixes:

  • Fix giant gaps in SSAI content
  • Fix TTML background image attribute case
  • Avoid setting global Cast hook
  • Fix codec choice when resolutions differ
  • Fix autoplay for non-zero-start VOD
  • Support localized whitespace preservation in TTML
  • Fix repeated seek on start for some content
  • Fix subtitle display in timing edge case
  • Fixed build error on Windows

Docs:

  • Fixed outdated info and typos
  • Fixed various typos
  • Document programmatic UI setup
  • Update doc for manifest and segment ALR

3.0.8 (2021-02-08)

Bugfixes:

  • Fix memory leak in Webpack-bundled version
  • Fix build in Python 3
  • Fix broken build in directories with spaces
  • Fix mixed clear/encrypted content on Xbox & Tizen
  • Fix trick mode tracks in DASH (work around compiler bug)
  • Fix DRM initialization on WebOS 3.0
  • Fix segment refs for "future" DASH periods
  • Recognize "m4f" extension in HLS
  • Catch unhandled rejection while destroying StreamingEngine
  • Fix header sizes for MP4 boxes with 64-bit size fields
  • Fix load-time exception in nodejs

Ads (BETA):

  • Use the correct AdsLoader AD_ERROR event
  • Expose getMinSuggestedDuration
  • Add setVpaidMode to the IMA externs

2.5.20 (2021-02-08)

Bugfixes:

  • Fix build in Python 3
  • Fix broken build in directories with spaces
  • Fix trick mode tracks in DASH (work around compiler bug)
  • Fix DRM initialization on WebOS 3.0
  • Recognize "m4f" extension in HLS
  • Fix header sizes for MP4 boxes with 64-bit size fields

3.0.7 (2021-01-06)

Bugfixes:

  • Fix text failures triggered by rapid stream switches
  • Remove legacy Edge workarounds on new Edge
  • Fix viewport anchor calculations in TTML
  • Fix slow memory leak related to MediaSource object URLs
  • Fix clicking in interactive client-side ads
  • Improve cue comparison performance
  • Fix race condition in text stream scheduling
  • Fix multiple stream-merging issues with DASH multi-period content
  • Fix exception when removing content from buffer
  • Fix memory leak in DASH with SegmentTimeline
  • Fix trick-mode tracks associated with multiple regular tracks
  • Fix TS DRM failures
  • Work around misreported AC-3 support on Tizen
  • Ignore incompatible TrickMode streams
  • Fix rare exception thrown when switching streams
  • Fix rendering of line breaks in text cues

Ads (BETA):

  • Fix ad disappearance when reconfiguring UI during an ad
  • Fix stopping ad manager after adblock

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:

  • Fix keyboard navigation in settings

Docs:

  • Clean up doc generation
  • Fix docs generation for enums in ui

2.5.19 (2021-01-06)

Bugfixes:

  • Remove legacy Edge workarounds on new Edge
  • Fix viewport anchor calculations in TTML
  • Fix slow memory leak related to MediaSource object URLs
  • Improve cue comparison performance
  • Fix race condition in text stream scheduling
  • Fix exception when removing content from buffer
  • Work around misreported AC-3 support on Tizen
  • Fix trick-mode tracks associated with multiple regular tracks
  • Fix TS DRM failures
  • Ignore incompatible TrickMode streams

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:

  • Fix keyboard navigation in settings

Docs:

  • Clean up doc generation
  • Fix docs generation for enums in ui

3.0.6 (2020-11-12)

Bugfixes:

  • Fix handling of metadata tracks for src= playback
  • Fix handling of role-less audio tracks
  • Fix support for multi-period encrypted live
  • Export UI externs
  • Fix duplicate init segment requests on manifest updates
  • Fix hard-coded TTML namespaces
  • Fix test failure on IE11
  • Filter out "chapters" tracks during src= playback
  • Fix compatibility for plugin factories
  • Be more permissive in vtt files
  • Fix renaming of UI base class protected members
  • Make submenu CSS apply to all submenus
  • Export FakeEvent for use by UI plugins
  • Recognize mp4a and mp4v extensions in HLS
  • Support multiple CHARACTERISTICS values in HLS
  • Don't auto-play after seeking while paused in the UI

Ad changes (BETA):

  • Allow apps to supply adsResponse property for IMA

Docs:

  • Add link to complete list of build categories
  • Correct receiver IDs in the UI tutorial
  • Update required Node version

Demo App:

  • Add test streams for CEA-608
  • Add new low latency DASH manifest
  • Remove redundant switch for manifest.dash.ignoreDrmInfo

Misc:

  • Add mkdir to make all build commands self-contained
  • Generate TypeScript defs with Clutz

2.5.18 (2020-11-12)

Bugfixes:

  • Fix handling of role-less audio tracks
  • Export UI externs
  • Fix hard-coded TTML namespaces
  • Filter out "chapters" tracks during src= playback
  • Fix renaming of UI base class protected members
  • Export FakeEvent for use by UI plugins
  • Recognize mp4a and mp4v extensions in HLS
  • Support multiple CHARACTERISTICS values in HLS
  • Don't auto-play after seeking while paused in the UI

Docs:

  • Add link to complete list of build categories
  • Update required Node version
  • Correct receiver app IDs in the UI tutorial

Demo App:

  • Remove redundant switch for manifest.dash.ignoreDrmInfo

Misc:

  • Add mkdir to make all build commands self-contained

3.0.5 (2020-10-07)

Bugfixes:

  • Fix hiding controls on mobile after touch
  • Ignore seek touch events on hidden controls
  • Fix interpretation of DEFAULT and AUTOSELECT in HLS
  • Avoid a race when clearing buffered content
  • Allow playback of video-only HLS via configuration
  • Make UITextDisplayer CSS-independent
  • Remove hard-coded tts:extent namespace in TTML parser
  • Don't apply seek range while content is still loading
  • Fix Shaka+Cast apps using IndexedDB
  • Permit applications to monkey-patch Date.now
  • Fix detection of Edge Chromium as Edge
  • Fix loading with global "define" set to null
  • Fix missing cues in UITextDisplayer
  • Fix storing modified init data for offline sessions
  • Fix duplicate text streams in multi-period DASH
  • Fix rapid seeking leading to infinite buffering
  • Fix non-deterministic exception in StreamingEngine
  • Fix bug where cue comparison throws
  • Fix exception on multi-period DASH
  • Fix embedded captions vanishing
  • Fix application of DRM server certificate
  • Fix multi-period DASH with period-specific codecs

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:

  • Fix hiding controls on mobile after touch
  • Ignore seek touch events on hidden controls
  • Fix interpretation of DEFAULT and AUTOSELECT in HLS
  • Avoid a race when clearing buffered content
  • Allow playback of video-only HLS via configuration
  • Make UITextDisplayer CSS-independent
  • Remove hard-coded tts:extent namespace in TTML parser
  • Don't apply seek range while content is still loading
  • Fix Shaka+Cast apps using IndexedDB
  • Permit applications to monkey-patch Date.now
  • Fix detection of Edge Chromium as Edge
  • Fix loading with global "define" set to null
  • Fix missing cues in UITextDisplayer
  • Fix storing modified init data for offline sessions

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:

  • Fix case sensitivity in KEYID format check in HLS
  • Do not assume HDR for HEVC1.2 on Chromecast
  • Recognize "wvtt" codec in HLS WebVTT tracks
  • Fix case sensitivity for DRM content types
  • PlayReady only has little-endian key IDs on Edge & IE
  • Fix UI translation of "live" in Chinese

Docs:

2.5.16 (2020-08-25)

Bugfixes:

  • Fix case sensitivity in KEYID format check in HLS
  • Do not assume HDR for HEVC1.2 on Chromecast
  • Recognize "wvtt" codec in HLS WebVTT tracks
  • Fix case sensitivity for DRM content types
  • PlayReady only has little-endian key IDs on Edge & IE
  • Fix UI translation of "live" in Chinese

Docs:

3.0.3 (2020-08-12)

Bugfixes:

  • Fix timing of VTT in HLS without map header
  • Fix TTML style inheritance
  • Fix ordering of cues on IE and Edge
  • Fix VTTCue polyfill in uncompiled mode on Edge
  • Ensure the number of variants stays stable when new periods are added
  • Fix src= playback on WebOS
  • Filter timeline regions by seek range
  • Don't send duplicate license requests
  • Don't limit segment count for VOD
  • Fix data URI parsing when charset present
  • Fix rendering of TTML nested cues and spacers

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:

  • License header field for custom assets

Docs:

  • Correct very outdated docs on test.py

2.5.15 (2020-08-12)

Bugfixes:

  • Fix TTML style inheritance
  • Fix ordering of cues on IE and Edge
  • Fix src= playback on WebOS
  • Filter timeline regions by seek range
  • Don't send duplicate license requests
  • Fix data URI parsing when charset present
  • Fix rendering of TTML nested cues and spacers

Docs:

  • Correct very outdated docs on test.py

3.0.2 (2020-07-28)

Bugfixes:

  • Fix missing build/types/core in npm packages
  • Work around stalling playback on Tizen 3
  • Fix hang while shutting down Widevine DRM sessions
  • Fix initial bandwidth estimate on Tizen
  • Fix src= playback on Tizen 3
  • Work around less 3.12.0 bug
  • Improve logging of buffered ranges on WebOS
  • Fix use of --test-custom-license-server in test.py
  • Fix HLS discontinuity bug, broken playback with ads
  • Fix disappearing captions with certain input patterns
  • Fix missing captions when switching streams
  • Append license for language-mapping-list to output

Ad changes (BETA):

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

Docs:

  • Update tutorial for seek bar color changes
  • Add FAQ entry for native HLS playback in Safari
  • Update tutorials and docs to async/await syntax
  • Update tutorials and docs to use modern variable syntax (const/let)

Demo App:

  • Fix demo behavior when UI fails to load (due to ad blocker)

3.0.1 (2020-06-18)

Bugfixes:

  • Fix failure with identical text streams
  • Fix offline progress callbacks in release mode
  • Fix bad segment URLs in DASH SegmentTimeline
  • Correct license headers in compiled output
  • Set an explicit font size for icons in UI
  • Apply upstream styles for icons font in UI
  • Export shaka.util.FairPlayUtils and shaka.util.BufferUtils

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:

  • Update Manifest Parser tutorial

2.5.13 (2020-06-11)

Bugfixes:

  • Fix background color of nested cues
  • Fix seeking from Google Home app while casting
  • Fix cancelation of pending network requests on load() and destroy()
  • Fix pixelAspectRatio extraction from DASH
  • Fix nested TTML captions with time offset
  • Set explicit default font size for UI icons
  • Correct license headers in compiled output and generated externs

3.0.0 (2020-06-09)

Ad Features (BETA):

  • Integration with Google IMA Ads SDK
  • Ad-related UI elements

Offline Features:

  • Allow offline downloads to be aborted
  • Store creation time with offline assets
  • Allow multiple concurrent storage operations on one Storage instance
  • Make trackSelectionCallback async
  • Allow storage of manifests that are missing inline init data

HLS Features:

  • Add support for HLS Discontinuity
  • Add support for multiple EXT-X-MAP tags
  • Improve HLS startup latency
  • Add variable substitution support to HLS parser
  • Add a presentationDelay config for HLS live

UI Features:

  • Expand translations: now available in 45 languages (18 built-in by default)
  • Support setting source through HTML src attribute or source tag
  • Large play button is configurable, and only shows on mobile UI by default
  • Add playback speed selection to UI
  • Add loop control element to UI
  • Improve buffering spinner visibility

Subtitle/Caption Features:

  • Add support for ebutts:linePadding in TTML
  • Add support for cell resolution units and font percentage in TTML
  • Add support for tts:border, tts:letterSpacing and tts:opacity in TTML

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:

  • Fix background color of nested cues
  • Fix seeking from Google Home app while casting
  • Fix cancelation of pending network requests on load() and destroy()

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:

  • Don't preload data on iOS
  • Make the controls background gradient proportional
  • Work around IE 11 bug in text region positioning
  • Fix PlayReady key ID endianness for TiVo
  • Fix shaka.log in debug builds
  • Add support for null TS packets in HLS
  • Fix live seek bar on touch screens
  • Fix text track change after enabling text display
  • Fix SegmentTimeline with t attribute missing.
  • Fix various text positioning bugs
  • Allow OPUS on Tizen 5 or higher
  • Fix CEA caption extraction for b-frame content
  • Fix module wrapper to prevent conflicting exports

New Features:

  • Add option to customize the polling of expiration time
  • Add new option manifest.hls.useFullSegmentsForStartTime

2.5.11 (2020-05-05)

New Features:

  • Add role information to text and audio tracks in src= mode
  • Parse HLS CHARACTERISTICS attribute and populate track roles
  • Recognize new CMAF file extensions cmfv, cmfa, cmft in HLS
  • Add configuration to enable/disable fullscreen-on-rotate
  • Add configuration to enable keyboard playback controls
  • Dismiss UI overflow menus on window click
  • Add non-standard DASH PlayReady UUID

Bugfixes:

  • Fix FairPlay event handling
  • Fix load() Promise hang on iOS
  • Fix language normalization with native HLS
  • Fix display of duplicate cues
  • Fix TTML position parsing
  • Fix display of line-positioned subtitles
  • Update to mux.js 5.5.4 to fix closed caption parsing bug
  • Fix language and role preferences in src= mode
  • Fix extra text track in src= mode
  • Fix Safari-prefixed fullscreen APIs
  • Fix display of nested cues with native text display
  • Fix getPlayheadTimeAsDate while loading/buffering
  • Recover from timed-out Cast connection
  • Fix DRM exceptions on WebOS TVs
  • Fix frameRate restrictions
  • Filter out metadata text tracks in Player tracks API
  • Fix PlayRateController leak
  • Fix buffer check in StallDetector
  • Fix offline storage picking high-bandwidth codecs
  • Fix nested TTML cues with non-ASCII characters
  • Fix UI updates when enabling captions
  • Fix ratechange events w/ src= playback
  • Fix serialization of Error objects over Cast
  • Fix missing EME polyfill in Cast receiver
  • Use the module wrapper in debug builds

Docs:

  • Fix broken docs for UI control events
  • Add FAQ entry about minBufferTime

Demo App:

  • Push demo app footer to the bottom of the page

2.5.10 (2020-03-24)

New Features:

  • Added 'doubleClickForFullscreen' config to UI
  • Add 'loaded' event
  • Update prerequisites script w/ new nodejs versions
  • Export default text parser plugins
  • Add config to show/hide unbuffered range at seek bar start
  • Approximate segment size based on bandwidth when deciding to abort a request
  • Always log config errors
  • Make 'offline.trackSelectionCallback' async to allow the app to prompt the user or do other async checks
  • Disable video when the media element is AUDIO

Bugfixes:

  • Fix DRM-related issues on Tizen
  • Fix exceptions with very large manifests on XBox One and possibly other consumer electronics platforms
  • Fix UI exception joining existing Cast session
  • Fix UTCTiming when autoCorrectDrift is off
  • Fix EME polyfill exceptions on Edge
  • Fix offline storage with some Widevine and PlayReady content
  • Don't fire 'adaptation' event when not switching
  • Fix rare exception in isTextTrackVisible()
  • Fix bogus warnings about argument count in configs
  • Fix duplicate DB objects when storing offline content
  • Fix MIME type case sensitivity in HLS parser
  • Fix changing UI Cast app ID to empty string
  • Fix case sensitivity in TTML MIME types
  • Fix exceptions for Video Futur platform
  • Fix captions display alignment
  • Fix Cast errors in compiled mode

Docs:

  • Improve ClearKey examples
  • Fix truncated UI tutorial
  • Update offline.md
  • Add additional links in error code reference

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:

  • Fix PiP polyfill for iOS
  • Ban iOS < 12
  • Work around service worker registration hang on iOS
  • Fix display of selected language in UI
  • Fix race condition on HLS parser shutdown
  • Fix StringUtils on Xbox One
  • Fix selecting audio track by role when video tracks contain the same role
  • Fix skipping of raw format streams in HLS
  • Fix iPad 13+ detection
  • Fix exception thrown for Chrome & Firefox on iOS

Docs:

  • Fix typo in fairplay tutorial

2.5.8 (2020-01-16)

Bugfixes:

  • Recognize and reject raw AAC in HLS
  • Fix fullscreen on Android
  • Fix start time support in src= mode
  • Add missing events to CastProxy Player
  • Fix cast receiver UI update

New Features:

  • Add corruptedFrames to stats
  • Add framerate restriction to the config
  • Add option to ignore empty AdaptationSets in DASH
  • Add licenseTime to stats
  • Add pixelAspectRatio property from DASH
  • Add AirPlay support with native HLS and FairPlay
  • Add option to show text/audio roles in UI
  • Add "fadeDelay" option to delay fading UI controls

Demo App:

  • Update asset list and metadata

2.5.7 (2019-12-18)

New Features:

  • Add audioSamplingRate property
  • Ignore DASH image tracks
  • Add AV1 check and more file extensions for src mode
  • Allow removing text from manifests
  • Allow ignoreSuggestedPresentationDelay in DASH
  • Allow removing video from manifests
  • Add a polyfill for EME encryption scheme queries
  • Add support for ttml regions
  • Add a method to select variants by label

Bugfixes:

  • Fix shaka.polyfill missing in externs
  • Fix width of overflow menu with wide content
  • Disable indexedDB support if an error is thrown
  • Fix setting robustness settings in DRM config

2.5.6 (2019-11-06)

Bugfixes:

  • Fix storing content with delayLicenseRequestUntilPlayed
  • Fix check for captions in appendBuffer
  • Allow 'rebufferingGoal' to change after startup
  • Fix default encoding when reading files
  • Throw for invalid TTML
  • Fix FairPlay default initDataTransform
  • Fix live seekbar on Android
  • Fix undefined value in HLS request filters
  • Fix Period transitions with embedded captions
  • Throw error for clear-key content with src=
  • Fix support for empty TTML data
  • Fix multi-Period handling of key statuses
  • Fix stall at end with src=
  • Fix ttml background image support

New Features:

  • Add config to use MSE playback on Safari
  • Support storing protected content without init data in manifest
  • Allow disable audio/video in manifest parsers
  • Enhance ttml rendering
  • Include event ID in DASH Event checks
  • Add support for Label element in DASH
  • Treat URL schemes as case-insensitive
  • Forward change event from src= playback
  • Export getMaxSegmentDuration() on presentationTimeline
  • Ignore MIME parameters in Content-Type check
  • Make seek & volume bar colors configurable

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:

  • Conditionally remove FairPlay formatting
  • Add sessionId field to network request
  • Make it easier to add custom overflow menu items
  • Add clearBufferOnQualityChange field to UI config
  • Allow filtering out failed HLS text tracks
  • Parse Accessibility tag into text "kind"
  • Re-add MediaSession API
  • Skip WebM streams in HLS instead of throwing
  • Convert <mspr:pro> elements to pssh init data

Bugfixes:

  • Fix duplicate resolution entries in UI menu
  • Fix missing tracks, race on time during startup
  • Fix spinner position on IE11
  • Fix seek bar coloring when nothing buffered
  • Fix scroll behavior on page load
  • Don't create a UI if the app already has one
  • Fix text display styling when fullscreen
  • Don't enter fullscreen on double click on bottom bar
  • Avoid errors when video ends
  • Fix fullscreen behavior on double click and rotate
  • Fix bug when clicking PIP button while casting
  • Fix CEA captions with multi-Period content

Demo App:

  • Added more HLS demo assets
  • Exit PIP on unload in the demo
  • Re-added hidden 'noinput' param to demo

2.5.4 (2019-07-19)

Bugfixes:

  • Default to transparent SMPTE-TT subtitle background
  • Fix seek bar on iOS
  • Allow whitespace in TTML subtitles
  • Fix play button positioning on IE 11
  • Match UI style with Chrome's native controls
  • Stop constant spurious time updates in UI
  • Fix volume slider jumping around while casting
  • Fix missing seek bar in short VOD clips
  • Fix demo app in Firefox private mode
  • Ignore case in MIME type checks
  • Fix problems with casting

New Features:

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

2.5.3 (2019-07-03)

Bugfixes:

  • Fix DASH bug when ignoring minBufferTime
  • Avoid changing variant when switching text lang
  • Work around platform bug when seeking to end
  • Allow apps to extend shaka.ui.Element
  • Fix bug when adding text streams while not streaming text
  • Fix edge case when switching text in multi-Period content
  • Fix playback rate bug on IE11
  • Make fast forwarding work when video is paused
  • Fix stack overflow in StringUtils on some platforms
  • Fix reading customData from standard Cast LOAD message

Docs:

  • Fix constant name in UI tutorials
  • Update build output name in docs

New Features:

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

2.5.2 (2019-06-10)

Bugfixes:

  • Avoid event listener leaks in the UI
  • Fix style errors in TextDisplayer
  • Show spinner when buffering even if other controls are hidden
  • Don't recreate controls object on configure() calls
  • Fix UI compilation on Windows

New Features:

  • Add originalUri as a property on shaka.extern.Response

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:

  • Fix missing variants in HLS
  • Ignore manifest-provided license servers if application-provided servers are configured
  • Fix range header regression that broke IIS compatibility
  • Fix initial display of captions based on language preferences
  • Ignore duplicate codecs in HLS
  • Reject AES-128 HLS content with meaningful error
  • Fix React Native createObjectURL polyfill incompatibility
  • Dolby Vision fixes for Chromecast
  • Fix redundant initialization of MediaSource
  • Fix stalls on WebOS
  • Fix missing require for SimpleTextDisplayer
  • Fix broken version definition in compiled build
  • Fix video reloading on audio language change

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:

  • Abort requests when network downgrading
  • Add FairPlay support
  • Add native HLS support on iOS and Safari
  • Support src= for single-file playback
  • Add 'manifestparsed' event for early access to manifest contents
  • Add 'abrstatuschanged' event to help manage UI state
  • Make manifest redirections sticky for updates
  • Track time in "pause" state in stats
  • Make Stall Detector Configurable

New UI Features:

  • Add support for UI reconfiguration and layout changes
  • Add support for custom UI buttons
  • Add partial support for SMPTE-TT subtitles in UI text displayer
  • Add PiP support in Safari

Demo App:

  • Complete redesign of the demo app!
  • Load non-built-in localizations from the server at runtime
  • Ignore spurious errors from ChromeVox
  • Don't handle non-app resources in service worker

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:

  • Introduction of Shaka Player UI library! (beta)
    • Load dist/shaka-player.ui.js
    • See tutorial in docs/tutorials/ui.md
  • Add option to disable drift-tolerance feature for certain live streams
  • Upgrade mux.js to the latest (5.1.0)
  • Support HLS playlists without URI in EXT-X-MEDIA
  • Add safeSeekOffset to StreamingConfiguration
  • Add PlayReady license URL parsing (ms:laurl)
  • Add support for HLS tags with both value and attributes

Bugfixes:

  • Fixed various typos in comments and docs
  • Fix CEA timestamps with presentationTimeOffset
  • Fix config-based clock sync for IPR content
  • Fix cast serialization of Uint8Array types
  • Fix event dispatch when text tracks change
  • Don't include video roles in audio-language-role pairs
  • Fix MediaSource failures with certain language settings
  • Fix build paths on Windows

Docs:

  • Update docs to mention ignoreMinBufferTime
  • Document restrictions on large timescales
  • Various small docs improvements

2.4.7 (2019-02-19)

Bugfixes:

  • Reject opus content on Tizen
  • Fix seekable range on HLS content with non-zero start time

2.4.6 (2019-01-22)

Bugfixes:

  • Fix HLS without URI attribute
  • Handle prereleases of npm and node in build scripts
  • Fix windows path handling in build scripts
  • Fix cast receiver errors in getStats
  • Fix spurious teardown exception on smart TVs
  • Loosen gap thresholds on Chromecast
  • Fix support for Safari 12
  • Fix support for relative Location URLs in DASH
  • Fix compliance issues in IE11 EME polyfill
  • Fix PlayReady playback on Tizen
  • Fix chopped playback in MS Edge
  • Fix assertions when EME sessions expire
  • Fix relative URIs in HLS
  • Fix compilation error

New Features:

  • Add extended error code for failed license request

Demo App:

  • Disable offline storage on some assets
  • Update DASH-IF livesim URLs

2.5.0-beta2 (2018-11-09)

Contains everything in v2.4.5, plus...

Bugfixes:

  • Fix Chromecast receiver id in the demo, broken since v2.5.0-beta
  • Fix multi-period playback issues introduced in v2.5.0-beta
  • Fix seekable range with non-zero start
  • Misc Storage and demo fixes
  • Fix support for restriction changes after playback
  • Fix TextEngine buffered range calculations

New Features:

  • Add support for CEA captions in DASH
  • Set server certificate before Store and Delete
  • Allow deferring deleting offline sessions.
  • Added progress events for Fetch plugin.
  • Add config field to ignore manifest minBufferTime #1547
  • Add support for 'individualization-request' messages in EME

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:

  • Optimize processXlinks
  • Add support for Python3 in build scripts
  • Allow new Periods to add EME init data
  • Add namespace-aware parsing to TTML parser
  • An external Promise polyfill is no longer required!

Demo App:

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

Docs:

  • Fix tracks sorting in Offline tutorial sample code
  • Add a note about blank receiver IDs
  • Rename 'video' to 'mediaElem' to make it clear that audio elements work, too

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:

  • Drift is now tolerated in DASH live streams
  • Storage can be initialized without Player
  • DASH Representation IDs are now exposed in a new field in Track
  • A safe margin parameter was added for clearing the buffer
  • Added 'retry' event to networking engine
  • Emsg not referenced in MPD will now be ignored
  • Extra data given for RESTRICTIONS_CANNOT_BE_MET
  • A mime type option was added to Player.load
  • Added Widevine SAMPLE-AES support in HLS
  • The |manifestUri| method on Player was changed to |assetUri|
  • Added new request type TIMING for clock sync requests

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:

  • Fix spurious restrictions errors
  • Don't error when skipping mp4 boxes with bad size
  • Refactor HttpFetchPlugin to clarify error outcomes
  • Avoid assertions about $Time$ when it is not used
  • Stop proxying drmInfo() to reduce cast message sizes
  • Fix compiler renaming in ParsedBox

Docs:

  • Fixed docs for availabilityWindowOverride

2.4.3 (2018-08-06)

New Features:

  • Add availabilityWindowOverride configuration

Bugfixes:

  • Fix repeated download of the same segment in live DASH
  • Don't clear buffer with a small gap between playhead and buffer start
  • Allow CDATA in text nodes.
  • Skip text AdaptationSets with no segment info
  • Add error code for side-loaded text with live streams

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:

  • Fix nodejs import (still not a supported environment, but does not throw)

2.4.0 (2018-05-24)

New features:

  • Support for TTML and VTT regions
  • Support for CEA captions in TS content
  • A video element is no longer required when Player is constructed
  • New attach() and detach() methods have been added to Player to manage attachment to video elements
  • Allow apps to specify a preferred audio channel count
  • Live stream playback can begin at a negative offset from the live edge
  • Add new configure() syntax for easily setting single fields
  • player.configure() returns false if player configuration is invalid
  • Fetch is now preferred over XHR when available
  • Request type now appears in shaka.util.Error data for HTTP errors

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:

  • Fix non-default namespace names in DASH
  • Fix use after destroy() in CastProxy
  • Fix text track visibility state
  • Remove licenses when wiping offline storage
  • Restore backward compatibility for v2.2.x offline storage

Demo app:

  • Update DASH-IF Big Buck Bunny asset

Docs:

  • Fix typos and formatting
  • Build docs as part of build/all.py

2.3.7 (2018-04-24)

Bugfixes:

  • Fixed manifest update frequency calculations
  • Fixed repeated seeking during HLS live streaming on Chromecast

Demo app:

  • Fixed updating of the app URL on Android when pasting into the custom asset field
  • Added Axinom live test assets

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:

  • Do not buffer audio far ahead of video

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:

  • Fixed rapid seeking in zero-width seek ranges, such as in HLS live
  • Fixed use of native controls for text display
  • Fixed parsing of multiple 'emsg' boxes

Demo app:

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

Docs:

  • Added a doc describing DASH manifests
  • Fixed documentation of CONTENT_UNSUPPORTED_BY_BROWSER error
  • Updated architecture diagrams

2.3.3 (2018-03-01)

New features:

  • Warn if parsing the date from UTCTiming fails
  • Backpropagate language selections on track change

Bugfixes:

  • Fix MP4+VTT in HLS
  • Fix track selection during "streaming" event
  • Work around MSE rounding errors in Edge
  • Fix IE stuck buffering at the end after replay
  • Fix catastrophic backtracking in TTML text parser
  • Fix infinite loop when jumping very small gaps
  • Fix seek range for live content with less than a full availability window
  • Remove misleading logging in DrmEngine#fillInDrmInfoDefaults
  • Fix old text cues displayed after loading new text stream
  • Fix truncated HLS duration with short text streams
  • Fix DASH SegmentTemplate w/ duration

Docs:

  • Fix out-of-date docs for error 6014 EXPIRED
  • Simplify prerequisite installation on Linux
  • Simplify the debugging tutorial
  • Fix various typos

2.3.2 (2018-02-01)

New features:

  • Add Storage.deleteAll() to clear storage when database upgrades fail
  • Make DASH default presentation delay configurable

Bugfixes:

  • Fix stall during eviction with small bufferBehind values
  • Fix deletion of offline licenses for demo content
  • Fix compiler renaming in Player language APIs
  • Rename Timeline events to include the "Event" suffix

Docs:

  • Fix incorrect year in the change log
  • Fix some bad annotations found while upgrading jsdoc

2.3.1 (2018-01-22)

New features:

  • All features released in 2.2.10, plus...
  • DRM content is now implied by DRM config, fixes some ad insertion cases
  • Add support for mp4a.40.34 mp3 in HLS
  • Allow ES6 syntax
  • Replaced deprecated gjslint with eslint

Bugfixes:

  • All fixes released in 2.2.10, plus...
  • Handle MPEGTS timestamp rollover issues, including WebVTT HLS
  • Fix MP4 timescale assumptions in HLS
  • Update muxjs to use new keepOriginalTimestamps option
  • Avoids line-length limits when building on Windows
  • Force JS files to use unix newlines on Windows
  • Fix selection of text streams with no role

Docs:

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

2.2.10 (2018-01-22)

New features:

  • Update Widevine HLS parsing support for SAMPLE-AES-CTR

Bugfixes:

  • Fix display of duration in Chrome cast dialog
  • Compensate for rounding errors in multi-period manifests
  • Delay gap-jumping until after seeking is complete
  • Fix SegmentTemplate w/ duration for live

Docs:

  • Add FAQ entry for file:// requests in Electron
  • Fixed typos and extraneous tags
  • Added missing @exportDoc annotations

2.3.0 (2017-12-22)

New features:

Demo app:

Bugfixes:

  • Fixed interpretation of EXT-X-START in HLS
  • Fixed URI extension parsing in HLS
  • Offline storage API can now download multiple items in parallel

Docs:

  • FAQ, architecture diagrams, and tutorials have all been updated.

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:

  • Fix excessive memory usage during storage
  • Fix offline storage with temporary license
  • Fix exception while casting
  • Reduced bandwidth of cast messaging
  • Fix exception when destroying TextDisplayer
  • Fix presentationTimeOffset in SegmentTemplate
  • Fix inconsistencies in text visibility across playbacks
  • Work around bad header formatting in IE 11
  • Fix Chromecast PlayReady playback
  • Fix subtitle display with VTTRegion enabled in Chrome

2.2.8 (2017-12-06)

Bugfixes:

  • Do not allow seeking/startup at duration (bump back by 1s)
  • Don't wait for sessions to close on DrmEngine.destroy
  • Do not clear buffers on configuration changes unless required
  • Ignore unsupported STYLE blocks in WebVTT
  • Fix a null exception in CastReceiver.destroy

Demo app:

  • Fix "ended" video control state on IE
  • Fix updates to demo app URL hash on Edge & IE 11
  • Fix demo app page-load race on IE 11

2.2.7 (2017-11-28)

Bugfixes:

  • Allow playhead to recover from drift
  • Fix exception and race which prevented cast status updates
  • Fix live broadcast startup issues
  • Fix mis-detection of live streams as IPR
  • Fix buffering of live streams while paused

Demo app:

  • Add multi-DRM assets from VDMS
  • Add certificate URI field in the custom asset section
  • Fix broken HLS asset
  • Update Widevine proxy URI

Docs:

  • Refactor main README.md
  • Fix build/README.md typo
  • Fix typo in config tutorial

2.2.6 (2017-11-14)

Bugfixes:

  • Cancel network retries when the Player is destroyed
  • Do not overwrite media from an earlier period when new period is shifted
  • Do not assume same timescale in manifest and media
  • Do not fail assertions when media references are shifted outside the period
  • Fix custom builds which exclude text parsing plugins

Demo app:

  • Rename demo "Autoplay" in demo UI to "Auto-load on page refresh"

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:

  • Fix interpretation of DASH presentationTimeOffset in SegmentBase

2.1.9 (2017-11-02)

Bugfixes:

  • Fix interpretation of DASH presentationTimeOffset in SegmentBase

2.2.4 (2017-10-23)

Bugfixes:

  • Don't enforce seek range while paused in live streams (stays paused)
  • Fix start time in live streams
  • Fix handling & transmission of errors from cast receiver to sender

Docs:

  • Added a tutorial for the offline storage and playback APIs

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:

  • Fixed race between gap-jumping and seeking
  • Fixed startTime == 0 in player.load()
  • Avoid clearing buffer on configure unless restrictions change
  • Fixed exceptions in the cast receiver demo
  • Various fixes for concurrent use of CastProxy and related APIs
  • Polyfilled various MediaSource issues on Safari 11
  • Reject TS content on Safari due to MediaSource bugs
  • Fixed stuck progress bar on cast receiver demo

Demo app:

  • Rotating mobile devices triggers fullscreen mode
  • Added robustness suggestions for Widevine

Docs:

  • Fixed docs with regard to shaka.text namespace

2.2.2 (2017-09-27)

New features:

  • Support for MP4+TTML text streams with multiple MDAT boxes

Bugfixes:

  • Fixed playback hangs in certain content due to rounding error
  • Fixed exception when TextTrack mode is set to "disabled"
  • Fixed subtitle failures in Safari
  • Fixed renaming issues in compiled builds
  • Fixed exceptions on Tizen 2016
  • Fixed TTML region parsing

Demo app:

  • Auto-select offline copy of an asset after storing it offline
  • Removed YouTube-sourced assets, which were very outdated
  • Added "Shaka Player History" live stream

Docs:

  • Added CORS explanation to the docs

2.2.1 (2017-09-01)

New features:

  • Support MP4+TTML in HLS

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:

  • Demo UI on mobile now shows help text on store/delete button

Docs:

  • Document lack of IE support on Windows 7

2.2.0 (2017-08-23)

New features:

  • Add support for EVENT type playlists in HLS
  • Add new option for offline protected content without persistent licensing
  • Allow applications to render their own text tracks
  • Allow applications to control streaming retry behavior
  • Add support for additional TTML styles
  • Add channel count information for both DASH & HLS
  • Add basic xlink support in DASH (actuate=onLoad only)
  • Add API to limit playable/seekable range for VOD content.
  • Add new error code for container/codec support issues
  • The default ABR manager is much more configurable
  • Add stream bandwidth info to variant tracks
  • Add player.isAudioOnly()
  • Expose presentation start time through player
  • Add bandwidth info to switch history
  • Improved Chromecast media queries
  • Stricter runtime type-checking of EME cert configuration

Bugfixes:

  • Fix flakiness in offline-related tests

Demo app:

  • Added robustness fields to the UI

Docs:

  • Updated upgrade guide for v2.2

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.
    • #744
    • The old interface will be removed in v2.3.
  • 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.
    • #744
    • The old interface will be removed in v2.3.
  • The choice API for AbrManager has changed. chooseStreams() has been replaced with chooseVariants(), and the switch callback now takes a variant.
    • #954
    • The old interface will be removed in v2.3.
  • 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:

  • Add vp9, opus, and flac mp4 to probeSupport

Bugfixes:

  • Never adapt across roles or languages
  • Fix parsing byterange attribute in HlsParser
  • Fix incorrect segment position after update in some DASH live streams
  • Fix support for live streams with no seek range
  • Fix display order of cues with identical ranges
  • Fix missing cues in WVTT MP4s using default sample duration
  • Accept non-integer settings in VTT
  • Tolerate bandwidth of 0 or missing bandwidth
  • Fix multiple pipeline flushes on some platforms
  • Make it safe to install polyfills twice

Demo app:

  • Fix compiled mode in the demo app. Does not affect the library. Removed defaultConfig_ reference in demo.
  • Update license URI for PlayReady test asset

2.1.5 (2017-07-17)

New features:

  • Add more information to video errors in Chrome

Bugfixes:

  • Fix key status problems on IE11 and Tizen TVs
  • Fix period switching when streams are not yet available
  • Filter out audio-only HLS variants that can't be switched to
  • Fix parsing of Microsoft-packaged HLS content
  • Fix rounding issues with multi-Period content
  • Fix exceptions thrown in some cases when switching text tracks
  • Fix DASH date parsing when timezone is missing
  • Fix persistent storage detection on IE11 and Tizen TVs
  • Fix test issues on Tizen
  • Fix version detection when compiling from the NPM package
  • Work around lack of key statuses on Tizen

Demo app:

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

Docs:

  • Document HTTPS requirement for EME
  • Update tutorials
  • Add FAQ entry on EME robustness
  • Update HLS FAQ
  • Document that we test on Tizen TV now

2.1.4 (2017-06-16)

New features:

  • Allow role to be specified in selectAudioLanguage and selectTextLanguage

Bugfixes:

  • Fix changing languages close to a period boundary
  • Fix hang in load() when there are pending failures
  • Fix DASH parser ignoring certain text streams
  • Fix exceptions when side-loading text tracks
  • Fix PlayReady support on Chromecast
  • Fix version number issues during publication on NPM
  • Fix pollution from npm on Windows
  • Fix support for npm v5

Demo app:

  • Fix control visibility in fullscreen mode on mobile phones

Docs:

  • Updated welcome docs
  • Updated list of supported platforms
  • Updated FAQ

2.1.3 (2017-06-06)

New features:

  • Limit network retries for VOD, only retry forever on live
  • Add stream IDs in getStats().switchHistory
  • Add label attribute to tracks
  • Expose role attributes on tracks
  • Silence confusing browser-generated errors related to play()

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:

  • Make educated guesses about missing HLS info (CODECS no longer required)
  • Add support for PlayReady on Chromecast and Tizen

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:

  • Fix offline download stalls on Android
  • Fix track restriction based on key status
  • Fix exception in fullscreen polyfill on IE 11
  • Fix exception when reconfiguring serverCertificate

2.1.1 (2017-05-10)

New features:

  • Separate audio and video codec in Track
  • Make segment request to establish HLS media MIME type

Bugfixes:

  • Fix exception in fullscreen polyfill on IE 11
  • Fix exception when reconfiguring serverCertificate
  • Don't fire 'trackschanged' event twice
  • Fix track restriction based on key status
  • Fix offline download stalls on Android
  • Fix race condition in gap-jumping code
  • Fix poster visibility in fullscreen mode

2.1.0 (2017-04-25)

New features:

  • Add basic HLS support
    • VOD only
    • Widevine & clear content only
    • No support for CEA-708
    • #279
  • Tolerate gaps in the presentation timeline and jump over them
  • Add an indicator for critical errors
  • Do not retry on HTTP 401/403 errors
  • Expand player stats and track metadata
    • Add loadLatency stat
    • Add mimeType to tracks
    • Track state changes (buffering, playing, paused, ended)
  • DASH trick mode support
  • Expose license expiration times through Player
  • Add support for EventStream elements in DASH
  • Add support for Chromecast Media Playback messages from generic senders
  • Add config to ignore key system and init data in DASH manifest
  • Add support for asynchronous response filters
  • Filter duplicate initData from manifest by key ID
  • Optionally adjust start time to segment boundary
  • StringUtils and Uint8ArrayUtils are now exported, to make filters easier
  • Add audio adaptation to default AbrManager
  • Add an API to force the Chromecast to disconnect
  • Add possibility to delay license request until playback is started
  • Add API to get live stream position as Date
  • Don't clear buffer if switching to the same stream
  • Demo app permalink support through URL hash parameters
  • Add a flag so scheme plugins can ask us to ignore cache hits for ABR
  • Allow passing durations from scheme plugins to compute throughput
  • Make ES6 imports easier
  • Add separate restrictions to AbrManager
  • Allow network plugins to see the request type

Bugfixes:

  • Make language selection explicit
  • Make text track visibility explicit
  • Fix firing of 'trackschanged' event for multi-Period content
  • Correct time parsing for MP4 VTT subtitles
  • Fix playback of live when segments do not extend to the end of the Period
  • Allow seeking to 0 in live streams
  • Add explicit timestamps to 'emsg' events
  • Fix playback of YouTube demo assets
  • Allow text parsers to change during playback

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
    • All segmented WebVTT cue timestamps are now segment-relative
    • #726
  • 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:

  • Add Media Session info to demo
  • Add support for xml:space in TTML parser
  • Add fullscreenEnabled property to fullscreen polyfill
  • Allow InbandEventStream elements at Representation level
  • Warning for unsupported indexRange attribute
  • Warning for duplicate Representation IDs

Bugfixes:

  • Fix cast support broken since 2.0.3
  • Fix timeout errors in cast demo
  • Fix infinite buffering caused by a race
  • Fix race in StreamingEngine for multi-Period content
  • Hide the controls when going fullscreen on phones
  • Improve calculation of $TIME$ in SegmentTemplate
  • Fix YouTube asset on demo app

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
    • #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:

  • Support for 4k on Chromecast Ultra
  • Support for text tracks on Toshiba dTV

Bugfixes:

  • Fixed buffering issues at the end of streams in IE/Edge
  • Fixed parsing of empty divs in TTML
  • Fixed subtle bug in Promise.resolve polyfill on IE
  • Fixed test failures on Chromecast

Docs:

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

2.0.3 (2017-01-09)

New features:

  • Treat HTTP 202 status codes as failures

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.
    • #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:

  • Add support for Toshiba dTV
  • TTML subtitles: Support for <br> inside a paragraph
  • Parse TTML textAlign settings into align property of a VTTCue
  • Improved test stability and coverage reports

Bugfixes:

  • Fix DASH content type parsing
  • Tolerate larger gaps at the start
  • Fixes for TTML alignment, positioning and cue externs
  • Keep ewma sampling from failing on 0 duration segments
  • Allow text parsers to change during playback - #571
  • Fix playback when IE11 modifies the XML DOM
  • Update MediaSource polyfills for Safari 10
  • Throw explicit error on empty manifests

Docs:

  • Link to error docs from the demo app

2.0.1 (2016-10-26)

New features:

  • Faster ABR decisions
  • Add config option for using segment relative timestamps for VTT
  • Log and ignore non-standard WebVTT settings instead of failing
  • Make key IDs from the manifest available through DrmInfo
  • Provide framerate and codecs information on video tracks
  • Dispatch more useful network error when HEAD request fails

Bugfixes:

  • Fix ABR quality issues when switching tracks (stutters, glitches, etc.)
  • Keep user selected text track when switching audio
  • Fix vtt with one digit hour
  • Fix build scripts for Windows
  • Fix buffering event delay
  • Workaround bug in Edge buffered ranges
  • Fix handling of internal-error key status
  • Ignore trick mode tracks
  • Fix AdaptationSetSwitching support
  • Fix buffering logic when switching periods
  • Use data URI content-type for manifest type detection
  • Fix audio language changes on Chromecast
  • Fix Chromecast receiver idle behavior when looping or replaying
  • Fix exception-causing race when TextEngine is destroyed

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:

  • Rewrote the debugging tutorial
  • Misc docs cleanup

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:

  • Fixed text-related issues in IE11
  • Fixed a few live edge corner cases
  • Fixed TTML parsing exceptions
  • Fixed text encoding issues with subs
  • Fixed issues with multi-period eviction
  • Defined order of AdaptationSet preference (prefer high quality, low bw)
  • Fixed support for manifests with multiple text formats
  • Fixed support for DASH Representations with multiple Roles
  • Fixed CSP compliance for Chrome apps

Planned features we cut:

  • Cache-detecting bandwidth estimation

2.0.0-beta3 (2016-07-29)

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

  • Offline storage and playback
  • Clearkey license server support

New features:

  • Built-in Chromecast support
  • TTML text support
  • TTML in MP4
  • VTT in MP4
  • Handle QuotaExceededError, automatically reduce buffering goals
  • Faster template processing in DASH
  • Bitrate upgrades take effect faster
  • Add a specific error for missing license server URI
  • Add adaptation events for language changes
  • Don't treat network errors as fatal in StreamingEngine
  • Provide the application access to DrmInfo structure
  • Restructure test/ folder to mimic lib/ folder structure
  • Upgrade closure compiler
  • New logo!

Bugfixes:

  • Revert ABR changes that caused bandwidth samples to be ignored
  • Fix buffering of multi-period text
  • Fix various ABR issues
  • Fix stuck playback on seek
  • Stop refreshing live manifests when unloaded
  • Don't adapt between incompatible codecs (mp4a & ec-3)
  • Fix race in player WRT external text tracks
  • Fix Edge EME workarounds on IE11
  • Work around Safari MSE bugs
  • Fix relative paths in UTCTiming
  • Fix source map paths on windows
  • Improve demo app CSS on mobile
  • Fix buffering state on unload
  • Fix load/unload/destroy race conditions
  • Reduce test flake (async tests still flakey on Safari)
  • Fix context menu display in demo app
  • Fix key status, session expiration, and DRM error dispatch
  • Fix demo app play controls on Android
  • Fix corner cases when seeking to the live edge

Docs:

  • Add a license-wrapping tutorial
  • Add track restriction docs
  • Update track and adaptation 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:

  • Track restrictions API
  • Custom controls demo for live
  • Trick play demo

New features:

  • Reduced startup latency
  • Added player.resetConfiguration()
  • Added response text to HTTP errors
  • Demo controls redesigned with material design icons
  • Emit an error if the wrong keys are retrieved
  • Human-readable errors shown in demo app
  • Cache-friendly bandwidth estimation
  • Improved trick play and playbackRate support
  • Allow apps to reset ABR manager estimates
  • Support non-zero start times for VOD

Bugfixes:

  • Fix playback of DASH with unaligned Representations
  • Fixed race conditions on seek
  • Improved drift handling
  • Fixed stack overflow in StringUtils
  • Improved live support
  • Fixed player.addTextTrack
  • Handle CDMs which don't support the same types MSE does
  • Fix audio-only encrypted playback
  • Fix renaming of event properties
  • Warn about missing clock sync elements in live manfiests
  • Add option for default clock sync URI
  • Fix crash in TextEngine when subs are turned off

Docs:

Broken Compatibility compared to v2.0.0-beta:

  • None!

1.6.5 (2016-04-08)

Bugfixes:

  • Always build the same input files to a stable output
  • Properly extern the 'xhr' property of HTTP errors

2.0.0-beta (2016-04-07)

New Features:

  • DASH support for:
    • Multi-Period content
    • Location elements
    • UTCTiming elements (for clock synchronization)
  • Better browser compatibility
    • Testing on Safari 9, IE 11, Edge, Firefox 45+, Opera, Chrome
    • #101
  • New plugin and build system to extend Shaka
  • Cache-friendly networking
  • Limit memory usage by clearing old data from buffer
  • Simpler, more mobile-friendly demo app
  • New test assets
  • Made play()/pause() independent of buffering
  • Numerical error code system
  • Distinguish between subtitle and caption tracks
  • Separate audio & text language preferences
  • Update timeShiftBufferDepth when updating the manifest
  • Simplified clearkey setup using configure()
  • Initial bandwidth is now configurable:

Bugfixes:

  • Stopped using Date headers for clock sync

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:

  • Added opt_clearBufferOffset for audio (Thanks, Itay)
  • Fetch segments from new location after manifest redirect (Thanks, Rob)

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
    • #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:

  • Partial IE11 & PlayReady support. (Thanks, Jono!)
    • #176
    • live and offline content not working
    • non-zero start times not working
    • IE11 fails to decode some test assets
  • Added support for setPlaybackStartTime on live streams.
  • Improved support for live streaming corner cases.
  • Now builds with three different configs by default.
    • Full build (all features enabled).
    • DASH MP4 VOD. (Only DASH w/ SegmentBase, no WebM.)
    • DASH MP4 live. (Only DASH w/o SegmentBase, no WebM.)
    • #116
  • Changed startNumber implementation to be more consistent.
  • Added a new Promise polyfill for IE11.
  • Added support for WebM w/ unknown size in the Segment element.

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
    • #203
    • #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:

  • Fixed timestamp correction for some live streams from Elemental.
  • Fixed support for manifests with different PSSHs per Representation.
  • Fixed support for ContentProtection elements at both AdaptationSet and Representation level in the same manifest.
  • Fixed support for bound DrmInfo callbacks.
  • Fixed the 'enabled' flag of text tracks when manipulated directly by the video element.
  • Fixed buffering to use the correct goal (minBufferTime) when re-buffering.
  • Fixed a broken link in the documentation. (Thanks, Leandro.)

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:

  • Added method to set playback start time.
  • Added a text-styling API.
  • Added support for AdaptationSet groups.
  • Added a new configuration API.
  • License preprocessing can now modify HTTP method and server URL.
  • Added an API to load captions not specified in the manifest.
  • Added support for live streams using SegmentList.
  • Added support for multiple BaseURL elements for failover.
  • Gave IAbrManager implementation the ability to clear the buffer when switching streams.
  • Added setNetworkCallback API to DashVideoSource to modify network requests.
  • Improved error reporting for unplayable content.
  • Added support for multiple DRM schemes per ContentProtection and simplified DRM scheme configuration.
  • Improved documentation for license pre- and post-processing.

Bugfixes:

  • Restricting all video tracks now fires an error event.
  • Changing text tracks now fires an adaptation event.
  • Fixed bad interactions between pausing and negative playback rates.
  • Fixed support for negative r values in SegmentTimeline.
  • Fixed bugs that could cause infinite buffering for certain configurations.
  • Fixed exceptions fired during rapid Player destroy().
  • Fixed linting with conflicting globally-installed copy of linter library.
  • Fixed support for SegmentTimelines with presentationTimeOffset.
  • Fixed support for apps/content which specify multiple DRM scheme configs.

Broken Compatibility:

  • Removed Player methods deprecated since v1.3.0.
    • getCurrentResolution
    • getCurrentTime
    • getDuration
    • getMuted
    • getVolume
    • play
    • pause
    • requestFullscreen
    • seek
    • setMuted
    • setVolume
    • #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
    • #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:

  • Fixed case-sensitive scheme URI check in the test app.
  • Fixed support-testing page for very old browsers.
  • Fixed multi-lingual encrypted content.
  • Fixed load-time exceptions in IE 9.

1.3.1 (2015-05-22)

A roll-up of recent bugfixes and small improvements.

Bugfixes:

  • Fixed some broken tests.
  • Fixed buffering states.
  • Fixed fullscreen polyfill installation.
  • Fixed handling of live content with minimumUpdatePeriod of 0.
  • Fixed selection of live content (type=dynamic).
  • Fixed AJAX request timeouts.
  • Fixed spec compliance for polyfilled session expiration.
  • Fixed buffer time for offline playback.
  • Fixed offline API consistency.

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:

  • Added support for module.exports.

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:

  • Added getAdaptationEnabled() to Player.

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.