rx-player 4.2.0-dev.2024092400 → 4.2.0-dev.2024101500

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 (105) hide show
  1. package/.vscode/settings.json +9 -0
  2. package/CHANGELOG.md +22 -3
  3. package/VERSION +1 -1
  4. package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
  5. package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
  6. package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  7. package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
  8. package/dist/commonjs/core/main/worker/worker_main.d.ts.map +1 -1
  9. package/dist/commonjs/core/main/worker/worker_main.js +3 -0
  10. package/dist/commonjs/core/segment_sinks/segment_buffers_store.d.ts.map +1 -1
  11. package/dist/commonjs/core/stream/adaptation/adaptation_stream.d.ts.map +1 -1
  12. package/dist/commonjs/core/stream/adaptation/adaptation_stream.js +15 -0
  13. package/dist/commonjs/core/stream/representation/representation_stream.d.ts.map +1 -1
  14. package/dist/commonjs/core/stream/representation/representation_stream.js +2 -0
  15. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.d.ts.map +1 -1
  16. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +85 -8
  17. package/dist/commonjs/main_thread/api/debug/modules/general_info.js +1 -1
  18. package/dist/commonjs/main_thread/api/public_api.js +2 -2
  19. package/dist/commonjs/main_thread/decrypt/find_key_system.d.ts.map +1 -1
  20. package/dist/commonjs/main_thread/decrypt/find_key_system.js +3 -0
  21. package/dist/commonjs/main_thread/init/directfile_content_initializer.d.ts.map +1 -1
  22. package/dist/commonjs/main_thread/init/directfile_content_initializer.js +14 -6
  23. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts +11 -1
  24. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  25. package/dist/commonjs/main_thread/init/media_source_content_initializer.js +23 -11
  26. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts +15 -1
  27. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -1
  28. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.js +103 -50
  29. package/dist/commonjs/main_thread/init/utils/initial_seek_and_play.d.ts +1 -1
  30. package/dist/commonjs/main_thread/init/utils/initial_seek_and_play.d.ts.map +1 -1
  31. package/dist/commonjs/main_thread/init/utils/initial_seek_and_play.js +21 -5
  32. package/dist/commonjs/main_thread/text_displayer/native/native_text_displayer.d.ts +1 -0
  33. package/dist/commonjs/main_thread/text_displayer/native/native_text_displayer.d.ts.map +1 -1
  34. package/dist/commonjs/main_thread/text_displayer/native/native_text_displayer.js +19 -16
  35. package/dist/commonjs/mse/main_media_source_interface.d.ts.map +1 -1
  36. package/dist/commonjs/mse/main_media_source_interface.js +21 -2
  37. package/dist/commonjs/transports/smooth/pipelines.d.ts.map +1 -1
  38. package/dist/commonjs/transports/smooth/pipelines.js +1 -0
  39. package/dist/commonjs/transports/utils/parse_text_track.d.ts.map +1 -1
  40. package/dist/commonjs/transports/utils/parse_text_track.js +1 -0
  41. package/dist/commonjs/utils/sync_or_async.d.ts.map +1 -1
  42. package/dist/commonjs/utils/sync_or_async.js +3 -1
  43. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
  44. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
  45. package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  46. package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
  47. package/dist/es2017/core/main/worker/worker_main.d.ts.map +1 -1
  48. package/dist/es2017/core/main/worker/worker_main.js +3 -0
  49. package/dist/es2017/core/segment_sinks/segment_buffers_store.d.ts.map +1 -1
  50. package/dist/es2017/core/stream/adaptation/adaptation_stream.d.ts.map +1 -1
  51. package/dist/es2017/core/stream/adaptation/adaptation_stream.js +15 -0
  52. package/dist/es2017/core/stream/representation/representation_stream.d.ts.map +1 -1
  53. package/dist/es2017/core/stream/representation/representation_stream.js +2 -0
  54. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.d.ts.map +1 -1
  55. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +36 -7
  56. package/dist/es2017/main_thread/api/debug/modules/general_info.js +1 -1
  57. package/dist/es2017/main_thread/api/public_api.js +2 -2
  58. package/dist/es2017/main_thread/decrypt/find_key_system.d.ts.map +1 -1
  59. package/dist/es2017/main_thread/decrypt/find_key_system.js +3 -0
  60. package/dist/es2017/main_thread/init/directfile_content_initializer.d.ts.map +1 -1
  61. package/dist/es2017/main_thread/init/directfile_content_initializer.js +14 -6
  62. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts +11 -1
  63. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  64. package/dist/es2017/main_thread/init/media_source_content_initializer.js +23 -11
  65. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts +15 -1
  66. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -1
  67. package/dist/es2017/main_thread/init/multi_thread_content_initializer.js +87 -46
  68. package/dist/es2017/main_thread/init/utils/initial_seek_and_play.d.ts +1 -1
  69. package/dist/es2017/main_thread/init/utils/initial_seek_and_play.d.ts.map +1 -1
  70. package/dist/es2017/main_thread/init/utils/initial_seek_and_play.js +19 -3
  71. package/dist/es2017/main_thread/text_displayer/native/native_text_displayer.d.ts +1 -0
  72. package/dist/es2017/main_thread/text_displayer/native/native_text_displayer.d.ts.map +1 -1
  73. package/dist/es2017/main_thread/text_displayer/native/native_text_displayer.js +19 -16
  74. package/dist/es2017/mse/main_media_source_interface.d.ts.map +1 -1
  75. package/dist/es2017/mse/main_media_source_interface.js +19 -0
  76. package/dist/es2017/transports/smooth/pipelines.d.ts.map +1 -1
  77. package/dist/es2017/transports/smooth/pipelines.js +1 -0
  78. package/dist/es2017/transports/utils/parse_text_track.d.ts.map +1 -1
  79. package/dist/es2017/transports/utils/parse_text_track.js +1 -0
  80. package/dist/es2017/utils/sync_or_async.d.ts.map +1 -1
  81. package/dist/es2017/utils/sync_or_async.js +3 -1
  82. package/dist/mpd-parser.wasm +0 -0
  83. package/dist/rx-player.js +104 -41
  84. package/dist/rx-player.min.js +17 -17
  85. package/dist/worker.js +5 -5
  86. package/package.json +19 -7
  87. package/src/__GENERATED_CODE/embedded_dash_wasm.ts +1 -1
  88. package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
  89. package/src/core/main/worker/worker_main.ts +3 -0
  90. package/src/core/segment_sinks/segment_buffers_store.ts +6 -2
  91. package/src/core/stream/adaptation/adaptation_stream.ts +23 -1
  92. package/src/core/stream/representation/representation_stream.ts +11 -0
  93. package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +39 -7
  94. package/src/main_thread/api/debug/modules/general_info.ts +1 -1
  95. package/src/main_thread/api/public_api.ts +2 -2
  96. package/src/main_thread/decrypt/find_key_system.ts +3 -0
  97. package/src/main_thread/init/directfile_content_initializer.ts +20 -10
  98. package/src/main_thread/init/media_source_content_initializer.ts +50 -17
  99. package/src/main_thread/init/multi_thread_content_initializer.ts +109 -50
  100. package/src/main_thread/init/utils/initial_seek_and_play.ts +24 -5
  101. package/src/main_thread/text_displayer/native/native_text_displayer.ts +22 -18
  102. package/src/mse/main_media_source_interface.ts +20 -0
  103. package/src/transports/smooth/pipelines.ts +1 -0
  104. package/src/transports/utils/parse_text_track.ts +1 -0
  105. package/src/utils/sync_or_async.ts +5 -3
@@ -1 +1 @@
1
- {"version":3,"file":"worker_main.d.ts","sourceRoot":"","sources":["../../../../../src/core/main/worker/worker_main.ts"],"names":[],"mappings":"AA+CA,MAAM,CAAC,OAAO,UAAU,oBAAoB,SA6W3C"}
1
+ {"version":3,"file":"worker_main.d.ts","sourceRoot":"","sources":["../../../../../src/core/main/worker/worker_main.ts"],"names":[],"mappings":"AA+CA,MAAM,CAAC,OAAO,UAAU,oBAAoB,SAgX3C"}
@@ -51,6 +51,9 @@ export default function initializeWorkerMain() {
51
51
  * When set, emit playback observation made on the main thread.
52
52
  */
53
53
  let playbackObservationRef = null;
54
+ onmessageerror = (_msg) => {
55
+ log.error("MTCI: Error when receiving message from main thread.");
56
+ };
54
57
  onmessage = function (e) {
55
58
  var _a, _b;
56
59
  log.debug("Worker: received message", e.data.type);
@@ -1 +1 @@
1
- {"version":3,"file":"segment_buffers_store.d.ts","sourceRoot":"","sources":["../../../../src/core/segment_sinks/segment_buffers_store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAMvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAiB,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI9E,0EAA0E;AAC1E,KAAK,sBAAsB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IAC3E,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,MAAM,EAAE,yBAAyB,CAAC,CAAC;CAC7E;AAED,UAAU,yBAAyB;IACjC,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,gBAAgB,EAAE,sBAAsB,EAAE,GAAG,SAAS,CAAC;CACxD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,IAAI,sBAAsB;IAIzE,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IAErD;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB,CAAmD;IAEnF;;;;OAIG;IACH,OAAO,CAAC,8BAA8B,CAAoB;IAE1D,OAAO,CAAC,cAAc,CAAiC;IAEvD,OAAO,CAAC,SAAS,CAAU;IAE3B;;;OAGG;gBAED,WAAW,EAAE,qBAAqB,EAClC,QAAQ,EAAE,OAAO,EACjB,sBAAsB,EAAE,uBAAuB,GAAG,IAAI;IASxD;;;;OAIG;IACI,cAAc,IAAI,WAAW,EAAE;IAQtC;;;;OAIG;IACI,oBAAoB,IAAI,WAAW,EAAE;IAI5C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,SAAS,CACd,UAAU,EAAE,WAAW,GAErB;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,GAC3C;QAAE,IAAI,EAAE,eAAe,CAAA;KAAE,GACzB;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE;IAWxB;;;;;;;;;;;;;;;OAeG;IACI,oBAAoB,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhF;;;;;;OAMG;IACI,kBAAkB,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAgBxD;;;;;;;;;;;OAWG;IACI,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW;IAwD7E;;;OAGG;IACI,kBAAkB,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAYxD;;OAEG;IACI,UAAU,IAAI,IAAI;IAQzB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,+BAA+B;IAehC,sBAAsB,IAAI,mBAAmB;CASrD"}
1
+ {"version":3,"file":"segment_buffers_store.d.ts","sourceRoot":"","sources":["../../../../src/core/segment_sinks/segment_buffers_store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAMvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAiB,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI9E,0EAA0E;AAC1E,KAAK,sBAAsB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IAC3E,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,MAAM,EAAE,yBAAyB,CAAC,CAAC;CAC7E;AAED,UAAU,yBAAyB;IACjC,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,gBAAgB,EAAE,sBAAsB,EAAE,GAAG,SAAS,CAAC;CACxD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,IAAI,sBAAsB;IAIzE,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IAErD;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB,CAI9B;IAEF;;;;OAIG;IACH,OAAO,CAAC,8BAA8B,CAAoB;IAE1D,OAAO,CAAC,cAAc,CAAiC;IAEvD,OAAO,CAAC,SAAS,CAAU;IAE3B;;;OAGG;gBAED,WAAW,EAAE,qBAAqB,EAClC,QAAQ,EAAE,OAAO,EACjB,sBAAsB,EAAE,uBAAuB,GAAG,IAAI;IASxD;;;;OAIG;IACI,cAAc,IAAI,WAAW,EAAE;IAQtC;;;;OAIG;IACI,oBAAoB,IAAI,WAAW,EAAE;IAI5C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,SAAS,CACd,UAAU,EAAE,WAAW,GAErB;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,GAC3C;QAAE,IAAI,EAAE,eAAe,CAAA;KAAE,GACzB;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE;IAWxB;;;;;;;;;;;;;;;OAeG;IACI,oBAAoB,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhF;;;;;;OAMG;IACI,kBAAkB,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAgBxD;;;;;;;;;;;OAWG;IACI,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW;IAwD7E;;;OAGG;IACI,kBAAkB,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAYxD;;OAEG;IACI,UAAU,IAAI,IAAI;IAQzB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,+BAA+B;IAehC,sBAAsB,IAAI,mBAAmB;CASrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"adaptation_stream.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/adaptation/adaptation_stream.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AASxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,EACE,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,EAAE,0BAA0B,EAC7B,SAAS,EAAE,0BAA0B,EACrC,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,CAubN"}
1
+ {"version":3,"file":"adaptation_stream.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/adaptation/adaptation_stream.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AASxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,EACE,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,EAAE,0BAA0B,EAC7B,SAAS,EAAE,0BAA0B,EACrC,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,CA6cN"}
@@ -271,8 +271,11 @@ export default function AdaptationStream({ playbackObserver, content, options, r
271
271
  * anything this function is doing and free allocated resources.
272
272
  */
273
273
  function createRepresentationStream(representation, terminateCurrentStream, representationStreamCallbacks, fnCancelSignal) {
274
+ /** Set to `true` if we've encountered an error with this `RepresentationStream` */
275
+ let hasEncounteredError = false;
274
276
  const bufferGoalCanceller = new TaskCanceller();
275
277
  bufferGoalCanceller.linkToSignal(fnCancelSignal);
278
+ /** Actually built buffer size, in seconds. */
276
279
  const bufferGoal = createMappedReference(wantedBufferAhead, (prev) => {
277
280
  return getBufferGoal(representation, prev);
278
281
  }, bufferGoalCanceller.signal);
@@ -281,6 +284,17 @@ export default function AdaptationStream({ playbackObserver, content, options, r
281
284
  const updatedCallbacks = objectAssign({}, representationStreamCallbacks, {
282
285
  error(err) {
283
286
  var _a;
287
+ if (hasEncounteredError) {
288
+ // A RepresentationStream might trigger multiple Errors (for example
289
+ // multiple segments it tried to push at once led to errors).
290
+ // In that case, we'll only consider the first Error.
291
+ //
292
+ // That could mean that we're hiding legitimate issues but handling
293
+ // multiple of those errors at once is too hard a task for now.
294
+ log.warn("Stream: Ignoring RepresentationStream error", err);
295
+ return;
296
+ }
297
+ hasEncounteredError = true;
284
298
  const formattedError = formatError(err, {
285
299
  defaultCode: "NONE",
286
300
  defaultReason: "Unknown `RepresentationStream` error",
@@ -289,6 +303,7 @@ export default function AdaptationStream({ playbackObserver, content, options, r
289
303
  representationStreamCallbacks.error(err);
290
304
  }
291
305
  else {
306
+ log.warn("Stream: received BUFFER_FULL_ERROR", adaptation.type, representation.bitrate);
292
307
  const wba = wantedBufferAhead.getValue();
293
308
  const lastBufferGoalRatio = (_a = bufferGoalRatioMap.get(representation.id)) !== null && _a !== void 0 ? _a : 1;
294
309
  // 70%, 49%, 34.3%, 24%, 16.81%, 11.76%, 8.24% and 5.76%
@@ -1 +1 @@
1
- {"version":3,"file":"representation_stream.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/representation/representation_stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAMxE,OAAO,KAAK,EAEV,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AAMjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,gBAAgB,EAC3D,EACE,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,GACV,EAAE,8BAA8B,CAAC,gBAAgB,CAAC,EACnD,SAAS,EAAE,8BAA8B,EACzC,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,CAkZN"}
1
+ {"version":3,"file":"representation_stream.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/representation/representation_stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAMxE,OAAO,KAAK,EAEV,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AAMjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,gBAAgB,EAC3D,EACE,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,GACV,EAAE,8BAA8B,CAAC,gBAAgB,CAAC,EACnD,SAAS,EAAE,8BAA8B,EACzC,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,CA6ZN"}
@@ -65,6 +65,7 @@ import pushMediaSegment from "./utils/push_media_segment";
65
65
  * doing.
66
66
  */
67
67
  export default function RepresentationStream({ content, options, playbackObserver, segmentSink, segmentQueue, terminate, }, callbacks, parentCancelSignal) {
68
+ log.debug("Stream: Creating RepresentationStream", content.adaptation.type, content.representation.bitrate);
68
69
  const { period, adaptation, representation } = content;
69
70
  const { bufferGoal, maxBufferSize, drmSystemId, fastSwitchThreshold } = options;
70
71
  const bufferType = adaptation.type;
@@ -383,6 +384,7 @@ export default function RepresentationStream({ content, options, playbackObserve
383
384
  // We can thus ignore it, it is very unlikely to lead to true buffer issues.
384
385
  return;
385
386
  }
387
+ log.warn("Stream: Received fatal buffer error", adaptation.type, representation.bitrate, err instanceof Error ? err : null);
386
388
  globalCanceller.cancel();
387
389
  callbacks.error(err);
388
390
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DRMInfos.d.ts","sourceRoot":"","sources":["../../../../../../src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,2BAA2B,EAAE,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,WAAW,EAAE,mBAAmB,GAC/B,OAAO,CAAC,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAqChD"}
1
+ {"version":3,"file":"DRMInfos.d.ts","sourceRoot":"","sources":["../../../../../../src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,2BAA2B,EAAE,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,WAAW,EAAE,mBAAmB,GAC/B,OAAO,CAAC,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAgEhD"}
@@ -13,7 +13,9 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import { canRelyOnRequestMediaKeySystemAccess } from "../../../../compat/can_rely_on_request_media_key_system_access";
16
17
  import eme from "../../../../compat/eme";
18
+ import { DUMMY_PLAY_READY_HEADER, generatePlayReadyInitData, } from "../../../../compat/generate_init_data";
17
19
  import isNullOrUndefined from "../../../../utils/is_null_or_undefined";
18
20
  import log from "../log";
19
21
  import { ProberStatus } from "../types";
@@ -39,13 +41,40 @@ export default function probeDRMInfos(mediaConfig) {
39
41
  }
40
42
  return eme
41
43
  .requestMediaKeySystemAccess(type, [configuration])
42
- .then((keySystemAccess) => {
43
- result.compatibleConfiguration = keySystemAccess.getConfiguration();
44
- const status = [
45
- ProberStatus.Supported,
46
- result,
47
- ];
48
- return status;
44
+ .then(async (keySystemAccess) => {
45
+ if (!canRelyOnRequestMediaKeySystemAccess(type)) {
46
+ try {
47
+ const mediaKeys = await keySystemAccess.createMediaKeys();
48
+ const session = mediaKeys.createSession();
49
+ const initData = generatePlayReadyInitData(DUMMY_PLAY_READY_HEADER);
50
+ await session.generateRequest("cenc", initData);
51
+ session.close().catch(() => {
52
+ log.warn("DRM: Failed to close the dummy session");
53
+ });
54
+ result.compatibleConfiguration = keySystemAccess.getConfiguration();
55
+ const status = [
56
+ ProberStatus.Supported,
57
+ result,
58
+ ];
59
+ return status;
60
+ }
61
+ catch (err) {
62
+ log.debug("DRM: KeySystemAccess was granted but it is not usable");
63
+ const statusError = [
64
+ ProberStatus.NotSupported,
65
+ result,
66
+ ];
67
+ return statusError;
68
+ }
69
+ }
70
+ else {
71
+ result.compatibleConfiguration = keySystemAccess.getConfiguration();
72
+ const status = [
73
+ ProberStatus.Supported,
74
+ result,
75
+ ];
76
+ return status;
77
+ }
49
78
  })
50
79
  .catch(() => {
51
80
  return [ProberStatus.NotSupported, result];
@@ -55,7 +55,7 @@ export default function constructDebugGeneralInfo(instance, parentElt, cancelSig
55
55
  else {
56
56
  valuesLine1.push(["wo", "0"]);
57
57
  }
58
- const valuesLine2 = [];
58
+ const valuesLine2 = [["v", instance.version]];
59
59
  const ks = instance.getKeySystemConfiguration();
60
60
  if (ks !== null) {
61
61
  valuesLine2.push(["ks", ks.keySystem]);
@@ -143,7 +143,7 @@ class Player extends EventEmitter {
143
143
  // Workaround to support Firefox autoplay on FF 42.
144
144
  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
145
145
  videoElement.preload = "auto";
146
- this.version = /* PLAYER_VERSION */ "4.2.0-dev.2024092400";
146
+ this.version = /* PLAYER_VERSION */ "4.2.0-dev.2024101500";
147
147
  this.log = log;
148
148
  this.state = "STOPPED";
149
149
  this.videoElement = videoElement;
@@ -2471,5 +2471,5 @@ class Player extends EventEmitter {
2471
2471
  * Use of a WeakSet ensure the object is garbage collected if it's not used anymore.
2472
2472
  */
2473
2473
  Player._priv_currentlyUsedVideoElements = new WeakSet();
2474
- Player.version = /* PLAYER_VERSION */ "4.2.0-dev.2024092400";
2474
+ Player.version = /* PLAYER_VERSION */ "4.2.0-dev.2024101500";
2475
2475
  export default Player;
@@ -1 +1 @@
1
- {"version":3,"file":"find_key_system.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/decrypt/find_key_system.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAE9E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAUpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAK3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAKrE,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,WAAW,0BAA0B;IACzC,qEAAqE;IACrE,oBAAoB,EAAE,oBAAoB,GAAG,2BAA2B,CAAC;IACzE;;;OAGG;IACH,kBAAkB,EAAE,2BAA2B,CAAC;IAChD;;;OAGG;IACH,OAAO,EAAE,gBAAgB,CAAC;IAC1B,oFAAoF;IACpF,YAAY,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,+BAA+B,CAAC;IACtC,KAAK,EAAE,0BAA0B,CAAC;CACnC;AAED,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,gCAAgC,CAAC;IACvC,KAAK,EAAE,0BAA0B,CAAC;CACnC;AAED,MAAM,MAAM,+BAA+B,GACvC,+BAA+B,GAC/B,gCAAgC,CAAC;AAkPrC;;;;;;;GAOG;AACH,wBAAgB,wCAAwC,CACtD,oBAAoB,EAAE,2BAA2B,EACjD,gBAAgB,EAAE,2BAA2B,GAC5C,iBAAiB,CA2CnB;AACD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAC7C,YAAY,EAAE,aAAa,EAC3B,iBAAiB,EAAE,gBAAgB,EAAE,EACrC,YAAY,EAAE,kBAAkB,GAC/B,OAAO,CAAC,+BAA+B,CAAC,CA+H1C;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,uBAAuB,EAAE,2BAA2B,EAAE,+FAmBvD"}
1
+ {"version":3,"file":"find_key_system.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/decrypt/find_key_system.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAE9E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAUpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAK3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAKrE,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,WAAW,0BAA0B;IACzC,qEAAqE;IACrE,oBAAoB,EAAE,oBAAoB,GAAG,2BAA2B,CAAC;IACzE;;;OAGG;IACH,kBAAkB,EAAE,2BAA2B,CAAC;IAChD;;;OAGG;IACH,OAAO,EAAE,gBAAgB,CAAC;IAC1B,oFAAoF;IACpF,YAAY,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,+BAA+B,CAAC;IACtC,KAAK,EAAE,0BAA0B,CAAC;CACnC;AAED,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,gCAAgC,CAAC;IACvC,KAAK,EAAE,0BAA0B,CAAC;CACnC;AAED,MAAM,MAAM,+BAA+B,GACvC,+BAA+B,GAC/B,gCAAgC,CAAC;AAkPrC;;;;;;;GAOG;AACH,wBAAgB,wCAAwC,CACtD,oBAAoB,EAAE,2BAA2B,EACjD,gBAAgB,EAAE,2BAA2B,GAC5C,iBAAiB,CA2CnB;AACD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAC7C,YAAY,EAAE,aAAa,EAC3B,iBAAiB,EAAE,gBAAgB,EAAE,EACrC,YAAY,EAAE,kBAAkB,GAC/B,OAAO,CAAC,+BAA+B,CAAC,CA+H1C;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,uBAAuB,EAAE,2BAA2B,EAAE,+FAsBvD"}
@@ -376,6 +376,9 @@ export async function testKeySystem(keyType, keySystemConfigurations) {
376
376
  const session = mediaKeys.createSession();
377
377
  const initData = generatePlayReadyInitData(DUMMY_PLAY_READY_HEADER);
378
378
  await session.generateRequest("cenc", initData);
379
+ session.close().catch(() => {
380
+ log.warn("DRM: Failed to close the dummy session");
381
+ });
379
382
  }
380
383
  catch (err) {
381
384
  log.debug("DRM: KeySystemAccess was granted but it is not usable");
@@ -1 +1 @@
1
- {"version":3,"file":"directfile_content_initializer.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/init/directfile_content_initializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAI9E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AAIzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAOpE;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,kBAAkB;IAC1E;;OAEG;IACH,OAAO,CAAC,SAAS,CAAqB;IACtC;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAgB;IAEtC;;;OAGG;gBACS,QAAQ,EAAE,kBAAkB;IAMxC;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;;;;;OAOG;IACI,KAAK,CACV,YAAY,EAAE,aAAa,EAC3B,gBAAgB,EAAE,6BAA6B,GAC9C,IAAI;IAmFP;;;;OAIG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI;IAIjF;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAKrB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CA0CrB;AA8DD,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,wDAAwD;IACxD,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACxC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC1C,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;CACb"}
1
+ {"version":3,"file":"directfile_content_initializer.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/init/directfile_content_initializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAI9E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AAIzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAOpE;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,kBAAkB;IAC1E;;OAEG;IACH,OAAO,CAAC,SAAS,CAAqB;IACtC;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAgB;IAEtC;;;OAGG;gBACS,QAAQ,EAAE,kBAAkB;IAMxC;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;;;;;OAOG;IACI,KAAK,CACV,YAAY,EAAE,aAAa,EAC3B,gBAAgB,EAAE,6BAA6B,GAC9C,IAAI;IAmFP;;;;OAIG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI;IAIjF;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAKrB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CA0CrB;AAwED,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,wDAAwD;IACxD,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACxC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC1C,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;CACb"}
@@ -191,23 +191,31 @@ function getDirectFileInitialTime(mediaElement, startAt) {
191
191
  }
192
192
  const duration = mediaElement.duration;
193
193
  if (typeof startAt.fromLastPosition === "number") {
194
- if (isNullOrUndefined(duration) || !isFinite(duration)) {
195
- log.warn("startAt.fromLastPosition set but no known duration, " + "beginning at 0.");
196
- return 0;
194
+ if (!isNullOrUndefined(duration) && isFinite(duration)) {
195
+ return Math.max(0, duration + startAt.fromLastPosition);
196
+ }
197
+ if (mediaElement.seekable.length > 0) {
198
+ const lastSegmentEnd = mediaElement.seekable.end(mediaElement.seekable.length - 1);
199
+ if (isFinite(lastSegmentEnd)) {
200
+ return Math.max(0, lastSegmentEnd + startAt.fromLastPosition);
201
+ }
197
202
  }
198
- return Math.max(0, duration + startAt.fromLastPosition);
203
+ log.warn("Init: startAt.fromLastPosition set but no known duration, " +
204
+ "it may be too soon to seek");
205
+ return undefined;
199
206
  }
200
207
  else if (typeof startAt.fromLivePosition === "number") {
201
208
  const livePosition = mediaElement.seekable.length > 0 ? mediaElement.seekable.end(0) : duration;
202
209
  if (isNullOrUndefined(livePosition)) {
203
- log.warn("startAt.fromLivePosition set but no known live position, " + "beginning at 0.");
210
+ log.warn("Init: startAt.fromLivePosition set but no known live position, " +
211
+ "beginning at 0.");
204
212
  return 0;
205
213
  }
206
214
  return Math.max(0, livePosition + startAt.fromLivePosition);
207
215
  }
208
216
  else if (!isNullOrUndefined(startAt.percentage)) {
209
217
  if (isNullOrUndefined(duration) || !isFinite(duration)) {
210
- log.warn("startAt.percentage set but no known duration, " + "beginning at 0.");
218
+ log.warn("Init: startAt.percentage set but no known duration, " + "beginning at 0.");
211
219
  return 0;
212
220
  }
213
221
  const { percentage } = startAt;
@@ -35,7 +35,7 @@ import type { IInitialTimeOptions } from "./utils/get_initial_time";
35
35
  */
36
36
  export default class MediaSourceContentInitializer extends ContentInitializer {
37
37
  /** Constructor settings associated to this `MediaSourceContentInitializer`. */
38
- private _settings;
38
+ private _initSettings;
39
39
  /**
40
40
  * `TaskCanceller` allowing to abort everything that the
41
41
  * `MediaSourceContentInitializer` is doing.
@@ -91,7 +91,17 @@ export default class MediaSourceContentInitializer extends ContentInitializer {
91
91
  */
92
92
  updateContentUrls(urls: string[] | undefined, refreshNow: boolean): void;
93
93
  dispose(): void;
94
+ /**
95
+ * Callback called when an error interrupting playback arised.
96
+ * @param {*} err
97
+ */
94
98
  private _onFatalError;
99
+ /**
100
+ * Initialize decryption mechanisms if needed and begin creating and relying
101
+ * on the initial `MediaSourceInterface` for this content.
102
+ * @param {HTMLMediaElement|null} mediaElement
103
+ * @returns {Promise.<Object>}
104
+ */
95
105
  private _initializeMediaSourceAndDecryption;
96
106
  private _onInitialMediaSourceReady;
97
107
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"media_source_content_initializer.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/init/media_source_content_initializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAK9E,OAAO,KAAK,EACV,wCAAwC,EAEzC,MAAM,qBAAqB,CAAC;AAoB7B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAO5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAStE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAUpE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,kBAAkB;IAC3E,+EAA+E;IAC/E,OAAO,CAAC,SAAS,CAAuB;IACxC;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAgB;IACtC,4DAA4D;IAC5D,OAAO,CAAC,gBAAgB,CAAkB;IAC1C;;;;;OAKG;IACH,OAAO,CAAC,SAAS,CAAsC;IAEvD,OAAO,CAAC,gBAAgB,CAAyB;IAEjD;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,uBAAuB,CAYzB;IAEN;;;;OAIG;gBACS,QAAQ,EAAE,oBAAoB;IAgB1C;;;OAGG;IACI,OAAO,IAAI,IAAI;IAwBtB;;;OAGG;IACI,KAAK,CACV,YAAY,EAAE,aAAa,EAC3B,gBAAgB,EAAE,6BAA6B,GAC9C,IAAI;IAyBP;;;;;;OAMG;IACI,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAIxE,OAAO,IAAI,IAAI;IAItB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,mCAAmC;YA4H7B,0BAA0B;IAwJxC;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAkepC;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,4BAA4B;IA0BpC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IA+C5B;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;CAWrC;AAED,mEAAmE;AACnE,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,eAAe,EAAE,wCAAwC,CAAC;IAC1D,4CAA4C;IAC5C,QAAQ,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,aAAa,EAAE;QACb,+DAA+D;QAC/D,iBAAiB,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACpD,oEAAoE;QACpE,kBAAkB,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACrD,iFAAiF;QACjF,cAAc,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACjD,oFAAoF;QACpF,eAAe,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAClD;;;WAGG;QACH,mBAAmB,EAAE,OAAO,CAAC;QAC7B,mEAAmE;QACnE,aAAa,EAAE,UAAU,GAAG,QAAQ,CAAC;KACtC,CAAC;IACF;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAChC,0CAA0C;IAC1C,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qDAAqD;IACrD,cAAc,EAAE,OAAO,CAAC;IACxB,4CAA4C;IAC5C,uBAAuB,EAAE;QACvB,iEAAiE;QACjE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B;;;;;WAKG;QACH,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC;;;;WAIG;QACH,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;QACtC,+CAA+C;QAC/C,6BAA6B,EAAE,MAAM,CAAC;QACtC;;;WAGG;QACH,eAAe,EAAE,gBAAgB,GAAG,SAAS,CAAC;KAC/C,CAAC;IACF,6DAA6D;IAC7D,SAAS,EAAE,mBAAmB,CAAC;IAC/B,sDAAsD;IACtD,qBAAqB,EAAE;QACrB,cAAc,EAAE,OAAO,CAAC;QACxB;;;;WAIG;QACH,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC;;;;WAIG;QACH,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;QACtC,iEAAiE;QACjE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,CAAC;IACF,sDAAsD;IACtD,KAAK,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACxC,wCAAwC;IACxC,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC1C,gDAAgD;IAChD,gBAAgB,EAAE,qBAAqB,CAAC;IACxC,oEAAoE;IACpE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB"}
1
+ {"version":3,"file":"media_source_content_initializer.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/init/media_source_content_initializer.ts"],"names":[],"mappings":"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"}
@@ -66,7 +66,7 @@ export default class MediaSourceContentInitializer extends ContentInitializer {
66
66
  */
67
67
  constructor(settings) {
68
68
  super();
69
- this._settings = settings;
69
+ this._initSettings = settings;
70
70
  this._initCanceller = new TaskCanceller();
71
71
  this._manifest = null;
72
72
  this._decryptionCapabilities = { status: "uninitialized", value: null };
@@ -125,6 +125,10 @@ export default class MediaSourceContentInitializer extends ContentInitializer {
125
125
  dispose() {
126
126
  this._initCanceller.cancel();
127
127
  }
128
+ /**
129
+ * Callback called when an error interrupting playback arised.
130
+ * @param {*} err
131
+ */
128
132
  _onFatalError(err) {
129
133
  if (this._initCanceller.isUsed()) {
130
134
  return;
@@ -132,10 +136,16 @@ export default class MediaSourceContentInitializer extends ContentInitializer {
132
136
  this._initCanceller.cancel();
133
137
  this.trigger("error", err);
134
138
  }
139
+ /**
140
+ * Initialize decryption mechanisms if needed and begin creating and relying
141
+ * on the initial `MediaSourceInterface` for this content.
142
+ * @param {HTMLMediaElement|null} mediaElement
143
+ * @returns {Promise.<Object>}
144
+ */
135
145
  _initializeMediaSourceAndDecryption(mediaElement) {
136
146
  const initCanceller = this._initCanceller;
137
147
  return createCancellablePromise(initCanceller.signal, (resolve) => {
138
- const { keySystems } = this._settings;
148
+ const { keySystems } = this._initSettings;
139
149
  /** Initialize decryption capabilities. */
140
150
  const { statusRef: drmInitRef, contentDecryptor } = initializeContentDecryption(mediaElement, keySystems, {
141
151
  onWarning: (err) => this.trigger("warning", err),
@@ -236,7 +246,7 @@ export default class MediaSourceContentInitializer extends ContentInitializer {
236
246
  }
237
247
  async _onInitialMediaSourceReady(mediaElement, initialMediaSource, playbackObserver, drmSystemId, initialMediaSourceCanceller) {
238
248
  var _a;
239
- const { adaptiveOptions, autoPlay, bufferOptions, lowLatencyMode, segmentRequestOptions, speed, startAt, textTrackOptions, transport, } = this._settings;
249
+ const { adaptiveOptions, autoPlay, bufferOptions, lowLatencyMode, segmentRequestOptions, speed, startAt, textTrackOptions, transport, } = this._initSettings;
240
250
  const initCanceller = this._initCanceller;
241
251
  assert(this._manifest !== null);
242
252
  let manifest;
@@ -336,14 +346,7 @@ export default class MediaSourceContentInitializer extends ContentInitializer {
336
346
  return this._onFatalError(error);
337
347
  }
338
348
  let textDisplayerInterface = null;
339
- let textDisplayer = null;
340
- if (this._settings.textTrackOptions.textTrackMode === "html" &&
341
- features.htmlTextDisplayer !== null) {
342
- textDisplayer = new features.htmlTextDisplayer(mediaElement, this._settings.textTrackOptions.textTrackElement);
343
- }
344
- else if (features.nativeTextDisplayer !== null) {
345
- textDisplayer = new features.nativeTextDisplayer(mediaElement);
346
- }
349
+ const textDisplayer = createTextDisplayer(mediaElement, this._initSettings.textTrackOptions);
347
350
  if (textDisplayer !== null) {
348
351
  const sender = new MainThreadTextDisplayerInterface(textDisplayer);
349
352
  textDisplayerInterface = sender;
@@ -757,6 +760,15 @@ export default class MediaSourceContentInitializer extends ContentInitializer {
757
760
  }
758
761
  }
759
762
  }
763
+ function createTextDisplayer(mediaElement, textTrackOptions) {
764
+ if (textTrackOptions.textTrackMode === "html" && features.htmlTextDisplayer !== null) {
765
+ return new features.htmlTextDisplayer(mediaElement, textTrackOptions.textTrackElement);
766
+ }
767
+ else if (features.nativeTextDisplayer !== null) {
768
+ return new features.nativeTextDisplayer(mediaElement);
769
+ }
770
+ return null;
771
+ }
760
772
  /**
761
773
  * Change the decipherability of Representations which have their key id in one
762
774
  * of the given Arrays:
@@ -18,6 +18,19 @@ import StreamEventsEmitter from "./utils/stream_events_emitter/stream_events_emi
18
18
  export default class MultiThreadContentInitializer extends ContentInitializer {
19
19
  /** Constructor settings associated to this `MultiThreadContentInitializer`. */
20
20
  private _settings;
21
+ /**
22
+ * The WebWorker may be sending messages as soon as we're preparing the
23
+ * content but the `MultiThreadContentInitializer` is only able to handle all of
24
+ * them only once `start`ed.
25
+ *
26
+ * As such `_queuedWorkerMessages` is set to an Array when `prepare` has been
27
+ * called but not `start` yet, and contains all worker messages that have to
28
+ * be processed when `start` is called.
29
+ *
30
+ * It is set to `null` when there's no need to rely on that queue (either not
31
+ * yet `prepare`d or already `start`ed).
32
+ */
33
+ private _queuedWorkerMessages;
21
34
  /**
22
35
  * Information relative to the current loaded content.
23
36
  *
@@ -38,7 +51,8 @@ export default class MultiThreadContentInitializer extends ContentInitializer {
38
51
  */
39
52
  private _currentMediaSourceCanceller;
40
53
  /**
41
- * Stores the resolvers and the current messageId that is sent to the web worker to receive segment sink metrics.
54
+ * Stores the resolvers and the current messageId that is sent to the web worker to
55
+ * receive segment sink metrics.
42
56
  * The purpose of collecting metrics is for monitoring and debugging.
43
57
  */
44
58
  private _segmentMetrics;
@@ -1 +1 @@
1
- {"version":3,"file":"multi_thread_content_initializer.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/init/multi_thread_content_initializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multi_thread_content_initializer.d.ts","sourceRoot":"","sources":["../../../../src/main_thread/init/multi_thread_content_initializer.ts"],"names":[],"mappings":"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"}
@@ -44,8 +44,9 @@ export default class MultiThreadContentInitializer extends ContentInitializer {
44
44
  this._currentContentInfo = null;
45
45
  this._segmentMetrics = {
46
46
  lastMessageId: 0,
47
- resolvers: {},
47
+ resolvers: new Map(),
48
48
  };
49
+ this._queuedWorkerMessages = null;
49
50
  }
50
51
  /**
51
52
  * Perform non-destructive preparation steps, to prepare a future content.
@@ -95,6 +96,66 @@ export default class MultiThreadContentInitializer extends ContentInitializer {
95
96
  if (this._initCanceller.isUsed()) {
96
97
  return;
97
98
  }
99
+ this._queuedWorkerMessages = [];
100
+ log.debug("MTCI: addEventListener prepare buffering worker messages");
101
+ const onmessage = (evt) => {
102
+ const msgData = evt.data;
103
+ const type = msgData.type;
104
+ switch (type) {
105
+ case "log" /* WorkerMessageType.LogMessage */: {
106
+ const formatted = msgData.value.logs.map((l) => {
107
+ switch (typeof l) {
108
+ case "string":
109
+ case "number":
110
+ case "boolean":
111
+ case "undefined":
112
+ return l;
113
+ case "object":
114
+ if (l === null) {
115
+ return null;
116
+ }
117
+ return formatWorkerError(l);
118
+ default:
119
+ assertUnreachable(l);
120
+ }
121
+ });
122
+ switch (msgData.value.logLevel) {
123
+ case "NONE":
124
+ break;
125
+ case "ERROR":
126
+ log.error(...formatted);
127
+ break;
128
+ case "WARNING":
129
+ log.warn(...formatted);
130
+ break;
131
+ case "INFO":
132
+ log.info(...formatted);
133
+ break;
134
+ case "DEBUG":
135
+ log.debug(...formatted);
136
+ break;
137
+ default:
138
+ assertUnreachable(msgData.value.logLevel);
139
+ }
140
+ break;
141
+ }
142
+ default:
143
+ if (this._queuedWorkerMessages !== null) {
144
+ this._queuedWorkerMessages.push(evt);
145
+ }
146
+ break;
147
+ }
148
+ };
149
+ this._settings.worker.addEventListener("message", onmessage);
150
+ const onmessageerror = (_msg) => {
151
+ log.error("MTCI: Error when receiving message from worker.");
152
+ };
153
+ this._settings.worker.addEventListener("messageerror", onmessageerror);
154
+ this._initCanceller.signal.register(() => {
155
+ log.debug("MTCI: removeEventListener prepare for worker message");
156
+ this._settings.worker.removeEventListener("message", onmessage);
157
+ this._settings.worker.removeEventListener("messageerror", onmessageerror);
158
+ });
98
159
  // Also bind all `SharedReference` objects:
99
160
  const throttleVideoBitrate = (_a = adaptiveOptions.throttlers.throttleBitrate.video) !== null && _a !== void 0 ? _a : new SharedReference(Infinity);
100
161
  bindNumberReferencesToWorker(worker, this._initCanceller.signal, [wantedBufferAhead, "wantedBufferAhead"], [maxVideoBufferSize, "maxVideoBufferSize"], [maxBufferAhead, "maxBufferAhead"], [maxBufferBehind, "maxBufferBehind"], [throttleVideoBitrate, "throttleVideoBitrate"]);
@@ -760,67 +821,42 @@ export default class MultiThreadContentInitializer extends ContentInitializer {
760
821
  }
761
822
  }
762
823
  break;
763
- case "log" /* WorkerMessageType.LogMessage */: {
764
- const formatted = msgData.value.logs.map((l) => {
765
- switch (typeof l) {
766
- case "string":
767
- case "number":
768
- case "boolean":
769
- case "undefined":
770
- return l;
771
- case "object":
772
- if (l === null) {
773
- return null;
774
- }
775
- return formatWorkerError(l);
776
- default:
777
- assertUnreachable(l);
778
- }
779
- });
780
- switch (msgData.value.logLevel) {
781
- case "NONE":
782
- break;
783
- case "ERROR":
784
- log.error(...formatted);
785
- break;
786
- case "WARNING":
787
- log.warn(...formatted);
788
- break;
789
- case "INFO":
790
- log.info(...formatted);
791
- break;
792
- case "DEBUG":
793
- log.debug(...formatted);
794
- break;
795
- default:
796
- assertUnreachable(msgData.value.logLevel);
797
- }
798
- break;
799
- }
800
- case "init-success" /* WorkerMessageType.InitSuccess */:
801
- case "init-error" /* WorkerMessageType.InitError */:
802
- // Should already be handled by the API
803
- break;
804
824
  case "segment-sink-store-update" /* WorkerMessageType.SegmentSinkStoreUpdate */: {
805
825
  if (((_27 = this._currentContentInfo) === null || _27 === void 0 ? void 0 : _27.contentId) !== msgData.contentId) {
806
826
  return;
807
827
  }
808
- const resolveFn = this._segmentMetrics.resolvers[msgData.value.messageId];
828
+ const resolveFn = this._segmentMetrics.resolvers.get(msgData.value.messageId);
809
829
  if (resolveFn !== undefined) {
810
830
  resolveFn(msgData.value.segmentSinkMetrics);
811
- delete this._segmentMetrics.resolvers[msgData.value.messageId];
812
831
  }
813
832
  else {
814
833
  log.error("MTCI: Failed to send segment sink store update");
815
834
  }
816
835
  break;
817
836
  }
837
+ case "init-success" /* WorkerMessageType.InitSuccess */:
838
+ case "init-error" /* WorkerMessageType.InitError */:
839
+ // Should already be handled by the API
840
+ break;
841
+ case "log" /* WorkerMessageType.LogMessage */:
842
+ // Already handled by prepare's handler
843
+ break;
818
844
  default:
819
845
  assertUnreachable(msgData);
820
846
  }
821
847
  };
848
+ log.debug("MTCI: addEventListener for worker message");
849
+ if (this._queuedWorkerMessages !== null) {
850
+ const bufferedMessages = this._queuedWorkerMessages.slice();
851
+ log.debug("MTCI: Processing buffered messages", bufferedMessages.length);
852
+ for (const message of bufferedMessages) {
853
+ onmessage(message);
854
+ }
855
+ this._queuedWorkerMessages = null;
856
+ }
822
857
  this._settings.worker.addEventListener("message", onmessage);
823
858
  this._initCanceller.signal.register(() => {
859
+ log.debug("MTCI: removeEventListener for worker message");
824
860
  this._settings.worker.removeEventListener("message", onmessage);
825
861
  });
826
862
  }
@@ -1134,11 +1170,16 @@ export default class MultiThreadContentInitializer extends ContentInitializer {
1134
1170
  value: { messageId },
1135
1171
  });
1136
1172
  return new Promise((resolve, reject) => {
1137
- this._segmentMetrics.resolvers[messageId] = resolve;
1138
1173
  const rejectFn = (err) => {
1139
- delete this._segmentMetrics.resolvers[messageId];
1174
+ cancelSignal.deregister(rejectFn);
1175
+ this._segmentMetrics.resolvers.delete(messageId);
1140
1176
  return reject(err);
1141
1177
  };
1178
+ this._segmentMetrics.resolvers.set(messageId, (value) => {
1179
+ cancelSignal.deregister(rejectFn);
1180
+ this._segmentMetrics.resolvers.delete(messageId);
1181
+ resolve(value);
1182
+ });
1142
1183
  cancelSignal.register(rejectFn);
1143
1184
  });
1144
1185
  };
@@ -55,7 +55,7 @@ export interface IInitialSeekAndPlayObject {
55
55
  export default function performInitialSeekAndPlay({ mediaElement, playbackObserver, startTime, mustAutoPlay, isDirectfile, onWarning, }: {
56
56
  mediaElement: IMediaElement;
57
57
  playbackObserver: IMediaElementPlaybackObserver;
58
- startTime: number | (() => number);
58
+ startTime: number | (() => number | undefined);
59
59
  mustAutoPlay: boolean;
60
60
  isDirectfile: boolean;
61
61
  onWarning: (err: IPlayerError) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"initial_seek_and_play.d.ts","sourceRoot":"","sources":["../../../../../src/main_thread/init/utils/initial_seek_and_play.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAKjF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,+BAA+B,CAAC;AAEvC,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB;AAC3B,0EAA0E;AACxE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB;;;GAGG;GACD;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE;AAC9B,sCAAsC;GACpC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,+CAA+C;AAC/C,MAAM,WAAW,yBAAyB;IACxC,kEAAkE;IAClE,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE3C;;;OAGG;IACH,oBAAoB,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;CACzD;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,EACE,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE;IACD,YAAY,EAAE,aAAa,CAAC;IAC5B,gBAAgB,EAAE,6BAA6B,CAAC;IAChD,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;CACxC,EACD,YAAY,EAAE,kBAAkB,GAC/B,yBAAyB,CAgN3B"}
1
+ {"version":3,"file":"initial_seek_and_play.d.ts","sourceRoot":"","sources":["../../../../../src/main_thread/init/utils/initial_seek_and_play.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAKjF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,+BAA+B,CAAC;AAEvC,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB;AAC3B,0EAA0E;AACxE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB;;;GAGG;GACD;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE;AAC9B,sCAAsC;GACpC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,+CAA+C;AAC/C,MAAM,WAAW,yBAAyB;IACxC,kEAAkE;IAClE,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE3C;;;OAGG;IACH,oBAAoB,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;CACzD;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,EACE,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE;IACD,YAAY,EAAE,aAAa,CAAC;IAC5B,gBAAgB,EAAE,6BAA6B,CAAC;IAChD,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/C,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;CACxC,EACD,YAAY,EAAE,kBAAkB,GAC/B,yBAAyB,CAmO3B"}