Skip to content

Releases: Dash-Industry-Forum/dash.js

Dash.js v3.1.3

14 Oct 10:32
Compare
Choose a tag to compare

Features

  • #3325 Add support for version 1 Events
  • #3381 Support for Clearkey license acquisition using a server component

Improvements

  • #3360 Multiperiod improvements and gap handling
    • Prebuffer multiple upcoming periods.
    • Prebuffering of the new period now starts when audio and video of the previous period are finished buffering
    • While prebuffering the new period the Sourcebuffer.timestampOffset was overwritten by the current period. This is fixed now.
    • Use appendWindowStart and appendWindowEnd to set buffer ranges according to Period-start and period durations.
    • Improve gap handling: Do not wait for playback to stall but instead actively jump over gaps in the timeline prior to reaching them
    • Adjusted the InsufficientBufferRule in order to set the same buffer target for audio and video. This enables us to prebuffer multiple periods as we wait for all buffers to be filled before starting the prebuffering.
    • Added support for period switch when the upcoming periods can not be prebuffered. In this case stream will stall and the gap handler will jump to the end of the current period, initiating a period switch to the upcoming period. Transition will not be as smooth as when the content is prebuffered
    • Added gap jump at playback start
    • Avoid endless loop if no live edge could be calculated because of a missing DVR window for ad periods.
    • Fixed various minor issues for instance related to rounding of values
    • Remove UseCalculatedLiveEdge attribute. This was used before to adjust the clientTimeOffset for SegmentTimeline depending on the DVRwindow. This is not a good approach, as the clientTimeOffset should be derived from the UTC timing source.
  • #3390 Use previous stream to determine whether smooth period transition is possible
  • #3389 Use the segments in the SegmentTimeline as a reference for the DVR window. This behavior can be adjusted via settings parameter.
  • #3265 Patch audio track switching for GoogleCast devices

Bugfixes

  • #3357 Fix invalid stream urls and syntax highlighting in samples
  • #3350 Fix Typescript definition for setProtectionData
  • #3364 Fix multiple subtitles displayed for multiperiod streams
  • #3368 Fix issue MSS timestamp offset with timestamps > 2^53
  • #3331 Fix buffer pruning
  • #3369 Fix live segment list playback
  • #3376 Fix multiperiod DVR window
  • #3377 Stop playback ended interval when last period ended
  • #3332 Fixed imageType attribute name in TTMLParser
  • #3384 Use initData from protData for ClearKey decryption if the key system has already been selected

Dash.js v3.1.2

24 Jul 09:39
Compare
Choose a tag to compare

Features

#3279 Make low latency specific reduction and multiplication factor for retry attempts and retry interval configurable.
#3280 Add support for transition phase between live and on-demand streams (NPVR)
#3245 Allow setInitialMediaSettingsFor with fragmentedText media type
#3292 Use max segment duration for single period manifests and live delay calculation
#3297 Update thumbnails API : Minor fixes + display thumbnails bitrate list in control bar
#3316 Define a threshold which controls catchup mechanism for low latency streaming
#3293 Store and use fragmentedText settings in localStorage
#3336 Adjust low latency sample to include catchup playback rate threshold

Improvements

#3266 Add protocol info to manifest info in order to distinguish between MSS and DASH
#3276 Sample sizes for Throughput history: Reverse order of samplesize variance test to match usage
#3288 Update jsdoc for UrlLoader, DefaultUrlUtils, SchemeLoaderFactory
#3299 Set minBufferTime to one video segment duration
#3296 Use document.fullscreenElement
#3310 Consider gap/discontinuity limit as tolerance when determining buffer length
#3294 Enable calculating segment availability range according to effective segment timeline if timeShiftBufferDepth is not defined.
#3330 Remove profiles from mimeType attribute as they will cause problems when doing capability checks
#3335 Reorganize reference stream dropdown, add provider and sort by use case
#3324 Solves live seeking for non-modern browsers for which seeking at a time on video element fails when there is no buffered data at requested time

Bugfixes

#3262 Fix PSSH parsing: Remove newlines and whitespaces from the pssh string to avoid running into an infinite loop
#3271 Remove r parameter from live delay computation
#3277 Fix a bug which causes no calculation of live seek range in the MSE for video only streams
#3282 Restore default buffer settings
#3284 Fix regression for representationInfo's segmentDuration
#3285 Fix live delay computation
#3286 Fix regression with enableText
#3290 Fix regression for non-embedded text tracks
#3298 Check if dvr window is finite before trying to find a request at the beginning of the dvr window
#3301 Fix race condition: Set latency attributes in reference client after the default json has been loaded
#3307 Only reset the seek target if a valid segment request has been found
#3309 MSS: Fix moov duration fields
#3314 Fix regression for live delay computation
#3323 Fix regression on track switch
#3328 Fix: startRecord type missing
#3337 Fix multiperiod representation update

Refactor

#3256 Remove circular dependencies to/from StreamController and StreamProcessor
#3278 Remove NextFragmentRequestRule
#3275 Modify Offline module API
#3283 Optimize live start
#3308 Refactor streams playback start
#3322 Playback start for SegmentBase streams

Dash.js v3.1.1

22 May 14:11
Compare
Choose a tag to compare

Improvements

#3217 Improve live delay calculation for SegmentTimeline manifests. Do not start at the beginning of the DVR window if no valid request could be generated at the target live edge.
#3139 Do internal seek command only if it is needed when first media segments are pushed.
#3219 Restructure Readme.md, make sample section more prominent.
#3135 Add tests on parameters. Avoid creating BufferController if the media type is not defined.
#3236 Add onAbort handler for fetch loader.
#3235 Add onabort handler for legacy Chrome.

Bugfixes

#3242 Fix handling of DASH inline events.
#3225 Fix wrong default value of suggestedPresentationDelay in documentation.
#3238 Fix thumbnail track rendering.
#3198 Fix a bug when video element is attached inside a shadow DOM at its root.
#3213 Fix functional tests in Edge browser.
#3250 Add prevent code for null reference in getSegmentByIndex().

Refactor

#3210 Code refactoring of the FragmentModel. Remove circular dependencies.
#3252 Code refactoring of StreamProcessor and Stream. Remove circular dependencies.

Dash.js v3.1.0

14 Apr 14:35
Compare
Choose a tag to compare

Feature

#2903 Add Offline playback
#3099 Add SegmentBaseController to control requests for init and media segments in SegmentBase use cases
#3206 Create a readable report from the functional tests in CircleCI

Improvements

#3170 Reuse existing texttracks when a new stream is loaded
#3138 Update functional tests to use latest drivers, sample streams and additional tests for multiperiod and url parameters
#3012 Update DashMetrics class
#3201 Improve live edge calculation
#3209 Look for the right initial stream when playing dynamic multiperiod streams

Bugfixes

#3195 MSS: Use a fallback id for adaptation sets if no name is provided
#3199 Fix references to use SuggestedPresentationDelay in order to calculate live edge delay
#3142 Typescript Defintion: Define enum LogLevel as const
#3204 Fix bugs in the functional tests for Mac devices
#3205 Only restart the ScheduleController after a QuotaExceededError
#3207 Fix invalid path to dashif.ico
#3208 Fix functional test example for Windows
#3211 Fix a bug in the calculation of the start period which lead to playback stalling

Dash.js v3.0.3

12 Mar 09:23
Compare
Choose a tag to compare

Feature

#3185 Implement a first version of the Common Media Client Data specification (CTA 5005)
#3185 Add CMCD samples in the reference client landing page and the samples folder.
#3153 Use the appendWindowEnd attribute of the MSE SourceBuffer.

Bugfixes

#3158 Fix a bug which lead to playback stalling for SegmentBase multiperiod assets.
#3154 Fix an issue with multiperiod live streams. Playback was not started if the segment time was not found in the first period.
#3134 Avoid to push two initialize segments one after the other without any media segment between them.
#3183 Allow null values when setting values in Settings.js.
#3184 Fix a bug in which initial, minimum and maximum bitrate override each other in the reference client sample
#3182 Fix a bug in the ABRController to avoid using invalid ABR algorithm
#3190 Fix a bug Headers string not appending \r in the FetchLoader

Dash.js v3.0.2

05 Feb 08:36
Compare
Choose a tag to compare

Feature

#2866 Add the capability to match a regex for initial settings of audio and video language

Bugfixes

#3129 Avoid play fail when some segments are unavailable
#3149 Update common earliest time management to avoid playback stalling after seek
#3123 Use clearInterval instead of clearTimeout in ManifestUpdater.js
#3131 Fix starting of live streams with SegmentTimeline
#3159 Avoid jumps in the livestream when an incorrect currentTime is reported by video element
#3143 Update buffer level metrics to avoid situations in which no segments are requested
#3163 Avoid Edge mixed-content Security issue
#3162 Remove default value in TypeScript index file
#3154 Fix issue with multiperiod live streams if segment time is not found in current period
#3164 Update parseFloat call to use the float values instead of the string values

Documentation

#429 Add collection of resources on how to create DASH content

Code Refactor

#3157 Rename the earliestTime variables in the PlaybackController to avoid confusion

Dash.js v3.0.1

04 Dec 13:47
Compare
Choose a tag to compare

New Features/Enhancements

#3112 Add segment quality in HTTPRequest metrics
#3110 Add thumbnail support for SegmentTimeline representation
#3107 Allow the user to set a DRM Key system priority
#3089 Support Service Description for DVB-DASH LL

Bugs

#3122 getSegmentForTime is returning indicies off by one segment
#3121 onabort callback for HTTPLoader is called twice
#3118 Fix multi period seek regression
#3116 Fix issue about media finished detection
#3108 Fix abandon switch request if min bit rate is set
#3106 Fix IE11 issue
#3105 Update getNextSegmentRequest function
#3103 Fix logger reference
#3101 Types: allowing partial definition of setting obj
#3100 Ended event bug fix
#3097 Allow default text track at time 0 to be displayed
#3094 Fix segment base issue
#3092 Remove circular dependency
#3085 Fix disabling of catchup (leave playback rate alone)
#3070 Update TypeScript interface
#3060 Clean out embedded subs with the video buffer pruning
#3058 Metrics bug fix for webM content
#3057 Update getSegmentByIndex function in TimelineSegmentsGetter class
#3052 Fix typo in TTML sample title
#3050 Fix issue #3048 (calculation of liveDelay)
#3047 Events with a presentationTime in the past are now removed.
#3045 Seek value bug fix
#3044 Update AudioChannelConfiguration management
#3039 Fixed stablebuffer calculation in low latency mode
#3028 Error on setMediaDuration when mediasource readyState != 'open'
#3024 Update log management + refactoring bug fix
#3015 Fragmented text bug fix
#3014 Fix some invalid keys in sources.json

EME/DRM

#3120 Fix PlayReady challenge format
#3065 Fix sourcemaps not including sources anymore
#3064 Manage both regular and namespaced scte35 tags

Code Refactor

#3086 Reduce dependencies
#3077 Update dash adapter and unit tests
#3069 Update ScheduleController

Smooth Streaming

#3109 [MSS] Fix missing DVRWindowLength for live streams
#3074 [MSS] Add support of integer greater than 2^53
#3063 [MSS] Use new settings system for MSSParser buffer configuration
#3053 [MSS] Fix regression on minBufferTime MSS Regression
#3051 [MSS] Auto buffers length configuration for live streams

Reference Player/Samples

#3117 Fix sample control bar
#3095 Sample page update

Unit Tests/Functional tests

#3030 Update funtional tests

Dash.js v3.0.0

29 Jun 00:40
Compare
Choose a tag to compare

Bugs

#3002 Fix ABR controller if min allowed bitrate is set
#3000 Multi period with fragmented text bug fix
#2987 Fix cleaning of caption divs
#2986 Fix annoying typings error
#2985 Preload regression fix
#2982 Subtitles regression fix
#2979 Fix liveSeek on manifest update
#2974 Stop EventController when stream is stopped
#2973 Fix seeking issue
#2971 Audio Bug fix
#2967 Fix bug when parsing range of initialization segment
#2949 Fix for Playready Key message format parsing
#2948 Fix monitoring dash.js sample
#2945 Add return type to method setMinAllowedBitrateFor in index.d.ts
#2943 Regression bug fix (video replay)
#2935 checkPortalSize function required Math.abs when calculating the Representation with nearest Width to the elementWidth
#2932 Set minBufferTime as the buffer level for playback restart after being stalled
#2921 Switch MPD urls to protocol relative when available in https
#2887 Fix for setLiveSeekableRange
#3009 Stop the player from streaming past the availability range

Reference Player

#3005 Fix thumbnail sample hostnames to point to a hostname with a valid cert
#2975 Control bar syntax fix
#2960 Enhance control bar for live events. Added a live indicator to controlbar

New Features/Enhancements

#3003 Dashjs v3 - New Segments Management Model
#2867 Player config v2

Smooth Streaming

#2933 Correct minBufferTime setting
#3011 Update for live streams support

EME/DRM

#2953 Add possibility to filter and reorder key systems prioritization order at application level EME/DRM
#2865 Fix for Playready Key message format parsing.

Code Refactor

#2954 Remove settings methods from MediaPlayer
#2930 Set DashMetrics as a controller of MetricsModel Code Refactor
#2898 Refactoring

Build process/Automation

#2990 Functional tests integration with CircleCI
#2981 Fix build in es5
#2927 Functional tests

Unit tests

#2998 Update stream unit test
#2994 Update MSS parser unit tests
#2962 Improve unit tests
#2956 Improve unit tests
#2942 Unit test for checkPortalSize issue

Known issues:

  • Issue when switching language in VOD streams using fragmented subtitles.
  • Issue when, for live streamings, a seek operation is done to the live position. When doing that dash.js reports constantly the event dashjsEvents.BUFFER_EMPTY.
  • Issue when, for multiperiod streams, there are time gaps in the transition of periods. Dash.js is able to recover itself most of the times but we are working on doing smooth transition even when this time alignment issues happen.

Dash.js v2.9.3

12 Feb 23:11
Compare
Choose a tag to compare

Bugs

#2874 Don't use Array.prototype.find because it doesn't exist for IE11
#2870 parseFloat bug fix
#2860 Bug fix about id type of mediaInfo for subtitles
#2857 Remove requests only when there is a real discontinuity
#2838 Use FetchLoader for media segments download only to fix init segments caching issue in low latency mode
#2836 HTTPLoader abort()
#2835 Reset on edge bug fix
#2833 Update replace request process
#2826 Fix about Event_asArray attribute
#2816 Fragmented thumbnails mimeType fix
#2928 Fix how timeout is handle in license requests
#2920 fix comments issue
#2916 #r time fragment not limited by stream start
#2915 Bug fix about Start-Over
#2913 Protect track switch
#2905 Fixes and improvements on multiperiod prefetch logic
#2904 Change the way Promises support is checked
#2901 Fix calls to getAdaptationForType
#2899 Fix disabling of catchup (leave playback rate alone)
#2894 Fix stall state management when not in low latency mode
#2879 A fix for Incorrect handling of emsg events

New Features/Enhancements

#2872 EventStream. Callback event support
#2855 Add CAPTION_RENDERED event for non-html text cues
#2852 Multiperiod transition logic changes
#2834 Add CAPTION_RENDERED for caption cea608
#2912 Update imsc1 version 1.0.1 => 1.0.2
#2908 Add support for xml+bin SCTE messages
#2929 Use labels from DASH manifest AdaptationSet

EME/DRM

#2846 ClearKey regression fix
#2827 Fix ClearKey issue

Code Refactor

#2876 Refactoring and cleaning
#2844 Update metrics
#2881 Remove mutual dependancies

Build process

#2858 Update dependencies that do not require code changes
#2848 Update grunt dependencies to the last posible version
#2900 Use CircleCI as our continuous build/deployment system Automation

Reference Player

#2832 Remove not working samples

Documentation

#2875 Add autoplay policy sample
#2853 Update conformance tool url
#2839 Update index.d.ts
#2830 Update demo samples page
#2823 Update a couple of broken links in the contributing doc
#2822 Adding video stats and configurable target latency to low latency sample
#2917 Update JS doc
#2886 Fixing wrong type definitions for metrics-related methods

Dash.js v2.9.2

29 Oct 22:33
Compare
Choose a tag to compare

Bugs

#2809 remove ClearKeySet import
#2818 Force MediaSource reset when there are EME config changes
#2792 Remove import from typings file
#2831 Limit time threshold for segment request calculation

New Features/Enhancements

#2813 Low latency improvements
#2790 Update imsc version
#2784 SegmentBase fragmented thumbnail implementation and example

EME/DRM

#2811 Add timeout config for license requests
#2808 Add retry mechanism to license HTTP requests
#2800 Clean-up CDM key sessions when videoelement unref'ed

Code Refactor

#2799 Clean and refactoring Code Refactor
#2810 Clean and refactoring Next
#2797 Reorder error codes
#2793 Change type and text of bleeding live edge message
#2791 Centralize box parsing

Unit Testing

#2787 Update unit tests Unit Testing

Reference Player

#2817 Remove deprecated livestream from samples
#2798 Allow easy testing of player API in Ref Player

Documentation

#2804 Update index.d.ts
#2794 Add dash.js advanced samples
#2788 Errors type script + JSDoc comments