rx-player 4.2.0-dev.2024081400 → 4.2.0-dev.2024090300

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/VERSION +1 -1
  3. package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  4. package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
  5. package/dist/commonjs/compat/browser_detection.d.ts +3 -1
  6. package/dist/commonjs/compat/browser_detection.d.ts.map +1 -1
  7. package/dist/commonjs/compat/browser_detection.js +8 -1
  8. package/dist/commonjs/compat/can_reuse_media_keys.d.ts +2 -0
  9. package/dist/commonjs/compat/can_reuse_media_keys.d.ts.map +1 -1
  10. package/dist/commonjs/compat/can_reuse_media_keys.js +3 -1
  11. package/dist/commonjs/compat/eme/custom_media_keys/types.d.ts +3 -0
  12. package/dist/commonjs/compat/eme/custom_media_keys/types.d.ts.map +1 -1
  13. package/dist/commonjs/compat/eme/custom_media_keys/webkit_media_keys.d.ts +1 -1
  14. package/dist/commonjs/compat/eme/custom_media_keys/webkit_media_keys.d.ts.map +1 -1
  15. package/dist/commonjs/compat/eme/eme-api-implementation.d.ts +2 -2
  16. package/dist/commonjs/compat/eme/eme-api-implementation.d.ts.map +1 -1
  17. package/dist/commonjs/compat/eme/eme-api-implementation.js +19 -2
  18. package/dist/commonjs/compat/eme/get_init_data.d.ts +3 -1
  19. package/dist/commonjs/compat/eme/get_init_data.d.ts.map +1 -1
  20. package/dist/commonjs/compat/eme/get_init_data.js +2 -2
  21. package/dist/commonjs/compat/event_listeners.d.ts +21 -19
  22. package/dist/commonjs/compat/event_listeners.d.ts.map +1 -1
  23. package/dist/commonjs/compat/event_listeners.js +0 -11
  24. package/dist/commonjs/core/cmcd/cmcd_data_builder.js +1 -1
  25. package/dist/commonjs/core/main/worker/worker_main.js +1 -0
  26. package/dist/commonjs/core/segment_sinks/inventory/segment_inventory.js +8 -5
  27. package/dist/commonjs/main_thread/api/public_api.d.ts +22 -10
  28. package/dist/commonjs/main_thread/api/public_api.d.ts.map +1 -1
  29. package/dist/commonjs/main_thread/api/public_api.js +68 -28
  30. package/dist/commonjs/main_thread/decrypt/content_decryptor.d.ts +8 -0
  31. package/dist/commonjs/main_thread/decrypt/content_decryptor.d.ts.map +1 -1
  32. package/dist/commonjs/main_thread/decrypt/content_decryptor.js +51 -2
  33. package/dist/commonjs/main_thread/decrypt/types.d.ts +5 -0
  34. package/dist/commonjs/main_thread/decrypt/types.d.ts.map +1 -1
  35. package/dist/commonjs/main_thread/init/media_source_content_initializer.js +3 -3
  36. package/dist/commonjs/main_thread/tracks_store/tracks_store.d.ts +12 -4
  37. package/dist/commonjs/main_thread/tracks_store/tracks_store.d.ts.map +1 -1
  38. package/dist/commonjs/main_thread/tracks_store/tracks_store.js +18 -8
  39. package/dist/commonjs/manifest/classes/adaptation.d.ts +13 -13
  40. package/dist/commonjs/manifest/classes/adaptation.d.ts.map +1 -1
  41. package/dist/commonjs/manifest/classes/adaptation.js +1 -4
  42. package/dist/commonjs/manifest/classes/representation.d.ts +20 -12
  43. package/dist/commonjs/manifest/classes/representation.d.ts.map +1 -1
  44. package/dist/commonjs/manifest/classes/representation.js +8 -8
  45. package/dist/commonjs/manifest/utils.d.ts +4 -3
  46. package/dist/commonjs/manifest/utils.d.ts.map +1 -1
  47. package/dist/commonjs/manifest/utils.js +13 -7
  48. package/dist/commonjs/parsers/manifest/dash/common/content_protection_parser.js +4 -4
  49. package/dist/commonjs/parsers/manifest/local/parse_local_manifest.js +1 -1
  50. package/dist/commonjs/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
  51. package/dist/commonjs/parsers/manifest/smooth/create_parser.js +1 -4
  52. package/dist/commonjs/parsers/manifest/types.d.ts +1 -6
  53. package/dist/commonjs/parsers/manifest/types.d.ts.map +1 -1
  54. package/dist/commonjs/public_types.d.ts +69 -0
  55. package/dist/commonjs/public_types.d.ts.map +1 -1
  56. package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  57. package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
  58. package/dist/es2017/compat/browser_detection.d.ts +3 -1
  59. package/dist/es2017/compat/browser_detection.d.ts.map +1 -1
  60. package/dist/es2017/compat/browser_detection.js +7 -1
  61. package/dist/es2017/compat/can_reuse_media_keys.d.ts +2 -0
  62. package/dist/es2017/compat/can_reuse_media_keys.d.ts.map +1 -1
  63. package/dist/es2017/compat/can_reuse_media_keys.js +4 -2
  64. package/dist/es2017/compat/eme/custom_media_keys/types.d.ts +3 -0
  65. package/dist/es2017/compat/eme/custom_media_keys/types.d.ts.map +1 -1
  66. package/dist/es2017/compat/eme/custom_media_keys/webkit_media_keys.d.ts +1 -1
  67. package/dist/es2017/compat/eme/custom_media_keys/webkit_media_keys.d.ts.map +1 -1
  68. package/dist/es2017/compat/eme/eme-api-implementation.d.ts +2 -2
  69. package/dist/es2017/compat/eme/eme-api-implementation.d.ts.map +1 -1
  70. package/dist/es2017/compat/eme/eme-api-implementation.js +19 -2
  71. package/dist/es2017/compat/eme/get_init_data.d.ts +3 -1
  72. package/dist/es2017/compat/eme/get_init_data.d.ts.map +1 -1
  73. package/dist/es2017/compat/eme/get_init_data.js +2 -2
  74. package/dist/es2017/compat/event_listeners.d.ts +21 -19
  75. package/dist/es2017/compat/event_listeners.d.ts.map +1 -1
  76. package/dist/es2017/compat/event_listeners.js +0 -11
  77. package/dist/es2017/core/cmcd/cmcd_data_builder.js +1 -1
  78. package/dist/es2017/core/main/worker/worker_main.js +1 -0
  79. package/dist/es2017/core/segment_sinks/inventory/segment_inventory.js +8 -5
  80. package/dist/es2017/main_thread/api/public_api.d.ts +22 -10
  81. package/dist/es2017/main_thread/api/public_api.d.ts.map +1 -1
  82. package/dist/es2017/main_thread/api/public_api.js +64 -24
  83. package/dist/es2017/main_thread/decrypt/content_decryptor.d.ts +8 -0
  84. package/dist/es2017/main_thread/decrypt/content_decryptor.d.ts.map +1 -1
  85. package/dist/es2017/main_thread/decrypt/content_decryptor.js +47 -2
  86. package/dist/es2017/main_thread/decrypt/types.d.ts +5 -0
  87. package/dist/es2017/main_thread/decrypt/types.d.ts.map +1 -1
  88. package/dist/es2017/main_thread/init/media_source_content_initializer.js +3 -3
  89. package/dist/es2017/main_thread/tracks_store/tracks_store.d.ts +12 -4
  90. package/dist/es2017/main_thread/tracks_store/tracks_store.d.ts.map +1 -1
  91. package/dist/es2017/main_thread/tracks_store/tracks_store.js +18 -8
  92. package/dist/es2017/manifest/classes/adaptation.d.ts +13 -13
  93. package/dist/es2017/manifest/classes/adaptation.d.ts.map +1 -1
  94. package/dist/es2017/manifest/classes/adaptation.js +1 -1
  95. package/dist/es2017/manifest/classes/representation.d.ts +20 -12
  96. package/dist/es2017/manifest/classes/representation.d.ts.map +1 -1
  97. package/dist/es2017/manifest/classes/representation.js +8 -8
  98. package/dist/es2017/manifest/utils.d.ts +4 -3
  99. package/dist/es2017/manifest/utils.d.ts.map +1 -1
  100. package/dist/es2017/manifest/utils.js +13 -7
  101. package/dist/es2017/parsers/manifest/dash/common/content_protection_parser.js +4 -4
  102. package/dist/es2017/parsers/manifest/local/parse_local_manifest.js +1 -1
  103. package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
  104. package/dist/es2017/parsers/manifest/smooth/create_parser.js +1 -4
  105. package/dist/es2017/parsers/manifest/types.d.ts +1 -6
  106. package/dist/es2017/parsers/manifest/types.d.ts.map +1 -1
  107. package/dist/es2017/public_types.d.ts +69 -0
  108. package/dist/es2017/public_types.d.ts.map +1 -1
  109. package/dist/rx-player.js +18 -18
  110. package/dist/worker.js +5 -5
  111. package/package.json +2 -2
  112. package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
  113. package/src/compat/__tests__/can_reuse_media_keys.test.ts +33 -2
  114. package/src/compat/browser_detection.ts +9 -0
  115. package/src/compat/can_reuse_media_keys.ts +4 -2
  116. package/src/compat/eme/custom_media_keys/types.ts +4 -0
  117. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +1 -1
  118. package/src/compat/eme/eme-api-implementation.ts +35 -4
  119. package/src/compat/eme/get_init_data.ts +5 -3
  120. package/src/compat/event_listeners.ts +30 -5
  121. package/src/core/cmcd/cmcd_data_builder.ts +1 -1
  122. package/src/core/main/worker/worker_main.ts +1 -0
  123. package/src/core/segment_sinks/inventory/segment_inventory.ts +7 -4
  124. package/src/main_thread/api/public_api.ts +96 -24
  125. package/src/main_thread/decrypt/content_decryptor.ts +60 -3
  126. package/src/main_thread/decrypt/types.ts +5 -0
  127. package/src/main_thread/init/media_source_content_initializer.ts +3 -3
  128. package/src/main_thread/tracks_store/tracks_store.ts +30 -6
  129. package/src/manifest/classes/adaptation.ts +14 -16
  130. package/src/manifest/classes/representation.ts +26 -18
  131. package/src/manifest/utils.ts +14 -6
  132. package/src/parsers/manifest/dash/common/content_protection_parser.ts +4 -4
  133. package/src/parsers/manifest/local/parse_local_manifest.ts +1 -1
  134. package/src/parsers/manifest/smooth/create_parser.ts +2 -6
  135. package/src/parsers/manifest/types.ts +1 -7
  136. package/src/public_types.ts +73 -0
  137. package/vitest.config.mjs +1 -0
@@ -142,7 +142,7 @@ class Player extends EventEmitter {
142
142
  // Workaround to support Firefox autoplay on FF 42.
143
143
  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
144
144
  videoElement.preload = "auto";
145
- this.version = /* PLAYER_VERSION */ "4.2.0-dev.2024081400";
145
+ this.version = /* PLAYER_VERSION */ "4.2.0-dev.2024090300";
146
146
  this.log = log;
147
147
  this.state = "STOPPED";
148
148
  this.videoElement = videoElement;
@@ -1362,11 +1362,11 @@ class Player extends EventEmitter {
1362
1362
  /**
1363
1363
  * Returns every available audio tracks for a given Period - or the current
1364
1364
  * one if no `periodId` is given.
1365
- * @param {string|undefined} [periodId]
1365
+ * @param {string|Object|undefined} [arg]
1366
1366
  * @returns {Array.<Object>}
1367
1367
  */
1368
- getAvailableAudioTracks(periodId) {
1369
- var _a;
1368
+ getAvailableAudioTracks(arg) {
1369
+ var _a, _b;
1370
1370
  if (this._priv_contentInfos === null) {
1371
1371
  return [];
1372
1372
  }
@@ -1374,7 +1374,16 @@ class Player extends EventEmitter {
1374
1374
  if (isDirectFile) {
1375
1375
  return (_a = mediaElementTracksStore === null || mediaElementTracksStore === void 0 ? void 0 : mediaElementTracksStore.getAvailableAudioTracks()) !== null && _a !== void 0 ? _a : [];
1376
1376
  }
1377
- return this._priv_callTracksStoreGetterSetter(periodId, [], (tcm, periodRef) => { var _a; return (_a = tcm.getAvailableAudioTracks(periodRef)) !== null && _a !== void 0 ? _a : []; });
1377
+ let periodId;
1378
+ let filterPlayableRepresentations;
1379
+ if (typeof arg === "string") {
1380
+ periodId = arg;
1381
+ }
1382
+ else {
1383
+ periodId = arg === null || arg === void 0 ? void 0 : arg.periodId;
1384
+ filterPlayableRepresentations = (_b = arg === null || arg === void 0 ? void 0 : arg.filterPlayableRepresentations) !== null && _b !== void 0 ? _b : true;
1385
+ }
1386
+ return this._priv_callTracksStoreGetterSetter(periodId, [], (tcm, periodRef) => { var _a; return (_a = tcm.getAvailableAudioTracks(periodRef, filterPlayableRepresentations)) !== null && _a !== void 0 ? _a : []; });
1378
1387
  }
1379
1388
  /**
1380
1389
  * Returns every available text tracks for a given Period - or the current
@@ -1395,11 +1404,11 @@ class Player extends EventEmitter {
1395
1404
  }
1396
1405
  /**
1397
1406
  * Returns every available video tracks for the current Period.
1398
- * @param {string|undefined} [periodId]
1407
+ * @param {string|Object|undefined} [arg]
1399
1408
  * @returns {Array.<Object>}
1400
1409
  */
1401
- getAvailableVideoTracks(periodId) {
1402
- var _a;
1410
+ getAvailableVideoTracks(arg) {
1411
+ var _a, _b;
1403
1412
  if (this._priv_contentInfos === null) {
1404
1413
  return [];
1405
1414
  }
@@ -1407,14 +1416,24 @@ class Player extends EventEmitter {
1407
1416
  if (isDirectFile) {
1408
1417
  return (_a = mediaElementTracksStore === null || mediaElementTracksStore === void 0 ? void 0 : mediaElementTracksStore.getAvailableVideoTracks()) !== null && _a !== void 0 ? _a : [];
1409
1418
  }
1410
- return this._priv_callTracksStoreGetterSetter(periodId, [], (tcm, periodRef) => { var _a; return (_a = tcm.getAvailableVideoTracks(periodRef)) !== null && _a !== void 0 ? _a : []; });
1419
+ let periodId;
1420
+ let filterPlayableRepresentations;
1421
+ if (typeof arg === "string") {
1422
+ periodId = arg;
1423
+ }
1424
+ else {
1425
+ periodId = arg === null || arg === void 0 ? void 0 : arg.periodId;
1426
+ filterPlayableRepresentations = (_b = arg === null || arg === void 0 ? void 0 : arg.filterPlayableRepresentations) !== null && _b !== void 0 ? _b : true;
1427
+ }
1428
+ return this._priv_callTracksStoreGetterSetter(periodId, [], (tcm, periodRef) => { var _a; return (_a = tcm.getAvailableVideoTracks(periodRef, filterPlayableRepresentations)) !== null && _a !== void 0 ? _a : []; });
1411
1429
  }
1412
1430
  /**
1413
1431
  * Returns currently chosen audio language for the current Period.
1414
- * @param {string|undefined} [periodId]
1432
+ * @param {string|Object|undefined} [arg]
1415
1433
  * @returns {Object|null|undefined}
1416
1434
  */
1417
- getAudioTrack(periodId) {
1435
+ getAudioTrack(arg) {
1436
+ var _a;
1418
1437
  if (this._priv_contentInfos === null) {
1419
1438
  return undefined;
1420
1439
  }
@@ -1425,7 +1444,16 @@ class Player extends EventEmitter {
1425
1444
  }
1426
1445
  return mediaElementTracksStore.getChosenAudioTrack();
1427
1446
  }
1428
- return this._priv_callTracksStoreGetterSetter(periodId, undefined, (tcm, periodRef) => tcm.getChosenAudioTrack(periodRef));
1447
+ let periodId;
1448
+ let filterPlayableRepresentations;
1449
+ if (typeof arg === "string") {
1450
+ periodId = arg;
1451
+ }
1452
+ else {
1453
+ periodId = arg === null || arg === void 0 ? void 0 : arg.periodId;
1454
+ filterPlayableRepresentations = (_a = arg === null || arg === void 0 ? void 0 : arg.filterPlayableRepresentations) !== null && _a !== void 0 ? _a : true;
1455
+ }
1456
+ return this._priv_callTracksStoreGetterSetter(periodId, undefined, (tcm, periodRef) => tcm.getChosenAudioTrack(periodRef, filterPlayableRepresentations));
1429
1457
  }
1430
1458
  /**
1431
1459
  * Returns currently chosen subtitle for the current Period.
@@ -1447,10 +1475,11 @@ class Player extends EventEmitter {
1447
1475
  }
1448
1476
  /**
1449
1477
  * Returns currently chosen video track for the current Period.
1450
- * @param {string|undefined} [periodId]
1478
+ * @param {string|Object|undefined} [arg]
1451
1479
  * @returns {Object|null|undefined}
1452
1480
  */
1453
- getVideoTrack(periodId) {
1481
+ getVideoTrack(arg) {
1482
+ var _a;
1454
1483
  if (this._priv_contentInfos === null) {
1455
1484
  return undefined;
1456
1485
  }
@@ -1461,7 +1490,16 @@ class Player extends EventEmitter {
1461
1490
  }
1462
1491
  return mediaElementTracksStore.getChosenVideoTrack();
1463
1492
  }
1464
- return this._priv_callTracksStoreGetterSetter(periodId, undefined, (tcm, periodRef) => tcm.getChosenVideoTrack(periodRef));
1493
+ let periodId;
1494
+ let filterPlayableRepresentations;
1495
+ if (typeof arg === "string") {
1496
+ periodId = arg;
1497
+ }
1498
+ else {
1499
+ periodId = arg === null || arg === void 0 ? void 0 : arg.periodId;
1500
+ filterPlayableRepresentations = (_a = arg === null || arg === void 0 ? void 0 : arg.filterPlayableRepresentations) !== null && _a !== void 0 ? _a : true;
1501
+ }
1502
+ return this._priv_callTracksStoreGetterSetter(periodId, undefined, (tcm, periodRef) => tcm.getChosenVideoTrack(periodRef, filterPlayableRepresentations));
1465
1503
  }
1466
1504
  /**
1467
1505
  * Update the audio language for the current Period.
@@ -1981,10 +2019,12 @@ class Player extends EventEmitter {
1981
2019
  }
1982
2020
  switch (elt.adaptation.type) {
1983
2021
  case "audio":
1984
- isCurrent = ((_a = tStore.getChosenAudioTrack(periodRef)) === null || _a === void 0 ? void 0 : _a.id) === elt.adaptation.id;
2022
+ isCurrent =
2023
+ ((_a = tStore.getChosenAudioTrack(periodRef, false)) === null || _a === void 0 ? void 0 : _a.id) === elt.adaptation.id;
1985
2024
  break;
1986
2025
  case "video":
1987
- isCurrent = ((_b = tStore.getChosenVideoTrack(periodRef)) === null || _b === void 0 ? void 0 : _b.id) === elt.adaptation.id;
2026
+ isCurrent =
2027
+ ((_b = tStore.getChosenVideoTrack(periodRef, false)) === null || _b === void 0 ? void 0 : _b.id) === elt.adaptation.id;
1988
2028
  break;
1989
2029
  case "text":
1990
2030
  isCurrent = ((_c = tStore.getChosenTextTrack(periodRef)) === null || _c === void 0 ? void 0 : _c.id) === elt.adaptation.id;
@@ -2030,11 +2070,11 @@ class Player extends EventEmitter {
2030
2070
  if (!isNullOrUndefined(tracksStore)) {
2031
2071
  const periodRef = tracksStore.getPeriodObjectFromPeriod(period);
2032
2072
  if (periodRef) {
2033
- const audioTrack = tracksStore.getChosenAudioTrack(periodRef);
2073
+ const audioTrack = tracksStore.getChosenAudioTrack(periodRef, true);
2034
2074
  this._priv_triggerEventIfNotStopped("audioTrackChange", audioTrack, cancelSignal);
2035
2075
  const textTrack = tracksStore.getChosenTextTrack(periodRef);
2036
2076
  this._priv_triggerEventIfNotStopped("textTrackChange", textTrack, cancelSignal);
2037
- const videoTrack = tracksStore.getChosenVideoTrack(periodRef);
2077
+ const videoTrack = tracksStore.getChosenVideoTrack(periodRef, true);
2038
2078
  this._priv_triggerEventIfNotStopped("videoTrackChange", videoTrack, cancelSignal);
2039
2079
  }
2040
2080
  }
@@ -2154,7 +2194,7 @@ class Player extends EventEmitter {
2154
2194
  }
2155
2195
  switch (type) {
2156
2196
  case "audio":
2157
- const audioTrack = tracksStore.getChosenAudioTrack(periodRef);
2197
+ const audioTrack = tracksStore.getChosenAudioTrack(periodRef, true);
2158
2198
  this._priv_triggerEventIfNotStopped("audioTrackChange", audioTrack, cancelSignal);
2159
2199
  break;
2160
2200
  case "text":
@@ -2162,7 +2202,7 @@ class Player extends EventEmitter {
2162
2202
  this._priv_triggerEventIfNotStopped("textTrackChange", textTrack, cancelSignal);
2163
2203
  break;
2164
2204
  case "video":
2165
- const videoTrack = tracksStore.getChosenVideoTrack(periodRef);
2205
+ const videoTrack = tracksStore.getChosenVideoTrack(periodRef, true);
2166
2206
  this._priv_triggerEventIfNotStopped("videoTrackChange", videoTrack, cancelSignal);
2167
2207
  break;
2168
2208
  }
@@ -2361,11 +2401,11 @@ class Player extends EventEmitter {
2361
2401
  }
2362
2402
  switch (trackType) {
2363
2403
  case "video":
2364
- const videoTracks = tracksStore.getAvailableVideoTracks(periodRef);
2404
+ const videoTracks = tracksStore.getAvailableVideoTracks(periodRef, true);
2365
2405
  this._priv_triggerEventIfNotStopped("availableVideoTracksChange", videoTracks !== null && videoTracks !== void 0 ? videoTracks : [], cancelSignal);
2366
2406
  break;
2367
2407
  case "audio":
2368
- const audioTracks = tracksStore.getAvailableAudioTracks(periodRef);
2408
+ const audioTracks = tracksStore.getAvailableAudioTracks(periodRef, true);
2369
2409
  this._priv_triggerEventIfNotStopped("availableAudioTracksChange", audioTracks !== null && audioTracks !== void 0 ? audioTracks : [], cancelSignal);
2370
2410
  break;
2371
2411
  case "text":
@@ -2410,5 +2450,5 @@ class Player extends EventEmitter {
2410
2450
  * Use of a WeakSet ensure the object is garbage collected if it's not used anymore.
2411
2451
  */
2412
2452
  Player._priv_currentlyUsedVideoElements = new WeakSet();
2413
- Player.version = /* PLAYER_VERSION */ "4.2.0-dev.2024081400";
2453
+ Player.version = /* PLAYER_VERSION */ "4.2.0-dev.2024090300";
2414
2454
  export default Player;
@@ -164,6 +164,14 @@ export default class ContentDecryptor extends EventEmitter<IContentDecryptorEven
164
164
  */
165
165
  private _processInitializationData;
166
166
  private _tryToUseAlreadyCreatedSession;
167
+ /**
168
+ * Remove the session corresponding to the initData provided, and close it.
169
+ * It does nothing if no session was found for this initData.
170
+ * @param {Object} initData : The initialization data corresponding to the session
171
+ * that need to be removed
172
+ * @param {Object} mediaKeysData : The media keys data
173
+ */
174
+ private removeSessionForInitData;
167
175
  /**
168
176
  * Callback that should be called if an error that made the current
169
177
  * `ContentDecryptor` instance unusable arised.
@@ -1 +1 @@
1
- {"version":3,"file":"content_decryptor.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/decrypt/content_decryptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAO9E,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AAIzE,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAerD,OAAO,KAAK,EACV,eAAe,EAEf,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAA8B,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAU5E,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,YAAY,CAAC,sBAAsB,CAAC;IAChF;;;;;;;;;;;;OAYG;IACI,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpC;;;OAGG;IACI,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAE3B;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU,CAA6B;IAE/C;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAElC;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc,CAAoB;IAE1C;;OAEG;IACH,OAAO,CAAC,4BAA4B,CAAoB;IAExD;;;;;OAKG;WACW,UAAU,IAAI,OAAO;IAInC;;;;;;;;;;;;;OAaG;gBACS,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE;IAqEtE;;;;OAIG;IACI,QAAQ,IAAI,qBAAqB;IAIxC;;;;;;;;OAQG;IACI,MAAM,IAAI,IAAI;IAgFrB;;;;;;OAMG;IACI,OAAO;IAYd;;;;;;;;;;OAUG;IACI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAgB7E;;;;;;;;OAQG;IACI,oBAAoB,CAAC,kBAAkB,EAAE,eAAe,GAAG,IAAI;IAqBtE;;;;;;;;OAQG;YACW,0BAA0B;IAiTxC,OAAO,CAAC,8BAA8B;IA0HtC;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IAuBrB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAOlB;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAUpC;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;CAQ7B;AAeD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,UAAU,EAAE,EAC5B,YAAY,EAAE,UAAU,EAAE,GACzB,UAAU,EAAE,CAId;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,UAAU,EAAE,GACtB,UAAU,EAAE,CAUd;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,kBAAkB,EAAE,wBAAwB,EAC5C,SAAS,EAAE,UAAU,EAAE,GACtB,UAAU,EAAE,CAcd"}
1
+ {"version":3,"file":"content_decryptor.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/decrypt/content_decryptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAO9E,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AAIzE,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAerD,OAAO,KAAK,EACV,eAAe,EAEf,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAA8B,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAU5E,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,YAAY,CAAC,sBAAsB,CAAC;IAChF;;;;;;;;;;;;OAYG;IACI,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpC;;;OAGG;IACI,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAE3B;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU,CAA6B;IAE/C;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAElC;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc,CAAoB;IAE1C;;OAEG;IACH,OAAO,CAAC,4BAA4B,CAAoB;IAExD;;;;;OAKG;WACW,UAAU,IAAI,OAAO;IAInC;;;;;;;;;;;;;OAaG;gBACS,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE;IAqEtE;;;;OAIG;IACI,QAAQ,IAAI,qBAAqB;IAIxC;;;;;;;;OAQG;IACI,MAAM,IAAI,IAAI;IAgFrB;;;;;;OAMG;IACI,OAAO;IAYd;;;;;;;;;;OAUG;IACI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAgB7E;;;;;;;;OAQG;IACI,oBAAoB,CAAC,kBAAkB,EAAE,eAAe,GAAG,IAAI;IAqBtE;;;;;;;;OAQG;YACW,0BAA0B;IAiTxC,OAAO,CAAC,8BAA8B;IAyItC;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAmChC;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IAuBrB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAOlB;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAUpC;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;CAQ7B;AAeD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,UAAU,EAAE,EAC5B,YAAY,EAAE,UAAU,EAAE,GACzB,UAAU,EAAE,CAId;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,UAAU,EAAE,GACtB,UAAU,EAAE,CAUd;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,kBAAkB,EAAE,wBAAwB,EAC5C,SAAS,EAAE,UAAU,EAAE,GACtB,UAAU,EAAE,CAcd"}
@@ -509,6 +509,20 @@ export default class ContentDecryptor extends EventEmitter {
509
509
  if (compatibleSessionInfo === undefined) {
510
510
  return false;
511
511
  }
512
+ /**
513
+ * On Safari using Directfile, the old EME implementation triggers
514
+ * the "webkitneedkey" event instead of "encrypted". There's an issue in Safari
515
+ * where "webkitneedkey" fires too early before all tracks are added from an HLS playlist.
516
+ * Safari incorrectly assumes some keys are missing for these tracks,
517
+ * leading to repeated "webkitneedkey" events. Because RxPlayer recognizes
518
+ * it already has a session for these keys and ignores the events,
519
+ * the content remains frozen. To resolve this, the session is re-created.
520
+ */
521
+ const forceSessionRecreation = initializationData.forceSessionRecreation;
522
+ if (forceSessionRecreation === true) {
523
+ this.removeSessionForInitData(initializationData, mediaKeysData);
524
+ return false;
525
+ }
512
526
  // Check if the compatible session is blacklisted
513
527
  const blacklistedSessionError = compatibleSessionInfo.blacklistedSessionError;
514
528
  if (!isNullOrUndefined(blacklistedSessionError)) {
@@ -592,6 +606,37 @@ export default class ContentDecryptor extends EventEmitter {
592
606
  }
593
607
  return false;
594
608
  }
609
+ /**
610
+ * Remove the session corresponding to the initData provided, and close it.
611
+ * It does nothing if no session was found for this initData.
612
+ * @param {Object} initData : The initialization data corresponding to the session
613
+ * that need to be removed
614
+ * @param {Object} mediaKeysData : The media keys data
615
+ */
616
+ removeSessionForInitData(initData, mediaKeysData) {
617
+ const { stores } = mediaKeysData;
618
+ /** Remove the session and close it from the loadedSessionStore */
619
+ const entry = stores.loadedSessionsStore.reuse(initData);
620
+ if (entry !== null) {
621
+ stores.loadedSessionsStore
622
+ .closeSession(entry.mediaKeySession)
623
+ .catch(() => log.error("DRM: Cannot close the session from the loaded session store"));
624
+ }
625
+ /**
626
+ * If set, a currently-used key session is already compatible to this
627
+ * initialization data.
628
+ */
629
+ const compatibleSessionInfo = arrayFind(this._currentSessions, (x) => x.record.isCompatibleWith(initData));
630
+ if (compatibleSessionInfo === undefined) {
631
+ return;
632
+ }
633
+ /** Remove the session from the currentSessions */
634
+ const indexOf = this._currentSessions.indexOf(compatibleSessionInfo);
635
+ if (indexOf !== -1) {
636
+ log.debug("DRM: A session from a processed init is removed due to forceSessionRecreation policy.");
637
+ this._currentSessions.splice(indexOf, 1);
638
+ }
639
+ }
595
640
  /**
596
641
  * Callback that should be called if an error that made the current
597
642
  * `ContentDecryptor` instance unusable arised.
@@ -856,8 +901,8 @@ function addKeyIdsFromPeriod(set, period) {
856
901
  for (const representation of adaptation.representations) {
857
902
  if (representation.contentProtections !== undefined &&
858
903
  representation.contentProtections.keyIds !== undefined) {
859
- for (const kidInf of representation.contentProtections.keyIds) {
860
- set.add(kidInf.keyId);
904
+ for (const kid of representation.contentProtections.keyIds) {
905
+ set.add(kid);
861
906
  }
862
907
  }
863
908
  }
@@ -109,6 +109,11 @@ export interface IProtectionData {
109
109
  /** Protection initialization data actually processed by the `ContentDecryptor`. */
110
110
  export interface IProcessedProtectionData extends Omit<IProtectionData, "values"> {
111
111
  values: InitDataValuesContainer;
112
+ /**
113
+ * Enforce to recreate the media key session if there is already a session created
114
+ * with this init data
115
+ */
116
+ forceSessionRecreation?: boolean | undefined;
112
117
  }
113
118
  /**
114
119
  * Represent the initialization data linked to a key system that can be used to
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/decrypt/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/decrypt/types.ts"],"names":[],"mappings":"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"}
@@ -785,17 +785,17 @@ function updateKeyIdsDecipherabilityOnManifest(manifest, whitelistedKeyIds, blac
785
785
  if (contentKIDs !== undefined) {
786
786
  for (const elt of contentKIDs) {
787
787
  for (const blacklistedKeyId of blacklistedKeyIds) {
788
- if (areArraysOfNumbersEqual(blacklistedKeyId, elt.keyId)) {
788
+ if (areArraysOfNumbersEqual(blacklistedKeyId, elt)) {
789
789
  return false;
790
790
  }
791
791
  }
792
792
  for (const whitelistedKeyId of whitelistedKeyIds) {
793
- if (areArraysOfNumbersEqual(whitelistedKeyId, elt.keyId)) {
793
+ if (areArraysOfNumbersEqual(whitelistedKeyId, elt)) {
794
794
  return true;
795
795
  }
796
796
  }
797
797
  for (const delistedKeyId of delistedKeyIds) {
798
- if (areArraysOfNumbersEqual(delistedKeyId, elt.keyId)) {
798
+ if (areArraysOfNumbersEqual(delistedKeyId, elt)) {
799
799
  return undefined;
800
800
  }
801
801
  }
@@ -229,7 +229,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
229
229
  * `null` if audio tracks were disabled and `undefined` if the Period is not
230
230
  * known.
231
231
  */
232
- getChosenAudioTrack(periodObj: ITSPeriodObject): IAudioTrack | null;
232
+ getChosenAudioTrack(periodObj: ITSPeriodObject, filterPlayableRepresentations: boolean): IAudioTrack | null;
233
233
  /**
234
234
  * Returns an object describing the chosen text track for the given text
235
235
  * Period.
@@ -251,7 +251,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
251
251
  * @param {Object} periodObj - The concerned Period's object
252
252
  * @returns {Object|null} - The video track chosen for this Period
253
253
  */
254
- getChosenVideoTrack(periodObj: ITSPeriodObject): IVideoTrack | null;
254
+ getChosenVideoTrack(periodObj: ITSPeriodObject, filterPlayableRepresentations: boolean): IVideoTrack | null;
255
255
  /**
256
256
  * Returns all available audio tracks for a given Period, as an array of
257
257
  * objects.
@@ -259,9 +259,13 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
259
259
  * Returns `undefined` if the given Period's id is not known.
260
260
  *
261
261
  * @param {Object} periodObj - The concerned Period's object
262
+ * @param {boolean} filterPlayableRepresentations - If `true`, only
263
+ * representations considered to be "playable" will be included in the
264
+ * returned response.
265
+ * If `false`, the response should contain all linked representations.
262
266
  * @returns {Array.<Object>}
263
267
  */
264
- getAvailableAudioTracks(periodObj: ITSPeriodObject): IAvailableAudioTrack[] | undefined;
268
+ getAvailableAudioTracks(periodObj: ITSPeriodObject, filterPlayableRepresentations: boolean): IAvailableAudioTrack[] | undefined;
265
269
  /**
266
270
  * Returns all available text tracks for a given Period, as an array of
267
271
  * objects.
@@ -279,9 +283,13 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
279
283
  * Returns `undefined` if the given Period's id is not known.
280
284
  *
281
285
  * @param {Object} periodObj - The concerned Period's object
286
+ * @param {boolean} filterPlayableRepresentations - If `true`, only
287
+ * representations considered to be "playable" will be included in the
288
+ * returned response.
289
+ * If `false`, the response should contain all linked representations.
282
290
  * @returns {Array.<Object>}
283
291
  */
284
- getAvailableVideoTracks(periodObj: ITSPeriodObject): IAvailableVideoTrack[] | undefined;
292
+ getAvailableVideoTracks(periodObj: ITSPeriodObject, filterPlayableRepresentations: boolean): IAvailableVideoTrack[] | undefined;
285
293
  getLockedAudioRepresentations(periodObj: ITSPeriodObject): string[] | null;
286
294
  getLockedVideoRepresentations(periodObj: ITSPeriodObject): string[] | null;
287
295
  lockAudioRepresentations(periodObj: ITSPeriodObject, lockSettings: IAudioRepresentationsLockSettings): void;
@@ -1 +1 @@
1
- {"version":3,"file":"tracks_store.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/tracks_store/tracks_store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAGlF,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EACV,kCAAkC,EAClC,WAAW,EACX,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EACjC,OAAO,EACP,UAAU,EACV,kCAAkC,EAClC,WAAW,EACX,wBAAwB,EACxB,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAG5B,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAGrD,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,eAAe,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,YAAY,CAAC,kBAAkB,CAAC;IACvE;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAoB;IAE7C;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAU;IAE7B;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB,CAA4C;IAErE,gEAAgE;IAChE,OAAO,CAAC,wBAAwB,CAAU;IAE1C;;;;OAIG;IACH,OAAO,CAAC,+BAA+B,CAA2B;gBAEtD,IAAI,EAAE;QAChB,qBAAqB,EAAE,OAAO,CAAC;QAC/B,8BAA8B,EAAE,wBAAwB,GAAG,SAAS,CAAC;KACtE;IAWD;;;;OAIG;IACI,mBAAmB,IAAI,OAAO,EAAE;IASvC;;;OAGG;IACI,4BAA4B,IAAI,IAAI;IAI3C;;;;OAIG;IACI,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB;IAoM5C,wBAAwB;IAQ/B;;;;;;;;;;OAUG;IACI,iBAAiB,CACtB,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,EACtC,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,eAAe,CAAC,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC,GACnE,IAAI;IAkIP;;;;;OAKG;IACI,oBAAoB,CACzB,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,EACtC,MAAM,EAAE,eAAe,GACtB,IAAI;IAwBP;;;;;;;;;;;;;;;;;OAiBG;IACI,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG,SAAS;IAQtF;;;;;;;;;;;;;OAaG;IACI,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIpE,2BAA2B,IAAI,IAAI;IAQnC,0BAA0B,IAAI,IAAI;IAQzC;;;;;;OAMG;IACI,kBAAkB,IAAI,IAAI;IAejC;;OAEG;IACI,kBAAkB,IAAI,OAAO;IAIpC;;;;;;;;;;;OAWG;IACI,aAAa,CAAC,OAAO,EAAE;QAC5B,SAAS,EAAE,eAAe,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,wBAAwB,GAAG,SAAS,CAAC;QACpD,qBAAqB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACvC,wBAAwB,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9C,GAAG,IAAI;IAkBR;;;;OAIG;IACI,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAWvE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,oBAAoB;IA6E5B;;;;;;;;;;;OAWG;IACI,aAAa,CAAC,OAAO,EAAE;QAC5B,SAAS,EAAE,eAAe,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,wBAAwB,GAAG,SAAS,CAAC;QACpD,qBAAqB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACvC,wBAAwB,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9C,GAAG,IAAI;IA0ER;;;;;;OAMG;IACI,YAAY,CACjB,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GACrC,IAAI;IAmCP;;;;;;;;;;;;;;;;;OAiBG;IACI,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI;IAM1E;;;;;;;;;OASG;IACI,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,UAAU,GAAG,IAAI;IAMxE;;;;;;;;;OASG;IACI,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI;IAQ1E;;;;;;;;OAQG;IACI,uBAAuB,CAC5B,SAAS,EAAE,eAAe,GACzB,oBAAoB,EAAE,GAAG,SAAS;IAYrC;;;;;;;;OAQG;IACI,sBAAsB,CAC3B,SAAS,EAAE,eAAe,GACzB,mBAAmB,EAAE,GAAG,SAAS;IAapC;;;;;;;;OAQG;IACI,uBAAuB,CAC5B,SAAS,EAAE,eAAe,GACzB,oBAAoB,EAAE,GAAG,SAAS;IA0B9B,6BAA6B,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,EAAE,GAAG,IAAI;IAS1E,6BAA6B,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,EAAE,GAAG,IAAI;IAS1E,wBAAwB,CAC7B,SAAS,EAAE,eAAe,EAC1B,YAAY,EAAE,iCAAiC,GAC9C,IAAI;IAmBA,wBAAwB,CAC7B,SAAS,EAAE,eAAe,EAC1B,YAAY,EAAE,iCAAiC,GAC9C,IAAI;IAmBA,0BAA0B,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAW5D,0BAA0B,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAW5D,OAAO,IAAI,IAAI;IAWtB,OAAO,CAAC,uBAAuB;IA+C/B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,yBAAyB;IAyBjC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IA0HnC;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;CAQ/B;AA6FD,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;OAMG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,gBAAgB,CAAC;IACxB;;OAEG;IACH,IAAI,EAAE,eAAe,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,gBAAgB,CAAC;IACxB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,UAAU,gBAAgB;IACxB;;;;OAIG;IACH,cAAc,EACV;QACE,yDAAyD;QACzD,UAAU,EAAE,mBAAmB,CAAC;QAChC,gEAAgE;QAChE,aAAa,EAAE,wBAAwB,CAAC;QACxC;;;;WAIG;QACH,qBAAqB,EAAE,eAAe,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;KACvE,GACD,IAAI,GACJ,SAAS,CAAC;IACd;;;;;;;;OAQG;IACH,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,cAAc,EACV;QACE,yDAAyD;QACzD,UAAU,EAAE,mBAAmB,CAAC;QAChC,gEAAgE;QAChE,aAAa,EAAE,QAAQ,CAAC;QACxB;;;;WAIG;QACH,qBAAqB,EAAE,eAAe,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;KACvE,GACD,IAAI,GACJ,SAAS,CAAC;IACd;;;;;;;;OAQG;IACH,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,cAAc,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,CAAC;IACxD;;;;;;;;OAQG;IACH,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;CACpC;AAED,KAAK,oBAAoB,GAAG;IAC1B;;;;;OAKG;IACH,UAAU,EAAE,mBAAmB,CAAC;IAChC,gEAAgE;IAChE,aAAa,EAAE,wBAAwB,CAAC;IACxC;;;;OAIG;IACH,cAAc,EAAE,mBAAmB,CAAC;IACpC;;;;OAIG;IACH,qBAAqB,EAAE,eAAe,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;CACvE,GAAG,IAAI,CAAC;AAET,yCAAyC;AACzC,UAAU,kBAAkB;IAC1B,mBAAmB,EAAE,OAAO,EAAE,CAAC;IAC/B,yBAAyB,EAAE,iCAAiC,CAAC;IAC7D,WAAW,EAAE,wBAAwB,CAAC;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,iCAAiC;IAChD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,kCAAkC,GAAG,SAAS,CAAC;CAChE;AAED,MAAM,WAAW,iCAAiC;IAChD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,kCAAkC,GAAG,SAAS,CAAC;CAChE"}
1
+ {"version":3,"file":"tracks_store.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/tracks_store/tracks_store.ts"],"names":[],"mappings":"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"}
@@ -690,10 +690,10 @@ export default class TracksStore extends EventEmitter {
690
690
  * `null` if audio tracks were disabled and `undefined` if the Period is not
691
691
  * known.
692
692
  */
693
- getChosenAudioTrack(periodObj) {
693
+ getChosenAudioTrack(periodObj, filterPlayableRepresentations) {
694
694
  return isNullOrUndefined(periodObj.audio.storedSettings)
695
695
  ? null
696
- : toAudioTrack(periodObj.audio.storedSettings.adaptation, true);
696
+ : toAudioTrack(periodObj.audio.storedSettings.adaptation, filterPlayableRepresentations);
697
697
  }
698
698
  /**
699
699
  * Returns an object describing the chosen text track for the given text
@@ -720,11 +720,11 @@ export default class TracksStore extends EventEmitter {
720
720
  * @param {Object} periodObj - The concerned Period's object
721
721
  * @returns {Object|null} - The video track chosen for this Period
722
722
  */
723
- getChosenVideoTrack(periodObj) {
723
+ getChosenVideoTrack(periodObj, filterPlayableRepresentations) {
724
724
  if (isNullOrUndefined(periodObj.video.storedSettings)) {
725
725
  return null;
726
726
  }
727
- return toVideoTrack(periodObj.video.storedSettings.adaptation, true);
727
+ return toVideoTrack(periodObj.video.storedSettings.adaptation, filterPlayableRepresentations);
728
728
  }
729
729
  /**
730
730
  * Returns all available audio tracks for a given Period, as an array of
@@ -733,9 +733,13 @@ export default class TracksStore extends EventEmitter {
733
733
  * Returns `undefined` if the given Period's id is not known.
734
734
  *
735
735
  * @param {Object} periodObj - The concerned Period's object
736
+ * @param {boolean} filterPlayableRepresentations - If `true`, only
737
+ * representations considered to be "playable" will be included in the
738
+ * returned response.
739
+ * If `false`, the response should contain all linked representations.
736
740
  * @returns {Array.<Object>}
737
741
  */
738
- getAvailableAudioTracks(periodObj) {
742
+ getAvailableAudioTracks(periodObj, filterPlayableRepresentations) {
739
743
  const storedSettings = periodObj.audio.storedSettings;
740
744
  const currentId = !isNullOrUndefined(storedSettings)
741
745
  ? storedSettings.adaptation.id
@@ -743,7 +747,9 @@ export default class TracksStore extends EventEmitter {
743
747
  const adaptations = getSupportedAdaptations(periodObj.period, "audio");
744
748
  return adaptations.map((adaptation) => {
745
749
  const active = currentId === null ? false : currentId === adaptation.id;
746
- return objectAssign(toAudioTrack(adaptation, true), { active });
750
+ return objectAssign(toAudioTrack(adaptation, filterPlayableRepresentations), {
751
+ active,
752
+ });
747
753
  });
748
754
  }
749
755
  /**
@@ -773,9 +779,13 @@ export default class TracksStore extends EventEmitter {
773
779
  * Returns `undefined` if the given Period's id is not known.
774
780
  *
775
781
  * @param {Object} periodObj - The concerned Period's object
782
+ * @param {boolean} filterPlayableRepresentations - If `true`, only
783
+ * representations considered to be "playable" will be included in the
784
+ * returned response.
785
+ * If `false`, the response should contain all linked representations.
776
786
  * @returns {Array.<Object>}
777
787
  */
778
- getAvailableVideoTracks(periodObj) {
788
+ getAvailableVideoTracks(periodObj, filterPlayableRepresentations) {
779
789
  const storedSettings = periodObj.video.storedSettings;
780
790
  const currentId = isNullOrUndefined(storedSettings)
781
791
  ? undefined
@@ -783,7 +793,7 @@ export default class TracksStore extends EventEmitter {
783
793
  const adaptations = getSupportedAdaptations(periodObj.period, "video");
784
794
  return adaptations.map((adaptation) => {
785
795
  const active = currentId === null ? false : currentId === adaptation.id;
786
- const track = toVideoTrack(adaptation, true);
796
+ const track = toVideoTrack(adaptation, filterPlayableRepresentations);
787
797
  const trickModeTracks = track.trickModeTracks !== undefined
788
798
  ? track.trickModeTracks.map((trickModeAdaptation) => {
789
799
  const isActive = currentId === null ? false : currentId === trickModeAdaptation.id;
@@ -35,55 +35,55 @@ export default class Adaptation implements IAdaptationMetadata {
35
35
  */
36
36
  manuallyAdded?: boolean;
37
37
  /**
38
- * @see IRepresentationMetadata
38
+ * @see IAdaptationMetadata.representations
39
39
  */
40
40
  readonly representations: Representation[];
41
41
  /**
42
- * @see IRepresentationMetadata
42
+ * @see ITrackType
43
43
  */
44
44
  readonly type: ITrackType;
45
45
  /**
46
- * @see IRepresentationMetadata
46
+ * @see IAdaptationMetadata.isAudioDescription
47
47
  */
48
48
  isAudioDescription?: boolean;
49
49
  /**
50
- * @see IRepresentationMetadata
50
+ * @see IAdaptationMetadata.isClosedCaption
51
51
  */
52
52
  isClosedCaption?: boolean;
53
53
  /**
54
- * @see IRepresentationMetadata
54
+ * @see IAdaptationMetadata.isForcedSubtitles
55
55
  */
56
56
  isForcedSubtitles?: boolean;
57
57
  /**
58
- * @see IRepresentationMetadata
58
+ * @see IAdaptationMetadata.isSignInterpreted
59
59
  */
60
60
  isSignInterpreted?: boolean;
61
61
  /**
62
- * @see IRepresentationMetadata
62
+ * @see IAdaptationMetadata.isDub
63
63
  */
64
64
  isDub?: boolean;
65
65
  /**
66
- * @see IRepresentationMetadata
66
+ * @see IAdaptationMetadata.language
67
67
  */
68
68
  language?: string;
69
69
  /**
70
- * @see IRepresentationMetadata
70
+ * @see IAdaptationMetadata.normalizedLanguage
71
71
  */
72
72
  normalizedLanguage?: string;
73
73
  /**
74
- * @see IRepresentationMetadata
74
+ * @see IAdaptationSupportStatus
75
75
  */
76
76
  supportStatus: IAdaptationSupportStatus;
77
77
  /**
78
- * @see IRepresentationMetadata
78
+ * @see IAdaptationMetadata.isTrickModeTrack
79
79
  */
80
80
  isTrickModeTrack?: boolean;
81
81
  /**
82
- * @see IRepresentationMetadata
82
+ * @see IAdaptationMetadata.label
83
83
  */
84
84
  label?: string;
85
85
  /**
86
- * @see IRepresentationMetadata
86
+ * @see IAdaptationMetadata.trickModeTracks
87
87
  */
88
88
  readonly trickModeTracks?: Adaptation[];
89
89
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"adaptation.d.ts","sourceRoot":"","sources":["../../../../src/manifest/classes/adaptation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EAEtB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EACV,mBAAmB,EAEnB,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAC3D,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,YAAW,mBAAmB;IAC5D,4DAA4D;IAC5D,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACI,aAAa,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,SAAgB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClD;;OAEG;IACH,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC;;OAEG;IACI,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACpC;;OAEG;IACI,eAAe,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACnC;;OAEG;IACI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACnC;;OAEG;IACI,KAAK,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACI,QAAQ,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACI,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACnC;;OAEG;IACI,aAAa,EAAE,wBAAwB,CAAC;IAC/C;;OAEG;IACI,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAClC;;OAEG;IACI,KAAK,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,SAAgB,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;IAE/C;;;;OAIG;gBAED,gBAAgB,EAAE,iBAAiB,EACnC,kBAAkB,EAAE,iBAAiB,EACrC,OAAO,GAAE;QACP,oBAAoB,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;QACzD,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAClC;IAsHR;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,IAAI;IA4BhE;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS;IAIxE;;;;;;;;;;;;;OAaG;IACH,mBAAmB,IAAI,mBAAmB;CAqB3C"}
1
+ {"version":3,"file":"adaptation.d.ts","sourceRoot":"","sources":["../../../../src/manifest/classes/adaptation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EAEtB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EACV,mBAAmB,EAEnB,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAC3D,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,YAAW,mBAAmB;IAC5D,4DAA4D;IAC5D,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACI,aAAa,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,SAAgB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClD;;OAEG;IACH,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC;;OAEG;IACI,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACpC;;OAEG;IACI,eAAe,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACnC;;OAEG;IACI,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACnC;;OAEG;IACI,KAAK,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACI,QAAQ,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACI,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACnC;;OAEG;IACI,aAAa,EAAE,wBAAwB,CAAC;IAC/C;;OAEG;IACI,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAClC;;OAEG;IACI,KAAK,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,SAAgB,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;IAE/C;;;;OAIG;gBAED,gBAAgB,EAAE,iBAAiB,EACnC,kBAAkB,EAAE,iBAAiB,EACrC,OAAO,GAAE;QACP,oBAAoB,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;QACzD,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAClC;IAoHR;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,IAAI;IA4BhE;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS;IAIxE;;;;;;;;;;;;;OAaG;IACH,mBAAmB,IAAI,mBAAmB;CAqB3C"}
@@ -88,7 +88,7 @@ export default class Adaptation {
88
88
  if (representation.contentProtections !== undefined) {
89
89
  reprObject.contentProtections = {};
90
90
  if (representation.contentProtections.keyIds !== undefined) {
91
- const keyIds = representation.contentProtections.keyIds.map(({ keyId }) => keyId);
91
+ const keyIds = representation.contentProtections.keyIds;
92
92
  reprObject.contentProtections.keyIds = keyIds;
93
93
  }
94
94
  }