Skip to content

Releases: shaka-project/shaka-player

v1.4.1

19 Aug 18:01
Compare
Choose a tag to compare

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 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.

v1.4.0

07 Jul 00:55
Compare
Choose a tag to compare

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.

v1.3.2

06 Jul 23:27
Compare
Choose a tag to compare

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.

v1.3.1

22 May 21:24
Compare
Choose a tag to compare

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.

v1.3.0

17 Apr 00:41
Compare
Choose a tag to compare

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.

v1.2.4

17 Apr 00:41
Compare
Choose a tag to compare

1.2.4 (2015-04-16)

Bugfixes backported from v1.3.0 to the v1.2.x branch.

Bugfixes:

  • 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 support for requireJS and improved support for commonJS.
  • Improved documentation for Role tags and multilingual assets.

v1.2.3

07 Apr 23:24
Compare
Choose a tag to compare

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.

v1.2.2

12 Mar 01:03
Compare
Choose a tag to compare

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.

v1.2.1

11 Mar 01:27
Compare
Choose a tag to compare

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. (#28)
  • 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.

v1.2.0

25 Feb 00:02
Compare
Choose a tag to compare

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. (#15)
  • Adaptation no longer causes hangs on looping and seeking backward. (#26)
  • StreamStats no longer shows null for width and height before adaptation. (#16)
  • Content with differing start times for the audio & video streams no longer
    exhibits A/V sync issues. (#17)
  • 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. (#12)
  • Windows build steps documented. (#13)

Features:

  • The isTypeSupported polyfill has been removed and all EME APIs have been
    updated to the Feb 9 2015 EME spec. (#2)
  • Gaps and overlaps in SegmentTimeline are no longer treated as an error.
    Large gaps/overlaps will still generate a warning. (#24)
  • HDCP-related failures are now translated into error events in Chrome 42+. (#14)
  • The MPD Role tag is now supported as a way of indicating the main
    AdaptationSet for the purposes of language matching. (#20)
  • More detail added to AJAX error events. (#18)
  • The Player now dispatches buffering events. (#25)
  • Parser support for the new v1 PSSH layout, including parsing of key IDs. (#19)
  • 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.