THEOplayer 2.x Changelog

2.12.0 (11/05/2017)

Features

Improvements

  • Side-loaded text tracks are now lazy-loaded
  • Chromecast: various minor improvements

Issues

  • Solved an issue with autoplay and Fairplay content in Safari on macOS
  • Solved various minor issues

2.11.0 (27/04/2017)

Features

  • Added support for chapters on the seek bar
  • Added support for preview thumbnails on the seek bar
  • Added pre-integration support for KeyOS DRM (documentation)

Improvements

  • UI: the mouse cursor is now hidden while the mouse is resting still above the player
  • UI: the control bar is now hidden immediately when the mouse moves outside of the player

Issues

  • Solved an issue where picture-in-picture mode would not re-activate automatically in some scenarios
  • Solved an issue where subtitles would not appear in some edge cases
  • Solved an issue with Internet Explorer 10 support
  • Solved various minor issues with DRM protected playback on Internet Explorer and Edge
  • Solved various minor issues with advertisements

2.10.0 (12/04/2017)

Issues

  • Solved an issue where changing the audio track on a DASH source would sometimes freeze the player on Edge
  • Solved an issue where Airplay was sometimes marked as available when it really wasn't
  • Solved an issue with preloading while in fullscreen mode on iOS
  • Solved an issue where querying the played property lead to an error when no source was set
  • Solved various minor issues with advertisements

2.9.11 (07/04/2017)

Improvements

  • Improved player behavior for redirected manifests
  • Improved the player's playback behavior on Windows 7

Issues

  • Solved an issue where the Airplay overlay was not hidden correctly

2.9.10 (05/04/2017)

Improvements

  • Added support for SKD protocol for Fairplay license URLs
  • Improved the player to detect broken AAC frames and replace them with silent audio

Issues

  •  Solved an issue where a DASH live stream with inconsistent segments timelines for audio and video would not start playing

Features

  • Added support for Airplay playback on Mac OS and iOS

2.9.9 (03/04/2017)

Improvements

  • Improved advertisement viewing experience
  • Improved Segment packaging for HLS streams

Issues

  • Solved some issues with the Player UI's menus
  • Solved an issue with setting the player's currentTime before ads were completely loaded
  • Solved an issue with cues not being updated correctly for sideloaded text tracks
  • Solved an issue with handling different Fairplay formats

2.9.8 (28/03/2017)

Improvements

  • Improved the player's behavior when there is a 404 error on segments.

2.9.7 (27/03/2017)

Issues

  • Solved some issues with the Player UI's menus

2.9.6 (27/03/2017)

Issues

  • Solved an issue that made the player pause when seeking.
  • Solved an issue with multiple identical content protection systems.

2.9.5 (23/03/2017)

Features

  • Fallback to track.label as title for audio tracks with no specific language.
  • Improved scrubbing behaviour.

Issues

  • Solved an issue with subtitle selection on Chromecast
  • Solved an issue with quality selection on Chromecast

2.9.4 (17/03/2017)

Features

  • Added compatibility with Chromecast Default Media Receiver.
  • Added support for setting the default selected sideloaded text track.

Issues

  • Solved an issue where text track labels were not shown.

2.9.3 (13/03/2017)

Issues

  • Solved an issue where an empty DRM description prevented DASH streams from being played correctly.
  • Solved an issue with text track cues that were not being dispatched correctly.

2.9.2 (10/03/2017)

Improvements

  • Improved outline behavior in the THEOplayer UI quality selection menu.

2.9.1 (09/03/2017)

Features

  • Added support for the poster property on Chromeless as well as UI players.
  • Added an optional poster property to SourceDescriptions.

Issues

  • Solved an issue where setting the preload property was not always correctly handled.
  • Solved an issue with the currentTime and duration displays in the THEOplayer UI.
  • Solved an issue where the fullscreen button was permanently hidden after casting to Chromecast.

2.9.0 (07/03/2017)

Features

  • Added a crossOrigin property to the player
  • Added support for Picture-in-Picture (PIP)
  • Added support for ad-block detection

Improvements

  • Improved detection and handling of gaps in MPEG-DASH streams

Issues

  • Solved an issue where the loadedmetadata event was not always correctly dispatched
  • Solved multiple issues with the ready- and playback state of the player
  • Solved an issue where it was no longer possible to specify global DRM configurations in a SourceDescription

2.8.6 (02/03/2017)

Issues

  • Solved an issue where the player would often have to resync when it had to rebuffer
  • Solved an issue with Chromecast text tracks

Improvements

  • Improved track synchronization behavior

2.8.5 (24/02/2017)

Issues

  • Solved an issue where content with persistent Playready licenses did not start playback correctly

2.8.4 (24/02/2017)

Issues

  • Solved an issue where the first cue of an SRT file was not parsed correctly

2.8.3 (24/02/2017)

Issues

  • Solved an issue where activequalitychanged event wasn't dispatched for HLS tracks
  • Solved an issue which prevented the progress bar UI from resetting
  • Solved an issue related to post-rolls
  • Solved an issue with the spinner icon on source change
  • Solved an issue with playback of periods that are no longer part of a stream

Improvements

  • Improved id3 support
  • Improved THEOplayer events
  • Improved buffering approach

2.8.2 (14/02/2017)

Issues

  • Solved an issue where the player would sometimes miscalculate the end time of stream
  • Solved an issue on IE/Edge where DRM protected content did not always start playback
  • Solved an issue where the player kept waiting for a seeking event that would never occur

Features

  • Improved mobile UI
  • Improved menu UI

2.8.1 (08/02/2017)

Issues

  • Solved an issue with the seekbar when using Google IMA
  • Solved an issue which didn't correctly dispatch events when using ads
  • Solved an issue with VuDRM

Features

  • Updated menu UI

Improvements

  • Improved error message for missing ContentProtection tag

2.8.0 (31/01/2017)

Issues

  • Solved an issue where the readystate was not always updated correctly when using ads

Features

  • Updated advertisement UI

2.7.2 (25/01/2017)

Issues

  • Solved an issue where DRM protected content did not start playback on Edge
  • Solved an issue where errors from native playback were not dispatched correctly
  • Solved an issue where embedded text track segments were not being downloaded in a live stream

Features

  • Added support for decryption of Clearkey-encrypted content through EME

2.7.1 (16/01/2017)

Features

  • Added support for playback of advertisements via Google-IMA

2.7.0 (16/01/2017)

Issues

  • Solved an issue where the UI was not reset correctly when changing a source
  • Solved an issue where the player stayed in an indefinite seeking state
  • Solved an issue where casting to a Chromecast device occasionally failed on startup

Features

  • Added support for playback of non-DASH media sources (e.g. regular MP4-files)
  • Updated the API to allow for per-source DRM configuration
  • Added support for playback of advertisements without requiring a main source
  • Added a ‘targetqualitychanged’ event to Audio
  • and VideoTrack objects that is triggered when the target Quality of that track is set
  • Added an ‘activequalitychanged’ event to Audio
  • and VideoTrack objects that is triggered when the active quality of that track changes

2.6.1 (16/01/2016)

Issues

  • Solved an issue where text tracks where not switched correctly when changing the playback context e.g. to ChromeCast
  • Solved an issue where license errors were not handled correctly and lead to a nonsense trace in console

2.6.0 (26/12/2016)

Issues

  • Solved an issue where ‘segmentnotfound’ events and errors were thrown multiple times for the same segment
  • Solved an issue where framerate was not exposed correctly

Features

  • Added support for EventStream events
  • Added support for DVB Subs text tracks
  • Added support for casting via ChromeCast
  • Added support for scheduling and playback of VAST and VMAP advertisement files
  • Added support for scheduling and playback of custom advertisements

2.5.10 (22/12/2016)

Issues

  • Solved an issue where the player stopped playback at the end of the shortest track instead of playing all available content
  • Solved an issue where a timeline gap at the end of a stream caused the player to not finish playback of a Period
  • Solved an issue where ‘addtrack’ and ‘removetrack’ events were dispatched twice

Improvements

  • Improved the player to be able to handle broken segments more robustly
  • Various improvements to player’s internal architecture

2.5.9 (20/12/2016)

Issues

  • Solved an issue where dispatching a seeking event too soon caused the player to remain in an eternal seeking state

2.5.8 (19/12/2016)

Issues

  • Solved an issue where default PSSH information was not parsed from manifests correctly
  • Solved an issue where the player did not start playback when detecting a gap in a stream
  • Solved an issue where resetting the player would not always clean up the player’s playing state completely
  • Solved an issue where the player would detect a gap in a stream that wasn’t actually there
  • Solved an issue where seeking the player ahead one frame at a time was not working

Improvements

  • Various improvements to the internal seeking behavior of the player

2.5.7 (09/12/2016)

Features

  • Added support for Advanced DRM Integration

Issues

  • Solved an issue where the last segment in a stream kept being downloaded endlessly
  • Solved an issue where ‘seeked’ events where being dispatched too early
  • Solved an issue where the duration, start
  • and endtimes were being miscalculated for segments of SegmentTemplates with no explicit SegmentTimeline
  • Solved an issue where a SourceBuffer was not initialized with the right codecs

Improvements

  • Various minor improvements to the player codebase
  • Various improvements to the player’s UI stylesheets
  • Various improvements to the player’s API via SourceDescriptions (Section 4)

2.5.6 (01/12/2016)

Features

  • Added support for the new Latens Titanium v2.5 error response format
  • Added a ‘source’ property to the player API which allows users to get and set the current SourceDescription. This deprecates the older player.setSource() method.

Issues

  • Solved an issue where segment timestamps in a multi-period manifest were not always calculated correctly

Improvements

  • Improved the player to handle some errors caused by invalid manifests more gracefully
  • Improved the estimate strategy in timeline searching algorithms
  • Various improvements to the internal DRM structure

2.5.5 (21/11/2016)

Issues

  • Solved an issue where a bug in the transition from dynamic to static behavior caused an endless loop. This is turn caused webpages that contained a malfunctioning player to freeze

2.5.4 (18/11/2016)

Issues

  • Solved an issue where the complexity of algorithms that handle manifest updates put a drain on resources in Chrome, which caused the browser to drop video frames. This in turn caused stuttering playback

Improvements

  • Various improvements to the computational complexity of algorithms in the player
  • Improved player behavior for disabling and re-enabling audio and video tracks

2.5.3 (07/11/2016)

Resolved Issues

  • Solved an issue where a segment timeline for dynamic manifests without explicit timeline information was not constructed correctly

2.5.2 (04/11/2016)

Resolved Issues

  • Solved an issue where the player would not reach the playing state after entering a waiting state twice, but leaving it only once
  • Solved an issue where the player would crash when setting its currentTime before the manifest finished loading
  • Solved an issue where manually switching an audio or video quality would sometimes leak an error to the console
  • Solved an issue where the activeQuality property of an audio or video track would always be undefined
  • Solved an issue where a gap at the start of a stream would sometimes prevent the player from reaching the ‘playing’ state

Improvements

  • Improved the player’s track switching algorithm
  • Improved the player’s manual quality switching algorithm

2.5.1 (26/10/2016)

Improvements

  • Improved the player to optimally handle 64-bit precision timestamps in manifests

2.5.0 (24/10/2016)

Features

  • Added support for inband (‘emsg’) events

2.4.5 (21/10/2016)

Resolved Issues

  • Solved an issue where the player would stall indefinitely when a large gap would occur in audio or video data

Improvements

  • Improved the player’s ability to detect and handle data gaps in audio or video tracks
  • Improved the player’s synchronization algorithm

2.4.4 (06/10/2016)

Resolved issues

  • Solved an issue where resetting the player would cause IE11 on Windows 8.1 to crash
  • Solved an issue where an MPD error would cause an unhandled error to leak to the console

2.4.3 (28/09/2016)

Resolved issues

  • Solved an issue where a video Quality’s framerate was not exposed correctly

Improvements

  • Improved the player to detect and handle overlapping segments in a dynamic stream

2.4.2 (22/09/2016)

Resolved issues

  • Solved an issue with indexes for SegmentList-based VOD content that prevented the content from being played
  • Solved an issue where the enabled state of an audio track was not correctly visualized initially
  • Solved an issue where text tracks that ended before audio or video tracks would prevent seeking beyond the end of that text track
  • Solved an issue where protected content would keep the player from reaching the ‘loadedmetadata’ state on Edge
  • Solved an issue where the player would leak an error to the console when a DRM problem occurred and ongoing license requests were not cancelled
  • Solved an issue where the player’s duration was not reset to NaN after resetting the source

Improvements

  • Improved the player to detect and handle missing frames in audio and video data

2.4.1 (16/09/2016)

Resolved issues

  • Solved an issue where the initialization of persistent DRM failed because two initialization requests were ran in parallel
  • Solved an issue where the active video track would be unnecessarily synced when switching the active audio track

2.4.0 (08/09/2016)

Features

  • Added support for playback of multi-period manifests
  • Added support for the WebVTT text track format
  • Added support for side-loaded text tracks
  • Added support for video tracks
  • Added support for manual quality or rendition switching and inspection of audio and video tracks

Resolved issues

  • Solved an issue with buffering of embedded text tracks that prevented subtitles from being rendered
  • Fixed some typing errors throughout the API documentation
  • Solved an issue where a BaseURL pointing to ‘./’ was not being resolved correctly
  • Solved an issue where multiple occurrences of the same parameter in an URL template were not being resolved

2.3.4 (02/09/2016)

Resolved issues

  • Resolved an issue where a call to stop, followed by a call to play, would cause an unrecoverable DRM error

Improvements

  • Various improvements to the player’s UI
  • Various improvements to the player’s internal structure

2.3.3 (31/08/2016)

Resolved issues

  • Resolved an issue where the player was not able to switch content-protected audio tracks
  • Resolved an issue with the player’s volume
  • Resolved an issue where the player did not use the updated time at which a MPDs was last fetched
  • Resolved an issue where the player stuttered due to decoding delay of DRM streams
  • Resolved an issue where event listeners for external events were not always attached correctly

Improvements

  • Improved the player to ignore unplayable tracks instead of throwing an error
  • Improved various aspects of the player’s internal code
  • Improved the player’s synchronization algorithm
  • Improved the player to handle transit between internal and external events

2.3.2 (17/08/2016)

Resolved issues

  • Resolved an issue where the player misbehaved when its currentTime was set to a value outside of its seekable range
  • Resolved an issue where track events were not being dispatched correctly
  • Resolved an issue where the end of some streams was not detected
  • Resolved an issue where the player stalled indefinitely for auto-updating SegmentTemplate streams
  • Resolved an issue where the currentTime of a HTMLMediaElement wasn’t being updated on Edge
  • Resolved an issue where streams ended too early on FireFox

Improvements

  • Improved the player to detect between which codecs can be switched during Adaptive Bitrate Streaming
  • Improved the player to signal representation changes when they occur visually instead of when they start downloading
  • Improved the player to detect unsupported platforms to prevent bad User Experience on those platforms
  • Improved the player to retry downloading failed manifests
  • on multiple locations
  • when possible
  • Improved the player’s error handling and made license errors more descriptive

Resolved issues

  • Resolved an issue where track lists did not dispatch ‘removetrack’ events when resetting the player
  • Resolved an issue where new segments’ numbers were wrongfully assigned when updating the manifest
  • Resolved an issue where the player’s error property was not set when dispatching an error event
  • Resolved an issue where the player allowed a user to seek outside of its seekable range
  • Resolved an issue where a period’s duration was not correctly detected

2.3.1 (02/08/2016)

Improvements

  • Added support to detect and filter representations that can’t be played by the MediaSource environment
  • Improved the player’s behavior when switching between two tracks
  • Improved the player’s setCurrentTime functionality
  • Improved the player’s use of the presentationTimeOffset attribute

2.3.0 (20/07/2016)

Features

  • Added support for the publishTime attribute in media presentation descriptions
  • Added support for playback on Chrome 52 on Android
  • Added support for saving and restoring state of volume and muted properties over multiple sessions
  • Added support for location elements in manifests
  • Added the currentProgramDateTime property to the player to indicate the player’s date time relative to a manifest’s publish time

Resolved issues

  • Resolved an issue where the player stalled indefinitely upon switching representations
  • Resolved an issue causing the player to go in a waiting state when its ready state is higher than HAVE_CURRENT_DATA
  • Resolved an issue with asynchronous creation of audio tracks
  • Resolved an issue where the player stalled indefinitely after playing 3 segments
  • Resolved an issue for SegmentTimeline segments with a repeat count equal to -1
  • Resolved an issue where the player did not dispatch a waiting event when starting playback of a stream
  • Resolved an issue with BaseURL elements that point to root

Improvements

  • Improved the internal architecture for track-based playback
  • Improved support for default attributes in multiple levels of a manifest’s segment info hierarchy
  • Various small improvements in the player’s seeking behaviour

2.2.1 (16/06/2016)

Features

  • Added support for the MPEG-DASH BaseURL element to the player
  • Reworked the players play() and pause() flow

Resolved issues

  • Resolved an issue with UI display order on Firefox
  • Resolved an issue with UI handling durationchange events and displaying an incorrect duration
  • Resolved an issue with UI not displaying all buffered ranges correctly
  • Resolved an issue where the internal duration was not correctly reset after stopping the player
  • Resolved an issue in correctly resetting of media elements when a new data source is loaded
  • Resolved an issue with playbackRate of the player being reset to 1 when loading a new source
  • Resolved an issue with the player occasionally dispatching a timeupdate event despite being in a waiting state
  • Resolved an issue with the player dispatching a playing event before having a data source loaded
  • Resolved an issue with the player attempting to seek before having a data source loaded
  • Resolved an issue with the player getting in an eternal waiting state while buffering data

Improvements

  • Changed the readyState of the player and all internal components waiting for readyState to being dependent on DRM being complete
  • Further optimized the build pipeline of the player
  • Improved event flow related to subtitle tracks
  • Improved the players support for the MPEG-DASH SegmentTemplate element
  • Various small improvements in the flow and stability of the player

2.2.0 (30/05/2016)

Features

  • The player now supports loading, parsing and rendering of TTML (Timed Text Markup Language) subtitles. More specifically it supports the Core Presentation Profile of the TTML specification
  • The player now has integration with a UI component

Resolved Issues

  • Resolved an issue that caused the player to repeatedly redownload a manifest file
  • Resolved an issue in correctly calculating the segment numbers in some manifest files

Improvements

  • Optimized the build pipeline of the player
  • Added a build target with build in user interface
  • Further optimized the calculation of time related ranges
  • Various small improvements in the flow and stability of the player

2.1.5 (17/05/2016)

Resolved Issues

  • Resolved an issue in correctly determining the end of stream and end of buffer
  • Resolved an issue in sometimes determining the duration of Period elements

Improvements

  • Optimized the build pipeline of the player
  • Added the videoWidth, videoHeight and error properties to the player
  • Improved the calculation of buffered, played, seekable properties
  • Various small improvements in the flow and stability of the player

2.1.4 (02/05/2016)

Resolved Issues

  • Resolved an issue in correctly determining that the end time of a media element had changed
  • Resolved an edge case that caused the player to repeatedly download the same segment
  • Resolved detecting that the player no longer was in sync with the available data in the manifest

Improvements

  • Improved buffer handling of the player
  • Various small improvements in the flow and stability of the player

2.1.3 (16/04/2016)

Resolved Issues

  • Resolved an issue that caused the player to not play when changing the source of the player while autoplay is enabled
  • Resolved an issue in correctly detecting the end of stream of the player
  • Resolved an issue in calculating the correct duration of some streams
  • Optimized the parsing of MPEG-DASH documents and removed blocking code

Improvements

  • Improved the memory usage of the MPEG-DASH document parser
  • Added missing documentation about the date attribute of some events that the player dispatches
  • Various small improvements in the flow and stability of the player

2.1.2 (29/03/2016)

Features

  • A new buffering algorithm has been added to the player
  • Added the ‘played’ TimeRanges attribute to the player to indicate the played range

Resolved Issues

  • Resolved an issue where individual tracks started playback before all tracks are DRM decrypted
  • Resolved an issue in determining the content type of a representation for some manifests
  • Resolved an issue in correctly calculating the duration of time ranges
  • Resolved an issue where the player could go in a stalling state

Improvements

  • Improved the synchronization of the individual tracks
  • Ensured that the player never goes in a playing state before the ‘canplay’ event has been thrown by the player
  • Improved the memory handling of the player
  • Added more detailed documentation about the various events that the player dispatches
  • Various small improvements in the flow and stability of the player

2.1.1 (14/03/2016)

Resolved Issues

  • Resolved a reference error in relation to MSMediaKeys.isTypeSupported on Microsoft Edge
  • Resolved a reference error that occurred when reporting Titanium Widevine error messages

Improvements

  • Removed unnecessary debug messages being outputted to console in release versions
  • Various small improvements in the flow and stability of the player

2.1.0 (04/03/2016)

Resolved Issues

  • Resolved DRM errors not being thrown while the player is in some specific states
  • Resolved an error in ABR calculations while the player is in a waiting state

Improvements

  • Optimized the error handling of specific errors that previously leaked their error message to console
  • Improved the error event being thrown twice for the some errors
  • Improved the MPEG-DASH manifest parser to detect more defects in the manifests
  • Improved the segmentnotfound event to provide information on the number of retries
  • Various small improvements in the flow and stability of the player

2.0.2 (26/02/2016)

Features

  • Content Protection error and success reporting and messages have been improved
  • contentprotectionerror – event thrown when an error occurs during content protection
  • contentprotectionsuccess – event thrown after content protection steps have been finalized and playback should start
  • mediaencryptionlicenseobtained – event has been removed from the player

Resolved Issues

  • Resolved an issue in calculating the edges of the seekable range in closed, static content
  • Throw a durationchange event when the duration of a media asset changes during playback

Improvement

  • Various small improvements in the flow and stability of the player

2.0.1 (12/02/2016)

Resolved Issues

  • Resolved an inaccuracy in the seekable ranges of the player
  • The end time of the seekable range during playback of an open (type = ‘dynamic’) asset is now three target durations away from the loadable range/end of the data in the stream
  • Ensure that when the currentTime of the player is modified, the new value falls inside of the seekable range
  • Resolved an issue in open (type = ‘dynamic’) assets that caused the manifest to no longer to be reloaded

Improvements

  • Various small improvements in the flow and stability of the player
  • Updated the DRM error messages to more clearly represent the cause of the error

2.0.0 (05/02/2016)

Features

  • Support for the Latens Titanium DRM system has been added for the IE11 and Edge browsers for the Windows 8, 8.1 and 10 platforms

Resolved Issues

  • Resolved a TypeError related to the code obfuscation occurring specifically on Edge causing the player not to start playback
  • Resolved an issue in cleaning up assets while unloading the player or changing source

Improvements

  • Various small improvements in the flow and stability of the player

2.0.0-BETA.0 (03/12/2015)

Features

  • Added versioning support in THEOplayer.version
  • Support for the Latens Titanium DRM system has been added for the Chrome web browser
  • Updating the src attribute of the player now unloads the old and loads the new value of the attribute
  • Calling the stop method on the player now stops playback and destroys the player
  • Support for dynamic streams with a continually growing DVR window
  • Support for dynamic streams that transition to a static stream has been added to the player

Resolved Issues

  • When a 404 error occurs during the download of a media segment, the player will now try again after a short delay
  • Resolved a time and rounding issue that caused the player not to start playback of the specified asset
  • The player now recovers from situations where its playback buffer is not overlapping with the timeline of a dynamic stream
  • Resolved an issue on IE11 where media keys got attached to the media element while the media element was in an invalid readyState 0, HAVE_NOTHING
  • Clean up old media keys when stopping the player or when setting a new source on the player

Improvements

  • When present, PSSH headers now get read from the manifest in order to kick start the DRM flow
  • Support for the presentationTimeOffset MPEG-DASH MPD attribute has been added to the player
  • Various small improvements in the flow and stability of the player