From 02342be99f416a5d55ecad038f5fccefacbf16c1 Mon Sep 17 00:00:00 2001 From: "romas.paskevicius" Date: Fri, 13 Sep 2024 11:17:11 +0100 Subject: [PATCH 01/42] Feature: MPEG-5 LCEVC Scalable support --- docs/lcevc/README.md | 202 ++++++++++++++ docs/lcevc/dependent-representations.png | Bin 0 -> 92072 bytes docs/lcevc/enhancement-stream-processor.png | Bin 0 -> 34212 bytes .../lcevc-dual-track-debug.html | 251 ++++++++++++++++++ .../lcevc-dual-track/lcevc-dual-track.html | 251 ++++++++++++++++++ samples/lcevc-sei/lcevc-sei.html | 2 +- samples/samples.json | 26 +- src/dash/DashAdapter.js | 4 +- .../controllers/RepresentationController.js | 28 +- src/dash/models/DashManifestModel.js | 4 + src/dash/vo/Representation.js | 1 + src/streaming/ExternalMediaSource.js | 91 +++++++ src/streaming/ExternalSourceBuffer.js | 129 +++++++++ src/streaming/SourceBufferSink.js | 6 +- src/streaming/Stream.js | 26 +- src/streaming/StreamProcessor.js | 53 +++- src/streaming/constants/Constants.js | 9 + src/streaming/controllers/AbrController.js | 26 +- src/streaming/controllers/BufferController.js | 8 +- src/streaming/controllers/MediaController.js | 1 + .../controllers/ScheduleController.js | 1 + src/streaming/models/CmcdModel.js | 3 + .../rules/abr/InsufficientBufferRule.js | 1 + src/streaming/utils/Capabilities.js | 4 + test/unit/helpers/ObjectsHelper.js | 3 + test/unit/helpers/VOHelper.js | 1 + ...sh.controllers.RepresentationController.js | 18 +- .../streaming.ExternalMediaSource.js | 81 ++++++ .../streaming.ExternalSourceBuffer.js | 94 +++++++ .../streaming/streaming.StreamProcessor.js | 8 + .../streaming.controllers.AbrController.js | 28 +- .../streaming/streaming.utils.Capabilities.js | 9 + 32 files changed, 1338 insertions(+), 31 deletions(-) create mode 100644 docs/lcevc/README.md create mode 100644 docs/lcevc/dependent-representations.png create mode 100644 docs/lcevc/enhancement-stream-processor.png create mode 100644 samples/lcevc-dual-track/lcevc-dual-track-debug.html create mode 100644 samples/lcevc-dual-track/lcevc-dual-track.html create mode 100644 src/streaming/ExternalMediaSource.js create mode 100644 src/streaming/ExternalSourceBuffer.js create mode 100644 test/unit/test/streaming/streaming.ExternalMediaSource.js create mode 100644 test/unit/test/streaming/streaming.ExternalSourceBuffer.js diff --git a/docs/lcevc/README.md b/docs/lcevc/README.md new file mode 100644 index 0000000000..52fdc85ef2 --- /dev/null +++ b/docs/lcevc/README.md @@ -0,0 +1,202 @@ +# Dual Track LCEVC in dash.js + +## Introduction + +![Dependent Representations](dependent-representations.png) + +This approach creates LCEVC Representations as a dependent track (by using dependencyId). LCEVC enhancement tracks will be sent in a 2nd Adaptation Set and linked to the base tracks in the 1st Adaptation Set. + +An external implementation of the MSE classes MediaSource and SourceBuffer is provided to interject the calls from the enhancement representations. The external SourceBuffer implementation triggers events on buffers appended and removed which the external libraries can listen to. + +![Enhancement Stream Processor](enhancement-stream-processor.png) + +## Sample player + +Example player is available at [https://reference.dashif.org/dash.js/nightly/samples/lcevc-dual-track/lcevc-dual-track.html](https://reference.dashif.org/dash.js/nightly/samples/lcevc-dual-track/lcevc-dual-track.html) + +## Manifest format + +A separate AdaptationSet is added, alongside the backward compatible video AdaptationSet with the base codec Representations, comprising only the LCEVC track Representations with dependencyId that corresponds to the associated base track. +The AdaptationSet of the dependent representations would have the following attributes: + + - @contentType = ‘video’ + - @mimeType = ‘video/mp4’ + - @codecs = ‘lvc1’ + - @frameRate = <> + - @dependencyId = <> + - @width/height = + - @bandwidth = + - @sar = + +## Example manifest + +Sample manifest is available at [https://s3.eu-west-1.amazonaws.com/origin-prod-lon-v-nova.com/lcevcDualTrack/1080p30_3Mbps_no_dR/master.mpd](https://s3.eu-west-1.amazonaws.com/origin-prod-lon-v-nova.com/lcevcDualTrack/1080p30_3Mbps_no_dR/master.mpd) + +``` + + + + dash/ + + + + + + + ... + + + + + + + + + + + + + ... + + + + + + + + + + + + + ... + + + + + + + + +``` + +## Encoding LCEVC with ffmpeg + +Instructions on how to use ffmpeg to encode LCVEC are available here [https://docs.v-nova.com/v-nova/lcevc/reference-applications/ffmpeg](https://docs.v-nova.com/v-nova/lcevc/reference-applications/ffmpeg). + +## Example script + +``` +LD_LIBRARY_PATH=./ffmpeg ./ffmpeg/ffmpeg.exe -y -i bbb_sunflower_2160p_30fps_normal.mp4 -c:v lcevc_h264 -base_encoder x264 -strict -2 -acodec aac -ar 44100 -ac 2 -ab 64k -b:v 3000000 -g 60 -separate_track 1 -eil_params "rc_pcrf_base_prop=0.65;encoding_debug_residuals=1" -pix_fmt yuv420p -r 30 -s 1920x1080 out1.mp4 + +# Generate .ismv file out of the encodes. +mp4split -o out-sorted.ismv \ + out1.mp4 + +# Generate .ism manifest from the ismv file. +mp4split -o out-sorted.ism \ + out-sorted.ismv + +# Generate dash files locally this should generate a manifest.mpd +mp4split \ + --store-mpd \ + -o manifest.mpd \ + out-sorted.ism + +# Generate Final manifest with addition of dependencyID and supplemental properties +manifest_edit \ + -o finalManifest.mpd \ + --python_pipeline_config=/etc/manifest-edit/conf/mpd/default.yaml \ + out-sorted.mpd +``` + +## Faster representation switching for demo purposes + +Enhanced representations, similar to base video representations, are buffered ahead according to default dash.js settings and representation switching is not instant. If faster representation switching is desired for demo purposes, dash.js buffer settings can be adjusted as needed: + +```js +const bufferingDuration = 3; + +const defaultSettings = { + streaming: { + buffer: { + bufferTimeAtTopQuality: bufferingDuration, + bufferTimeAtTopQualityLongForm: bufferingDuration, + bufferTimeDefault: bufferingDuration, + bufferPruningInterval: bufferingDuration, + bufferToKeep: bufferingDuration, + }, + ... + } + ... +}; + +player.updateSettings(defaultSettings); +``` diff --git a/docs/lcevc/dependent-representations.png b/docs/lcevc/dependent-representations.png new file mode 100644 index 0000000000000000000000000000000000000000..24b2d521a3635e16c461ebc346f275e7af5fe45a GIT binary patch literal 92072 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

5Y~5*-nSq`EJ%dbiPN{i?s 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

+)Ad)bp5~b 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⋘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≶l>_Y9~ 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%0D06OZ#GPyPHIKg8b;>4Wb!hjxU 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 P3Q#JFnor^KmZARx0m)6G literal 0 HcmV?d00001 diff --git a/docs/lcevc/enhancement-stream-processor.png b/docs/lcevc/enhancement-stream-processor.png new file mode 100644 index 0000000000000000000000000000000000000000..60f3d87956593731d58e12c86cc9be2b40e0f9c3 GIT binary patch literal 34212 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 Y1k4n~;+!dk9{@j!vMMsgQU?D23-k`GyZ`_I literal 0 HcmV?d00001 diff --git a/samples/lcevc-dual-track/lcevc-dual-track-debug.html b/samples/lcevc-dual-track/lcevc-dual-track-debug.html new file mode 100644 index 0000000000..9bf02bc358 --- /dev/null +++ b/samples/lcevc-dual-track/lcevc-dual-track-debug.html @@ -0,0 +1,251 @@ + + + + + MPEG-5 LCEVC example + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+

MPEG-5 Part 2 LCEVC Dual Track Implementation

+

This example shows how content with LCEVC Enhancements in a separate track can be played + back by the dash.js + player. dash.js allows a switch between Enhanced and Base profiles.

+
+
+
+
+
+ + +
+
+ +
+ 00:00:00 +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ 00:00:00 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ © DASH-IF +
+
+
+ + + diff --git a/samples/lcevc-dual-track/lcevc-dual-track.html b/samples/lcevc-dual-track/lcevc-dual-track.html new file mode 100644 index 0000000000..a92b3ac60e --- /dev/null +++ b/samples/lcevc-dual-track/lcevc-dual-track.html @@ -0,0 +1,251 @@ + + + + + MPEG-5 LCEVC example + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+

MPEG-5 Part 2 LCEVC Dual Track Implementation

+

This example shows how content with LCEVC Enhancements in a separate track can be played + back by the dash.js + player. dash.js allows a switch between Enhanced and Base profiles.

+
+
+
+
+
+ + +
+
+ +
+ 00:00:00 +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ 00:00:00 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ © DASH-IF +
+
+
+ + + diff --git a/samples/lcevc-sei/lcevc-sei.html b/samples/lcevc-sei/lcevc-sei.html index c0e2148cd0..568d6c00d3 100644 --- a/samples/lcevc-sei/lcevc-sei.html +++ b/samples/lcevc-sei/lcevc-sei.html @@ -173,4 +173,4 @@

MPEG-5 Part 2 LCEVC Decoding with SEI carriage

}); - + \ No newline at end of file diff --git a/samples/samples.json b/samples/samples.json index ba01c7af92..15c9d21d0d 100644 --- a/samples/samples.json +++ b/samples/samples.json @@ -864,8 +864,30 @@ "section": "MPEG-5 Part 2 - LCEVC", "samples": [ { - "title": "SEI Implementation", - "description": "A sample showing how to use the MPEG-5 Part 2 LCEVC in an SEI Based enhancement delivery.", + "title": "Scalable LCEVC carriage", + "description": "A sample showing how to use MPEG-5 Part 2 LCEVC with scalable delivery where higher resolution representations are created by LCEVC applied to the corresponding lower resolution ones", + "href": "lcevc-dual-track/lcevc-dual-track.html", + "image": "lib/img/bbb-1.jpg", + "labels": [ + "Module", + "Video", + "Audio" + ] + }, + { + "title": "Scalable with Debug Residuals", + "description": "A similar scalable delivery example with Debug Residuals. These display moving squares when LCEVC is being correctly decoded", + "href": "lcevc-dual-track/lcevc-dual-track-debug.html", + "image": "lib/img/bbb-1.jpg", + "labels": [ + "Module", + "Video", + "Audio" + ] + }, + { + "title": "LCEVC using SEI carriage", + "description": "A sample showing how to use MPEG-5 Part 2 LCEVC using SEI carriage to enhance the stream it is included in", "href": "lcevc-sei/lcevc-sei.html", "image": "lib/img/bbb-1.jpg", "labels": [ diff --git a/src/dash/DashAdapter.js b/src/dash/DashAdapter.js index b71b85ecd1..2c100d34b6 100644 --- a/src/dash/DashAdapter.js +++ b/src/dash/DashAdapter.js @@ -979,7 +979,8 @@ function DashAdapter() { mediaInfo.id = adaptation.id; mediaInfo.index = adaptation.index; - mediaInfo.type = adaptation.type; + mediaInfo.codec = dashManifestModel.getCodec(realAdaptation); + mediaInfo.type = Constants.ENHANCEMENT_CODECS.some(cdc => mediaInfo.codec?.includes(cdc)) ? Constants.ENHANCEMENT : adaptation.type; mediaInfo.streamInfo = convertPeriodToStreamInfo(adaptation.period); mediaInfo.representationCount = dashManifestModel.getRepresentationCount(realAdaptation); mediaInfo.labels = dashManifestModel.getLabelsForAdaptation(realAdaptation); @@ -1000,7 +1001,6 @@ function DashAdapter() { mediaInfo.audioChannelConfiguration = dashManifestModel.getAudioChannelConfigurationForRepresentation(realAdaptation.Representation[0]); } mediaInfo.roles = dashManifestModel.getRolesForAdaptation(realAdaptation); - mediaInfo.codec = dashManifestModel.getCodec(realAdaptation); mediaInfo.mimeType = dashManifestModel.getMimeType(realAdaptation); mediaInfo.contentProtection = dashManifestModel.getContentProtectionByAdaptation(realAdaptation); mediaInfo.bitrateList = dashManifestModel.getBitrateListForAdaptation(realAdaptation); diff --git a/src/dash/controllers/RepresentationController.js b/src/dash/controllers/RepresentationController.js index 5f6308446c..bbdc5fa66b 100644 --- a/src/dash/controllers/RepresentationController.js +++ b/src/dash/controllers/RepresentationController.js @@ -71,8 +71,23 @@ function RepresentationController(config) { } } - function getCurrentRepresentation() { - return currentVoRepresentation; + function getCurrentRepresentation(selectByType = true) { + let representation = null; + if (!selectByType || currentVoRepresentation?.mediaInfo.type === type) { + representation = currentVoRepresentation; + } + else { + let currentVoRepDep = currentVoRepresentation?.dependentRepresentation; + if (currentVoRepDep) { + if (!currentVoRepDep.mediaInfo) { + throw new Error('dependentRepresentation has no mediaInfo!'); + } + if (currentVoRepDep.mediaInfo.type === type) { + representation = currentVoRepDep; + } + } + } + return representation; } function resetInitialSettings() { @@ -88,11 +103,12 @@ function RepresentationController(config) { function updateData(availableRepresentations, isFragmented, selectedRepresentationId) { return new Promise((resolve, reject) => { voAvailableRepresentations = availableRepresentations; + + // Override selected with the dependent representation const selectedRepresentation = getRepresentationById(selectedRepresentationId); _setCurrentVoRepresentation(selectedRepresentation); - - if (type !== Constants.VIDEO && type !== Constants.AUDIO && (type !== Constants.TEXT || !isFragmented)) { + if (type !== Constants.VIDEO && type !== Constants.ENHANCEMENT && type !== Constants.AUDIO && (type !== Constants.TEXT || !isFragmented)) { endDataUpdate(); resolve(); return; @@ -288,7 +304,9 @@ function RepresentationController(config) { function _setCurrentVoRepresentation(value) { if (!currentVoRepresentation || currentVoRepresentation.id !== value.id) { - _addRepresentationSwitch(value); + let dependentRep = value.dependentRepresentation; + let switchRep = (dependentRep && dependentRep.mediaInfo && dependentRep.mediaInfo.type === type) ? dependentRep : value; + _addRepresentationSwitch(switchRep); } currentVoRepresentation = value; } diff --git a/src/dash/models/DashManifestModel.js b/src/dash/models/DashManifestModel.js index 7207eb6920..7bc33ebdc4 100644 --- a/src/dash/models/DashManifestModel.js +++ b/src/dash/models/DashManifestModel.js @@ -644,6 +644,10 @@ function DashManifestModel() { if (realRepresentation.hasOwnProperty(DashConstants.CODECS)) { voRepresentation.codecs = realRepresentation.codecs; } + if (realRepresentation.hasOwnProperty(DashConstants.DEPENDENCY_ID)) { + voRepresentation.dependentRepresentation = new Representation(); + voRepresentation.dependentRepresentation.id = realRepresentation[DashConstants.DEPENDENCY_ID].toString(); + } if (realRepresentation.hasOwnProperty(DashConstants.MIME_TYPE)) { voRepresentation.mimeType = realRepresentation[DashConstants.MIME_TYPE]; } diff --git a/src/dash/vo/Representation.js b/src/dash/vo/Representation.js index 7e8fe41474..f945618a7d 100644 --- a/src/dash/vo/Representation.js +++ b/src/dash/vo/Representation.js @@ -71,6 +71,7 @@ class Representation { this.startNumber = 1; this.timescale = 1; this.width = NaN; + this.dependentRepresentation = null } hasInitialization() { diff --git a/src/streaming/ExternalMediaSource.js b/src/streaming/ExternalMediaSource.js new file mode 100644 index 0000000000..8c50e097bb --- /dev/null +++ b/src/streaming/ExternalMediaSource.js @@ -0,0 +1,91 @@ +/** + * The copyright in this software is being made available under the BSD License, + * included below. This software may be subject to other third party and contributor + * rights, including patent rights, and no such rights are granted under this license. + * + * Copyright (c) 2013, Dash Industry Forum. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * * Neither the name of Dash Industry Forum nor the names of its + * contributors may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +import ExternalSourceBuffer from './ExternalSourceBuffer.js'; + +class ExternalMediaSource { + constructor(eventBus) { + this.eventBus = eventBus; + this.sourceBuffers = new Map(); + this._duration = NaN; + this._readyState = 'closed'; + } + + get duration() { + return this._duration; + } + + set duration(value) { + if (this._readyState !== 'open') { + throw new Error('ExternalMediaSource is not open'); + } + this._duration = value; + } + + get readyState() { + return this._readyState; + } + + addSourceBuffer(mimeType) { + if (this._readyState !== 'open') { + throw new Error('ExternalMediaSource is not open'); + } + const sourceBuffer = new ExternalSourceBuffer(mimeType, this.eventBus); + this.sourceBuffers.set(sourceBuffer, mimeType); + return sourceBuffer; + } + + removeSourceBuffer(sourceBuffer) { + if (!(this.sourceBuffers.has(sourceBuffer))) { + throw new Error('ExternalSourceBuffer not found'); + } + this.sourceBuffers.delete(sourceBuffer); + } + + open() { + this._readyState = 'open'; + this.eventBus.trigger('externalMediaSourceOpen', { }); + } + + endOfStream() { + if (this._readyState !== 'open') { + throw new Error('ExternalMediaSource is not open'); + } + this._readyState = 'ended'; + this.eventBus.trigger('externalMediaSourceEnded', { }); + } + + close() { + this._readyState = 'closed'; + this.eventBus.trigger('externalMediaSourceClosed', { }); + } +} + +export default ExternalMediaSource; diff --git a/src/streaming/ExternalSourceBuffer.js b/src/streaming/ExternalSourceBuffer.js new file mode 100644 index 0000000000..4ff9f9f8aa --- /dev/null +++ b/src/streaming/ExternalSourceBuffer.js @@ -0,0 +1,129 @@ +/** + * The copyright in this software is being made available under the BSD License, + * included below. This software may be subject to other third party and contributor + * rights, including patent rights, and no such rights are granted under this license. + * + * Copyright (c) 2013, Dash Industry Forum. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * * Neither the name of Dash Industry Forum nor the names of its + * contributors may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +class ExternalSourceBuffer { + constructor(mimeType, eventBus) { + this.eventBus = eventBus; + this.mimeType = mimeType; + this.updating = false; + this.chunks = []; + this.appendWindowStart = 0; + this.appendWindowEnd = Infinity; + this.timestampOffset = 0; + this.mode = 'segments'; + } + + appendBuffer(aData, aStart, anEnd) { + if (this.updating) { + throw new Error('SourceBuffer is currently updating'); + } + this.updating = true; + this.eventBus.trigger('externalSourceBufferUpdateStart', { mimeType: this.mimeType, request: 'appendBuffer', data: aData, start: aStart, end: anEnd }); + + if (!Number.isNaN(aStart)) { + this.chunks.push({data: aData, start: aStart, end: anEnd}); + this.chunks.sort((a, b) => a.start - b.start); // sort ascending based on start times + } + // Simulate async data append + setTimeout(() => { + this.updating = false; + this.eventBus.trigger('externalSourceBufferUpdating', { mimeType: this.mimeType }); + this.eventBus.trigger('externalSourceBufferUpdateEnd', { mimeType: this.mimeType }); + }, 10); + } + + abort() { + if (this.updating) { + this.updating = false; + this.eventBus.trigger('externalSourceBufferAbort', { mimeType: this.mimeType }); + this.eventBus.trigger('externalSourceBufferUpdateEnd', { mimeType: this.mimeType }); + } + } + + remove(start, end) { + if (this.updating) { + throw new Error('SourceBuffer is currently updating'); + } + this.updating = true; + this.eventBus.trigger('externalSourceBufferUpdateStart', { mimeType: this.mimeType, request: 'remove', start: start, end: end }); + + this.chunks = this.chunks.filter(segment => segment.end <= start || segment.start >= end); + + // Simulate async data removal + setTimeout(() => { + this.updating = false; + this.eventBus.trigger('externalSourceBufferUpdating', { mimeType: this.mimeType }); + this.eventBus.trigger('externalSourceBufferUpdateEnd', { mimeType: this.mimeType }); + }, 10); + } + + get buffered() { + return new TimeRanges(this.chunks); + } +} + +/** + * Implements TimeRanges interface as described in https://html.spec.whatwg.org/multipage/media.html#timeranges + * According to the spec, ranges in such an object are ordered, don't overlap, and don't touch + * (adjacent ranges are folded into one bigger range). + */ +class TimeRanges { + constructor(chunks) { + this._ranges = []; + + // Process ordered chunks into TimeRanges + for (const chunk of chunks) { + const ranges = this._ranges; + const newRange = { start: chunk.start, end: chunk.end }; + const lastRange = ranges.length ? ranges[ranges.length - 1] : null; + + if (!lastRange || newRange.start > lastRange.end) { + ranges.push(newRange); // empty or discontinuity in buffered period + } else { + lastRange.end = newRange.end; // continuous buffered period + } + } + } + + get length() { + return this._ranges.length; + } + + start(index) { + return this._ranges[index].start; + } + + end(index) { + return this._ranges[index].end; + } +} + +export default ExternalSourceBuffer; diff --git a/src/streaming/SourceBufferSink.js b/src/streaming/SourceBufferSink.js index e4f4ca2271..a7f3dd072f 100644 --- a/src/streaming/SourceBufferSink.js +++ b/src/streaming/SourceBufferSink.js @@ -33,7 +33,7 @@ import DashJSError from './vo/DashJSError.js'; import FactoryMaker from '../core/FactoryMaker.js'; import Errors from '../core/errors/Errors.js'; import Settings from '../core/Settings.js'; -import constants from './constants/Constants.js'; +import Constants from './constants/Constants.js'; import {HTTPRequest} from './vo/metrics/HTTPRequest.js'; import Events from '../core/events/Events.js'; @@ -144,7 +144,7 @@ function SourceBufferSink(config) { } catch (e) { // Note that in the following, the quotes are open to allow for extra text after stpp and wvtt - if ((mediaInfo.type == constants.TEXT && !mediaInfo.isFragmented) || (codec.indexOf('codecs="stpp') !== -1) || (codec.indexOf('codecs="vtt') !== -1) || (codec.indexOf('text/vtt') !== -1)) { + if ((mediaInfo.type == Constants.TEXT && !mediaInfo.isFragmented) || (codec.indexOf('codecs="stpp') !== -1) || (codec.indexOf('codecs="vtt') !== -1) || (codec.indexOf('text/vtt') !== -1)) { return _initializeForText(streamInfo); } return Promise.reject(e); @@ -384,7 +384,7 @@ function SourceBufferSink(config) { afterSuccess.call(this); } else { if (buffer.appendBuffer) { - buffer.appendBuffer(nextChunk.data.bytes); + buffer.appendBuffer(nextChunk.data.bytes, nextChunk.data.start, nextChunk.data.end); } else { buffer.append(nextChunk.data.bytes, nextChunk.data); } diff --git a/src/streaming/Stream.js b/src/streaming/Stream.js index ed59f4fbc9..56e02066ed 100644 --- a/src/streaming/Stream.js +++ b/src/streaming/Stream.js @@ -42,6 +42,7 @@ import DashJSError from './vo/DashJSError.js'; import BoxParser from './utils/BoxParser.js'; import URLUtils from './utils/URLUtils.js'; import BlacklistController from './controllers/BlacklistController.js'; +import ExternalMediaSource from './ExternalMediaSource.js'; const MEDIA_TYPES = [Constants.VIDEO, Constants.AUDIO, Constants.TEXT, Constants.MUXED, Constants.IMAGE]; @@ -346,6 +347,7 @@ function Stream(config) { let mediaInfo = null; let initialMediaInfo; + let enhancementMediaInfoIndex = -1; if (!allMediaForType || allMediaForType.length === 0) { logger.info('No ' + type + ' data.'); @@ -370,6 +372,10 @@ function Stream(config) { if (_isMediaSupported(mediaInfo)) { mediaController.addTrack(mediaInfo); } + + if (mediaInfo.type === Constants.ENHANCEMENT) { + enhancementMediaInfoIndex = i; + } } if (embeddedMediaInfos.length > 0) { @@ -409,7 +415,18 @@ function Stream(config) { mediaController.setInitialMediaSettingsForType(type, streamInfo); - let streamProcessor = _createStreamProcessor(allMediaForType, mediaSource); + let streamProcessor = _createStreamProcessor(allMediaForType, mediaSource, type); + + if (enhancementMediaInfoIndex >= 0) { + // An adaptation set, mapped to mediaInfo, of enhancement type was found so a stream processor shall be created for it + // the enhancement stream processor will work in parallel to the media stream processor it enhances + let enhancementMediaSource = new ExternalMediaSource(eventBus); + enhancementMediaSource.open(); + enhancementMediaSource.duration = streamInfo.manifestInfo.duration; + let enhancementStreamProcessor = _createStreamProcessor(allMediaForType, enhancementMediaSource, Constants.ENHANCEMENT); + enhancementStreamProcessor.selectMediaInfo({ newMediaInfo: allMediaForType[enhancementMediaInfoIndex] }); + streamProcessor.setEnhancementStreamProcessor(enhancementStreamProcessor); + } initialMediaInfo = mediaController.getCurrentTrackFor(type, streamInfo.id); @@ -452,11 +469,12 @@ function Stream(config) { * Creates the StreamProcessor for a given media type. * @param {array} allMediaForType * @param {object} mediaSource + * @param {object} aType * @private */ - function _createStreamProcessor(allMediaForType, mediaSource) { + function _createStreamProcessor(allMediaForType, mediaSource, aType) { - const mediaInfo = (allMediaForType && allMediaForType.length > 0) ? allMediaForType[0] : null; + const mediaInfo = (allMediaForType && allMediaForType.length > 0) ? allMediaForType.filter(m => (m.type === aType))[0] : null; let fragmentModel = fragmentController.getModel(mediaInfo ? mediaInfo.type : null); const type = mediaInfo ? mediaInfo.type : null; const mimeType = mediaInfo ? mediaInfo.mimeType : null; @@ -893,7 +911,7 @@ function Stream(config) { streamProcessor = streamProcessors[i]; type = streamProcessor.getType(); - if (type === Constants.AUDIO || type === Constants.VIDEO || type === Constants.TEXT) { + if (type === Constants.AUDIO || type === Constants.VIDEO || type === Constants.TEXT || type === Constants.ENHANCEMENT) { arr.push(streamProcessor); } } diff --git a/src/streaming/StreamProcessor.js b/src/streaming/StreamProcessor.js index 2a8436b36c..3cc2eae7c1 100644 --- a/src/streaming/StreamProcessor.js +++ b/src/streaming/StreamProcessor.js @@ -75,6 +75,7 @@ function StreamProcessor(config) { let settings = config.settings; let boxParser = config.boxParser; let segmentBlacklistController = config.segmentBlacklistController; + let enhancementStreamProcessor = null; let instance, logger, @@ -90,6 +91,7 @@ function StreamProcessor(config) { dashHandler, segmentsController, bufferingTime, + containsVideoTrack, pendingSwitchToVoRepresentation; function setup() { @@ -188,6 +190,7 @@ function StreamProcessor(config) { settings }); + containsVideoTrack = hasVideoTrack; scheduleController.initialize(hasVideoTrack); bufferingTime = 0; @@ -211,6 +214,7 @@ function StreamProcessor(config) { shouldRepeatRequest = false; qualityChangeInProgress = false; pendingSwitchToVoRepresentation = null; + enhancementStreamProcessor = null; } function reset(errored, keepBuffers) { @@ -266,6 +270,11 @@ function StreamProcessor(config) { mediaInfoArr = value; } + function setEnhancementStreamProcessor(value) { + enhancementStreamProcessor = value; + logger.info('enhancementStreamProcessor = ' + enhancementStreamProcessor); + } + /** * When a seek within the corresponding period occurs this function initiates the clearing of the buffer and sets the correct buffering time. * @param {object} e @@ -564,7 +573,7 @@ function StreamProcessor(config) { } function _onDataUpdateCompleted() { - const currentRepresentation = representationController.getCurrentRepresentation() + const currentRepresentation = representationController.getCurrentRepresentation(false) if (!bufferController.getIsBufferingCompleted()) { bufferController.updateBufferTimestampOffset(currentRepresentation); } @@ -663,8 +672,16 @@ function StreamProcessor(config) { eventBus.trigger() + if (enhancementStreamProcessor && selectedValues.selectedRepresentation.dependentRepresentation) { + logger.info('[' + type + '] selectMediaInfo : call selectMediaInfo on enhancementStreamProcessor for index = ' + selectedValues.selectedRepresentation.absoluteIndex); + enhancementStreamProcessor.selectMediaInfo({ + newMediaInfo: selectedValues.selectedRepresentation.mediaInfo, + newRepresentation: selectedValues.selectedRepresentation + }); + } + // Update Representation Controller with the new data. Note we do not filter any Representations here as the filter values might change over time. - const voRepresentations = abrController.getPossibleVoRepresentations(currentMediaInfo, false); + const voRepresentations = abrController.getPossibleVoRepresentations(currentMediaInfo, true); return representationController.updateData(voRepresentations, currentMediaInfo.isFragmented, selectedValues.selectedRepresentation.id) .then(() => { _onDataUpdateCompleted() @@ -704,7 +721,7 @@ function StreamProcessor(config) { bitrateInKbit = abrController.getInitialBitrateFor(type); } - const selectedRepresentation = abrController.getOptimalRepresentationForBitrate(selectionInput.newMediaInfo, bitrateInKbit, false); + const selectedRepresentation = abrController.getOptimalRepresentationForBitrate(selectionInput.newMediaInfo, bitrateInKbit, true); return { selectedRepresentation, currentMediaInfo: selectionInput.newMediaInfo @@ -728,15 +745,35 @@ function StreamProcessor(config) { return; } + if (enhancementStreamProcessor) { + // Pass quality change on enhanced representation + enhancementStreamProcessor.prepareQualityChange(e); + } + else if (e.newRepresentation.mediaInfo.type !== e.oldRepresentation.mediaInfo.type) { + if (e.newRepresentation.mediaInfo.type !== type) { + // This has no enhancement and new representation is not of this type so must stop + logger.info('Stop ' + type + ' stream processor'); + scheduleController.reset(); + } else { + logger.info('Start ' + type + ' stream processor'); + selectMediaInfo({ newMediaInfo: e.newRepresentation.mediaInfo, newRepresentation: e.newRepresentation }).then(() => { + scheduleController.setup(); + scheduleController.initialize(containsVideoTrack); + scheduleController.startScheduleTimer(); + }); + } + return; + } + if (pendingSwitchToVoRepresentation) { logger.warn(`Canceling queued representation switch to ${pendingSwitchToVoRepresentation.id} for ${type}`); } if (e.isAdaptationSetSwitch) { - logger.debug(`Preparing quality switch to different AdaptationSet for type ${type}`); + logger.debug(`Preparing quality switch to different AdaptationSet for type ${type} from representation id ${e.oldRepresentation.id} to ${e.newRepresentation.id}`); _prepareAdaptationSwitchQualityChange(e) } else { - logger.debug(`Preparing quality within the same AdaptationSet for type ${type}`); + logger.debug(`Preparing quality within the same AdaptationSet for type ${type} from representation id ${e.oldRepresentation.id} to ${e.newRepresentation.id}`); _prepareNonAdaptationSwitchQualityChange(e) } } @@ -1098,6 +1135,10 @@ function StreamProcessor(config) { return voRepresentation } + function getAbrRepresentation() { + return representationController ? representationController.getCurrentRepresentation(false) : null; + } + function isBufferingCompleted() { return bufferController ? bufferController.getIsBufferingCompleted() : false; } @@ -1419,6 +1460,7 @@ function StreamProcessor(config) { getMediaSource, getRepresentationController, getRepresentation, + getAbrRepresentation, getScheduleController, getStreamId, getStreamInfo, @@ -1432,6 +1474,7 @@ function StreamProcessor(config) { probeNextRequest, reset, setMediaInfoArray, + setEnhancementStreamProcessor, selectMediaInfo, setExplicitBufferingTime, setMediaSource, diff --git a/src/streaming/constants/Constants.js b/src/streaming/constants/Constants.js index 390619222c..73d4cc3b1b 100644 --- a/src/streaming/constants/Constants.js +++ b/src/streaming/constants/Constants.js @@ -47,6 +47,13 @@ export default { */ VIDEO: 'video', + /** + * @constant {string} ENHANCEMENT Enhancement media type + * @memberof Constants# + * @static + */ + ENHANCEMENT: 'enhancement', + /** * @constant {string} AUDIO Audio media type * @memberof Constants# @@ -332,4 +339,6 @@ export default { ID3_SCHEME_ID_URI: 'https://aomedia.org/emsg/ID3', COMMON_ACCESS_TOKEN_HEADER: 'common-access-token', DASH_ROLE_SCHEME_ID : 'urn:mpeg:dash:role:2011', + + ENHANCEMENT_CODECS: ['lvc1'] } diff --git a/src/streaming/controllers/AbrController.js b/src/streaming/controllers/AbrController.js index f21f6e18f4..57a989601c 100644 --- a/src/streaming/controllers/AbrController.js +++ b/src/streaming/controllers/AbrController.js @@ -286,6 +286,8 @@ function AbrController() { voRepresentations = voRepresentations.concat(currentVoRepresentations) } }) + // Resolve dependencies + voRepresentations = _resolveDependencies(voRepresentations); // Now sort by quality (usually simply by bitrate) voRepresentations = _sortRepresentationsByQuality(voRepresentations); @@ -506,6 +508,19 @@ function AbrController() { } + function _resolveDependencies(voRepresentations) { + voRepresentations.forEach(rep => { + if (rep.dependentRepresentation && rep.dependentRepresentation.mediaInfo === null) { + let dependentId = rep.dependentRepresentation.id; + let dependentRep = voRepresentations.find((element) => element.id === dependentId); + if (dependentRep) { + rep.dependentRepresentation = dependentRep; + } + } + }); + return voRepresentations; + } + /** * While fragment loading is in progress we check if we might need to abort the request * @param {object} e @@ -645,7 +660,7 @@ function AbrController() { } const streamProcessor = streamProcessorDict[streamId][type]; - const currentRepresentation = streamProcessor.getRepresentation(); + const currentRepresentation = streamProcessor.getAbrRepresentation(); const rulesContext = RulesContext(context).create({ abrController: instance, throughputController, @@ -668,7 +683,7 @@ function AbrController() { }); if (newRepresentation.id !== currentRepresentation.id && (abandonmentStateDict[streamId][type].state === MetricsConstants.ALLOW_LOAD || newRepresentation.absoluteIndex < currentRepresentation.absoluteIndex)) { - _changeQuality(currentRepresentation, newRepresentation, switchRequest.reason); + _changeQuality(type, currentRepresentation, newRepresentation, switchRequest.reason); return true; } @@ -694,11 +709,11 @@ function AbrController() { } const streamProcessor = streamProcessorDict[streamInfo.id][type]; - const currentRepresentation = streamProcessor.getRepresentation(); + const currentRepresentation = streamProcessor.getAbrRepresentation(); if (!currentRepresentation || representation.id !== currentRepresentation.id) { - _changeQuality(currentRepresentation, representation, reason); + _changeQuality(type, currentRepresentation, representation, reason); } } @@ -720,9 +735,8 @@ function AbrController() { * @param {string} reason * @private */ - function _changeQuality(oldRepresentation, newRepresentation, reason) { + function _changeQuality(type, oldRepresentation, newRepresentation, reason) { const streamId = newRepresentation.mediaInfo.streamInfo.id; - const type = newRepresentation.mediaInfo.type; if (type && streamProcessorDict[streamId] && streamProcessorDict[streamId][type]) { const streamInfo = streamProcessorDict[streamId][type].getStreamInfo(); const bufferLevel = dashMetrics.getCurrentBufferLevel(type); diff --git a/src/streaming/controllers/BufferController.js b/src/streaming/controllers/BufferController.js index 0165eca30f..01f41d7a04 100644 --- a/src/streaming/controllers/BufferController.js +++ b/src/streaming/controllers/BufferController.js @@ -606,7 +606,13 @@ function BufferController(config) { function changeType(selectedRepresentation) { if (settings.get().streaming.buffer.useChangeTypeForTrackSwitch) { - return sourceBufferSink.changeType(selectedRepresentation); + // SourceBufferSink's changeType will be invoked with the AbrRepresentation, ie. + // representation from the manifest. However, MSE SourceBuffer doesn't understand + // enhancement codecs. In the case an enhancement representation is selected, resolve + // the dependent (base) representation before passing the codecs to MSE's changeType + const representation = selectedRepresentation.dependentRepresentation ? + selectedRepresentation.dependentRepresentation : selectedRepresentation; + return sourceBufferSink.changeType(representation); } return Promise.resolve() } diff --git a/src/streaming/controllers/MediaController.js b/src/streaming/controllers/MediaController.js index 85f08d0918..98c96f506e 100644 --- a/src/streaming/controllers/MediaController.js +++ b/src/streaming/controllers/MediaController.js @@ -178,6 +178,7 @@ function MediaController() { if (!track) { return; } + logger.info('addTrack with track.codec=\'' + track.codec + '\', track.type=\'' + track.type + '\''); const mediaType = track.type; if (!_isMultiTrackSupportedByType(mediaType)) { diff --git a/src/streaming/controllers/ScheduleController.js b/src/streaming/controllers/ScheduleController.js index ef6d2c3e9a..03d8157ff7 100644 --- a/src/streaming/controllers/ScheduleController.js +++ b/src/streaming/controllers/ScheduleController.js @@ -444,6 +444,7 @@ function ScheduleController(config) { setCheckPlaybackQuality, setInitSegmentRequired, setLastInitializedRepresentationId, + setup }; setup(); diff --git a/src/streaming/models/CmcdModel.js b/src/streaming/models/CmcdModel.js index c689097671..4b60c03a05 100644 --- a/src/streaming/models/CmcdModel.js +++ b/src/streaming/models/CmcdModel.js @@ -387,6 +387,9 @@ function CmcdModel() { if (mediaType === Constants.AUDIO) { ot = CmcdObjectType.AUDIO; } + if (request.mediaType === Constants.ENHANCEMENT) { + ot = 'e'; + } if (mediaType === Constants.TEXT) { if (request.representation.mediaInfo.mimeType === 'application/mp4') { ot = CmcdObjectType.TIMED_TEXT; diff --git a/src/streaming/rules/abr/InsufficientBufferRule.js b/src/streaming/rules/abr/InsufficientBufferRule.js index e6e863a5ee..8a1d1be418 100644 --- a/src/streaming/rules/abr/InsufficientBufferRule.js +++ b/src/streaming/rules/abr/InsufficientBufferRule.js @@ -126,6 +126,7 @@ function InsufficientBufferRule(config) { bufferStateDict = {}; bufferStateDict[Constants.VIDEO] = { ignoreCount: segmentIgnoreCount }; bufferStateDict[Constants.AUDIO] = { ignoreCount: segmentIgnoreCount }; + bufferStateDict[Constants.ENHANCEMENT] = { ignoreCount: segmentIgnoreCount }; } function _onPlaybackSeeking() { diff --git a/src/streaming/utils/Capabilities.js b/src/streaming/utils/Capabilities.js index b8da0842f4..e59146a095 100644 --- a/src/streaming/utils/Capabilities.js +++ b/src/streaming/utils/Capabilities.js @@ -97,6 +97,10 @@ function Capabilities() { return Promise.resolve(true); } + if (config.codec.includes('video') && Constants.ENHANCEMENT_CODECS.some(cdc => config.codec.includes(cdc))) { + return Promise.resolve(true); + } + if (_canUseMediaCapabilitiesApi(config, type)) { return _checkCodecWithMediaCapabilities(config, type); } diff --git a/test/unit/helpers/ObjectsHelper.js b/test/unit/helpers/ObjectsHelper.js index a36286b11d..40ba315865 100644 --- a/test/unit/helpers/ObjectsHelper.js +++ b/test/unit/helpers/ObjectsHelper.js @@ -25,6 +25,9 @@ class ObjectsHelper { }, getRepresentation: () => { return null + }, + getAbrRepresentation: () => { + return null } } } diff --git a/test/unit/helpers/VOHelper.js b/test/unit/helpers/VOHelper.js index 75bbb88f3b..8d6cd1569f 100644 --- a/test/unit/helpers/VOHelper.js +++ b/test/unit/helpers/VOHelper.js @@ -79,6 +79,7 @@ class VoHelper { rep.segmentAvailabilityWindow = null; rep.availableSegmentsNumber = 0; rep.mediaInfo = this.getDummyMediaInfo(type); + rep.dependentRepresentation = null; return rep; } diff --git a/test/unit/test/dash/dash.controllers.RepresentationController.js b/test/unit/test/dash/dash.controllers.RepresentationController.js index 4b3995c8ba..4f68b9e79f 100644 --- a/test/unit/test/dash/dash.controllers.RepresentationController.js +++ b/test/unit/test/dash/dash.controllers.RepresentationController.js @@ -25,13 +25,17 @@ describe('RepresentationController', function () { // Arrange const context = {}; const testType = 'video'; + const enhancementType = 'enhancement'; const specHelper = new SpecHelper(); const voRepresentations = []; - voRepresentations.push(voHelper.getDummyRepresentation(testType, 0), voHelper.getDummyRepresentation(testType, 1), voHelper.getDummyRepresentation(testType, 2)); + voRepresentations.push(voHelper.getDummyRepresentation(testType, 0), voHelper.getDummyRepresentation(testType, 1), voHelper.getDummyRepresentation(testType, 2), voHelper.getDummyRepresentation(enhancementType, 3)); const streamProcessor = objectsHelper.getDummyStreamProcessor(testType); const eventBus = EventBus(context).getInstance(); const timelineConverter = objectsHelper.getDummyTimelineConverter(); + // Representation 3 is an enhancement representation that has a dependent representation 1. + voRepresentations[3].dependentRepresentation = voRepresentations[1]; + Events.extend(MediaPlayerEvents); const abrControllerMock = new AbrControllerMock(); @@ -104,6 +108,18 @@ describe('RepresentationController', function () { expect(currentRepresentation.adaptation.period.duration).to.equal(150); // jshint ignore:line }); + it('should switch correctly when prepareQualityChange is called with an enhancement representation', function () { + let representation = representationController.getCurrentRepresentation(); + + expect(representation.id).to.equal(voRepresentations[0].id) + + // switch to an enchancement representation 3 with dependentRepresentation 1. + representationController.prepareQualityChange(voRepresentations[3]); + representation = representationController.getCurrentRepresentation(); + + expect(representation.id).to.equal(voRepresentations[1].id); + }); + }); describe('when a call to reset is done', function () { diff --git a/test/unit/test/streaming/streaming.ExternalMediaSource.js b/test/unit/test/streaming/streaming.ExternalMediaSource.js new file mode 100644 index 0000000000..4abcbb21c0 --- /dev/null +++ b/test/unit/test/streaming/streaming.ExternalMediaSource.js @@ -0,0 +1,81 @@ +import ExternalMediaSource from '../../../../src/streaming/ExternalMediaSource.js'; +import ExternalSourceBuffer from '../../../../src/streaming/ExternalSourceBuffer.js'; +import EventBus from '../../../../src/core/EventBus.js'; + +import {expect} from 'chai'; + +describe('ExternalMediaSource', () => { + let mediaSource; + + beforeEach(() => { + const eventBus = EventBus().getInstance(); + mediaSource = new ExternalMediaSource(eventBus); + }); + + it('should initialize with the correct default values', () => { + expect(mediaSource.sourceBuffers).to.be.an.instanceof(Map).and.to.have.property('size', 0); + expect(mediaSource.duration).to.be.NaN; + expect(mediaSource.readyState).to.equal('closed'); + }); + + it('addSourceBuffer should add a new source buffer', () => { + mediaSource.onsourceopen = (done) => { + const mimeType = 'video/mp4; codecs="lvc1"'; + const sourceBuffer = mediaSource.addSourceBuffer(mimeType); + expect(mediaSource.sourceBuffers).to.have.property('size', 1); + expect(sourceBuffer).to.be.instanceOf(ExternalSourceBuffer); + expect(sourceBuffer.mimeType).to.equal(mimeType); + done(); + } + mediaSource.open(); + }); + + it('removeSourceBuffer should remove an existing source buffer', () => { + mediaSource.onsourceopen = (done) => { + const mimeType = 'video/mp4; codecs="lvc1"'; + const sourceBuffer = mediaSource.addSourceBuffer(mimeType); + mediaSource.removeSourceBuffer(sourceBuffer); + expect(mediaSource.sourceBuffers).to.have.property('size', 0); + done(); + } + mediaSource.open(); + }); + + it('should set and get duration correctly', () => { + mediaSource.onsourceopen = (done) => { + mediaSource.duration = 120.5; + expect(mediaSource.duration).to.equal(120.5); + done(); + } + mediaSource.open(); + }); + + it('setting duration should throw an error if readyState is not "open"', () => { + expect(() => { + mediaSource.duration = 100; + }).to.throw('ExternalMediaSource is not open'); + }); + + it('setting duration should update the duration when readyState is "open"', () => { + mediaSource.onsourceopen = (done) => { + mediaSource.duration = 100; + expect(mediaSource.duration).to.equal(100); + done(); + } + mediaSource.open(); + }); + + it('should transition readyState correctly', () => { + expect(mediaSource.readyState).to.equal('closed'); + mediaSource.onsourceopen = (done) => { + expect(mediaSource.readyState).to.equal('open'); + mediaSource.onsourceended = (done) => { + expect(mediaSource.readyState).to.equal('ended'); + done(); + } + mediaSource.endOfStream(); + done(); + } + mediaSource.open(); + }); +}); diff --git a/test/unit/test/streaming/streaming.ExternalSourceBuffer.js b/test/unit/test/streaming/streaming.ExternalSourceBuffer.js new file mode 100644 index 0000000000..b23c32ef9d --- /dev/null +++ b/test/unit/test/streaming/streaming.ExternalSourceBuffer.js @@ -0,0 +1,94 @@ +import ExternalSourceBuffer from '../../../../src/streaming/ExternalSourceBuffer.js'; +import EventBus from '../../../../src/core/EventBus.js'; + +import {expect} from 'chai'; + +describe('ExternalSourceBuffer', () => { + let sourceBuffer; + + beforeEach(() => { + const eventBus = EventBus().getInstance(); + sourceBuffer = new ExternalSourceBuffer('video/mp4; codecs="lvc1"', eventBus); + }); + + it('should initialize with the correct default values', () => { + expect(sourceBuffer.mimeType).to.equal('video/mp4; codecs="lvc1"'); + expect(sourceBuffer.updating).to.be.false; + expect(sourceBuffer.chunks).to.be.an('array').that.is.empty; + expect(sourceBuffer.appendWindowStart).to.equal(0); + expect(sourceBuffer.appendWindowEnd).to.equal(Infinity); + expect(sourceBuffer.timestampOffset).to.equal(0); + expect(sourceBuffer.mode).to.equal('segments'); + }); + + it('appendBuffer should add data to the buffer', () => { + const data = new Uint8Array([1, 2, 3, 4]); + const start = 0; + const end = 5; + sourceBuffer.onupdateend = (done) => { + expect(sourceBuffer.chunks).to.have.lengthOf(1); + expect(sourceBuffer.chunks[0].data).to.eql([1, 2, 3, 4]); + expect(sourceBuffer.chunks[0].start).to.eql(0); + expect(sourceBuffer.chunks[0].end).to.eql(5); + done(); + }; + sourceBuffer.appendBuffer(data, start, end); + }); + + it('should throw an error if appendBuffer is called while updating', () => { + const data = new Uint8Array([1, 2, 3, 4, 5]); + const start = 5; + const end = 10; + sourceBuffer.updating = true; + expect(() => sourceBuffer.appendBuffer(data, start, end)).to.throw('SourceBuffer is currently updating'); + }); + + it('abort should clear the buffer and set updating to false', () => { + const data = new Uint8Array([1, 2, 3]); + const start = 10; + const end = 15; + sourceBuffer.onupdateend = (done) => { + sourceBuffer.onupdateend = (done) => { + expect(sourceBuffer.chunks).to.be.empty; + expect(sourceBuffer.updating).to.be.false; + done(); + } + sourceBuffer.abort(); + done(); + } + sourceBuffer.appendBuffer(data, start, end); + }); + + it('remove should remove data from the buffer', () => { + const entry_0 = { + data: new Uint8Array([5, 6, 7]), + start: 15, + end: 20, + }; + const entry_1 = { + data: new Uint8Array([0, 1, 2]), + start: 10, + end: 15, + }; + sourceBuffer.onupdateend = (done) => { + sourceBuffer.onupdateend = (done) => { + sourceBuffer.onupdateend = (done) => { + expect(sourceBuffer.chunks[0].data).to.eql([0, 1, 2]); + expect(sourceBuffer.chunks[0].start).to.eql(10); + expect(sourceBuffer.chunks[0].end).to.eql(15); + done(); + } + sourceBuffer.remove(15, 20); + done(); + }; + sourceBuffer.appendBuffer(entry_1.data, entry_1.start, entry_1.end); + done(); + }; + sourceBuffer.appendBuffer(entry_0.data, entry_0.start, entry_0.end); + }); + + it('should throw an error if remove is called while updating', () => { + sourceBuffer.updating = true; + expect(() => sourceBuffer.remove(0, 1)).to.throw('SourceBuffer is currently updating'); + }); +}); diff --git a/test/unit/test/streaming/streaming.StreamProcessor.js b/test/unit/test/streaming/streaming.StreamProcessor.js index 05c99c7744..800dd193dc 100644 --- a/test/unit/test/streaming/streaming.StreamProcessor.js +++ b/test/unit/test/streaming/streaming.StreamProcessor.js @@ -26,6 +26,14 @@ describe('StreamProcessor', function () { expect(streamProcessor.setExplicitBufferingTime.bind(streamProcessor)).to.not.throw(); }); + it('setEnhancementStreamProcessor should exist', function () { + expect(streamProcessor.setEnhancementStreamProcessor).to.be.a('function'); + }); + + it('setEnhancementStreamProcessor should not throw an error', function () { + expect(streamProcessor.setEnhancementStreamProcessor.bind(streamProcessor, {})).to.not.throw(); + }); + }); }); diff --git a/test/unit/test/streaming/streaming.controllers.AbrController.js b/test/unit/test/streaming/streaming.controllers.AbrController.js index 13edf9816a..68535b2539 100644 --- a/test/unit/test/streaming/streaming.controllers.AbrController.js +++ b/test/unit/test/streaming/streaming.controllers.AbrController.js @@ -28,7 +28,13 @@ describe('AbrController', function () { const settings = Settings(context).getInstance(); const abrCtrl = AbrController(context).getInstance(); const dummyMediaInfo = voHelper.getDummyMediaInfo(Constants.VIDEO); - const dummyRepresentations = [voHelper.getDummyRepresentation(Constants.VIDEO, 0), voHelper.getDummyRepresentation(Constants.VIDEO, 1)]; + const enhancementMediaInfo = voHelper.getDummyMediaInfo(Constants.ENHANCEMENT); + const dummyRepresentations = [voHelper.getDummyRepresentation(Constants.VIDEO, 0), voHelper.getDummyRepresentation(Constants.VIDEO, 1), + voHelper.getDummyRepresentation(Constants.ENHANCEMENT, 2)]; + + // Representation 2 has a dependentRepresentation with id 0 + dummyRepresentations[2].dependentRepresentation = dummyRepresentations[0]; + const domStorageMock = new DomStorageMock(); const dashMetricsMock = new DashMetricsMock(); const streamControllerMock = new StreamControllerMock(); @@ -461,6 +467,26 @@ describe('AbrController', function () { abrCtrl.setPlaybackQuality(Constants.VIDEO, dummyMediaInfo.streamInfo, dummyRepresentations[0]); }); + it('should switch to a new enhancement Representation and have the correct dependentRep', function (done) { + const enhancementRepresentation = dummyRepresentations[2]; + const dependentRepresentation = dummyRepresentations[0]; + + const onQualityChange = (e) => { + expect(e.oldRepresentation).to.not.exist; + + // Representation 2 should have dependentRepresentation with id 0 + expect(e.newRepresentation.id).to.be.equal(enhancementRepresentation.id); + expect(e.newRepresentation.dependentRepresentation.id).to.be.equal(dependentRepresentation.id); + + eventBus.off(MediaPlayerEvents.QUALITY_CHANGE_REQUESTED, onQualityChange); + done(); + } + + eventBus.on(MediaPlayerEvents.QUALITY_CHANGE_REQUESTED, onQualityChange, this); + + abrCtrl.setPlaybackQuality(Constants.VIDEO, enhancementMediaInfo.streamInfo, enhancementRepresentation); + }); + it('should ignore an attempt to set a quality value if no streamInfo is provided', function () { const spy = sinon.spy(); diff --git a/test/unit/test/streaming/streaming.utils.Capabilities.js b/test/unit/test/streaming/streaming.utils.Capabilities.js index 54880a07ec..693ca7c741 100644 --- a/test/unit/test/streaming/streaming.utils.Capabilities.js +++ b/test/unit/test/streaming/streaming.utils.Capabilities.js @@ -3,6 +3,7 @@ import Settings from '../../../../src/core/Settings.js'; import DescriptorType from '../../../../src/dash/vo/DescriptorType.js'; import {expect} from 'chai'; +import Constants from '../../../../src/streaming/constants/Constants.js'; let settings; let capabilities; @@ -344,5 +345,13 @@ describe('Capabilities', function () { done(e) }) }) + + it('should return true for enhancement codecs', function () { + const res = capabilities.supportsCodec({ codec: `video/${Constants.ENHANCEMENT_CODECS[0]}` }, Constants.VIDEO); + + return res.then(function (isSupported) { + expect(isSupported).to.be.true; + }); + }); }) }); From b390b6579534b3746b132701dadc2a7795794fb5 Mon Sep 17 00:00:00 2001 From: Sam Orton-Jay <86407157+sortonjay@users.noreply.github.com> Date: Tue, 17 Sep 2024 12:00:10 +0100 Subject: [PATCH 02/42] Update README.md Updated references to track to representation --- docs/lcevc/README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/lcevc/README.md b/docs/lcevc/README.md index 52fdc85ef2..e371ae16bd 100644 --- a/docs/lcevc/README.md +++ b/docs/lcevc/README.md @@ -1,10 +1,10 @@ -# Dual Track LCEVC in dash.js +# Scalable LCEVC in dash.js ## Introduction ![Dependent Representations](dependent-representations.png) -This approach creates LCEVC Representations as a dependent track (by using dependencyId). LCEVC enhancement tracks will be sent in a 2nd Adaptation Set and linked to the base tracks in the 1st Adaptation Set. +This approach creates LCEVC representations which are dependent upon native codec representations (by using dependencyId). LCEVC enhancement representations are contained in a 2nd Adaptation Set and linked to the base representations in the 1st Adaptation Set. The outcome is the ability to play adaptive streaming content where one or more higher resolution profiles are generated by applying LCEVC enhancement to existing conventional profiles saving up to 70% bitrate compared to using conventional standalone native profiles. An external implementation of the MSE classes MediaSource and SourceBuffer is provided to interject the calls from the enhancement representations. The external SourceBuffer implementation triggers events on buffers appended and removed which the external libraries can listen to. @@ -12,20 +12,20 @@ An external implementation of the MSE classes MediaSource and SourceBuffer is pr ## Sample player -Example player is available at [https://reference.dashif.org/dash.js/nightly/samples/lcevc-dual-track/lcevc-dual-track.html](https://reference.dashif.org/dash.js/nightly/samples/lcevc-dual-track/lcevc-dual-track.html) +An example player is available at [https://reference.dashif.org/dash.js/nightly/samples/lcevc-dual-track/lcevc-dual-track.html](https://reference.dashif.org/dash.js/nightly/samples/lcevc-dual-track/lcevc-dual-track.html) ## Manifest format -A separate AdaptationSet is added, alongside the backward compatible video AdaptationSet with the base codec Representations, comprising only the LCEVC track Representations with dependencyId that corresponds to the associated base track. +A separate AdaptationSet is added, alongside the backward compatible video AdaptationSet with the base codec Representations, comprising only the LCEVC Representations with dependencyId that corresponds to the associated base representation. The AdaptationSet of the dependent representations would have the following attributes: - @contentType = ‘video’ - @mimeType = ‘video/mp4’ - @codecs = ‘lvc1’ - - @frameRate = <> - - @dependencyId = <> + - @frameRate = <> + - @dependencyId = <> - @width/height = - - @bandwidth = + - @bandwidth = - @sar = ## Example manifest @@ -147,11 +147,11 @@ Sample manifest is available at [https://s3.eu-west-1.amazonaws.com/origin-prod- ``` -## Encoding LCEVC with ffmpeg +## Encoding LCEVC-enhanced content with ffmpeg -Instructions on how to use ffmpeg to encode LCVEC are available here [https://docs.v-nova.com/v-nova/lcevc/reference-applications/ffmpeg](https://docs.v-nova.com/v-nova/lcevc/reference-applications/ffmpeg). +Instructions on how to use ffmpeg to encode LCEVC are available here [https://docs.v-nova.com/v-nova/lcevc/reference-applications/ffmpeg](https://docs.v-nova.com/v-nova/lcevc/reference-applications/ffmpeg). -## Example script +## Example script to generate scalable LCEVC for MPEG-DASH delivery ``` LD_LIBRARY_PATH=./ffmpeg ./ffmpeg/ffmpeg.exe -y -i bbb_sunflower_2160p_30fps_normal.mp4 -c:v lcevc_h264 -base_encoder x264 -strict -2 -acodec aac -ar 44100 -ac 2 -ab 64k -b:v 3000000 -g 60 -separate_track 1 -eil_params "rc_pcrf_base_prop=0.65;encoding_debug_residuals=1" -pix_fmt yuv420p -r 30 -s 1920x1080 out1.mp4 From 34b02d8dac394184d508a349bbffb4b974d6dc0b Mon Sep 17 00:00:00 2001 From: Sam Orton-Jay <86407157+sortonjay@users.noreply.github.com> Date: Tue, 17 Sep 2024 16:02:05 +0100 Subject: [PATCH 03/42] Update README.md Removed section on shorter buffers for demoing purposes --- docs/lcevc/README.md | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/docs/lcevc/README.md b/docs/lcevc/README.md index e371ae16bd..541cba25d9 100644 --- a/docs/lcevc/README.md +++ b/docs/lcevc/README.md @@ -176,27 +176,3 @@ manifest_edit \ --python_pipeline_config=/etc/manifest-edit/conf/mpd/default.yaml \ out-sorted.mpd ``` - -## Faster representation switching for demo purposes - -Enhanced representations, similar to base video representations, are buffered ahead according to default dash.js settings and representation switching is not instant. If faster representation switching is desired for demo purposes, dash.js buffer settings can be adjusted as needed: - -```js -const bufferingDuration = 3; - -const defaultSettings = { - streaming: { - buffer: { - bufferTimeAtTopQuality: bufferingDuration, - bufferTimeAtTopQualityLongForm: bufferingDuration, - bufferTimeDefault: bufferingDuration, - bufferPruningInterval: bufferingDuration, - bufferToKeep: bufferingDuration, - }, - ... - } - ... -}; - -player.updateSettings(defaultSettings); -``` From 7ba812384636599a4034dbcdf6b858510308681b Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 1 Oct 2024 15:31:24 +0100 Subject: [PATCH 04/42] Update tests after merging latest changes from development --- test/unit/test/streaming/streaming.utils.Capabilities.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/test/streaming/streaming.utils.Capabilities.js b/test/unit/test/streaming/streaming.utils.Capabilities.js index 34c196c65e..81ee5c8d79 100644 --- a/test/unit/test/streaming/streaming.utils.Capabilities.js +++ b/test/unit/test/streaming/streaming.utils.Capabilities.js @@ -546,7 +546,7 @@ describe('Capabilities', function () { */ it('should return true for enhancement codecs', function () { - const res = capabilities.supportsCodec({ codec: `video/${Constants.ENHANCEMENT_CODECS[0]}` }, Constants.VIDEO); + const res = capabilities.runCodecSupportCheck({ codec: `video/${Constants.ENHANCEMENT_CODECS[0]}` }, Constants.VIDEO); return res.then(function (isSupported) { expect(isSupported).to.be.true; From ac687cc7ac0780cc18e5a731fa8dffb812ec115c Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 15 Oct 2024 17:32:57 +0100 Subject: [PATCH 05/42] Sort member attributes alphabetically --- src/dash/vo/Representation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dash/vo/Representation.js b/src/dash/vo/Representation.js index cf89c4ff62..92dcb85ee0 100644 --- a/src/dash/vo/Representation.js +++ b/src/dash/vo/Representation.js @@ -48,6 +48,7 @@ class Representation { this.codecFamily = null; this.codecPrivateData = null; this.codecs = null; + this.dependentRepresentation = null; this.essentialProperties = []; this.fragmentDuration = null; this.frameRate = null; @@ -72,7 +73,6 @@ class Representation { this.startNumber = 1; this.timescale = 1; this.width = NaN; - this.dependentRepresentation = null } hasInitialization() { From d2c98d4ca4254ca23bee0ff4b7c8627e40c95165 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Mon, 14 Apr 2025 13:52:51 +0100 Subject: [PATCH 06/42] Update dash.js lib location in Sample pages --- samples/lcevc-dual-track/lcevc-dual-track-debug.html | 2 +- samples/lcevc-dual-track/lcevc-dual-track.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/lcevc-dual-track/lcevc-dual-track-debug.html b/samples/lcevc-dual-track/lcevc-dual-track-debug.html index 9bf02bc358..f301e6519d 100644 --- a/samples/lcevc-dual-track/lcevc-dual-track-debug.html +++ b/samples/lcevc-dual-track/lcevc-dual-track-debug.html @@ -7,7 +7,7 @@ - + diff --git a/samples/lcevc-dual-track/lcevc-dual-track.html b/samples/lcevc-dual-track/lcevc-dual-track.html index a92b3ac60e..12bc7015a7 100644 --- a/samples/lcevc-dual-track/lcevc-dual-track.html +++ b/samples/lcevc-dual-track/lcevc-dual-track.html @@ -7,7 +7,7 @@ - + From 49dc8bdd6ff5d8191bd575daf33830ce2f28661a Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 5 Aug 2025 12:04:27 +0100 Subject: [PATCH 07/42] Set enhancement to CmcdObjectType.OTHER --- src/streaming/models/CmcdModel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/streaming/models/CmcdModel.js b/src/streaming/models/CmcdModel.js index be1efb671c..89f15edd39 100644 --- a/src/streaming/models/CmcdModel.js +++ b/src/streaming/models/CmcdModel.js @@ -416,7 +416,7 @@ function CmcdModel() { ot = CmcdObjectType.AUDIO; } if (request.mediaType === Constants.ENHANCEMENT) { - ot = 'e'; + ot = CmcdObjectType.OTHER; } if (mediaType === Constants.TEXT) { if (request.representation.mediaInfo.mimeType === 'application/mp4') { From b800633870579ccf07925ff1659da8c0e907700f Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Wed, 6 Aug 2025 16:07:33 +0100 Subject: [PATCH 08/42] Make enhancement configurable via Settings.js - enhancement can be enabled/disabled - array of supported enhancement codecs can be extended --- index.d.ts | 4 ++++ samples/lcevc-dual-track/lcevc-dual-track-debug.html | 3 +++ samples/lcevc-dual-track/lcevc-dual-track.html | 3 +++ src/core/Settings.js | 10 ++++++++++ src/dash/DashAdapter.js | 8 +++++++- src/streaming/MediaPlayer.js | 1 + src/streaming/constants/Constants.js | 2 -- src/streaming/utils/Capabilities.js | 3 ++- test/unit/test/dash/dash.DashAdapter.js | 1 + .../test/streaming/streaming.utils.Capabilities.js | 5 ++++- 10 files changed, 35 insertions(+), 5 deletions(-) diff --git a/index.d.ts b/index.d.ts index 79f8c774b0..d64cd5058e 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1911,6 +1911,10 @@ declare namespace dashjs { etpWeightRatio?: number } }, + enhancement?: { + enabled?: boolean, + codecs?: Array + }, defaultSchemeIdUri?: { viewpoint?: string, audioChannelConfiguration?: string, diff --git a/samples/lcevc-dual-track/lcevc-dual-track-debug.html b/samples/lcevc-dual-track/lcevc-dual-track-debug.html index f301e6519d..ab566efdac 100644 --- a/samples/lcevc-dual-track/lcevc-dual-track-debug.html +++ b/samples/lcevc-dual-track/lcevc-dual-track-debug.html @@ -132,6 +132,9 @@ dispatchEvent: false }, streaming: { + enhancement: { + enabled: true, + }, abr: { rules: { insufficientBufferRule: { diff --git a/samples/lcevc-dual-track/lcevc-dual-track.html b/samples/lcevc-dual-track/lcevc-dual-track.html index 12bc7015a7..14c970bc76 100644 --- a/samples/lcevc-dual-track/lcevc-dual-track.html +++ b/samples/lcevc-dual-track/lcevc-dual-track.html @@ -132,6 +132,9 @@ dispatchEvent: false }, streaming: { + enhancement: { + enabled: true, + }, abr: { rules: { insufficientBufferRule: { diff --git a/src/core/Settings.js b/src/core/Settings.js index 93ec67e8d3..0c156b8409 100644 --- a/src/core/Settings.js +++ b/src/core/Settings.js @@ -327,6 +327,10 @@ import Events from './events/Events.js'; * etpWeightRatio: 0 * } * }, + * enhancement: { + * enabled: false, + * codecs: ['lvc1'] + * }, * defaultSchemeIdUri: { * viewpoint: '', * audioChannelConfiguration: 'urn:mpeg:mpegB:cicp:ChannelConfiguration', @@ -1054,6 +1058,8 @@ import Events from './events/Events.js'; * Settings related to Common Media Client Data reporting. * @property {module:Settings~CmsdSettings} cmsd * Settings related to Common Media Server Data parsing. + * @property {module:Settings~EnhancementSettings} enhancement + * Settings related to scalable enhancement playback (e.g. LCEVC). * @property {module:Settings~defaultSchemeIdUri} defaultSchemeIdUri * Default schemeIdUri for descriptor type elements * These strings are used when not provided with setInitialMediaSettingsFor() @@ -1382,6 +1388,10 @@ function Settings() { etpWeightRatio: 0 } }, + enhancement: { + enabled: false, + codecs: ['lvc1'] + }, defaultSchemeIdUri: { viewpoint: '', audioChannelConfiguration: 'urn:mpeg:mpegB:cicp:ChannelConfiguration', diff --git a/src/dash/DashAdapter.js b/src/dash/DashAdapter.js index a3402059cb..84a20cf8c2 100644 --- a/src/dash/DashAdapter.js +++ b/src/dash/DashAdapter.js @@ -49,6 +49,7 @@ import Constants from '../streaming/constants/Constants.js'; function DashAdapter() { let instance, + settings, dashManifestModel, patchManifestModel, voPeriods, @@ -76,6 +77,10 @@ function DashAdapter() { constants = config.constants; } + if (config.settings) { + settings = config.settings; + } + if (config.cea608parser) { cea608parser = config.cea608parser; } @@ -1015,7 +1020,8 @@ function DashAdapter() { mediaInfo.id = adaptation.id; mediaInfo.index = adaptation.index; mediaInfo.codec = dashManifestModel.getCodec(realAdaptation); - mediaInfo.type = Constants.ENHANCEMENT_CODECS.some(cdc => mediaInfo.codec?.includes(cdc)) ? Constants.ENHANCEMENT : adaptation.type; + const enhancementCodecs = settings.get().streaming.enhancement.codecs; + mediaInfo.type = enhancementCodecs.some(cdc => mediaInfo.codec?.includes(cdc)) ? Constants.ENHANCEMENT : adaptation.type; mediaInfo.streamInfo = convertPeriodToStreamInfo(adaptation.period); mediaInfo.representationCount = dashManifestModel.getRepresentationCount(realAdaptation); mediaInfo.labels = dashManifestModel.getLabelsForAdaptation(realAdaptation); diff --git a/src/streaming/MediaPlayer.js b/src/streaming/MediaPlayer.js index b47a1144e3..60d12389b7 100644 --- a/src/streaming/MediaPlayer.js +++ b/src/streaming/MediaPlayer.js @@ -368,6 +368,7 @@ function MediaPlayer() { }); adapter.setConfig({ + settings, constants: Constants, cea608parser: new Cta608Parser(), errHandler: errHandler, diff --git a/src/streaming/constants/Constants.js b/src/streaming/constants/Constants.js index 90ea2eeb27..2c635ee0a0 100644 --- a/src/streaming/constants/Constants.js +++ b/src/streaming/constants/Constants.js @@ -348,8 +348,6 @@ export default { COMMON_ACCESS_TOKEN_HEADER: 'common-access-token', DASH_ROLE_SCHEME_ID : 'urn:mpeg:dash:role:2011', - ENHANCEMENT_CODECS: ['lvc1'], - CODEC_FAMILIES: { MP3: 'mp3', AAC: 'aac', diff --git a/src/streaming/utils/Capabilities.js b/src/streaming/utils/Capabilities.js index afc9fd7a81..1c622645e8 100644 --- a/src/streaming/utils/Capabilities.js +++ b/src/streaming/utils/Capabilities.js @@ -138,7 +138,8 @@ function Capabilities() { return Promise.resolve(); } - if (basicConfiguration.codec.includes('video') && Constants.ENHANCEMENT_CODECS.some(cdc => basicConfiguration.codec.includes(cdc))) { + const enhancementCodecs = settings.get().streaming.enhancement.codecs; + if (settings.get().streaming.enhancement.enabled && basicConfiguration.codec.includes('video') && enhancementCodecs.some(cdc => basicConfiguration.codec.includes(cdc))) { return Promise.resolve(true); } diff --git a/test/unit/test/dash/dash.DashAdapter.js b/test/unit/test/dash/dash.DashAdapter.js index f400637fcf..debc30c9a5 100644 --- a/test/unit/test/dash/dash.DashAdapter.js +++ b/test/unit/test/dash/dash.DashAdapter.js @@ -496,6 +496,7 @@ describe('DashAdapter', function () { describe('SetConfig previously called', function () { beforeEach(function () { dashAdapter.setConfig({ + settings: { get: () => ({ streaming: { enhancement: { enabled: false, codecs: ['lvc1'] } } }) }, constants: Constants, errHandler: errorHandlerMock, cea608parser: new Cta608Parser(), diff --git a/test/unit/test/streaming/streaming.utils.Capabilities.js b/test/unit/test/streaming/streaming.utils.Capabilities.js index b4634ada15..9d0ddbee3c 100644 --- a/test/unit/test/streaming/streaming.utils.Capabilities.js +++ b/test/unit/test/streaming/streaming.utils.Capabilities.js @@ -15,6 +15,7 @@ let capabilities; // The Media Capabilities API seems to return wrong values on Linux with Firefox. Deactivate some tests for now //const isLinuxFirefox = ua.browser.name.toLowerCase() === 'firefox' && ua.os.name.toLowerCase().includes('linux'); +const enhancementCodecs = ['lvc1']; let EssentialPropertyThumbNail = new DescriptorType; EssentialPropertyThumbNail.init({ @@ -548,7 +549,9 @@ describe('Capabilities', function () { */ it('should return true for enhancement codecs', function () { - const res = capabilities.runCodecSupportCheck({ codec: `video/${Constants.ENHANCEMENT_CODECS[0]}` }, Constants.VIDEO); + settings.update({ streaming: { enhancement: { enabled: true } } }); + + const res = capabilities.runCodecSupportCheck({ codec: `video/${enhancementCodecs[0]}` }, Constants.VIDEO); return res.then(function (isSupported) { expect(isSupported).to.be.true; From 91dd2b4bc1b08d262f361210fa8d4875b56b5a44 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 26 Aug 2025 11:30:43 +0100 Subject: [PATCH 09/42] Update demo contents Update LCEVC Dual-Track contents to be compatible with LCEVCdecJS 1.3.0 --- samples/lcevc-dual-track/lcevc-dual-track-debug.html | 2 +- samples/lcevc-dual-track/lcevc-dual-track.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/lcevc-dual-track/lcevc-dual-track-debug.html b/samples/lcevc-dual-track/lcevc-dual-track-debug.html index ab566efdac..8022871353 100644 --- a/samples/lcevc-dual-track/lcevc-dual-track-debug.html +++ b/samples/lcevc-dual-track/lcevc-dual-track-debug.html @@ -125,7 +125,7 @@ var video, canvas, player, - url = 'https://s3.eu-west-1.amazonaws.com/origin-prod-lon-v-nova.com/lcevcDualTrack/1080p30_3Mbps_with_dR/master.mpd'; + url = 'https://s3.eu-west-1.amazonaws.com/origin-prod-lon-v-nova.com/lcevcDualTrack/1080p30_4Mbps_with_dR/master.mpd'; const defaultSettings = { debug: { logLevel: 5, diff --git a/samples/lcevc-dual-track/lcevc-dual-track.html b/samples/lcevc-dual-track/lcevc-dual-track.html index 14c970bc76..3ae25fdf59 100644 --- a/samples/lcevc-dual-track/lcevc-dual-track.html +++ b/samples/lcevc-dual-track/lcevc-dual-track.html @@ -125,7 +125,7 @@ var video, canvas, player, - url = 'https://s3.eu-west-1.amazonaws.com/origin-prod-lon-v-nova.com/lcevcDualTrack/1080p30_3Mbps_no_dR/master.mpd'; + url = 'https://s3.eu-west-1.amazonaws.com/origin-prod-lon-v-nova.com/lcevcDualTrack/1080p30_4Mbps_no_dR/master.mpd'; const defaultSettings = { debug: { logLevel: 5, From 56b100040df0de51529e1d4b57d2b3f3ad210955 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Thu, 28 Aug 2025 16:34:36 +0100 Subject: [PATCH 10/42] Add Scalable Carriage demo to Reference Player Add Scalable Carriage demo to Reference Player Includes two Scalable streams: - Scalable Carriage - Scalable Carriage with Debug Residuals --- .../app/contributors.json | 5 + .../dash-if-reference-player/app/css/main.css | 7 + .../app/img/v-nova.png | Bin 0 -> 93688 bytes samples/dash-if-reference-player/app/main.js | 140 +++++++++++++++++- .../dash-if-reference-player/app/sources.json | 20 +++ samples/dash-if-reference-player/index.html | 16 ++ 6 files changed, 187 insertions(+), 1 deletion(-) create mode 100644 samples/dash-if-reference-player/app/img/v-nova.png diff --git a/samples/dash-if-reference-player/app/contributors.json b/samples/dash-if-reference-player/app/contributors.json index 67d7122853..fa0141008c 100644 --- a/samples/dash-if-reference-player/app/contributors.json +++ b/samples/dash-if-reference-player/app/contributors.json @@ -68,6 +68,11 @@ "name": "Broadpeak", "logo": "app/img/broadpeak.png", "link": "https://broadpeak.tv/" + }, + { + "name": "V-Nova", + "logo": "app/img/v-nova.png", + "link": "https://v-nova.com/" } ] } diff --git a/samples/dash-if-reference-player/app/css/main.css b/samples/dash-if-reference-player/app/css/main.css index 29be4a7dab..a8d6d7c229 100644 --- a/samples/dash-if-reference-player/app/css/main.css +++ b/samples/dash-if-reference-player/app/css/main.css @@ -153,6 +153,9 @@ a:hover { .dash-video-player { background-color: #000000; + position: relative; + margin: 0 auto; + line-height: 1.0; } .col-md-9 video { @@ -178,6 +181,10 @@ a:hover { margin-top: -5px !important; } +.element-hidden { + display: none !important; +} + .btn-play-pause, .control-icon-layout { padding: 4px 10px !important; diff --git a/samples/dash-if-reference-player/app/img/v-nova.png b/samples/dash-if-reference-player/app/img/v-nova.png new file mode 100644 index 0000000000000000000000000000000000000000..bcda91cbbce392f64c0e02832a5062832a3111c3 GIT binary patch literal 93688 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 literal 0 HcmV?d00001 diff --git a/samples/dash-if-reference-player/app/main.js b/samples/dash-if-reference-player/app/main.js index 8c9d5beab9..ceb6559c8a 100644 --- a/samples/dash-if-reference-player/app/main.js +++ b/samples/dash-if-reference-player/app/main.js @@ -243,6 +243,8 @@ app.controller('DashController', ['$scope', '$window', 'sources', 'contributors' $scope.conformanceViolations = []; + $scope.enhancementDecoder = null; + var defaultExternalSettings = { mpd: encodeURIComponent('https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps.mpd'), loop: true, @@ -1040,6 +1042,126 @@ app.controller('DashController', ['$scope', '$window', 'sources', 'contributors' }); }; + $scope.toggleEnhancementEnabled = function () { + const video = document.querySelector('video'); + const canvas = document.querySelector('canvas'); + + if ($scope.enhancementEnabled) { + canvas.classList.remove('element-hidden'); + video.classList.add('element-hidden'); + } else { + canvas.classList.add('element-hidden'); + video.classList.remove('element-hidden'); + } + }; + + $scope.setupEnhancementDecoder = function () { + /** + * MPEG-5 LCEVC Integration for Dash.js Player. + * + * These are the changes needed for passing the correct + * data to lcevc_dec.js and trigger the correct methods + * at the correct time. + */ + + /** + * Let the LCEVC Decoder Library make the decision as to when to switch, based on the currently + * rendered frame. If disabled, the player needs to signal LCEVC when there is a render change + * after an ABR switch happens. + * + * @readonly + * @enum {number} + * @public + */ + const AutoRenderMode = { + DISABLED: 0, + ENABLED: 1 + }; + + dashjs.Extensions = { + ...dashjs.Extensions, + /** + * Attaches LCEVC functionality and methods to the provided Dash.js player instance. + * + * @param {object} player the Dash.js player instance to attach LCEVC to + */ + useLcevc: function useLcevc(player) { + if (!player) { + throw new TypeError('The provided Dash.js player instance was null or undefined.'); + } + const { LCEVCdec } = window; + if (!LCEVCdec) { + throw new TypeError('LCEVC Decoder Libraries could not be loaded.'); + } + + let abrIndex = -1; + + player.attachLcevc = function attachLcevc(media, canvas, LCEVCdecConfig) { + player.LCEVCdec = new LCEVCdec.LCEVCdec( + media, + canvas, + LCEVCdecConfig + ); + + /* Signal profile information and switches to LCEVCdecJS */ + player.on(dashjs.MediaPlayer.events.QUALITY_CHANGE_REQUESTED, handleQualityChange); + player.on(dashjs.MediaPlayer.events.FRAGMENT_LOADING_COMPLETED, handleFragmentLoadingCompleted); + player.on(dashjs.MediaPlayer.events.REPRESENTATION_SWITCH, handleRepresentationSwitch); + player.on('externalSourceBufferUpdateStart', handleBufferUpdates); + }; + + function handleFragmentLoadingCompleted(event) { + if (event.mediaType === 'enhancement') { + abrIndex = event.request.representation.absoluteIndex; + } + } + + function handleQualityChange(event) { + if (event.mediaType === 'video' || event.mediaType === 'enhancement') { + const index = event.newRepresentation.absoluteIndex; + console.log('>>> requested:', event.mediaType, index); + player.LCEVCdec.setLevelSwitching(index, AutoRenderMode.ENABLED); + } + } + + function handleRepresentationSwitch(event) { + if (event.mediaType === 'video' || event.mediaType === 'enhancement') { + const rep = event.currentRepresentation; + const index = rep.absoluteIndex; + // Workaround for very first representation played for which no QUALITY_CHANGE_REQUESTED arrives + if (rep && rep.dependentRepresentation) { + console.log('>>> rep switch:', event.mediaType, index); + player.LCEVCdec.setLevelSwitching(index, AutoRenderMode.ENABLED); + } + } + } + + function handleBufferUpdates(event) { + if (event.request === 'appendBuffer') { + player.LCEVCdec.appendBuffer(event.data, 'video', abrIndex, 0, /* isMuxed */ false); + } + else if (event.request === 'remove') { + player.LCEVCdec.flushBuffer(event.start, event.end); + } + } + } + }; + + const video = document.querySelector('video'); + const canvas = document.querySelector('canvas'); + const LCEVCdecConfig = { + dynamicPerformanceScaling: false + }; + + window.LCEVCdec.ready.then(() => { + /* Attach LCEVC to the Dash.js player instance */ + const player = $scope.player; + dashjs.Extensions.useLcevc(player); + player.attachLcevc(video, canvas, LCEVCdecConfig); + $scope.enhancementDecoder = player.LCEVCdec; + }); + }; + $scope.toggleCmsdApplyMb = function () { $scope.player.updateSettings({ streaming: { @@ -1109,7 +1231,8 @@ app.controller('DashController', ['$scope', '$window', 'sources', 'contributors' liveDelay: $scope.defaultLiveDelay }, abr: {}, - cmcd: {} + cmcd: {}, + enhancement: {} } }; @@ -1175,6 +1298,21 @@ app.controller('DashController', ['$scope', '$window', 'sources', 'contributors' config.streaming.cmcd.rtpSafetyFactor = $scope.cmcdRtpSafetyFactor ? $scope.cmcdRtpSafetyFactor : null; config.streaming.cmcd.enabledKeys = $scope.cmcdEnabledKeys ? $scope._getFormatedCmcdEnabledKeys() : []; + // Cleanup enhancement decoder if it exists from previous playback + if ($scope.enhancementDecoder) { + $scope.enhancementDecoder.close(); + $scope.enhancementDecoder = null; + } + + // Setup enhancement decoder if checkbox is checked or if stream is from V-Nova + if ($scope.enhancementEnabled || $scope.selectedItem.provider === 'v-nova') { + config.streaming.enhancement.enabled = true; + $scope.enhancementEnabled = true; + $scope.setupEnhancementDecoder(); + } + + $scope.toggleEnhancementEnabled(); + $scope.player.updateSettings(config); $scope.controlbar.reset(); diff --git a/samples/dash-if-reference-player/app/sources.json b/samples/dash-if-reference-player/app/sources.json index b7729ac63d..58030fe57b 100644 --- a/samples/dash-if-reference-player/app/sources.json +++ b/samples/dash-if-reference-player/app/sources.json @@ -93,6 +93,11 @@ "acronym": "ARTE", "name": "ARTE", "url": "https://www.arte.tv/en/" + }, + "v-nova": { + "acronym": "V-Nova", + "name": "V-Nova", + "url": "https://v-nova.com/" } }, "items": [ @@ -1303,6 +1308,21 @@ "provider": "microsoft" } ] + }, + { + "name": "MPEG-5 Part 2 - LCEVC", + "submenu": [ + { + "url": "https://s3.eu-west-1.amazonaws.com/origin-prod-lon-v-nova.com/lcevcDualTrack/1080p30_4Mbps_no_dR/master.mpd", + "name": "Scalable Carriage", + "provider": "v-nova" + }, + { + "url": "https://s3.eu-west-1.amazonaws.com/origin-prod-lon-v-nova.com/lcevcDualTrack/1080p30_4Mbps_with_dR/master.mpd", + "name": "Scalable with Debug Residuals", + "provider": "v-nova" + } + ] } ] } diff --git a/samples/dash-if-reference-player/index.html b/samples/dash-if-reference-player/index.html index 12305d648e..2f374e38be 100644 --- a/samples/dash-if-reference-player/index.html +++ b/samples/dash-if-reference-player/index.html @@ -34,6 +34,9 @@ + + + @@ -922,6 +925,17 @@ ng-change="updateCmsdEtpWeightRatio()"> +

+
Enhancement
+
+ +
+
@@ -930,6 +944,8 @@
+ +
{{ castPlayerState === 'IDLE' ? 'Ready to cast stream' : castPlayerState }} From b55db37973a877330ad68e3734b453731246dd16 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 2 Sep 2025 11:13:05 +0100 Subject: [PATCH 11/42] Place all samples into root folder lcevc Place all lcevc samples into root folder lcevc - dual-track - dual-track-debug - sei --- .../{lcevc-dual-track => lcevc}/lcevc-dual-track-debug.html | 0 samples/{lcevc-dual-track => lcevc}/lcevc-dual-track.html | 0 samples/{lcevc-sei => lcevc}/lcevc-sei.html | 0 samples/samples.json | 6 +++--- 4 files changed, 3 insertions(+), 3 deletions(-) rename samples/{lcevc-dual-track => lcevc}/lcevc-dual-track-debug.html (100%) rename samples/{lcevc-dual-track => lcevc}/lcevc-dual-track.html (100%) rename samples/{lcevc-sei => lcevc}/lcevc-sei.html (100%) diff --git a/samples/lcevc-dual-track/lcevc-dual-track-debug.html b/samples/lcevc/lcevc-dual-track-debug.html similarity index 100% rename from samples/lcevc-dual-track/lcevc-dual-track-debug.html rename to samples/lcevc/lcevc-dual-track-debug.html diff --git a/samples/lcevc-dual-track/lcevc-dual-track.html b/samples/lcevc/lcevc-dual-track.html similarity index 100% rename from samples/lcevc-dual-track/lcevc-dual-track.html rename to samples/lcevc/lcevc-dual-track.html diff --git a/samples/lcevc-sei/lcevc-sei.html b/samples/lcevc/lcevc-sei.html similarity index 100% rename from samples/lcevc-sei/lcevc-sei.html rename to samples/lcevc/lcevc-sei.html diff --git a/samples/samples.json b/samples/samples.json index b07ce5055d..33e8673c7c 100644 --- a/samples/samples.json +++ b/samples/samples.json @@ -846,7 +846,7 @@ { "title": "Scalable LCEVC carriage", "description": "A sample showing how to use MPEG-5 Part 2 LCEVC with scalable delivery where higher resolution representations are created by LCEVC applied to the corresponding lower resolution ones", - "href": "lcevc-dual-track/lcevc-dual-track.html", + "href": "lcevc/lcevc-dual-track.html", "image": "lib/img/bbb-1.jpg", "labels": [ "Module", @@ -857,7 +857,7 @@ { "title": "Scalable with Debug Residuals", "description": "A similar scalable delivery example with Debug Residuals. These display moving squares when LCEVC is being correctly decoded", - "href": "lcevc-dual-track/lcevc-dual-track-debug.html", + "href": "lcevc/lcevc-dual-track-debug.html", "image": "lib/img/bbb-1.jpg", "labels": [ "Module", @@ -868,7 +868,7 @@ { "title": "LCEVC using SEI carriage", "description": "A sample showing how to use MPEG-5 Part 2 LCEVC using SEI carriage to enhance the stream it is included in", - "href": "lcevc-sei/lcevc-sei.html", + "href": "lcevc/lcevc-sei.html", "image": "lib/img/bbb-1.jpg", "labels": [ "Module", From 66483c9807760592c13969b08cc290a649a6d773 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 2 Sep 2025 11:36:43 +0100 Subject: [PATCH 12/42] Rephrase wording in samples.json Rephrase wording in samples.json --- samples/samples.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/samples.json b/samples/samples.json index 33e8673c7c..357d5e1552 100644 --- a/samples/samples.json +++ b/samples/samples.json @@ -845,7 +845,7 @@ "samples": [ { "title": "Scalable LCEVC carriage", - "description": "A sample showing how to use MPEG-5 Part 2 LCEVC with scalable delivery where higher resolution representations are created by LCEVC applied to the corresponding lower resolution ones", + "description": "A sample demonstrating how to use MPEG-5 Part 2 LCEVC for scalable delivery, where higher resolution representations are generated by applying LCEVC to the corresponding lower resolution versions.", "href": "lcevc/lcevc-dual-track.html", "image": "lib/img/bbb-1.jpg", "labels": [ @@ -856,7 +856,7 @@ }, { "title": "Scalable with Debug Residuals", - "description": "A similar scalable delivery example with Debug Residuals. These display moving squares when LCEVC is being correctly decoded", + "description": "A sample demonstrating how to use MPEG-5 Part 2 LCEVC for scalable delivery, where higher resolution representations are generated by applying LCEVC to the corresponding lower resolution versions. This version includes debug Residuals resulting in moving squares when LCEVC is being correctly decoded", "href": "lcevc/lcevc-dual-track-debug.html", "image": "lib/img/bbb-1.jpg", "labels": [ From 6d09eaa683a5c19ccfaff50fd1b3ebb84c4bb126 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 2 Sep 2025 11:56:00 +0100 Subject: [PATCH 13/42] Document EnhancementSettings module Document two new settings in EnhancementSettings module --- src/core/Settings.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/core/Settings.js b/src/core/Settings.js index 0c156b8409..c08f22eab3 100644 --- a/src/core/Settings.js +++ b/src/core/Settings.js @@ -938,6 +938,16 @@ import Events from './events/Events.js'; * Sets the weight ratio (between 0 and 1) that shall be applied on CMSD estimated throuhgput compared to measured throughput when calculating throughput. */ +/** + * @typedef {Object} EnhancementSettings + * @property {boolean} [enabled=false] + * Enable or disable the scalable enhancement playback (e.g. LCEVC). + * @property {Array.} [codecs] + * Specifies which scalable enhancement codecs are supported by the player. + * + * If not specified this value defaults to ['lvc1']. + */ + /** * @typedef {Object} Metrics * @property {number} [metricsMaxListDepth=100] From 6cf68dfa614ec3e5c619ce38a55f0354d5eac23e Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 2 Sep 2025 13:16:42 +0100 Subject: [PATCH 14/42] Rename to full name codec --- src/dash/DashAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dash/DashAdapter.js b/src/dash/DashAdapter.js index 84a20cf8c2..e70fc8c743 100644 --- a/src/dash/DashAdapter.js +++ b/src/dash/DashAdapter.js @@ -1021,7 +1021,7 @@ function DashAdapter() { mediaInfo.index = adaptation.index; mediaInfo.codec = dashManifestModel.getCodec(realAdaptation); const enhancementCodecs = settings.get().streaming.enhancement.codecs; - mediaInfo.type = enhancementCodecs.some(cdc => mediaInfo.codec?.includes(cdc)) ? Constants.ENHANCEMENT : adaptation.type; + mediaInfo.type = enhancementCodecs.some(codec => mediaInfo.codec?.includes(codec)) ? Constants.ENHANCEMENT : adaptation.type; mediaInfo.streamInfo = convertPeriodToStreamInfo(adaptation.period); mediaInfo.representationCount = dashManifestModel.getRepresentationCount(realAdaptation); mediaInfo.labels = dashManifestModel.getLabelsForAdaptation(realAdaptation); From 78ac06fb6f4840da186a6d29350ba9322a6ca918 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 2 Sep 2025 13:41:56 +0100 Subject: [PATCH 15/42] Check if ExernalSourceBuffer Check if ExernalSourceBuffer in SourceBufferSink.js --- src/streaming/SourceBufferSink.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/streaming/SourceBufferSink.js b/src/streaming/SourceBufferSink.js index d4adc05578..9a41d918b6 100644 --- a/src/streaming/SourceBufferSink.js +++ b/src/streaming/SourceBufferSink.js @@ -36,6 +36,7 @@ import Settings from '../core/Settings.js'; import Constants from './constants/Constants.js'; import {HTTPRequest} from './vo/metrics/HTTPRequest.js'; import Events from '../core/events/Events.js'; +import ExternalSourceBuffer from './ExternalSourceBuffer.js'; const APPEND_WINDOW_START_OFFSET = 0.1; const APPEND_WINDOW_END_OFFSET = 0.01; @@ -374,8 +375,10 @@ function SourceBufferSink(config) { } catch (e) { } - if (buffer.appendBuffer) { + if (buffer instanceof ExternalSourceBuffer) { buffer.appendBuffer(nextChunk.data.bytes, nextChunk.data.start, nextChunk.data.end); + } else if (buffer.appendBuffer) { + buffer.appendBuffer(nextChunk.data.bytes); } else { buffer.append(nextChunk.data.bytes, nextChunk.data); } From 8c6b2fe9e36bcf807c759d180a8b7758098c05bf Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 2 Sep 2025 13:45:18 +0100 Subject: [PATCH 16/42] Sort setEnhancementStreamProcessor alphabetically Sort setEnhancementStreamProcessor alphabetically --- src/streaming/StreamProcessor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/streaming/StreamProcessor.js b/src/streaming/StreamProcessor.js index 6225017185..1215ae7450 100644 --- a/src/streaming/StreamProcessor.js +++ b/src/streaming/StreamProcessor.js @@ -1579,8 +1579,8 @@ function StreamProcessor(config) { prepareTrackSwitch, probeNextRequest, reset, - setEnhancementStreamProcessor, selectMediaInfo, + setEnhancementStreamProcessor, setExplicitBufferingTime, setMediaInfoArray, setMediaSource, From 3234d6f33494c93e01165a715604408ef0b43d60 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Wed, 3 Sep 2025 16:55:31 +0100 Subject: [PATCH 17/42] Move enhancementStreamProcessor declaration Move enhancementStreamProcessor declaration and initialize in resetInitialSettings --- src/streaming/StreamProcessor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/streaming/StreamProcessor.js b/src/streaming/StreamProcessor.js index 1215ae7450..fbaf9f08c2 100644 --- a/src/streaming/StreamProcessor.js +++ b/src/streaming/StreamProcessor.js @@ -72,7 +72,6 @@ function StreamProcessor(config) { let mimeType = config.mimeType; let playbackController = config.playbackController; let segmentBlacklistController = config.segmentBlacklistController; - let enhancementStreamProcessor = null; let settings = config.settings; let streamInfo = config.streamInfo; let textController = config.textController; @@ -84,6 +83,7 @@ function StreamProcessor(config) { containsVideoTrack, currentMediaInfo, dashHandler, + enhancementStreamProcessor, instance, isDynamic, logger, From 9b4d53c15cecbadeeb6c43ccab61334aac739435 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Wed, 3 Sep 2025 17:21:38 +0100 Subject: [PATCH 18/42] Rename aData, aStart, anEnd Rename to segmentData, segmentStartTime, segmentEndTime --- src/streaming/ExternalSourceBuffer.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/streaming/ExternalSourceBuffer.js b/src/streaming/ExternalSourceBuffer.js index 4ff9f9f8aa..987e616112 100644 --- a/src/streaming/ExternalSourceBuffer.js +++ b/src/streaming/ExternalSourceBuffer.js @@ -41,15 +41,15 @@ class ExternalSourceBuffer { this.mode = 'segments'; } - appendBuffer(aData, aStart, anEnd) { + appendBuffer(segmentData, segmentStartTime, segmentEndTime) { if (this.updating) { throw new Error('SourceBuffer is currently updating'); } this.updating = true; - this.eventBus.trigger('externalSourceBufferUpdateStart', { mimeType: this.mimeType, request: 'appendBuffer', data: aData, start: aStart, end: anEnd }); + this.eventBus.trigger('externalSourceBufferUpdateStart', { mimeType: this.mimeType, request: 'appendBuffer', data: segmentData, start: segmentStartTime, end: segmentEndTime }); - if (!Number.isNaN(aStart)) { - this.chunks.push({data: aData, start: aStart, end: anEnd}); + if (!Number.isNaN(segmentStartTime)) { + this.chunks.push({data: segmentData, start: segmentStartTime, end: segmentEndTime}); this.chunks.sort((a, b) => a.start - b.start); // sort ascending based on start times } // Simulate async data append From ae253f22789590587d492d8e40c97292d1b90cb6 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Fri, 5 Sep 2025 10:15:23 +0100 Subject: [PATCH 19/42] Move to private function _selectMediaInfoForEnhancementStreamProcessor --- src/streaming/StreamProcessor.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/streaming/StreamProcessor.js b/src/streaming/StreamProcessor.js index fbaf9f08c2..28220f434a 100644 --- a/src/streaming/StreamProcessor.js +++ b/src/streaming/StreamProcessor.js @@ -700,13 +700,7 @@ function StreamProcessor(config) { eventBus.trigger() - if (enhancementStreamProcessor && selectedValues.selectedRepresentation.dependentRepresentation) { - logger.info('[' + type + '] selectMediaInfo : call selectMediaInfo on enhancementStreamProcessor for index = ' + selectedValues.selectedRepresentation.absoluteIndex); - enhancementStreamProcessor.selectMediaInfo(new MediaInfoSelectionInput({ - newMediaInfo: selectedValues.selectedRepresentation.mediaInfo, - newRepresentation: selectedValues.selectedRepresentation - })); - } + _selectMediaInfoForEnhancementStreamProcessor(selectedValues); // Update Representation Controller with the new data. Note we do not filter any Representations here as the filter values might change over time. const voRepresentations = abrController.getPossibleVoRepresentations(currentMediaInfo, true); @@ -769,6 +763,16 @@ function StreamProcessor(config) { } } + function _selectMediaInfoForEnhancementStreamProcessor(selectedValues) { + if (enhancementStreamProcessor && selectedValues.selectedRepresentation.dependentRepresentation) { + logger.info('[' + type + '] selectMediaInfo : call selectMediaInfo on enhancementStreamProcessor for index = ' + selectedValues.selectedRepresentation.absoluteIndex); + enhancementStreamProcessor.selectMediaInfo(new MediaInfoSelectionInput({ + newMediaInfo: selectedValues.selectedRepresentation.mediaInfo, + newRepresentation: selectedValues.selectedRepresentation + })); + } + } + /** * The quality has changed which means we have switched to a different representation. * If we want to aggressively replace existing parts in the buffer we need to make sure that the new quality is higher than the already buffered one. From 4f610b46a022c74c1e5c05eb50dd7be38a5e9032 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Fri, 5 Sep 2025 10:40:53 +0100 Subject: [PATCH 20/42] Rename aType to streamProcessorMediaType --- src/streaming/Stream.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/streaming/Stream.js b/src/streaming/Stream.js index 4b9612e657..df0de7e700 100644 --- a/src/streaming/Stream.js +++ b/src/streaming/Stream.js @@ -474,12 +474,12 @@ function Stream(config) { * Creates the StreamProcessor for a given media type. * @param {array} allMediaForType * @param {object} mediaSource - * @param {object} aType + * @param {object} streamProcessorMediaType * @private */ - function _createStreamProcessor(allMediaForType, mediaSource, aType) { + function _createStreamProcessor(allMediaForType, mediaSource, streamProcessorMediaType) { - const mediaInfo = (allMediaForType && allMediaForType.length > 0) ? allMediaForType.filter(m => (m.type === aType))[0] : null; + const mediaInfo = (allMediaForType && allMediaForType.length > 0) ? allMediaForType.filter(m => (m.type === streamProcessorMediaType))[0] : null; let fragmentModel = fragmentController.getModel(mediaInfo ? mediaInfo.type : null); const type = mediaInfo ? mediaInfo.type : null; const mimeType = mediaInfo ? mediaInfo.mimeType : null; From 099f909518941049c74bd60f5bfad0dcc93ba04f Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 9 Sep 2025 13:09:54 +0100 Subject: [PATCH 21/42] Add new attribute dependencyId to save raw values --- src/dash/models/DashManifestModel.js | 4 +++- src/dash/vo/Representation.js | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dash/models/DashManifestModel.js b/src/dash/models/DashManifestModel.js index 79f9d75671..d54d942f93 100644 --- a/src/dash/models/DashManifestModel.js +++ b/src/dash/models/DashManifestModel.js @@ -730,8 +730,10 @@ function DashManifestModel() { voRepresentation.codecFamily = Utils.getCodecFamily(voRepresentation.codecs); } if (realRepresentation.hasOwnProperty(DashConstants.DEPENDENCY_ID)) { + const dependencyId = realRepresentation[DashConstants.DEPENDENCY_ID].toString(); + voRepresentation.dependencyId = dependencyId; voRepresentation.dependentRepresentation = new Representation(); - voRepresentation.dependentRepresentation.id = realRepresentation[DashConstants.DEPENDENCY_ID].toString(); + voRepresentation.dependentRepresentation.id = dependencyId; } if (realRepresentation.hasOwnProperty(DashConstants.MIME_TYPE)) { voRepresentation.mimeType = realRepresentation[DashConstants.MIME_TYPE]; diff --git a/src/dash/vo/Representation.js b/src/dash/vo/Representation.js index 8a5db6f90c..928ef1d2d7 100644 --- a/src/dash/vo/Representation.js +++ b/src/dash/vo/Representation.js @@ -48,6 +48,7 @@ class Representation { this.codecFamily = null; this.codecPrivateData = null; this.codecs = null; + this.dependencyId = null; this.dependentRepresentation = null; this.essentialProperties = []; this.fragmentDuration = null; From 254b36f1f3fbb3cedb81ea2af3640c17cca21ae5 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 9 Sep 2025 13:28:39 +0100 Subject: [PATCH 22/42] Delete unnecessary comment --- src/dash/controllers/RepresentationController.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/dash/controllers/RepresentationController.js b/src/dash/controllers/RepresentationController.js index e0e2a12379..a91239b41c 100644 --- a/src/dash/controllers/RepresentationController.js +++ b/src/dash/controllers/RepresentationController.js @@ -104,8 +104,6 @@ function RepresentationController(config) { function updateData(availableRepresentations, isFragmented, selectedRepresentationId) { return new Promise((resolve, reject) => { voAvailableRepresentations = availableRepresentations; - - // Override selected with the dependent representation const selectedRepresentation = getRepresentationById(selectedRepresentationId); _setCurrentVoRepresentation(selectedRepresentation); From 66ebf32570ca755783306fd6dfe0a473c1ae78e8 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 9 Sep 2025 13:43:59 +0100 Subject: [PATCH 23/42] Provide reset method in ExternalMediaSource.js --- src/streaming/ExternalMediaSource.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/streaming/ExternalMediaSource.js b/src/streaming/ExternalMediaSource.js index 8c50e097bb..b1050b6a81 100644 --- a/src/streaming/ExternalMediaSource.js +++ b/src/streaming/ExternalMediaSource.js @@ -86,6 +86,12 @@ class ExternalMediaSource { this._readyState = 'closed'; this.eventBus.trigger('externalMediaSourceClosed', { }); } + + reset() { + this.sourceBuffers = new Map(); + this._duration = NaN; + this._readyState = 'closed'; + } } export default ExternalMediaSource; From ad7043018a491123b2e6bb7bcc960ff67b766460 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Wed, 10 Sep 2025 15:39:44 +0100 Subject: [PATCH 24/42] Create _prepareQualityChangeForEnhancementStreamProcessor - Move logic to a separate private function - Make check more explicit --- src/streaming/StreamProcessor.js | 52 +++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/src/streaming/StreamProcessor.js b/src/streaming/StreamProcessor.js index 28220f434a..61dd2590c0 100644 --- a/src/streaming/StreamProcessor.js +++ b/src/streaming/StreamProcessor.js @@ -783,23 +783,8 @@ function StreamProcessor(config) { return; } - if (enhancementStreamProcessor) { - // Pass quality change on enhanced representation - enhancementStreamProcessor.prepareQualityChange(e); - } - else if (e.newRepresentation.mediaInfo.type !== e.oldRepresentation.mediaInfo.type) { - if (e.newRepresentation.mediaInfo.type !== type) { - // This has no enhancement and new representation is not of this type so must stop - logger.info('Stop ' + type + ' stream processor'); - scheduleController.reset(); - } else { - logger.info('Start ' + type + ' stream processor'); - selectMediaInfo(new MediaInfoSelectionInput({ newMediaInfo: e.newRepresentation.mediaInfo, newRepresentation: e.newRepresentation })).then(() => { - scheduleController.setup(); - scheduleController.initialize(containsVideoTrack); - scheduleController.startScheduleTimer(); - }); - } + const qualityChangeHandled = _prepareQualityChangeForEnhancementStreamProcessor(e); + if (qualityChangeHandled) { return; } @@ -1008,6 +993,39 @@ function StreamProcessor(config) { qualityChangeInProgress = false; } + /** + * Prepare quality change for enhancement stream processor. Returns true if the change has been handled, false otherwise. + * @param {object} e + * @return {boolean} qualityChangeHandled returns true if the change has been handled, false otherwise + */ + function _prepareQualityChangeForEnhancementStreamProcessor(e) { + if (enhancementStreamProcessor) { + // Pass quality change to enhancement stream processor + enhancementStreamProcessor.prepareQualityChange(e); + } + else if (type === Constants.ENHANCEMENT) { + // This is an enhancement stream processor, handle the quality change + const oldRepType = e.oldRepresentation.mediaInfo.type; + const newRepType = e.newRepresentation.mediaInfo.type; + + if (oldRepType === Constants.ENHANCEMENT && newRepType === Constants.VIDEO) { + // The new representation has no enhancement, stop the enhancement stream processor + logger.info('Stop ' + type + ' stream processor'); + scheduleController.reset(); + return true; + } else if (oldRepType === Constants.VIDEO && newRepType === Constants.ENHANCEMENT) { + // The new representation has an enhancement, start the enhancement stream processor + logger.info('Start ' + type + ' stream processor'); + selectMediaInfo(new MediaInfoSelectionInput({ newMediaInfo: e.newRepresentation.mediaInfo, newRepresentation: e.newRepresentation })).then(() => { + scheduleController.setup(); + scheduleController.initialize(containsVideoTrack); + scheduleController.startScheduleTimer(); + }); + return true; + } + } + return false; + } /** * We have canceled the download of a fragment and need to adjust the buffer time or reload an init segment From 83f31f23f36f4515aee3625e1c35070c67810662 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Thu, 11 Sep 2025 12:43:29 +0100 Subject: [PATCH 25/42] Remove limitation to video in Capabilities.js --- src/streaming/utils/Capabilities.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/streaming/utils/Capabilities.js b/src/streaming/utils/Capabilities.js index 1c622645e8..a7bd5e2c8f 100644 --- a/src/streaming/utils/Capabilities.js +++ b/src/streaming/utils/Capabilities.js @@ -139,7 +139,7 @@ function Capabilities() { } const enhancementCodecs = settings.get().streaming.enhancement.codecs; - if (settings.get().streaming.enhancement.enabled && basicConfiguration.codec.includes('video') && enhancementCodecs.some(cdc => basicConfiguration.codec.includes(cdc))) { + if (settings.get().streaming.enhancement.enabled && enhancementCodecs.some(cdc => basicConfiguration.codec.includes(cdc))) { return Promise.resolve(true); } From 83d816623e0a1446110d3d723d2e1b97d1f56db6 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Fri, 12 Sep 2025 10:32:26 +0100 Subject: [PATCH 26/42] Adjust index.d.ts definitions to add new functions and classes --- index.d.ts | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/index.d.ts b/index.d.ts index d64cd5058e..0aa1c983ae 100644 --- a/index.d.ts +++ b/index.d.ts @@ -965,6 +965,8 @@ declare namespace dashjs { bitsPerPixel: number; codecPrivateData: string | null; codecs: string | null; + dependencyId: string | null; + dependentRepresentation: object | null; fragmentDuration: number | null; frameRate: number; height: number; @@ -5878,12 +5880,42 @@ declare namespace dashjs { selectMediaInfo(selectionInput: object): Promise; + setEnhancementStreamProcessor(value: StreamProcessor): void; + setExplicitBufferingTime(value: number): void; setMediaSource(mediaSource: MediaSource): void; updateStreamInfo(newStreamInfo: StreamInfo): Promise; } + + export interface ExternalMediaSource { + duration: number | null; + + readyState: string; + + addSourceBuffer(mimeType: string): ExternalSourceBuffer; + + close(): void; + + endOfStream(): void; + + open(): void; + + removeSourceBuffer(sourceBuffer: ExternalSourceBuffer): void; + + reset(): void; + } + + export interface ExternalSourceBuffer { + buffered: TimeRanges; + + abort(): void; + + appendBuffer(segmentData: ArrayBuffer, segmentStartTime: number, segmentEndTime: number): void; + + remove(start: number, end: number): void; + } export interface XlinkLoader { load(url: string, element: any, resolveObject: object): void; From dcd493fa58dc7cc7df01a098411cd00346c1d7da Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Fri, 12 Sep 2025 10:43:30 +0100 Subject: [PATCH 27/42] Adjust index.d.ts to include enhancement --- index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/index.d.ts b/index.d.ts index 0aa1c983ae..def29efb03 100644 --- a/index.d.ts +++ b/index.d.ts @@ -2842,6 +2842,7 @@ declare namespace dashjs { export interface Constants { STREAM: 'stream', VIDEO: 'video', + ENHANCEMENT: 'enhancement', AUDIO: 'audio', TEXT: 'text', MUXED: 'muxed', From c6559915909191b5a3562ea409ee45f5d6675186 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Fri, 12 Sep 2025 17:04:32 +0100 Subject: [PATCH 28/42] Add higher resolution exports and source files for diagrams --- docs/lcevc/dependent-representations.drawio | 115 +++++++++++++++ docs/lcevc/dependent-representations.png | Bin 92072 -> 61874 bytes docs/lcevc/dependent-representations.svg | 4 + .../lcevc/enhancement-stream-processor.drawio | 133 ++++++++++++++++++ docs/lcevc/enhancement-stream-processor.png | Bin 34212 -> 86123 bytes docs/lcevc/enhancement-stream-processor.svg | 4 + 6 files changed, 256 insertions(+) create mode 100644 docs/lcevc/dependent-representations.drawio create mode 100644 docs/lcevc/dependent-representations.svg create mode 100644 docs/lcevc/enhancement-stream-processor.drawio create mode 100644 docs/lcevc/enhancement-stream-processor.svg diff --git a/docs/lcevc/dependent-representations.drawio b/docs/lcevc/dependent-representations.drawio new file mode 100644 index 0000000000..94507eaabf --- /dev/null +++ b/docs/lcevc/dependent-representations.drawio @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/lcevc/dependent-representations.png b/docs/lcevc/dependent-representations.png index 24b2d521a3635e16c461ebc346f275e7af5fe45a..ff77e8a0897b548d8174abaf0a10cf1434071351 100644 GIT binary patch literal 61874 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 literal 92072 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

5Y~5*-nSq`EJ%dbiPN{i?s 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

+)Ad)bp5~b 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⋘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≶l>_Y9~ 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%0D06OZ#GPyPHIKg8b;>4Wb!hjxU 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 P3Q#JFnor^KmZARx0m)6G diff --git a/docs/lcevc/dependent-representations.svg b/docs/lcevc/dependent-representations.svg new file mode 100644 index 0000000000..2ff555e25c --- /dev/null +++ b/docs/lcevc/dependent-representations.svg @@ -0,0 +1,4 @@ + + + +
Enhanced Video Profile
Enhanced Video Profile
Enhanced Video Profile
Enhanced Video Profile
LCEVC Adaptation Set
LCEVC Adaptation Set
Video Adaptation Set
Video Adaptation Set
RepresentationId 0
RepresentationId 0
RepresentationId 1
RepresentationId 1
RepresentationId 2
RepresentationId 2
RepresentationId 3
RepresentationId 3
Check MSE Compatibility
Check MSE Compatibil...
Check Dependency Compatibility
Check Dependency Com...
Base Video Profile
(Representation 0)
Base Video Profile...
Base Video Profile
(Representation 1)
Base Video Profile...
RepresentationId 0
RepresentationId 0
RepresentationId 2
RepresentationId 2
RepresentationId 1
RepresentationId 1
RepresentationId 3
RepresentationId 3
\ No newline at end of file diff --git a/docs/lcevc/enhancement-stream-processor.drawio b/docs/lcevc/enhancement-stream-processor.drawio new file mode 100644 index 0000000000..a0f1b45557 --- /dev/null +++ b/docs/lcevc/enhancement-stream-processor.drawio @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/lcevc/enhancement-stream-processor.png b/docs/lcevc/enhancement-stream-processor.png index 60f3d87956593731d58e12c86cc9be2b40e0f9c3..cce3aa050f4813c716b06ab61fdee334733dcd08 100644 GIT binary patch literal 86123 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 MURGHqLrUN4e@sALy#N3J literal 34212 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 Y1k4n~;+!dk9{@j!vMMsgQU?D23-k`GyZ`_I diff --git a/docs/lcevc/enhancement-stream-processor.svg b/docs/lcevc/enhancement-stream-processor.svg new file mode 100644 index 0000000000..e9261c65bb --- /dev/null +++ b/docs/lcevc/enhancement-stream-processor.svg @@ -0,0 +1,4 @@ + + + +
LCEVCdecJS
LCEVCdecJS
dash.js Player
dash.js Player
Current dash.js workflow
Current dash.js workflow
Additions in Feature: MPEG-5 LCEVC Scalable support
Additions in Feature: MPEG-5 LCEVC Scalable support
Base Video
Stream
Base Video...
Base Audio
Stream
Base Audio...
Enhancement
Video Stream
Enhancement...
Stream.js
Stream.js
StreamProcessor.js
type=video
StreamProcessor.js...
StreamProcessor.js
type=audio
StreamProcessor.js...
StreamProcessor.js
type=enhancement
StreamProcessor.js...
Fragment Fetching
Fragment...
Fragment Fetching
Fragment...
SourceBufferSink.js
SourceBufferSink.js
SourceBufferSink.js
SourceBufferSink.js
.....
.....
MSE
MSE
External MSE Implementation
External MSE Impl...
HTML Video Tag
HTML Video Tag
dash.js event
externalSourceBufferUpdateStart
dash.js event...
LCEVCdecJS
appendBuffer(...)
LCEVCdecJS...
\ No newline at end of file From b900f123813ce6722b51ee28e2f1e4f6c792f89b Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Wed, 24 Sep 2025 12:14:43 +0100 Subject: [PATCH 29/42] Remove getCurrentRepresentation overload - Remove getCurrentRepresentation overload - Add getCurrentDependentRepresentation --- .../controllers/RepresentationController.js | 42 +++++++++++++------ src/streaming/StreamProcessor.js | 4 +- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/dash/controllers/RepresentationController.js b/src/dash/controllers/RepresentationController.js index a91239b41c..9851431347 100644 --- a/src/dash/controllers/RepresentationController.js +++ b/src/dash/controllers/RepresentationController.js @@ -71,23 +71,37 @@ function RepresentationController(config) { } } - function getCurrentRepresentation(selectByType = true) { - let representation = null; - if (!selectByType || currentVoRepresentation?.mediaInfo.type === type) { - representation = currentVoRepresentation; + function getCurrentRepresentation() { + // Video RepresentationController should return a representation of type video, and enhancement + // RepresentationController should return a representation of type enhancement, i.e. type should match + if (currentVoRepresentation?.mediaInfo.type === type) { + return currentVoRepresentation; } else { - let currentVoRepDep = currentVoRepresentation?.dependentRepresentation; - if (currentVoRepDep) { - if (!currentVoRepDep.mediaInfo) { - throw new Error('dependentRepresentation has no mediaInfo!'); - } - if (currentVoRepDep.mediaInfo.type === type) { - representation = currentVoRepDep; - } + return getCurrentDependentRepresentation(); + } + + } + + function getCurrentDependentRepresentation() { + let currentVoRepDep = currentVoRepresentation?.dependentRepresentation; + if (currentVoRepDep) { + if (!currentVoRepDep.mediaInfo) { + throw new Error('dependentRepresentation has no mediaInfo!'); + } + if (currentVoRepDep.mediaInfo.type === type) { + return currentVoRepDep; } } - return representation; + return null; + } + + /** + * Returns the combined effective Representation, i.e. the dependent representation plus its declared complementary representation. + * @return {object} Representation + */ + function getCurrentCompositeRepresentation() { + return currentVoRepresentation; } function resetInitialSettings() { @@ -321,6 +335,8 @@ function RepresentationController(config) { } instance = { + getCurrentCompositeRepresentation, + getCurrentDependentRepresentation, getCurrentRepresentation, getRepresentationById, getStreamId, diff --git a/src/streaming/StreamProcessor.js b/src/streaming/StreamProcessor.js index 61dd2590c0..5c513bb1db 100644 --- a/src/streaming/StreamProcessor.js +++ b/src/streaming/StreamProcessor.js @@ -597,7 +597,7 @@ function StreamProcessor(config) { } function _onDataUpdateCompleted() { - const currentRepresentation = representationController.getCurrentRepresentation(false) + const currentRepresentation = representationController.getCurrentCompositeRepresentation(); if (!bufferController.getIsBufferingCompleted()) { bufferController.updateBufferTimestampOffset(currentRepresentation); } @@ -1218,7 +1218,7 @@ function StreamProcessor(config) { } function getAbrRepresentation() { - return representationController ? representationController.getCurrentRepresentation(false) : null; + return representationController ? representationController.getCurrentCompositeRepresentation() : null; } function isBufferingCompleted() { From 1a5b1db3627898d1b4c66808993ebf55edb521b2 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Wed, 24 Sep 2025 12:21:14 +0100 Subject: [PATCH 30/42] Remove getAbrRepresentation function --- src/streaming/StreamProcessor.js | 5 ----- src/streaming/controllers/AbrController.js | 4 ++-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/streaming/StreamProcessor.js b/src/streaming/StreamProcessor.js index 5c513bb1db..efd3515bb4 100644 --- a/src/streaming/StreamProcessor.js +++ b/src/streaming/StreamProcessor.js @@ -1217,10 +1217,6 @@ function StreamProcessor(config) { return voRepresentation } - function getAbrRepresentation() { - return representationController ? representationController.getCurrentCompositeRepresentation() : null; - } - function isBufferingCompleted() { return bufferController ? bufferController.getIsBufferingCompleted() : false; } @@ -1587,7 +1583,6 @@ function StreamProcessor(config) { getMediaInfo, getMediaSource, getRepresentation, - getAbrRepresentation, getRepresentationController, getScheduleController, getStreamId, diff --git a/src/streaming/controllers/AbrController.js b/src/streaming/controllers/AbrController.js index 1c90fed256..a07ec197f4 100644 --- a/src/streaming/controllers/AbrController.js +++ b/src/streaming/controllers/AbrController.js @@ -673,7 +673,7 @@ function AbrController() { } const streamProcessor = streamProcessorDict[streamId][type]; - const currentRepresentation = streamProcessor.getAbrRepresentation(); + const currentRepresentation = streamProcessor.getRepresentationController()?.getCurrentCompositeRepresentation(); const rulesContext = RulesContext(context).create({ abrController: instance, throughputController, @@ -722,7 +722,7 @@ function AbrController() { } const streamProcessor = streamProcessorDict[streamInfo.id][type]; - const currentRepresentation = streamProcessor.getAbrRepresentation(); + const currentRepresentation = streamProcessor.getRepresentationController()?.getCurrentCompositeRepresentation(); if (!currentRepresentation || representation.id !== currentRepresentation.id) { From 64ec29bc88cbd981a9ba244f3ea38909a13ab0b5 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Wed, 24 Sep 2025 12:32:43 +0100 Subject: [PATCH 31/42] Do not resolve dependency in _addRepresentationSwitch --- src/dash/controllers/RepresentationController.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/dash/controllers/RepresentationController.js b/src/dash/controllers/RepresentationController.js index 9851431347..4d371c5a00 100644 --- a/src/dash/controllers/RepresentationController.js +++ b/src/dash/controllers/RepresentationController.js @@ -317,9 +317,7 @@ function RepresentationController(config) { function _setCurrentVoRepresentation(value) { if (!currentVoRepresentation || currentVoRepresentation.id !== value.id) { - let dependentRep = value.dependentRepresentation; - let switchRep = (dependentRep && dependentRep.mediaInfo && dependentRep.mediaInfo.type === type) ? dependentRep : value; - _addRepresentationSwitch(switchRep); + _addRepresentationSwitch(value); } currentVoRepresentation = value; } From d46bc0473153767941bb6559a636fb03aaf976f1 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Thu, 25 Sep 2025 11:50:43 +0100 Subject: [PATCH 32/42] Remove documentation to be moved to gh-pages branch --- docs/lcevc/README.md | 178 ------------------ docs/lcevc/dependent-representations.drawio | 115 ----------- docs/lcevc/dependent-representations.png | Bin 61874 -> 0 bytes docs/lcevc/dependent-representations.svg | 4 - .../lcevc/enhancement-stream-processor.drawio | 133 ------------- docs/lcevc/enhancement-stream-processor.png | Bin 86123 -> 0 bytes docs/lcevc/enhancement-stream-processor.svg | 4 - 7 files changed, 434 deletions(-) delete mode 100644 docs/lcevc/README.md delete mode 100644 docs/lcevc/dependent-representations.drawio delete mode 100644 docs/lcevc/dependent-representations.png delete mode 100644 docs/lcevc/dependent-representations.svg delete mode 100644 docs/lcevc/enhancement-stream-processor.drawio delete mode 100644 docs/lcevc/enhancement-stream-processor.png delete mode 100644 docs/lcevc/enhancement-stream-processor.svg diff --git a/docs/lcevc/README.md b/docs/lcevc/README.md deleted file mode 100644 index 541cba25d9..0000000000 --- a/docs/lcevc/README.md +++ /dev/null @@ -1,178 +0,0 @@ -# Scalable LCEVC in dash.js - -## Introduction - -![Dependent Representations](dependent-representations.png) - -This approach creates LCEVC representations which are dependent upon native codec representations (by using dependencyId). LCEVC enhancement representations are contained in a 2nd Adaptation Set and linked to the base representations in the 1st Adaptation Set. The outcome is the ability to play adaptive streaming content where one or more higher resolution profiles are generated by applying LCEVC enhancement to existing conventional profiles saving up to 70% bitrate compared to using conventional standalone native profiles. - -An external implementation of the MSE classes MediaSource and SourceBuffer is provided to interject the calls from the enhancement representations. The external SourceBuffer implementation triggers events on buffers appended and removed which the external libraries can listen to. - -![Enhancement Stream Processor](enhancement-stream-processor.png) - -## Sample player - -An example player is available at [https://reference.dashif.org/dash.js/nightly/samples/lcevc-dual-track/lcevc-dual-track.html](https://reference.dashif.org/dash.js/nightly/samples/lcevc-dual-track/lcevc-dual-track.html) - -## Manifest format - -A separate AdaptationSet is added, alongside the backward compatible video AdaptationSet with the base codec Representations, comprising only the LCEVC Representations with dependencyId that corresponds to the associated base representation. -The AdaptationSet of the dependent representations would have the following attributes: - - - @contentType = ‘video’ - - @mimeType = ‘video/mp4’ - - @codecs = ‘lvc1’ - - @frameRate = <> - - @dependencyId = <> - - @width/height = - - @bandwidth = - - @sar = - -## Example manifest - -Sample manifest is available at [https://s3.eu-west-1.amazonaws.com/origin-prod-lon-v-nova.com/lcevcDualTrack/1080p30_3Mbps_no_dR/master.mpd](https://s3.eu-west-1.amazonaws.com/origin-prod-lon-v-nova.com/lcevcDualTrack/1080p30_3Mbps_no_dR/master.mpd) - -``` - - - - dash/ - - - - - - - ... - - - - - - - - - - - - - ... - - - - - - - - - - - - - ... - - - - - - - - -``` - -## Encoding LCEVC-enhanced content with ffmpeg - -Instructions on how to use ffmpeg to encode LCEVC are available here [https://docs.v-nova.com/v-nova/lcevc/reference-applications/ffmpeg](https://docs.v-nova.com/v-nova/lcevc/reference-applications/ffmpeg). - -## Example script to generate scalable LCEVC for MPEG-DASH delivery - -``` -LD_LIBRARY_PATH=./ffmpeg ./ffmpeg/ffmpeg.exe -y -i bbb_sunflower_2160p_30fps_normal.mp4 -c:v lcevc_h264 -base_encoder x264 -strict -2 -acodec aac -ar 44100 -ac 2 -ab 64k -b:v 3000000 -g 60 -separate_track 1 -eil_params "rc_pcrf_base_prop=0.65;encoding_debug_residuals=1" -pix_fmt yuv420p -r 30 -s 1920x1080 out1.mp4 - -# Generate .ismv file out of the encodes. -mp4split -o out-sorted.ismv \ - out1.mp4 - -# Generate .ism manifest from the ismv file. -mp4split -o out-sorted.ism \ - out-sorted.ismv - -# Generate dash files locally this should generate a manifest.mpd -mp4split \ - --store-mpd \ - -o manifest.mpd \ - out-sorted.ism - -# Generate Final manifest with addition of dependencyID and supplemental properties -manifest_edit \ - -o finalManifest.mpd \ - --python_pipeline_config=/etc/manifest-edit/conf/mpd/default.yaml \ - out-sorted.mpd -``` diff --git a/docs/lcevc/dependent-representations.drawio b/docs/lcevc/dependent-representations.drawio deleted file mode 100644 index 94507eaabf..0000000000 --- a/docs/lcevc/dependent-representations.drawio +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/lcevc/dependent-representations.png b/docs/lcevc/dependent-representations.png deleted file mode 100644 index ff77e8a0897b548d8174abaf0a10cf1434071351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61874 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 diff --git a/docs/lcevc/dependent-representations.svg b/docs/lcevc/dependent-representations.svg deleted file mode 100644 index 2ff555e25c..0000000000 --- a/docs/lcevc/dependent-representations.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Enhanced Video Profile
Enhanced Video Profile
Enhanced Video Profile
Enhanced Video Profile
LCEVC Adaptation Set
LCEVC Adaptation Set
Video Adaptation Set
Video Adaptation Set
RepresentationId 0
RepresentationId 0
RepresentationId 1
RepresentationId 1
RepresentationId 2
RepresentationId 2
RepresentationId 3
RepresentationId 3
Check MSE Compatibility
Check MSE Compatibil...
Check Dependency Compatibility
Check Dependency Com...
Base Video Profile
(Representation 0)
Base Video Profile...
Base Video Profile
(Representation 1)
Base Video Profile...
RepresentationId 0
RepresentationId 0
RepresentationId 2
RepresentationId 2
RepresentationId 1
RepresentationId 1
RepresentationId 3
RepresentationId 3
\ No newline at end of file diff --git a/docs/lcevc/enhancement-stream-processor.drawio b/docs/lcevc/enhancement-stream-processor.drawio deleted file mode 100644 index a0f1b45557..0000000000 --- a/docs/lcevc/enhancement-stream-processor.drawio +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/lcevc/enhancement-stream-processor.png b/docs/lcevc/enhancement-stream-processor.png deleted file mode 100644 index cce3aa050f4813c716b06ab61fdee334733dcd08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86123 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 MURGHqLrUN4e@sALy#N3J diff --git a/docs/lcevc/enhancement-stream-processor.svg b/docs/lcevc/enhancement-stream-processor.svg deleted file mode 100644 index e9261c65bb..0000000000 --- a/docs/lcevc/enhancement-stream-processor.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
LCEVCdecJS
LCEVCdecJS
dash.js Player
dash.js Player
Current dash.js workflow
Current dash.js workflow
Additions in Feature: MPEG-5 LCEVC Scalable support
Additions in Feature: MPEG-5 LCEVC Scalable support
Base Video
Stream
Base Video...
Base Audio
Stream
Base Audio...
Enhancement
Video Stream
Enhancement...
Stream.js
Stream.js
StreamProcessor.js
type=video
StreamProcessor.js...
StreamProcessor.js
type=audio
StreamProcessor.js...
StreamProcessor.js
type=enhancement
StreamProcessor.js...
Fragment Fetching
Fragment...
Fragment Fetching
Fragment...
SourceBufferSink.js
SourceBufferSink.js
SourceBufferSink.js
SourceBufferSink.js
.....
.....
MSE
MSE
External MSE Implementation
External MSE Impl...
HTML Video Tag
HTML Video Tag
dash.js event
externalSourceBufferUpdateStart
dash.js event...
LCEVCdecJS
appendBuffer(...)
LCEVCdecJS...
\ No newline at end of file From 46228118e043876fcf71e67fef805ef340df6220 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Thu, 25 Sep 2025 15:30:21 +0100 Subject: [PATCH 33/42] Do not include compatible MediaInfos --- src/streaming/StreamProcessor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/streaming/StreamProcessor.js b/src/streaming/StreamProcessor.js index efd3515bb4..a7c6d5c82a 100644 --- a/src/streaming/StreamProcessor.js +++ b/src/streaming/StreamProcessor.js @@ -703,7 +703,7 @@ function StreamProcessor(config) { _selectMediaInfoForEnhancementStreamProcessor(selectedValues); // Update Representation Controller with the new data. Note we do not filter any Representations here as the filter values might change over time. - const voRepresentations = abrController.getPossibleVoRepresentations(currentMediaInfo, true); + const voRepresentations = abrController.getPossibleVoRepresentations(currentMediaInfo, false); return representationController.updateData(voRepresentations, currentMediaInfo.isFragmented, selectedValues.selectedRepresentation.id) .then(() => { _onDataUpdateCompleted() @@ -749,7 +749,7 @@ function StreamProcessor(config) { bitrateInKbit = abrController.getInitialBitrateFor(type); } - const selectedRepresentation = abrController.getOptimalRepresentationForBitrate(selectionInput.newMediaInfo, bitrateInKbit, true); + const selectedRepresentation = abrController.getOptimalRepresentationForBitrate(selectionInput.newMediaInfo, bitrateInKbit, false); return { selectedRepresentation, currentMediaInfo: selectionInput.newMediaInfo From f43608f56efc5d224c66e77de6d76357d2f19103 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Thu, 25 Sep 2025 16:42:24 +0100 Subject: [PATCH 34/42] Update unit tests to pass --- test/unit/helpers/ObjectsHelper.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/unit/helpers/ObjectsHelper.js b/test/unit/helpers/ObjectsHelper.js index 40ba315865..1414ff1971 100644 --- a/test/unit/helpers/ObjectsHelper.js +++ b/test/unit/helpers/ObjectsHelper.js @@ -26,8 +26,10 @@ class ObjectsHelper { getRepresentation: () => { return null }, - getAbrRepresentation: () => { - return null + getRepresentationController: () => { + return { + getCurrentCompositeRepresentation: () => null + } } } } From 12c220510cff091e36cc4ba75b8c5c0280cd5d6b Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Thu, 25 Sep 2025 17:12:59 +0100 Subject: [PATCH 35/42] Accept whitespace-separated list of values for dependencyId --- src/dash/models/DashManifestModel.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dash/models/DashManifestModel.js b/src/dash/models/DashManifestModel.js index d54d942f93..9ff4575a1f 100644 --- a/src/dash/models/DashManifestModel.js +++ b/src/dash/models/DashManifestModel.js @@ -730,7 +730,10 @@ function DashManifestModel() { voRepresentation.codecFamily = Utils.getCodecFamily(voRepresentation.codecs); } if (realRepresentation.hasOwnProperty(DashConstants.DEPENDENCY_ID)) { - const dependencyId = realRepresentation[DashConstants.DEPENDENCY_ID].toString(); + const dependencyIdListString = realRepresentation[DashConstants.DEPENDENCY_ID].toString(); + const dependencyIds = dependencyIdListString.split(' '); + const dependencyId = dependencyIds[0]; + voRepresentation.dependencyId = dependencyId; voRepresentation.dependentRepresentation = new Representation(); voRepresentation.dependentRepresentation.id = dependencyId; From fa10394f0c17b7049b57c1f7964e3aeb6ea7d160 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 14 Oct 2025 11:00:33 +0100 Subject: [PATCH 36/42] Make _getCurrentDependentRepresentation private --- src/dash/controllers/RepresentationController.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/dash/controllers/RepresentationController.js b/src/dash/controllers/RepresentationController.js index 4d371c5a00..ef809098b9 100644 --- a/src/dash/controllers/RepresentationController.js +++ b/src/dash/controllers/RepresentationController.js @@ -78,12 +78,12 @@ function RepresentationController(config) { return currentVoRepresentation; } else { - return getCurrentDependentRepresentation(); + return _getCurrentDependentRepresentation(); } } - function getCurrentDependentRepresentation() { + function _getCurrentDependentRepresentation() { let currentVoRepDep = currentVoRepresentation?.dependentRepresentation; if (currentVoRepDep) { if (!currentVoRepDep.mediaInfo) { @@ -334,7 +334,6 @@ function RepresentationController(config) { instance = { getCurrentCompositeRepresentation, - getCurrentDependentRepresentation, getCurrentRepresentation, getRepresentationById, getStreamId, From 2627ca96f5bdd5b4d509a76e4aec61b49045c998 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 14 Oct 2025 11:05:22 +0100 Subject: [PATCH 37/42] Add comment for multiple dependency ids --- src/dash/models/DashManifestModel.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dash/models/DashManifestModel.js b/src/dash/models/DashManifestModel.js index 9ff4575a1f..c08d89e921 100644 --- a/src/dash/models/DashManifestModel.js +++ b/src/dash/models/DashManifestModel.js @@ -730,6 +730,8 @@ function DashManifestModel() { voRepresentation.codecFamily = Utils.getCodecFamily(voRepresentation.codecs); } if (realRepresentation.hasOwnProperty(DashConstants.DEPENDENCY_ID)) { + // According to spec, the DEPENDENCY_ID attribute is a space-separated list of ID values + // Only using the first ID from this list as the handling of multiple IDs is not supported yet const dependencyIdListString = realRepresentation[DashConstants.DEPENDENCY_ID].toString(); const dependencyIds = dependencyIdListString.split(' '); const dependencyId = dependencyIds[0]; From 3e363e4ab42bf1ada2b3988b7f71ffe6fea23cff Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 14 Oct 2025 11:09:36 +0100 Subject: [PATCH 38/42] Make UI Checkbox more descriptive --- samples/dash-if-reference-player/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/dash-if-reference-player/index.html b/samples/dash-if-reference-player/index.html index 2f374e38be..6a01994773 100644 --- a/samples/dash-if-reference-player/index.html +++ b/samples/dash-if-reference-player/index.html @@ -926,13 +926,13 @@
-
Enhancement
+
Enhancement Layer
From 6f7423a478e4afb97a3f784a562239510f9defff Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 14 Oct 2025 14:43:49 +0100 Subject: [PATCH 39/42] Trigger GitHub PR refresh From 868b4bff7e4311ad65496d7c9649e25d9b6f8a84 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Wed, 15 Oct 2025 12:06:22 +0100 Subject: [PATCH 40/42] Reuse reset function in ExternalMediaSource constructor --- src/streaming/ExternalMediaSource.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/streaming/ExternalMediaSource.js b/src/streaming/ExternalMediaSource.js index b1050b6a81..e89eec8b44 100644 --- a/src/streaming/ExternalMediaSource.js +++ b/src/streaming/ExternalMediaSource.js @@ -33,9 +33,7 @@ import ExternalSourceBuffer from './ExternalSourceBuffer.js'; class ExternalMediaSource { constructor(eventBus) { this.eventBus = eventBus; - this.sourceBuffers = new Map(); - this._duration = NaN; - this._readyState = 'closed'; + this.reset(); } get duration() { From d6a8865e34de48a01bec0fc69cba8e6a08b8055d Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Wed, 15 Oct 2025 12:11:20 +0100 Subject: [PATCH 41/42] Fix UI buttons in controlbar being shifted up --- samples/dash-if-reference-player/app/css/main.css | 2 -- 1 file changed, 2 deletions(-) diff --git a/samples/dash-if-reference-player/app/css/main.css b/samples/dash-if-reference-player/app/css/main.css index a8d6d7c229..7ad3fc6b2f 100644 --- a/samples/dash-if-reference-player/app/css/main.css +++ b/samples/dash-if-reference-player/app/css/main.css @@ -154,8 +154,6 @@ a:hover { .dash-video-player { background-color: #000000; position: relative; - margin: 0 auto; - line-height: 1.0; } .col-md-9 video { From 8ef5c85b61d1b61757a663cd9daeb8a8edc03d37 Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Thu, 16 Oct 2025 12:04:01 +0100 Subject: [PATCH 42/42] Cleanup after merge --- test/unit/test/dash/dash.DashAdapter.js | 1 - 1 file changed, 1 deletion(-) diff --git a/test/unit/test/dash/dash.DashAdapter.js b/test/unit/test/dash/dash.DashAdapter.js index a48186504d..45b149d6ec 100644 --- a/test/unit/test/dash/dash.DashAdapter.js +++ b/test/unit/test/dash/dash.DashAdapter.js @@ -513,7 +513,6 @@ describe('DashAdapter', function () { describe('SetConfig previously called', function () { beforeEach(function () { dashAdapter.setConfig({ - settings: { get: () => ({ streaming: { enhancement: { enabled: false, codecs: ['lvc1'] } } }) }, constants: Constants, errHandler: errorHandlerMock, cea608parser: new Cta608Parser(),