Skip to content

Releases: Dash-Industry-Forum/dash.js

dash.js v5.1.1

23 Dec 06:52

Choose a tag to compare

Improvements

  • Re-add inline events after a seek by @dsilhavy in #4884
  • Add unit test for ContentSteeringController, CatchupController, GapController by @codomposer in #4885
  • Add an offset to be applied when doing gap jumps. The offset can be configured via the settings by @dsilhavy in #4907
  • Save current content steering information from the manifest and use it in case it has been removed by an MPD update by @dsilhavy in #491
  • Add Ubuntu config for functional tests by @dsilhavy in Link
  • Update all CML packages to version 1.0.1 by @littlespex in #4913

Bugfixes

dash.js v5.1.0

21 Nov 08:27

Choose a tag to compare

Features

#4839 Add support for L3D DASH by @dsilhavy
#4572 Add MPEG-5 LCEVC Scalable support by @v-nova-romas
#4812 Add a Cue Interval Tree for fast cue lookups by @eduter
#4790 Add support for the preselection element by @stschr
#4772 Adds an API to specify external subtitles that are then added to the internal manifest representation of dash.js right after parsing @dsilhavy
#4817 Adds "maximumOpenMediaKeySessions" to Settings for configurable maximum number of KeySessions by @gorkemg
#4866 Add config value in settings to define priority for ABR rules by @dsilhavy
#4887 Add option to specify an artificial offset to the UTC time sync value
#4870 Add some additional debug outputs in the reference UI by @dsilhavy
#4858 Add functional test to test dynamic to static transition by @dsilhavy
#4857 Add GitHub workflow for trusted publishing by @dsilhavy
#4883 Add a functional test for testing fast quality switches

Improvements

#4719 Use the XML parser from the CML by @littlespex
#4789 Honour systemStringPriority in MediaCapabilities API configuration by @gmcgarry
#4791 Add Accessibility information in the Controlbar by @minhkstn
#4825 Adds a test to check if the canplay event is triggered by @dsilhavy
#4846 Add a llms.txt to provide basic links to dash.js related information by @dsilhavy
#4863 Add robustness settings to reference UI by @ShikiSeiren
#4890 Refactor: replace global dashjs.FactoryMaker with ES6 imports by @slhck

Bugfixes

#4794 Avoid modifying element preload attribute as canplay event is baseline in Firefox by @ava-gunn
#4811 Fix an issue with query parameters in the CMCD nor field being removed by @littlespex
#4821 TypeScript fix for MediaPlayerClass by @steve-taylor
#4823 TypeScript fix for DashAdapter and StreamProcessor by @steve-taylor
#4826 Remove unused periodIndex parameter from getMainAdaptationForType type definition and JSDoc by @steve-taylor
#4831 Check that Performance methods exist before invoking them by @steve-taylor
#4832 Fix: can't switch to next period due to precision by @hongfeih-es
#4834 Fix undefined error when no protectionController is available by @dsilhavy
#4843 Fix reference sample by @bbert
#4845 Fix a bug that caused accessing a null value in the controlbar by @dsilhavy
#4855 Exclude LFE2 from effective channels by @stschr
#4766 Fix Typescript ES Module error by @dsilhavy
#4871 Preloading: Fix an error when no buffer sink is available by @dsilhavy
#4889 fix: wrong imports for html-entities by @slhck
#4891 docs: fix contributing guide by @slhck
#4895 Fix failing MSS playback due to undefined priorities by @dsilhavy
#4895 Fix AbandonRequestRule failing due to a bug in the path to the corresponding setting by @dsilhavy
#4896 Fix accessing a null value when selecting an initial track by @dsilhavy
#4896 Fix position of the controlbar in the low latency sample by @dsilhavy

dash.js v5.0.3

28 May 08:09

Choose a tag to compare

Improvements

  • [VTTParser] Support for lineAlign and positionAlign by @eduter in #4773
  • [TextTracks] Improve performance of addCaptions and fix duplicate check by @eduter in #4776
  • add check for schemeIdUri in getIsMain() by @stschr in #4779

Bugfixes

  • fix: allow large ints to be passed in as time values for processUriTemplate by @littlespex in #4775
  • Fix regression when setting size of VTT cue by @dsilhavy in #4780
  • fix: Handle falsey values in DescriptorType value property by @stephanterning in #4784

dash.js v5.0.2

14 May 07:15

Choose a tag to compare

Improvements

  • Prioritize "main" tracks when no other indication nor preference is available by @stschr in #4760
  • Replace the individual segment template utilities with CML's processUriTemplate utility by @littlespex in #4711

Bugfixes

dash.js v5.0.1

16 Apr 13:02

Choose a tag to compare

Features

#4745 #4749 Add support for "SegmentTemplate.endnumber" by @bitboxer
#4729 Add multiple Github actions to fully automate the deployment process after a push operation to the main branch. by @dsilhavy

Improvements

#4706 Content Steering: Allow overwriting existing BaseURLs if they have the same serviceLocation as the synthesized ones. Also update available BaseURLs after each content steering manifest update. by @dsilhavy
#4707 #4717 Improvements on (audio) track selection: Add function to calculate the audio track with the best compression efficiency by @stschr
#4689 Add setting to define low latency stall threshold by @ryanmccartney
#4723 Parse UInt8 payload of inband callback events to a string by @dsilhavy
#4724 Preserve last used pathway order in Content Steering by @burak-kara
#4726 Remove unused request.quality field by @dsilhavy
#4734 Enable key status handling for streams that do not provide DRM information in the manifest but rely on the pssh boxes by @dsilhavy
#4744 Addresses performance issues for event dispatching by @dsilhavy

Bugfixes

#4732 Fix AdaptationSet switch for tracks that have multiple different encryption keys by @dsilhavy
#4698 Fix typo in index.d.ts with filterVideoColorimetryEssentialProperties by @stschr
#4704 Fix TTML parsing error catching by @bbert
#4709 Calculate correct framerate when using MediaCapabilitiesAPI by @dsilhavy
#4722 Minor bugfix for DASH callback events taking the new request objects into account by @dsilhavy
#4739 Fix the settings sanitizer for the initialTrackSelection based on the id of a track by @stschr
#4747 Fix the key status check for track switches without DRM protection by @dsilhavy
#4748 Fix adjusting the query parameters when removing a specific parameter from the URL by @dsilhavy

dash.js v5.0.0

14 Feb 14:09

Choose a tag to compare

Notes

Documentation

With version 5.0.0 we are also introducing a dedicated documentation page for dash.js: https://dashif.org/dash.js/ . It walks you through the setup and includes detailed information on how to use the various dash.js features. Most of the documentation is part of the Usage section.

Migration from v4 to v5

dash.js version 5.0.0 introduces changes to the build files, settings and the APIs. Our new documentation page contains a migration guide to help you upgrade from v4 to v5: https://dashif.org/dash.js/pages/developers/migration-guides/4-to-5.html . Please let us know if you encounter any issues.

Build files

With version 5 of dash.js we introduced three different bundle formats:

  • UMD legacy: A UMD build targeting legacy platforms by specifying the babel target ie: '11'. In addition,
    core.js polyfills are enabled.
  • ESM modern: An ESM build using .browserslistrc as target, with target set to defaults. No core.js
    polyfills are enabled.
  • UMD modern: A UMD build targeting modern platforms using .browserslistrc as target, with target set to
    defaults. No core.js polyfills are enabled.

All the bundled files are located in the dist directory of the repository. The legacy folder inside the dist
folder contains the UMD legacy build. The modern folder inside the dist folder contains both the ESM modern and
the UMD modern build.

The following entry points are defined in the package.json:

{
  "types": "./index.d.ts",
  "import": "./dist/modern/esm/dash.all.min.js",
  "default": "./dist/modern/esm/dash.all.min.js",
  "browser": "./dist/modern/umd/dash.all.min.js",
  "script": "./dist/modern/umd/dash.all.min.js",
  "require": "./dist/modern/umd/dash.all.min.js"
}

Features

  • [4180] Adds tXml as the new XML parser to speed up parsing time especially for long SegmentTimeline manifest files by @bbert

  • [4237] Adds new throughput calculation modes and support for the Resource Timing API and the Network Information API by @dsilhavy

  • [4276] Adds support for the SupplementalProperty “urn:mpeg:adaptation-set-switching:2016”. This allows dash.js to adapt between Representations of different AdaptationSets. by @dsilhavy

  • [4562] Adds handling of keystatuseschange events. If a key is not usable (internal-error or output-restricted) the player switches to a different track. In case of AdaptationSet Switching (urn:mpeg:dash:adaptation-set-switching:2016) the unsupported Representations are removed from the list of possible options. by @dsilhavy

  • [4545] Add support for forced subtitles @dsilhavy

  • [4578] Add basic support for UrlQueryInfo and ExtUrlQueryInfo as defined in Annex I of the DASH specification @JoaquinBCh @sebastianpiq

  • [4299] Add support for network request and network response interceptors using CommonMediaRequest and CommonMediaResponse classes defined in the SVTA Common Media Library @bbert

  • [4380] Add support for “@ref” and “@refid” in ContentProtection elements @dsilhavy

  • [4418] Adds a new functional testsuite including many additional tests e.g. for initial audio, initial text and gap handling. @dsilhavy

  • [4391] Parse ID3 payload for inband events @littlespex

  • [4419] Add support for the CTA-WAVE Common Access Token @dsilhavy

  • [4426] Add support for CMCD initialization and configuration coming from the MPD as specified in MPEG-DASH v6 @matiasrb97 @santiagomintegui @N1Knight

  • [4426] Add support for sending CMCD data to a content steering server @matiasrb97 @santiagomintegui @N1Knight

  • [4485] Add new timing related APIs as documented here @dsilhavy

  • [4491] MPEG-5 Part 2 LCEVC SEI Integration into dash.js @v-nova-vinod

  • [4548] Add support for filterting unsupported Representations based on the DRM capabilities using the Media Capabilities API @dsilhavy

  • [4559] Implements custom Karma launchers for WebOS and Tizen to execute functional tests on SmartTVs @dsilhavy

  • [4585, 4610] Add support for scte214:supplementalCodecs @gmcgarry

  • [4603] Add support for CMCD v2 keys “ltc” and “msd” @JoaquinBCh @sebastianpiq

  • [4627, 4659] Adjust the build configuration to output different UMD and ESM bundles. @dsilhavy

  • [Link, 4645] Add a new documentation website to document how to use dash.js and the various dash.js features @dsilhavy

Improvements

  • [4469] Cleanup project dependencies @dsilhavy

  • [4385, 4411] Enhance handling of Essential Properties by allowing the registration of Essential Properties that should be known to the capabilities check. @stschr

  • [4661] Adds a new setting deleteEventMessageDataAfterEventStarted set to true by default. If this flag is enabled, the EventController will delete the messageData and the parsedMessageData of events after they have been started. This is to save memory in case events have a long duration and need to be persisted in the EventController for a while to not be retriggered. @dsilhavy

  • [4471] Add mapping of HDR EssentialProperty descriptors to Media Capabilities API queries @stschr

  • [4668] Refactor the FetchLoader class @dsilhavy

  • [4660] Update typings in the Typescript definition @ShikiSeiren

  • [4522] Integrates the CTA 608 parser from the SVTA Common Media Library @agajassi

  • [4351] Refactor the CMSD implementation to use the Common Media Library @littlespex

  • [4299] Integration of CommonMediaRequest and CommonMediaResponse interfaces from the SVTA Common Media Library. @bbert

  • [4551] Enables switching between Representations of different AdaptationSets using setRepresentationForTypeById() @dsilhavy

  • [4599] Migrate CircleCI jobs to Github Actions @dsilhavy

  • [4600] Add synthetic stalls @tom-coward

  • [4564] Optimize MediaCapabilitiesAPI checks by saving the results and only running new checks when the configuration has not been tested before. This avoids calling the MediaCapabilitiesAPI after each MPD update to filter unsupported tracks and qualities. @dsilhavy

  • [4575] This PR optimizes the codec support check using the Media Capabilities API. Each specific codec configuration (codec string, width, height, bitrate, framerate, keySystemConfiguration) is checked only once. The decodingInfo is saved and persisted until the player object is destroyed @dsilhavy

  • [4524] Optimize switch between codecs by using changeType() if available @dsilhavy

  • [4562] Only apply changeType() if the codec family has not changed. For instance, if we are switching between avc1 and avc3 we dont need to call changeType(). @dsilhavy

  • [4524] Optimize sorting or Representations by using qualityRanking and pixels per second. @dsilhavy

  • [4594, 4595] Take the segment duration into account when checking if a new request shall be scheduled. @dsilhavy

  • [4276] Rework ABR handling to use Representation IDs instead of indices @dsilhavy

  • [4206] Replace internal CMCD utilities with SVTA CML CMCD utilities @littlespex

  • [[4237]](#42...

Read more

dash.js v4.7.4

20 Feb 09:43

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

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

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

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