Skip to content
Open
Show file tree
Hide file tree
Changes from 216 commits
Commits
Show all changes
251 commits
Select commit Hold shift + click to select a range
edd54b7
add return to _cmcdRequestModeInterceptor
cotid-qualabs Apr 7, 2025
a7f3ffe
remove migrated code from HTTPLoader
cotid-qualabs Apr 7, 2025
eaeeef6
rename CmcdModel unit test file
cotid-qualabs Apr 7, 2025
f11d89b
add remove spaces on HTTPLoader
cotid-qualabs Apr 7, 2025
22e8e47
move cmcdRequestInterceptor setup to reset function
cotid-qualabs Apr 7, 2025
251862d
remove whitespace
cotid-qualabs Apr 7, 2025
e8edb0d
remove whitespace
cotid-qualabs Apr 7, 2025
a269305
remove whitespace
cotid-qualabs Apr 7, 2025
242683f
request mode fix
cotid-qualabs Apr 8, 2025
6653314
refactor cmcdRequestModeInterceptor to return a new commonMediaReques…
sebastianpiq Apr 9, 2025
7ac84f4
Remove unnecessary concat in the interceptors array
sebastianpiq Apr 9, 2025
3993e4b
update get query and headers function
cotid-qualabs Apr 10, 2025
51086d7
reponse mode WIP
cotid-qualabs Apr 10, 2025
29eca78
response mode enabled keys
cotid-qualabs Apr 11, 2025
bca18f7
include in request for response mode
cotid-qualabs Apr 14, 2025
d2b51cc
settings update
cotid-qualabs Apr 14, 2025
6f45b1d
custom keys for response mode
cotid-qualabs Apr 14, 2025
be7ec7b
review changes
cotid-qualabs Apr 14, 2025
4d99b39
cmcd report targets JSDocs
cotid-qualabs Apr 14, 2025
cda45ea
add current keys parameter to customKeys
cotid-qualabs Apr 14, 2025
8b78a6b
fix constants
cotid-qualabs Apr 14, 2025
7190088
fix JSDocs
cotid-qualabs Apr 14, 2025
f6772a3
fix default settingscmcd targets
cotid-qualabs Apr 14, 2025
524b192
Add event mode listeners and state change handling in CmcdController
sebastianpiq Apr 15, 2025
aa52e03
Merge branch 'cmcdv2/response_mode' into cmcdv2/event-mode
sebastianpiq Apr 15, 2025
c88be65
Merge pull request #73 from qualabs/cmcdv2/response_mode
cotid-qualabs Apr 16, 2025
e4a141d
Add event mode properties and initialize time interval in CmcdController
sebastianpiq Apr 17, 2025
9e04959
add response type
cotid-qualabs Apr 17, 2025
c2ed749
Merge branch 'cmcdv2/event-mode' into cmcdv2/critical-keys
juanmanuel-qualabs Apr 21, 2025
b9c3766
Fixed check for CMCD enabled
juanmanuel-qualabs Apr 21, 2025
7d6bec4
cmcdv2 interceptors sample page
cotid-qualabs Apr 23, 2025
9131547
cmcdv2 interceptors sample page html update
cotid-qualabs Apr 23, 2025
dbff09e
Merge pull request #75 from qualabs/cmcdv2/interceptor_sample_page
cotid-qualabs Apr 25, 2025
2546260
Cmcdv2/event mode (#74)
sebastianpiq Apr 28, 2025
35fca18
cmcdv2 network interceptor sample page fix
cotid-qualabs Apr 28, 2025
e43934f
CMCDv2 headers mode fix
cotid-qualabs Apr 28, 2025
6eb282f
Created constant with mandatory keys for CMD
juanmanuel-qualabs Apr 28, 2025
7372d4a
Renamed function to includeEventModeMandatoryKeys
juanmanuel-qualabs Apr 28, 2025
067cfdb
Merge pull request #76 from qualabs/cmcdv2/mandatory-keys
cotid-qualabs Apr 29, 2025
f7b3368
CMCD v2 'rc' key implementation
cotid-qualabs Apr 30, 2025
409ede6
bugfix headers undefined on unit test
cotid-qualabs Apr 30, 2025
639d689
Merge branch 'feature/cmcdv2' of github.com:qualabs/dash.js into feat…
cotid-qualabs Apr 30, 2025
46b594a
CMCD Implement 'r' Event (#77)
juanmanuel-qualabs Apr 30, 2025
b9e7e6d
Merge branch 'feature/cmcdv2' into cmcdv2/critical-keys
juanmanuel-qualabs May 2, 2025
86cd975
[WIP] Fixed msd for event and response mode, request mode still pending
juanmanuel-qualabs May 2, 2025
57ff742
Fixed msd data for response mode
juanmanuel-qualabs May 5, 2025
bfa2d5c
Removed commented debugger line
juanmanuel-qualabs May 5, 2025
c5223ef
Fixed positive tests for Header and Query modes for msd
juanmanuel-qualabs May 5, 2025
b67236f
sta key implementation
cotid-qualabs May 5, 2025
06943bf
Fixed negative tests cases for CMCD V2 MSD
juanmanuel-qualabs May 5, 2025
65f11f4
Removed duplicated code
juanmanuel-qualabs May 6, 2025
cf4a2d2
Implemented CMCD V2 Error Key for Events
juanmanuel-qualabs May 6, 2025
6404c3f
fix waiting state
cotid-qualabs May 6, 2025
cf0ea36
Fixed ts key being sent incorrectly when no event key was present
juanmanuel-qualabs May 6, 2025
6b11eb3
query and headers mode implementation for each target
cotid-qualabs May 7, 2025
980a042
FIxed incorrect constant being used for seeking event key
juanmanuel-qualabs May 7, 2025
d152b10
Merge pull request #88 from qualabs/hotfix/cmcdv2/k-key-fix
cotid-qualabs May 7, 2025
e7d20e3
Merge pull request #80 from qualabs/cmcdv2/key-msd
cotid-qualabs May 7, 2025
08bd90d
revert sample page
cotid-qualabs May 7, 2025
fc10446
fix request mode mode
cotid-qualabs May 7, 2025
e66b187
Merge pull request #87 from qualabs/cmcdv2/query-and-headers-mode-by-…
cotid-qualabs May 7, 2025
828aada
Merge pull request #86 from qualabs/cmcdv2/ts-key
cotid-qualabs May 7, 2025
23ad526
cmcdv2/ttfb and ttlb implementation for response mode (#81)
cotid-qualabs May 7, 2025
08ebd70
Cmcdv2/update cmcd modes constants (#85)
cotid-qualabs May 7, 2025
8c1e469
[refactor] removed debugger line
juanmanuel-qualabs May 7, 2025
2df1410
Merge branch 'feature/cmcdv2' of github.com:qualabs/dash.js into cmcd…
cotid-qualabs May 7, 2025
8cfcd03
Merge branch 'feature/cmcdv2' into cmcdv2/e-event
juanmanuel-qualabs May 7, 2025
990ebce
Merge pull request #84 from qualabs/cmcdv2/e-event
cotid-qualabs May 7, 2025
91e23d1
Merge branch 'feature/cmcdv2' of github.com:qualabs/dash.js into cmcd…
cotid-qualabs May 7, 2025
0aba3ff
refactor: separate event mode events from sta player states
cotid-qualabs May 7, 2025
23da2b5
update CMCD_PLAYER_STATES description
cotid-qualabs May 7, 2025
f54d368
refactor player states listeners
cotid-qualabs May 7, 2025
75a7a61
add onEventChange to onStateChange
cotid-qualabs May 7, 2025
308b6f3
refactor onPlaybackPlaying
cotid-qualabs May 7, 2025
d8bf650
msd helper function name update
cotid-qualabs May 7, 2025
297518d
fix msd for response mode
cotid-qualabs May 8, 2025
ea0fd00
revert msd for response mode
cotid-qualabs May 8, 2025
735e333
remove white space
cotid-qualabs May 8, 2025
36dc730
cmcdv2 sample page draft
cotid-qualabs May 8, 2025
c88f2bf
cmcdData event mode fix
cotid-qualabs May 8, 2025
06a88c7
Merge pull request #82 from qualabs/cmcdv2/sta-key
cotid-qualabs May 8, 2025
e67d65e
Added methods to check enabled and available keys in tagets settings
juanmanuel-qualabs May 9, 2025
4d7dc7f
[cmcdv2] url key implementation (#89)
juanmanuel-qualabs May 12, 2025
b494d17
Adding missing sta key to CMCD_V2_AVAILABLE_KEYS constant (#91)
juanmanuel-qualabs May 12, 2025
8bfc67d
Removed unnecesary version check
juanmanuel-qualabs May 12, 2025
6a2956c
Checking CMCD version when checking target enabled
juanmanuel-qualabs May 12, 2025
232cbd5
[REFACTOR] Added 'keys' constants for each cmcd v2 mode
juanmanuel-qualabs May 12, 2025
2c62bdf
Added code to log key verifications only once
juanmanuel-qualabs May 13, 2025
67e16d0
Merge branch 'feature/cmcdv2' into cmcdv2/fix_available_keys_and_enabled
juanmanuel-qualabs May 13, 2025
9ed8cb5
Added logic to log included mandatory keys when not specified by user
juanmanuel-qualabs May 13, 2025
3bc9d7a
Merge pull request #90 from qualabs/cmcdv2/fix_available_keys_and_ena…
cotid-qualabs May 13, 2025
0487932
Merge pull request #92 from qualabs/cmcdv2/log_included_mandatory_keys
cotid-qualabs May 13, 2025
288ee00
cmcdv2/ time interval on event mode bugfix (#93)
cotid-qualabs May 15, 2025
4268bb1
cmcdv2/bg key implementation (#94)
cotid-qualabs May 15, 2025
cc29095
cmcdv2/add warning for empty event array (#95)
cotid-qualabs May 15, 2025
5d0aa73
Fix cmcd constants descriptions (#96)
sebastianpiq May 16, 2025
c83817c
cmcdv2/cmcdrequest v2 to v1 (#97)
juanmanuel-qualabs May 19, 2025
e607e9c
Cmcdv2/cmcd model refactor (#98)
juanmanuel-qualabs May 20, 2025
a1141dc
Fixed isIncludedInRequestFilter reference in CmcdController (#99)
juanmanuel-qualabs May 20, 2025
65ea048
hotfixes for event mode after model refactor
cotid-qualabs May 20, 2025
d2d57e9
Added check to return targetavailable keys if not inva
juanmanuel-qualabs May 21, 2025
095386b
Fixed check for time interval definition
juanmanuel-qualabs May 21, 2025
88dec22
Merge pull request #100 from qualabs/hotfix/cmcdv2_fix_empty_enabledKeys
cotid-qualabs May 21, 2025
c8488f8
Merge pull request #101 from qualabs/hotfix/cmcdv2_fix_time_interval_…
cotid-qualabs May 21, 2025
23d5613
Merge branch 'development' of github.com:qualabs/dash.js into feature…
cotid-qualabs May 21, 2025
691041e
Add BSD License to CmcdModel
cotid-qualabs May 21, 2025
14d5a77
hotfix/cmcdv2 network interceptors sample page -config updates
cotid-qualabs May 21, 2025
e15f63c
fixes in samples of cmcd v2
nicolaslevy May 22, 2025
5eb5bc9
hotfix/enabledKeys undefined and enabledKeys empty
cotid-qualabs May 22, 2025
8dcb29a
hotfix/Keys for each mode constants
cotid-qualabs May 22, 2025
fe57ac5
Replaced Constants definition by definitions in Common Media Library …
juanmanuel-qualabs Jun 3, 2025
904cfcb
Updated constants imports from CML Library
juanmanuel-qualabs Jun 25, 2025
f96e040
update CML constants for CMCDv2
cotid-qualabs Jul 3, 2025
e122036
Merge branch 'cmcdv2/cml_constants' of github.com:qualabs/dash.js int…
cotid-qualabs Jul 3, 2025
e5a94f2
update common media library version
cotid-qualabs Jul 3, 2025
2a59c90
Merge pull request #104 from qualabs/cmcdv2/cml_constants
cotid-qualabs Jul 3, 2025
f767709
basic event mode unit tests
cotid-qualabs Jul 11, 2025
ce1b101
response mode unit tests
cotid-qualabs Jul 11, 2025
6cdb0fb
remove debugger
cotid-qualabs Jul 11, 2025
dbe3174
chore: replace key lookup with CML's encodeCmcd options
littlespex Jul 11, 2025
8a730d1
chore: remove console log
littlespex Jul 11, 2025
2081637
WIP
cotid-qualabs Jul 14, 2025
e6aabf3
bugfix: differentiate the undefined enabledKeys array for Event and R…
cotid-qualabs Jul 14, 2025
8a81dc3
Merge pull request #112 from qualabs/feature/cmcdv2-cml-0.16.0
cotid-qualabs Jul 14, 2025
9ac90ba
Merge branch 'feature/cmcdv2' of github.com:qualabs/dash.js into cmcd…
cotid-qualabs Jul 14, 2025
602ec74
Add event mode unit test case
cotid-qualabs Jul 15, 2025
1794c4d
add event mode player states cases
cotid-qualabs Jul 15, 2025
de38443
json mode WIP
cotid-qualabs Jul 17, 2025
1bfb7b3
HttpRequest post
cotid-qualabs Jul 17, 2025
d857332
mode json constant
cotid-qualabs Jul 17, 2025
5b21baa
json mode for event and response mode only restriction
cotid-qualabs Jul 17, 2025
f40ee02
batching with batchSize
cotid-qualabs Jul 17, 2025
e98a8ee
batchTimer implementation
cotid-qualabs Jul 21, 2025
539fa6c
batching unit testing
cotid-qualabs Jul 21, 2025
148f77e
event mode batching
cotid-qualabs Jul 21, 2025
1f62b12
cmcdv2 sample page update with json mode
cotid-qualabs Jul 21, 2025
e5afc5a
remove only
cotid-qualabs Jul 21, 2025
f8dd52f
event mode player states unit tests refactor
cotid-qualabs Jul 21, 2025
be4087d
refactor batching to support repeated target urls
cotid-qualabs Jul 22, 2025
f4c70ef
Merge pull request #114 from qualabs/cmcdv2/json-batching
cotid-qualabs Jul 22, 2025
7b0395d
batching handle http 429
cotid-qualabs Jul 22, 2025
6740b8a
Merge branch 'feature/cmcdv2' of github.com:qualabs/dash.js into cmcd…
cotid-qualabs Jul 22, 2025
968222d
fix error event loop and add unit test case
cotid-qualabs Jul 22, 2025
12a3ad2
add unit test cases for sending not available keys for modes
cotid-qualabs Jul 23, 2025
fa68c90
add unit test comment
cotid-qualabs Jul 23, 2025
68a71b1
resolve race condition cmcd batch controller
cotid-qualabs Jul 23, 2025
360ba55
handling for 410 error on batching
cotid-qualabs Jul 23, 2025
9f457ef
remove comments
cotid-qualabs Jul 23, 2025
84094c1
handle e null
cotid-qualabs Jul 23, 2025
308c1e1
Merge pull request #115 from qualabs/cmcdv2/http-429-http-410
cotid-qualabs Jul 23, 2025
e721041
hotfix - urlLoader not returning a promise case
cotid-qualabs Jul 23, 2025
95bfe1a
hotfix - rename Json Mode to Body Mode
cotid-qualabs Jul 23, 2025
c37f64a
hotfix - update json mode to body mode - replace json for string
cotid-qualabs Jul 23, 2025
65f49b5
hotfix - add content type cmcd+text to body mode
cotid-qualabs Jul 23, 2025
1a6aac9
Merge branch 'development' of github.com:qualabs/dash.js into feature…
cotid-qualabs Jul 23, 2025
57d122c
Merge pull request #113 from qualabs/cmcdv2/unit-testing
cotid-qualabs Jul 24, 2025
1ba7419
bugfix version undefined scenario
cotid-qualabs Jul 24, 2025
cdb59d0
cmsdd and cmsds implementation
cotid-qualabs Jul 25, 2025
4c26729
add unit test for cmsdd and cmsds
cotid-qualabs Jul 25, 2025
51e50e7
add try catch to cmsdd and cmsds
cotid-qualabs Jul 25, 2025
b0b02d9
df implementation
cotid-qualabs Jul 25, 2025
75341cb
Update test/unit/test/streaming/streaming.controllers.CmcdController.js
cotid-qualabs Jul 28, 2025
8dda55c
typo fix
cotid-qualabs Jul 28, 2025
b99585a
Merge pull request #116 from qualabs/cmcdv2/bugfix-version-undefined
cotid-qualabs Jul 28, 2025
d65063e
Merge pull request #117 from qualabs/cmcdv2/cmsdd-cmsds
cotid-qualabs Jul 28, 2025
31a06f4
sn key implementation for event and response mode
cotid-qualabs Jul 28, 2025
ad9d7e7
rename sn variable
cotid-qualabs Jul 29, 2025
6a7a0e3
request mode sequence number implementation
cotid-qualabs Jul 29, 2025
0fcdb94
implement targets copy
cotid-qualabs Jul 29, 2025
948fdd4
sequenceNumber refactor to map
cotid-qualabs Jul 29, 2025
b4b61f1
update getTargetKey
cotid-qualabs Jul 29, 2025
123bfc0
add mediaType condition to df
cotid-qualabs Jul 29, 2025
6d3d2ce
df greater than 0 restriction
cotid-qualabs Jul 29, 2025
a478bbf
df condition fix
cotid-qualabs Jul 29, 2025
66f9b19
Merge branch 'feature/cmcdv2' of github.com:qualabs/dash.js into cmcd…
cotid-qualabs Jul 29, 2025
2a75361
unit test fixing
cotid-qualabs Jul 29, 2025
081f1ba
Merge pull request #118 from qualabs/cmcdv2/df
cotid-qualabs Jul 30, 2025
055abbf
Merge pull request #119 from qualabs/cmcdv2/sn-key
cotid-qualabs Jul 30, 2025
d468ceb
playhead bitrate implementation
cotid-qualabs Jul 30, 2025
283cfdb
top playable bitrate implementation
cotid-qualabs Jul 30, 2025
63c8d2e
fix tpb condition
cotid-qualabs Jul 30, 2025
53e504d
_getTopPlayableBitrate refactor
cotid-qualabs Jul 30, 2025
723719b
refactor _getPlayheadBitrate
cotid-qualabs Jul 30, 2025
9c66422
fix pb condition
cotid-qualabs Jul 30, 2025
88604d0
feat(cmcdv2): add ab and tab keys to event mode
sebastian-siepe Jul 30, 2025
04b4ce3
unit test implementation for cmcd model
cotid-qualabs Jul 30, 2025
3fb6cfa
Update test/unit/test/streaming/streaming.models.CmcdModel.js
cotid-qualabs Jul 31, 2025
b1ba9d6
Update test/unit/test/streaming/streaming.models.CmcdModel.js
cotid-qualabs Jul 31, 2025
21081f6
Merge pull request #122 from qualabs/cmcdv2/cmcd-model-unit-tests
cotid-qualabs Jul 31, 2025
5b2e15d
Merge pull request #120 from qualabs/cmcdv2/pb-key
cotid-qualabs Jul 31, 2025
2e46820
bsd key implementation
cotid-qualabs Jul 31, 2025
81ab921
Merge branch 'feature/cmcdv2' of github.com:qualabs/dash.js into cmcd…
cotid-qualabs Jul 31, 2025
586d099
cmcd model unit tests revert change
cotid-qualabs Jul 31, 2025
14bc49a
Merge pull request #121 from qualabs/cmcdv2/tpb-key
cotid-qualabs Jul 31, 2025
7c9828f
Merge branch 'feature/cmcdv2' of github.com:qualabs/dash.js into cmcd…
cotid-qualabs Jul 31, 2025
ad148e6
Update src/streaming/models/CmcdModel.js
cotid-qualabs Aug 1, 2025
2f86966
refactor onRebufferingCompleted
cotid-qualabs Aug 1, 2025
b7a8946
Merge branch 'cmcdv2/bsd-key' of github.com:qualabs/dash.js into cmcd…
cotid-qualabs Aug 1, 2025
2e2d3fe
revert refactor onRebufferingCompleted
cotid-qualabs Aug 1, 2025
0256365
bugfixes and unit test
cotid-qualabs Aug 1, 2025
85d33ab
Merge pull request #123 from qualabs/cmcdv2/bsd-key
cotid-qualabs Aug 1, 2025
38d2b49
hotfix - remove only on test
cotid-qualabs Aug 1, 2025
69f8d73
fix unit test related to the source buff sink
sebastianpiq Aug 1, 2025
b0f8d41
feat(cmcdv2): add lab key to event mode
sebastian-siepe Aug 4, 2025
9a54bc5
fix(cmcdv2): unit tests for aggregated bitrate values
sebastian-siepe Aug 4, 2025
783700d
fix unit test related to the source buff sink
sebastianpiq Aug 1, 2025
b34b893
feat(cmcdv2): finalize aggregated bitrate keys for event mode
sebastian-siepe Aug 5, 2025
e4a6b3c
refactor(cmcdmodel): improve lab calculation, resolve merge conflict
sebastian-siepe Aug 6, 2025
2aab5ce
timeOuts rename
cotid-qualabs Aug 11, 2025
f595b66
Merge pull request #124 from qualabs/feature/cmcd-v2-eventmode-additi…
cotid-qualabs Aug 11, 2025
074aa6a
bugfix: url key ignore query parameters
cotid-qualabs Aug 14, 2025
715efae
Merge branch 'feature/cmcdv2' of github.com:qualabs/dash.js into feat…
cotid-qualabs Aug 14, 2025
0792172
Merge branch 'development' of github.com:qualabs/dash.js into feature…
cotid-qualabs Aug 27, 2025
1f81ee3
protection controller cmcd code fix and unit test implementation
cotid-qualabs Sep 2, 2025
2b01244
add cmcd protection controller integration test
cotid-qualabs Sep 2, 2025
ae9e033
typo
cotid-qualabs Oct 9, 2025
a194cc1
rename CMCD_MODE to CMCD_REPORTING_MODE
cotid-qualabs Oct 9, 2025
bf31094
Feature MPD update on validity expiration (#68)
cotid-qualabs Oct 9, 2025
e4fdc71
Revert "Feature MPD update on validity expiration (#68)"
sebastianpiq Oct 9, 2025
db74be1
Merge pull request #146 from qualabs/revert-68-feature/mpd-update-on-…
cotid-qualabs Oct 9, 2025
87472e4
implemented batchRetryDelays setting
cotid-qualabs Oct 9, 2025
1e63745
CmcdBatchController instance functions sorted alphabetically
cotid-qualabs Oct 9, 2025
d22beb9
remove redundant spread operator
cotid-qualabs Oct 9, 2025
c1d80b4
remove already inherited properties from CmcdReportRequest
cotid-qualabs Oct 9, 2025
b645f14
remove unused constant
cotid-qualabs Oct 9, 2025
6eeb2cd
remove unused constant CMCD_MANDATORY_KEYS
cotid-qualabs Oct 9, 2025
fc2e729
trigger event after first time interval
cotid-qualabs Oct 14, 2025
37332d5
Merge branch 'development' of github.com:qualabs/dash.js into feature…
cotid-qualabs Oct 14, 2025
575d143
update cmcdmodel interface index.d.ts
cotid-qualabs Oct 14, 2025
8e42370
Merge branch 'Dash-Industry-Forum:development' into development
cotid-qualabs Oct 14, 2025
925e20a
Merge branch 'development' of github.com:qualabs/dash.js into feature…
cotid-qualabs Oct 14, 2025
5f635d6
implement getCmcdParametersFromManifest on CmcdController
cotid-qualabs Oct 14, 2025
387b920
add warning logs to targetCanBeEnabled
cotid-qualabs Oct 14, 2025
8cc3334
remove response mode WIP
cotid-qualabs Oct 21, 2025
dc45762
cml rr updates integration
cotid-qualabs Oct 21, 2025
694dc83
cml rr updates integration
cotid-qualabs Oct 21, 2025
98f31b4
remove only
cotid-qualabs Oct 21, 2025
4b8b79c
update empty enabledKeys unit test case
cotid-qualabs Oct 21, 2025
5d1003e
let cml handle empty key array
cotid-qualabs Oct 21, 2025
79290f1
change let for const
cotid-qualabs Oct 21, 2025
9ee003a
response received constant
cotid-qualabs Oct 21, 2025
b0be8f0
remove HTTPRequest.CMCD_RESPONSE
cotid-qualabs Oct 21, 2025
0750f13
change default enabledKeys value
cotid-qualabs Oct 21, 2025
b5a26c7
prevent request loop on response received
cotid-qualabs Oct 22, 2025
c2548f5
update unit test
cotid-qualabs Oct 22, 2025
6628f0b
update cmcdv2 sample page
cotid-qualabs Oct 22, 2025
1136e14
remove comment
cotid-qualabs Oct 22, 2025
8c45752
update cmcd v2 network interceptors sample page
cotid-qualabs Oct 22, 2025
d24e2e1
add equal operator
cotid-qualabs Oct 22, 2025
18c14bc
Merge pull request #148 from qualabs/cmcdv2/response-received
cotid-qualabs Oct 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3719,7 +3719,7 @@ declare namespace dashjs {
update(manifest: object): void;
}

export interface CmcdModel {
export interface CmcdController {
getCmcdData(request: HTTPRequest): object;

getCmcdParametersFromManifest(): CMCDParameters;
Expand Down
189 changes: 189 additions & 0 deletions samples/advanced/cmcd-v2-network-interceptors.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CMCD v2 Callbacks with Network Interceptors</title>

<script src="../../dist/modern/umd/dash.all.debug.js"></script>

<!-- Bootstrap core CSS -->
<link href="../lib/bootstrap/bootstrap.min.css" rel="stylesheet">
<link href="../lib/main.css" rel="stylesheet">

<style>
video {
width: 640px;
height: 360px;
}

#trace {
height: 500px;
margin-top: 20px;
font-size: 10px;
}
</style>
<script>
function getKeysForQueryMode(cmcdString) {
var cmcdData = {};
var cmcdString = cmcdString;

extractKeyValuePairs(cmcdString, cmcdData);

return cmcdData;
}

function extractKeyValuePairs(cmcdString, cmcdData) {
if (cmcdString === '') {
return;
}
var keyValuePairs = cmcdString.split(',');

keyValuePairs.forEach(function (keyValuePair) {
var data = keyValuePair.split('=');
var key = data[0];
var value = data[1];

cmcdData[key] = value;
})
}

function log(msg) {
msg = msg.length > 200 ? msg.substring(0, 200) + '...' : msg; /* to avoid repeated wrapping with large objects */
var tracePanel = document.getElementById('trace');
tracePanel.innerHTML += msg + '\n';
tracePanel.scrollTop = tracePanel.scrollHeight;
}
</script>
<script class="code">
var CMCD_MODE_QUERY = 'query'; /* as query parameters */
var player;

function init() {
var video,
url = 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps.mpd',
version;

player = dashjs.MediaPlayer().create();
video = document.querySelector('video');
player.initialize();
version = player.getVersion();

player.updateSettings({
streaming: {
cmcd: {
version: 2,
enabled: true, /* enable reporting of cmcd parameters */
sid: 'b248658d-1d1a-4039-91d0-8c08ba597da5', /* session id send with each request */
cid: '21cf726cfe3d937b5f974f72bb5bd06a', /* content id send with each request */
mode: CMCD_MODE_QUERY,
enabledKeys: ['cid', 'sid'],
includeInRequests: ['segment', 'mpd'],
targets: [
{
cmcdMode: 'response',
enabled: true,
url: 'http://localhost:3003/response-mode',
enabledKeys: ['ot', 'rc', 'msd'],
mode: CMCD_MODE_QUERY,
includeOnRequests: ['mpd', 'segment'],
},
]
}
}
});
player.setAutoPlay(false);
player.attachView(video);
player.attachSource(url);

/* Callback before report */
player.addRequestInterceptor((request) => {
if (request.customData.request.type == 'CmcdResponse' && request.url.includes('http://localhost:3003/response-mode')) {
let customKey = 'synchronization-leader-sid';
let customKeyValue = '123'
let { cmcd } = request;
if (cmcd) {
/* Add custom key to cmcd data */
cmcd[customKey] = customKeyValue;
/* Add custom key to query parameters */
let newParam = encodeURIComponent(`,${customKey}="${customKeyValue}"`);
request.url += newParam;
}
}
return Promise.resolve(request);
});

/* Callback after server response */
player.addResponseInterceptor((response) => {
request = response.request.customData.request;
if (request.type == 'CmcdResponse' && request.url.includes('http://localhost:3003/response-mode')) {
console.log(request.cmcd);
}
return Promise.resolve(response);
});

const originalOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url, ...rest) {
if (url.includes('response-mode')) {
const queryString = decodeURIComponent(url.split('CMCD=')[1]);
const data = getKeysForQueryMode(queryString);
var keys = Object.keys(data);
keys = keys.sort();
for (var key of keys) {
log(key.padEnd(4) + ': ' + data[key]);
}
log('');
}
return originalOpen.call(this, method, url, ...rest);
};
}
</script>
</head>
<body>

<main>
<div class="container py-4">
<header class="pb-3 mb-4 border-bottom">
<img class=""
src="../lib/img/dashjs-logo.png"
width="200">
</header>
<div class="row">
<div class="col-md-12">
<div class="h-100 p-5 bg-light border rounded-3">
<h3>CMCD v2 Callbacks with Network Interceptors</h3>
<p>This sample shows how to use Network Interceptors to execute callbacks after server response or pre-request callbacks for Response and Event Mode</p>
</div>
</div>
</div>
<div class="row mt-2">
<div class="col-md-6">
<video controls="true"></video>
</div>
<div class="col-md-6">
<div class="form-floating">
<textarea class="form-control" placeholder="Sent CMCD data will be displayed here"
id="trace"></textarea>
<label for="trace">CMCD Report Data</label>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div id="code-output"></div>
</div>
</div>
<footer class="pt-3 mt-4 text-muted border-top">
&copy; DASH-IF
</footer>
</div>
</main>


<script>
document.addEventListener('DOMContentLoaded', function () {
init();
});
</script>
<script src="../highlighter.js"></script>
</body>
</html>
Loading