Skip to content

Releases: Dash-Industry-Forum/dash.js

dash.js v4.7.4

20 Feb 09:43
Compare
Choose a tag to compare

Features

#4338 Add support for DVB Font downloads as specified in ETSI TS 103 285 V1.4.1 - Section 7.2 Downloadable Fonts by @mattjuggins
#4360 Add an event that enables manual rendering of subtitles by @bitboxer
#4330 Add API endpoint to trigger a manifest refresh by @eirikbjornr
#4336 Add IMSC settings for rollUp and displayForcedOnly by @nigelmegitt
#4382 Add a liveUpdateTimeThreshold to control time syncing during playback of live streams by @matvp91

Improvements

#4359 Fix flickering and blinking of IMSC subtitles by @mattjuggins
#4350 Include HTTP request range in data that is passed to the modifyRequest function by @dsilhavy
#4356 Remove unused depdendency foodoc and move JSDoc related dependencies to devDependencies section in the package.json by @dsilhavy
#4362 Refactor DVB extensions properties to consistently use camel case. by @mattjuggins

Bugfixes

#4348 #4349 Remove duplicate events in index.d.ts by @kris-youview
#4355 Fix invalid warning in StreamProcessor.js by @dsilhavy
#4335 Remove specific Chrome version from CircleCI config by @dsilhavy
#4363 Fix PlaybackErrorEvent Typescript typing by @kris-youview
#4365 Add a try/catch around matchSettingsLang in case bcp47Normalize fails with an error by @dsilhavy
#4368 Check for undefined values in addHttpRequest method by @dsilhavy
#4389 Fix a bug when dispatching subtitle events that causes an error in the event bus when the video is seeked by @dsilhavy

dash.js v4.7.3

08 Dec 14:52
Compare
Choose a tag to compare

Features

#4319 Add support for playback using the Managed Media Source @dsilhavy

Improvements

#4280 Change template for JSDocs to avoid styling issues like the menu blocking the parameter description @abdulaziz-bd
#4298 Adds settings parameters to configure the AbandonRequestsRule.js @dsilhavy
#4267 Update all URLs to Livesim. Use Livesim2 instead of Livesim1 @dsilhavy
#4305 Remove outdated cues from track when adding a new cue to avoid memory leaks. @dsilhavy
#4310 Add new BBC R&D Test Streams to Reference Player @mattjuggins
#4320 Enable pass-through of UTF-8 chars when provided via lang-attribute @stschr
#4322 For low latency DASH use min/max playbackRate when the buffer is safe in mode: liveCatchupModeLoLP @bwallberg
#4324 Update to imscJS v1.1.4 @nigelmegitt

Bugfixes

#4296 Fix two scheduling errors related to quality switches @dsilhavy
#4297 Fix the handling of abandoning segment requests @dsilhavy
#4314 Fix issues with the controlbar when muting video playback and transitioning from dynamic to static content @ShikiSeiren
#4323 Fix a bug in the OfflineStreamProcessor.js @dsilhavy

dash.js v4.7.2

28 Sep 13:24
Compare
Choose a tag to compare

Features

#4281 Adds a functional testsuite based on the Karma framework @dsilhavy
#4270 Reset MSE when switching codec if changeType() is unstable or unavailable. @matvp91

Improvements

#4225 Define target web and es5 for webpack to make build files ES5 compliant @dsilhavy
#4221 Fix init value for storeLastSettings @minhui-foxtel
#4278 Add support for replacing a text node via MPD patching. @dsilhavy
#4242 Prevent redundant CC parser restarts during Low Latency streams @m-buczek
#4274 Add setting to change mediasource duration from infinity to math.pow(2, 32) @bwallberg
#4249 Compare indices of mediaInfo objects when checking if a track change was rendered. This accounts for content that has no ID attribute for the AdaptationSets @dsilhavy
#4272 Remove babel-preset-env @ShiningTrapez

Bugfixes

#4224 Fix a bug for VTT.js based rendering that causes cues not to be removed after switching to a new source. @dsilhavy
#4279 Do not execute multiple setCurrentTime via waitForReadyState to avoid race condition @dsilhavy
#4239 Remove unusable key sessions when ProtectionController is stopped without waiting for session.close promise to be resolved @dsilhavy
#4246 Fixes for edge case errors that have been captured by Sentry IO around referencing null objects after reset has been called. @littlespex
#4211 Fix types of TestRequest URL property @ondreian
#4268 Added getTargetLiveDelay method to type definitions @matvp91
#4252 Fix wrong attribute in L2A rule @dsilhavy
#4253 Fix error in ProtectionModel_21Jan2015.js when closing key session @dsilhavy
#4223 Fix wrong Typescript definition of updateSource @dsilhavy
#4265 Check for "text/vtt" in catch block of SourceBufferSink.js @dsilhavy
#4273 Use fixed version of Chrome driver as latest one is unavailable @dsilhavy
#Link Upgrade browser-tools CircleCI orb to 1.4.2 to solve Chromedriver issue @dsilhavy

Others

Link Change content steering sample stream URL @dsilhavy
Link Use license that doesnt expire in the Widevine sample @dsilhavy
Link Change MSS sample streams @dsilhavy

dash.js v4.7.1

21 Jun 10:03
Compare
Choose a tag to compare

Improvements

#4201 #4203 Improve throughput on abort: Enables throughput rule to consider measured throughput (or value returned by CMSD response header) on the aborted requests @bbert
#4195 L2A Improvements based on BBC MMSys Paper @piersoh
#4193 Add autoLoad flag to start playback in reference client once page is loaded @dsilhavy
#4196 Add option to mute playback in reference UI via query parameters @dsilhavy

Bugfixes

#4189 Fix reporting of CMCD for SegmentBase range requests @dsilhavy
#4213 Content Steering: Add protocol string to host url if not present @dsilhavy
#4192 Do not close key session if key is usable in getLicense.html demo @dsilhavy
#4191 Typescript: Fixed FragmentRequest 'type' typing @ShikiSeiren
#4185 Fix handling of MPDs containing SegmentList with SegmentTimeline @tea
#4208 Fix a regression for subtitle playback. We need the segment duration of the subtitle tracks to get a valid buffer target @dsilhavy
#4214 Fix JSDoc in Settings.js @dsilhavy
Link Add postbuild command to copy index.d.ts to dash.d.ts @dsilhavy
Link Add Axinom teststreams with new license server URL @dsilhavy
Link Fix wrong unregister event listener for PLAYBACK_SEEKED in CatchupController @dsilhavy

dash.js v4.7.0

05 May 11:34
Compare
Choose a tag to compare

Features

#4173 Add support for DASH content steering version 0.9.7 including support for pathway cloning and steering elements @dsilhavy
#4127 Add support for inband prft boxes parsing @bbert
#4169 Allow preloading content with a specific start time @dsilhavy

Improvements

#4155 Fix blinking cues when segmented over multiple segments or chunks (cont'd) @bbert
#4158 Add DescriptorType model class to MediaInfo for elements of type viewpoint, role, accessibility, audioChannelConfiguration @stschr
#4174 Allow the playback whenever the t attribute is missing in the SegmentTimeline elements @dario-fiore
#4126 Add timeout for fragment request progress @bbert
#4128 Update BBC sample streams in reference client and sample pages @dsilhavy
#4138 Upgrade IMSC.js version to 1.1.3 @vodlogic
Link Remove Github issues stale bot @dsilhavy
Link Use dash.all.min.js as main entry point for npm installations @dsilhavy
Link Add teststream for SegmentTimeline with $number @dsilhavy
Link Link new sample stream in content steering sample @dsilhavy

Bugfixes

#3913 Fix Typescript settings and add missing objects @ShikiSeiren
#4136 Update getMatroskaUint to handle larger integer values @kv-bh
#4156 Fix styling of embedded WebVTT cues by adding support for sttg box @dsilhavy
#4149 Fix: changeType() is Not Fully Implemented on Sony PS5 @agajassi
#4172 Process EssentialProperty_asArray in addition to EssentialProperty @stschr
#4163 Fix bug which causes multiperiod stream to stall after internal seek in previous period. Preloading was not triggered again. @dsilhavy
#4167 Fix: VTT line styling failing, invalid snapToLines value @bwallberg
#4130 Fixes in calculateThroughputByChunkData() @piersoh
#4140 Fix DRM checking for single representation in adaptation @minhui-foxtel
#4144 Fix/rerequest quality switch @dsilhavy
#4147 Initialize box processors when MSS content is actually being played @dsilhavy
#4165 fix: wrong MediaInfo.labels type definition @bwallberg
Link Add missing event to ProtectionEvents.js @dsilhavy
#4177 Fix linting errors for "no-multi-space" rule @dsilhavy
#4178 Fix nullpointer if video element is set to null @dsilhavy
#4176 Fix error in playFromTime.js test that causes CircleCI report upload to crash @dsilhavy

dash.js v4.6.0

20 Feb 08:06
Compare
Choose a tag to compare

Features

  • #4108 Adds the preload functionality to the current version of dash.js. The idea is to preload the media segments into the memory before attaching a video element and initializing the MSE. That way content can be preloaded on platforms that only have a single decoder and are currently displaying different content. As an example, this enables Broadcast-Broadband ad-insertion on HbbTV devices. @dsilhavy
  • #4095 Add feature support for Common Media Server Data @bbert . Includes:
    • CMSD response headers parsing
    • Add settings to
      • Enable/disable CMSD parsing
      • Enable/disable use of "mb" maximum suggested bitrate (mb) as an upper-bound for the ABR algorithm
      • set the weight ratio to be applied on etp regarding measured bandwidth to determine throughput to be used by ABR throughput rule
    • Update reference sample to add CMSD settings configuration and to display bandwidth (measured, etp) metrics
  • #4122 Adds the possibility to define a function that is called before segments are appended to the SourceBuffer. That way the application can modify the data if required. @dsilhavy

Improvements

  • #4102 Use Karma as a testrunner for the unit tests. Allows us to run the tests in "real" browser-based environments and not in node.js context @dsilhavy
  • #4103 #4412 Fix blinking cues when segmented over multiple segments or chunks @bbert
  • Link Add unit test for Utils.parseHttpHeaders @dsilhavy
  • Link Remove deployment script from Circle CI/CD @dsilhavy
  • Link Remove http rewrite on the default timing source @dsilhavy
  • Link Improve error message for missing ttml rendering div @dsilhavy
  • Link Update browser tools for Circle CI to version 1.4.1 @dsilhavy

Bugfixes

  • #4101 Fix handling of embedded texttracks for dynamic streams with MPD updates @dsilhavy
  • #4107 Fixes an issue when the timescale value in the manifest differs from the timescale in init segments @bbert
  • #4110 Corrected fallback responseHeaders value to be null @piersoh
  • #4418 Move ContentSteeringController configuration initialization to initialize function to fix error in offline playback @dsilhavy
  • Link Fix a regression when providing a posix string as start value to attachSource @dsilhavy

dash.js v4.5.2

14 Dec 12:47
Compare
Choose a tag to compare

Features

#4089 Add parsing and rendering of WebVTT subtitles in dash.js using vtt.js, not relying on native texttracks events anymore. This is required for platforms like HbbTV that do not provide native WebVTT support. An example can be found here: https://reference.dashif.org/dash.js/nightly/samples/captioning/vttjs.html @dsilhavy

Improvements

#4088 Fix redundant segment download when seeking back into already buffered area @dsilhavy
#4093 In case of gaps: Check for a valid segment request using the period duration @dsilhavy

Bugfixes

#4087 Do not trigger live delay calculation multiple times at playback start @dsilhavy
#4091 If seek is called with a negative value rewrite to 0 @dsilhavy
#4092 Account for invalid starttimes provided to attachSource() @dsilhavy
#4096 Fix linting errors @dsilhavy

dash.js v4.5.1

11 Nov 08:33
Compare
Choose a tag to compare

Features

  • #4064 Adds an example which shows how the dash.js player can be connected to a TimingObject for synchronized playback between multiple clients @chrisguttandin

Improvements

  • #4054 Improvements when setting min and max playback rate @mattjuggins :
    • Separate playbackRate into a min and max value. This means the application of rates can be the same between ServiceDescription and dash.js settings.
    • Applies playback rates of value 1.0 if explicitly set.
    • Modify catch-up algorithms to take into account these separate playback rate values.
    • Update sample to take into account min and max playback rate values.
  • #4018 Separate settings matcher to work on each property provided for initial track selection individually @stschr
  • #4056 Change the logic for pruning the buffer ahead. Calculate the continuous buffer starting at the target time and prune according to the threshold values defined in the settings @dsilhavy
  • #4057 For VoD Limit the seek range to the duration of the content @dsilhavy
  • #4082 Add settings attribute to define manifest request timeout value @dsilhavy

Bugfixes

  • #4086 Fix a bug that lead to wrong selection of initial WebVTT track @dsilhavy
  • #4058 Fix Typescript typings for MediaPlayer.on() method @bbert
  • Link Add min width to video time of Controlbar to overcome issues when seeking between a time less than one hour and a time larger than one hour @dsilhavy
  • #4068 Fix rounding issues when searching for valid segment in order to jump a gap @bbert
  • #4069 Some platforms provide changeType() as a function but actually using it causes problems when switching between tracks with different codecs. This PR adds a settings flag to disable the usage of changeType even when it is available on the platform. @dsilhavy
  • #4079 Only run Github actions if we are on the official repository @dsilhavy
  • #4080 Add supplementalProperties attribute to index.d.ts and MediaInfo.js @dsilhavy
  • #4081 Catch errors when applying styles on WebVTT cue @dsilhavy
  • #4085 Fix an issue that causes an exception when calling extendedFilter with an empty string @dsilhavy

dash.js v4.5.0

28 Sep 06:37
Compare
Choose a tag to compare

Features

#4031 Adds support for content steering as defined in the IOP specification - @dsilhavy
#4003 New playback catchup seeking/pausing logic: Adjust the liveDelay when the user seeks/pauses. Then catchup mode is applied with the new live delay as target value.By calling player.seekToLive() the app can jump back to this original live delay. - @dsilhavy
#4024 Allow requests to be modified in an async manner. - @littlespex
#4036 #4015 Implements a "matcher" for the XML parser; it checks @lang attributes read from MPDs and normalizes them into a BCP-47 compliant format. In addition, normalize language tags provided through dash.js' setInitialMediaSettingsFor()-API as Strings, while using RegExp through this API is maintained. - @stschr

Improvements

#4020 Lower minPlaybackRateChange for non Safari browsers depending on the maximum catchup rate. Otherwise the target live delay is not reached for low catchup rates. - @dsilhavy
#3996 Pass url to RequestModifier.modifyRequestHeader for example to add additional headers - @lkinasiewicz
#4004 Fix stalling issue when using buffer.fastSwitchEnabled is enabled. - @lkinasiewicz
#4001 Add ua-parser-js to enable reliable browser name and version parsing - @dsilhavy
#4002 Add hashtag mechanism to sample menu selection. Allows to send direct links to specific sample sections - @dsilhavy
#4039 WPE fix: Avoid pruning buffered ranges already enqueued for playback - @eocanha
#4028 Add an example how to define robustness levels for DRM playback - @dsilhavy
Link Add popup to low latency testplayer and fix catchup mechanism "enabled" checkbox - @dsilhavy

Bugfixes

#4023 Fixes the selection of a key system with parameters specified by the application. As an example, the robustnessLevel can be specified individually for audio and video tracks. Before this PR, only one of the provided values was used, either audio or video. - @dsilhavy
#4025 Remove check in getValidTimeAheadOfTargetTime that caused stall in stream with gaps in the previous period and the upcoming period - @dsilhavy
#4048 Add missing streamId to DroppedFramesHistory.js - @dsilhavy
#4026 Fix B64 generation of KID to be compliant with EME spec - @dsilhavy
#4019 Fix wrong call to _abortBeforeAppend - @dsilhavy
Link Fix wrong link to controlbar in Low Latency testplayer - @dsilhavy
#4051 Only consider buffer replacements in the GapController.js for audio and video to avoid stalling on gaps due to texttracks. - @dsilhavy

Operation

#4041 Adds a Github action to automatically deploy to nightly and latest on the Akamai CDN - @dsilhavy

dash.js v4.4.1

25 Jul 07:26
Compare
Choose a tag to compare

Features
#3988 Add support for specifying the start time of the stream as part of the initialize or the attachSource call. A demo can be found here

Improvements
#3968 JSDoc cleanup
#3969 Dispatch volumechange from the native video element via dedicated MediaPlayerEvent
#3963 Extends the License Request Complete event to include the original server response when DRM errors are reported
link Add example for multi audio tracks with initial track selection
#3986 Fix d trace httpList metric reporting
#3971 Overwrite manifest mediaPresentationDuration if duration mismatch
#3997 Functional Tests: Add missing vectors with "//" in url to functional tests
#3998 Run functional tests by groupname

Bugfixes
#3980 Do not trigger inline and inband events multiple times after a manifest refresh
#3984 Account for events defined in different periods in the EventController.js
#3985 Fix for a rounding error not allowing BUFFERING_COMPLETED to get fired
#3970 Fix _checkPortalSize and initialRatio caluculation for unsorted Representations in an AS
#3966 Fix text track enabling for MSS live streams
#3944 Fix bug in abandon request workflow. Also enable rule by default
#3953 Use lastBitrateCachingInfo.enabled and lastMediaSettingsCachingInfo.enabled
#3939 Check for keyPairs in clearkeys object before updating the key session
#3942 Fix/clearkey from ref UI: Check for initData in protData before overwriting
#3928 Fix SegmentTimeline's segment getter from requested time
#3978 Fix wrong description of PLAYBACK_LOADED_DATA event
#3979 Fix a bug that lead to undefined customParametersModel after calling Mediaplayer.reset()
Link Fix multitrack captions sample: lang values in manifest have changed
Link Fix multi audio DRM sample