@amazon/vinyl 3.2.1 → 3.2.3-next.20261001143710

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 (109) hide show
  1. package/README.md +2 -2
  2. package/dist/index.cjs +98 -43
  3. package/dist/index.cjs.map +3 -3
  4. package/dist/index.js +126 -68
  5. package/dist/index.js.map +3 -3
  6. package/dist/test/benchmark.es5.js +7 -6
  7. package/dist/test/benchmark.js +35 -30
  8. package/dist/test/benchmark.js.map +3 -3
  9. package/dist/test/integ.es5.js +329 -312
  10. package/dist/test/integ.js +519 -187
  11. package/dist/test/integ.js.map +4 -4
  12. package/dist/types/current/ad/AdControllerImpl.d.ts.map +1 -1
  13. package/dist/types/current/ad/AdControllerImpl.js +15 -1
  14. package/dist/types/current/ad/discoverHlsInterstitials.js +13 -1
  15. package/dist/types/current/drm/DrmControllerImpl.d.ts +6 -0
  16. package/dist/types/current/drm/DrmControllerImpl.d.ts.map +1 -1
  17. package/dist/types/current/drm/DrmControllerImpl.js +11 -1
  18. package/dist/types/current/drm/commonEme/MsCommonEme.d.ts.map +1 -1
  19. package/dist/types/current/drm/commonEme/MsCommonEme.js +2 -2
  20. package/dist/types/current/drm/commonEme/StandardCommonEme.d.ts.map +1 -1
  21. package/dist/types/current/drm/commonEme/StandardCommonEme.js +3 -2
  22. package/dist/types/current/drm/commonEme/WebKitCommonEme.d.ts.map +1 -1
  23. package/dist/types/current/drm/commonEme/WebKitCommonEme.js +2 -2
  24. package/dist/types/current/drm/dom/MSMediaKeys.d.ts +1 -1
  25. package/dist/types/current/drm/dom/MSMediaKeys.d.ts.map +1 -1
  26. package/dist/types/current/drm/dom/WebKitMediaKeys.d.ts +1 -1
  27. package/dist/types/current/drm/dom/WebKitMediaKeys.d.ts.map +1 -1
  28. package/dist/types/current/drm/util/extractContentId.js +2 -2
  29. package/dist/types/current/playback/PlaybackControllerImpl.d.ts +9 -3
  30. package/dist/types/current/playback/PlaybackControllerImpl.d.ts.map +1 -1
  31. package/dist/types/current/playback/PlaybackControllerImpl.js +38 -33
  32. package/dist/types/current/streaming/MediaQualityMetadata.d.ts +3 -1
  33. package/dist/types/current/streaming/MediaQualityMetadata.d.ts.map +1 -1
  34. package/dist/types/current/streaming/SegmentControllerImpl.d.ts +1 -1
  35. package/dist/types/current/streaming/buffering/BufferingController.d.ts +1 -1
  36. package/dist/types/current/streaming/buffering/BufferingController.d.ts.map +1 -1
  37. package/dist/types/current/streaming/buffering/BufferingController.js +14 -5
  38. package/dist/types/current/streaming/buffering/MediaSourceController.d.ts.map +1 -1
  39. package/dist/types/current/streaming/buffering/MediaSourceController.js +4 -0
  40. package/dist/types/current/text/discoverDashTextTracks.d.ts +2 -2
  41. package/dist/types/current/text/discoverDashTextTracks.js +4 -3
  42. package/dist/types/current/text/parseWebVtt.d.ts.map +1 -1
  43. package/dist/types/current/text/parseWebVtt.js +3 -2
  44. package/dist/types/current/track/TrackController.d.ts.map +1 -1
  45. package/dist/types/current/track/TrackController.js +7 -0
  46. package/dist/types/current/track/hls/HlsManifestData.d.ts +14 -1
  47. package/dist/types/current/track/hls/HlsManifestData.d.ts.map +1 -1
  48. package/dist/types/current/track/hls/buildHlsMediaTimeline.d.ts.map +1 -1
  49. package/dist/types/current/track/hls/buildHlsMediaTimeline.js +10 -2
  50. package/dist/types/current/track/hls/createUrlHlsManifestProvider.d.ts +3 -2
  51. package/dist/types/current/track/hls/createUrlHlsManifestProvider.d.ts.map +1 -1
  52. package/dist/types/current/track/hls/createUrlHlsManifestProvider.js +8 -3
  53. package/dist/types/current/track/mse/MseTrack.d.ts +0 -1
  54. package/dist/types/current/track/mse/MseTrack.d.ts.map +1 -1
  55. package/dist/types/current/track/mse/MseTrack.js +5 -6
  56. package/dist/types/current/tsconfig.tsbuildinfo +1 -1
  57. package/dist/types/ts3.7/drm/DrmControllerImpl.d.ts +6 -0
  58. package/dist/types/ts3.7/playback/PlaybackControllerImpl.d.ts +9 -3
  59. package/dist/types/ts3.7/streaming/MediaQualityMetadata.d.ts +3 -1
  60. package/dist/types/ts3.7/streaming/SegmentControllerImpl.d.ts +1 -1
  61. package/dist/types/ts3.7/streaming/buffering/BufferingController.d.ts +1 -1
  62. package/dist/types/ts3.7/text/discoverDashTextTracks.d.ts +2 -2
  63. package/dist/types/ts3.7/track/hls/HlsManifestData.d.ts +14 -1
  64. package/dist/types/ts3.7/track/hls/createUrlHlsManifestProvider.d.ts +3 -2
  65. package/dist/types/ts3.7/track/mse/MseTrack.d.ts +0 -1
  66. package/dist/types/ts4.1/drm/DrmControllerImpl.d.ts +6 -0
  67. package/dist/types/ts4.1/playback/PlaybackControllerImpl.d.ts +9 -3
  68. package/dist/types/ts4.1/streaming/MediaQualityMetadata.d.ts +3 -1
  69. package/dist/types/ts4.1/streaming/SegmentControllerImpl.d.ts +1 -1
  70. package/dist/types/ts4.1/streaming/buffering/BufferingController.d.ts +1 -1
  71. package/dist/types/ts4.1/text/discoverDashTextTracks.d.ts +2 -2
  72. package/dist/types/ts4.1/track/hls/HlsManifestData.d.ts +14 -1
  73. package/dist/types/ts4.1/track/hls/createUrlHlsManifestProvider.d.ts +3 -2
  74. package/dist/types/ts4.1/track/mse/MseTrack.d.ts +0 -1
  75. package/dist/types/ts4.7/drm/DrmControllerImpl.d.ts +6 -0
  76. package/dist/types/ts4.7/playback/PlaybackControllerImpl.d.ts +9 -3
  77. package/dist/types/ts4.7/streaming/MediaQualityMetadata.d.ts +3 -1
  78. package/dist/types/ts4.7/streaming/SegmentControllerImpl.d.ts +1 -1
  79. package/dist/types/ts4.7/streaming/buffering/BufferingController.d.ts +1 -1
  80. package/dist/types/ts4.7/text/discoverDashTextTracks.d.ts +2 -2
  81. package/dist/types/ts4.7/track/hls/HlsManifestData.d.ts +14 -1
  82. package/dist/types/ts4.7/track/hls/createUrlHlsManifestProvider.d.ts +3 -2
  83. package/dist/types/ts4.7/track/mse/MseTrack.d.ts +0 -1
  84. package/dist/unit/types/current/ad/AdControllerImpl.test.js +66 -0
  85. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.js +29 -2
  86. package/dist/unit/types/current/drm/DrmControllerImpl.test.js +19 -1
  87. package/dist/unit/types/current/drm/commonEme/StandardCommonEme.test.js +12 -4
  88. package/dist/unit/types/current/drm/util/extractContentId.test.js +7 -0
  89. package/dist/unit/types/current/index.d.ts +1 -0
  90. package/dist/unit/types/current/index.d.ts.map +1 -1
  91. package/dist/unit/types/current/index.js +1 -0
  92. package/dist/unit/types/current/playback/PlaybackControllerImpl.test.js +15 -0
  93. package/dist/unit/types/current/streaming/MediaQualityMetadata.test.js +8 -0
  94. package/dist/unit/types/current/streaming/MseTrack.test.js +15 -0
  95. package/dist/unit/types/current/streaming/buffering/BufferingController.test.js +26 -0
  96. package/dist/unit/types/current/streaming/buffering/MediaSourceController.test.js +29 -0
  97. package/dist/unit/types/current/text/TextTrack.test.d.ts +2 -0
  98. package/dist/unit/types/current/text/TextTrack.test.d.ts.map +1 -0
  99. package/dist/unit/types/current/text/TextTrack.test.js +12 -0
  100. package/dist/unit/types/current/text/discoverDashTextTracks.test.js +17 -0
  101. package/dist/unit/types/current/text/parseWebVtt.test.js +26 -0
  102. package/dist/unit/types/current/track/TrackController.test.js +15 -60
  103. package/dist/unit/types/current/track/hls/buildHlsMediaTimeline.test.js +22 -0
  104. package/dist/unit/types/current/track/hls/createUrlHlsManifestProvider.test.js +23 -0
  105. package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
  106. package/dist/vinylTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
  107. package/docs/CUSTOMIZATION_GUIDE.md +310 -0
  108. package/package.json +10 -10
  109. package/docs/DASH_MANIFEST_TRANSFORM_GUIDE.md +0 -236
@@ -1 +1 @@
1
- {"version":3,"file":"AdControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/ad/AdControllerImpl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AdControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/ad/AdControllerImpl.ts"],"names":[],"mappings":"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"}
@@ -340,8 +340,16 @@ export class AdControllerImpl extends EventHostImpl {
340
340
  // The break may have been completed or swapped out (a content
341
341
  // change, skip, or playout-limit) while its ads were resolving;
342
342
  // don't start an ad for an abandoned break.
343
- if (this.disposed || adBreakState.completedReason)
343
+ if (this.disposed)
344
+ return;
345
+ if (adBreakState.completedReason) {
346
+ // Whoever completed it could not advance (this call still
347
+ // holds `loadingNext`), and nothing else drains the pending
348
+ // list — a non-empty list blocks midroll ingress outright.
349
+ if (!this.adBreakState)
350
+ await nextBreak();
344
351
  return;
352
+ }
345
353
  if (ad) {
346
354
  this.startAd(ad);
347
355
  }
@@ -517,16 +525,22 @@ export class AdControllerImpl extends EventHostImpl {
517
525
  if (!adState.quartile.first &&
518
526
  currProgress > 0.25 &&
519
527
  progressStart < AD_START_TOLERANCE) {
528
+ adState.quartile.first = true;
529
+ logDebug(this, 'adFirstQuartile', adState.ad);
520
530
  this.dispatch('adFirstQuartile', createAdProgressEvent(adState));
521
531
  }
522
532
  if (!adState.quartile.midpoint &&
523
533
  currProgress > 0.5 &&
524
534
  progressStart < 0.25 + AD_START_TOLERANCE) {
535
+ adState.quartile.midpoint = true;
536
+ logDebug(this, 'adMidpoint', adState.ad);
525
537
  this.dispatch('adMidpoint', createAdProgressEvent(adState));
526
538
  }
527
539
  if (!adState.quartile.third &&
528
540
  currProgress > 0.75 &&
529
541
  progressStart < 0.5 + AD_START_TOLERANCE) {
542
+ adState.quartile.third = true;
543
+ logDebug(this, 'adThirdQuartile', adState.ad);
530
544
  this.dispatch('adThirdQuartile', createAdProgressEvent(adState));
531
545
  }
532
546
  // adEnded is not on progress but on a call to `endAd()`.
@@ -213,16 +213,28 @@ function resolveHlsAssetContent({ range, startTime, duration, baseUrl, }) {
213
213
  return { ads: [], skipControl: null };
214
214
  }
215
215
  async function resolveHlsAssetList({ assetListUrl, rangeId, startTime, baseUrl, }) {
216
+ // X-ASSET-LIST "MAY be absolute, or it MAY be relative to the URI of the
217
+ // Playlist."
218
+ // @see https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-22#appendix-D.2
216
219
  const url = resolveUrl(assetListUrl, baseUrl);
217
220
  const response = await requestWithRetry(url);
218
221
  const json = await readResponseBody(response, 'json');
222
+ // A custom requester may return a synthesized Response with no url.
223
+ const assetListBaseUrl = response.url || url;
219
224
  const assets = json.ASSETS ?? [];
220
225
  const ads = assets.map((asset, i) => {
221
226
  return {
222
227
  id: `${rangeId}-${i}`,
223
228
  startTime,
224
229
  duration: asset.DURATION ?? null,
225
- uri: resolveUrl(asset.URI, baseUrl),
230
+ // Each Asset-Description "URI" MUST be an absolute URI, so the base
231
+ // only applies to non-conforming lists. As a leniency (not a spec
232
+ // rule), resolve against the asset list the URI was read from, as
233
+ // for any relative reference in a retrieved document (RFC 3986
234
+ // §5.1.3): asset lists are commonly served by an ad server rather
235
+ // than alongside the playlist.
236
+ // @see https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-22#appendix-D.2
237
+ uri: resolveUrl(asset.URI, assetListBaseUrl),
226
238
  };
227
239
  });
228
240
  return { ads, skipControl: parseSkipControl(json['SKIP-CONTROL']) };
@@ -12,6 +12,12 @@ import type { TrackUri } from '../track/Track';
12
12
  * indicates a stalled promise result from the license provider.
13
13
  */
14
14
  export declare const LICENSE_TIMEOUT = 90;
15
+ /**
16
+ * An excessive number of concurrent key sessions. Sessions are expected to be
17
+ * closed as tracks deactivate; a count this high signals sessions are leaking
18
+ * (never closing) rather than a legitimate playback need.
19
+ */
20
+ export declare const EXCESSIVE_SESSION_COUNT = 20;
15
21
  /**
16
22
  * Dependencies for creating DrmController.
17
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DrmControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/drm/DrmControllerImpl.ts"],"names":[],"mappings":"AAKA,OAAO,EAUH,aAAa,EAMb,KAAK,KAAK,EAUb,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAEH,KAAK,UAAU,EAGlB,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EACR,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACR,SAAS,EAET,0BAA0B,EAC1B,eAAe,EACf,qBAAqB,EAExB,MAAM,uBAAuB,CAAA;AAK9B,OAAO,KAAK,EACR,WAAW,EACX,mBAAmB,EACtB,MAAM,mCAAmC,CAAA;AAS1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAG9C;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,KAAK,CAAA;AAGjC;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;CACvC;AAED,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAA;IACnC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAA;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IAClC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAA;CAC3C;AAyBD,qBAAa,iBACT,SAAQ,aAAa,CAAC,qBAAqB,CAC3C,YAAW,aAAa;IA4BpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IA1BzB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;IAED,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;IACxC,OAAO,CAAC,OAAO,CAAY;IAE3B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IAEvD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,iBAAiB,CAAwB;IACjD,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,mBAAmB,CAAyC;IAIpE,OAAO,CAAC,iBAAiB,CAAO;IAChC,OAAO,CAAC,iBAAiB,CAAyB;IAElD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;gBAGvB,IAAI,EAAE,qBAAqB,EAC5C,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAgBxC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI;IAWpD,OAAO,KAAK,eAAe,GAE1B;IAED,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAExB;IAED,cAAc,IAAI,OAAO;IAInB,WAAW,CACb,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IAS/B,OAAO,CAAC,sBAAsB,CAgC7B;IAED,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CA2CpC;IAED;;;OAGG;YACW,eAAe;IAsB7B;;;;OAIG;YACW,kBAAkB;IAiEhC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,gBAAgB;IAsBxB,qBAAqB,CACjB,OAAO,EAAE,mBAAmB,GAAG,IAAI,EACnC,OAAO,CAAC,EAAE,kBAAkB,GAC7B,IAAI;IAWP,+EAA+E;IAC/E,OAAO,CAAC,wBAAwB;IAOhC,mBAAmB,CACf,OAAO,EAAE,mBAAmB,GAAG,IAAI,EACnC,OAAO,CAAC,EAAE,kBAAkB,GAC7B,IAAI;IAYP;;;OAGG;YACW,yBAAyB;IAkCvC;;OAEG;YACW,YAAY;IAmC1B;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAyDxC,OAAO,CAAC,wBAAwB;IAiBhC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmCxB;;OAEG;YACW,cAAc;IAoE5B;;;OAGG;IACH,aAAa;IAKb,OAAO,CAAC,YAAY;IAcpB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAM3B;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB,SAAS,CAAC,eAAe;IAIzB,KAAK;IA2BL,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CASnC;CACJ"}
1
+ {"version":3,"file":"DrmControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/drm/DrmControllerImpl.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { AbortError, base64ToByteArray, buffersEqual, bufferToByteArray, clone, compareBy, createDisposer, ErrorOrigin, EventHostImpl, getUserAgentInfo, isSilentError, logDebug, logError, logVerbose, memoize, noop, normalizeHeadersInit, Os, remove, resolveValueProvider, withTimeout, } from '@amazon/vinyl-util';
5
+ import { AbortError, base64ToByteArray, buffersEqual, bufferToByteArray, clone, compareBy, createDisposer, ErrorOrigin, EventHostImpl, getUserAgentInfo, isSilentError, logDebug, logError, logVerbose, logWarn, memoize, noop, normalizeHeadersInit, Os, remove, resolveValueProvider, withTimeout, } from '@amazon/vinyl-util';
6
6
  import { instanceOf, object } from '@amazon/vinyl-validation';
7
7
  import { DrmRobustness, } from './DrmOptions';
8
8
  import { DrmError } from './error/DrmError';
@@ -20,6 +20,12 @@ import { createFairPlaySessionInitData } from './util/createFairPlaySessionInitD
20
20
  */
21
21
  export const LICENSE_TIMEOUT = 90;
22
22
  const LICENSE_TIMEOUT_MESSAGE = 'License provider timed out after {time}s';
23
+ /**
24
+ * An excessive number of concurrent key sessions. Sessions are expected to be
25
+ * closed as tracks deactivate; a count this high signals sessions are leaking
26
+ * (never closing) rather than a legitimate playback need.
27
+ */
28
+ export const EXCESSIVE_SESSION_COUNT = 20;
23
29
  export class DrmControllerImpl extends EventHostImpl {
24
30
  deps;
25
31
  get [Symbol.toStringTag]() {
@@ -196,6 +202,10 @@ export class DrmControllerImpl extends EventHostImpl {
196
202
  trackUri,
197
203
  });
198
204
  this.sessions.push(newSession);
205
+ logVerbose(this, `total sessions: ${this.sessions.length}`);
206
+ if (this.sessions.length === EXCESSIVE_SESSION_COUNT + 1) {
207
+ logWarn(this, `${this.sessions.length} open key sessions exceeds ${EXCESSIVE_SESSION_COUNT}; sessions may be leaking (not closing on track deactivation)`);
208
+ }
199
209
  this.dispatch('sessionCreate', {
200
210
  initDataType: newSession.initDataType,
201
211
  mimeType: newSession.mimeType,
@@ -1 +1 @@
1
- {"version":3,"file":"MsCommonEme.d.ts","sourceRoot":"","sources":["../../../../../src/drm/commonEme/MsCommonEme.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,KAAK,UAAU,EAGf,aAAa,EACb,KAAK,WAAW,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAE1B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,wBAAwB,EAC3B,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAG5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,wBAAyB,SAAQ,mBAAmB;QAC1D,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAA;KAC5C;IAED,UAAU,qBAAsB,SAAQ,KAAK;QACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;KACpD;CACJ;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,SAAS;IACzC,2BAA2B,CACvB,SAAS,EAAE,YAAY,EACvB,uBAAuB,EAAE,SAAS,2BAA2B,EAAE,GAChE,OAAO,CAAC,0BAA0B,CAAC;IA4BtC;;OAEG;IACH,oBAAoB,CAChB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAC9C,WAAW;CAMjB;AAED,qBAAa,4BAA6B,YAAW,0BAA0B;IAC/D,QAAQ,CAAC,SAAS,EAAE,YAAY;gBAAvB,SAAS,EAAE,YAAY;IAE5C,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;CAM9C;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,eAAe;aAEjC,SAAS,EAAE,YAAY;aACvB,SAAS,EAAE,WAAW;gBADtB,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,WAAW;IAG1C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,oBAAoB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,aAAa,CACT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB,GAC5B,qBAAqB;CAY3B;AAED;;GAEG;AACH,qBAAa,uBACT,SAAQ,aAAa,CAAC,6BAA6B,CACnD,YAAW,qBAAqB,EAAE,UAAU;IAKxC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,YAAY,EAAE,eAAe;IACtC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IANxC,OAAO,CAAC,SAAS,CAAiB;gBAGb,OAAO,EAAE,iBAAiB,EAClC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB;IAOxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI9B;IAED,OAAO,CAAC,QAAQ,CAAC,YAAY,CAW5B;IAED,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,OAAO,IAAI,IAAI;CAOlB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAgBvE"}
1
+ {"version":3,"file":"MsCommonEme.d.ts","sourceRoot":"","sources":["../../../../../src/drm/commonEme/MsCommonEme.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,KAAK,UAAU,EAGf,aAAa,EACb,KAAK,WAAW,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAE1B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,wBAAwB,EAC3B,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAG5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,wBAAyB,SAAQ,mBAAmB;QAC1D,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAA;KAC5C;IAED,UAAU,qBAAsB,SAAQ,KAAK;QACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;KACpD;CACJ;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,SAAS;IACzC,2BAA2B,CACvB,SAAS,EAAE,YAAY,EACvB,uBAAuB,EAAE,SAAS,2BAA2B,EAAE,GAChE,OAAO,CAAC,0BAA0B,CAAC;IA4BtC;;OAEG;IACH,oBAAoB,CAChB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAC9C,WAAW;CAMjB;AAED,qBAAa,4BAA6B,YAAW,0BAA0B;IAC/D,QAAQ,CAAC,SAAS,EAAE,YAAY;gBAAvB,SAAS,EAAE,YAAY;IAE5C,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;CAM9C;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,eAAe;aAEjC,SAAS,EAAE,YAAY;aACvB,SAAS,EAAE,WAAW;gBADtB,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,WAAW;IAG1C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,oBAAoB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,aAAa,CACT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB,GAC5B,qBAAqB;CAY3B;AAED;;GAEG;AACH,qBAAa,uBACT,SAAQ,aAAa,CAAC,6BAA6B,CACnD,YAAW,qBAAqB,EAAE,UAAU;IAKxC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,YAAY,EAAE,eAAe;IACtC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IANxC,OAAO,CAAC,SAAS,CAAiB;gBAGb,OAAO,EAAE,iBAAiB,EAClC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB;IAOxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI9B;IAED,OAAO,CAAC,QAAQ,CAAC,YAAY,CAW5B;IAED,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,OAAO,IAAI,IAAI;CAOlB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAgBvE"}
@@ -2,7 +2,7 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { bufferToByteArray, DisposedError, ErrorOrigin, EventHostImpl, } from '@amazon/vinyl-util';
5
+ import { bufferToArrayBuffer, bufferToByteArray, DisposedError, ErrorOrigin, EventHostImpl, } from '@amazon/vinyl-util';
6
6
  import { CommonMediaKeySessionError, MediaKeySessionErrorType, } from './CommonEme';
7
7
  import { DrmError } from '../error/DrmError';
8
8
  /**
@@ -94,7 +94,7 @@ export class MsCommonMediaKeySession extends EventHostImpl {
94
94
  }
95
95
  messageHandler = (event) => {
96
96
  this.dispatch('message', {
97
- message: event.message.buffer,
97
+ message: bufferToArrayBuffer(event.message),
98
98
  });
99
99
  };
100
100
  errorHandler = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"StandardCommonEme.d.ts","sourceRoot":"","sources":["../../../../../src/drm/commonEme/StandardCommonEme.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,UAAU,EAEf,aAAa,EAEb,KAAK,WAAW,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EACR,SAAS,EACT,yBAAyB,EAEzB,eAAe,EACf,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC7B,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE;;GAEG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IACzC,2BAA2B,CAC7B,SAAS,EAAE,YAAY,EACvB,uBAAuB,EAAE,SAAS,2BAA2B,EAAE,GAChE,OAAO,CAAC,0BAA0B,CAAC;IAOtC,oBAAoB,CAChB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,GACpD,WAAW;CAIjB;AAED;;GAEG;AACH,qBAAa,kCAAmC,YAAW,0BAA0B;aAE7D,SAAS,EAAE,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADP,SAAS,EAAE,YAAY,EACtB,MAAM,EAAE,oBAAoB;IAGjD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;CAMpD;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,eAAe;aAEvC,SAAS,EAAE,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADV,SAAS,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS;IAGzC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,oBAAoB,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvE,aAAa,CACT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB,GAC5B,qBAAqB;CAQ3B;AAED;;GAEG;AACH,qBAAa,6BACT,SAAQ,aAAa,CAAC,6BAA6B,CACnD,YAAW,qBAAqB,EAAE,UAAU;IAexC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,YAAY,EAAE,eAAe;IACtC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IAhBxC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;IAED,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI9B;gBAGoB,OAAO,EAAE,eAAe,EAChC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB;IAsBxC,OAAO,CAAC,eAAe;IAUvB,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,OAAO,IAAI,IAAI;CAMlB"}
1
+ {"version":3,"file":"StandardCommonEme.d.ts","sourceRoot":"","sources":["../../../../../src/drm/commonEme/StandardCommonEme.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,UAAU,EAEf,aAAa,EAEb,KAAK,WAAW,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EACR,SAAS,EACT,yBAAyB,EAEzB,eAAe,EACf,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC7B,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE;;GAEG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IACzC,2BAA2B,CAC7B,SAAS,EAAE,YAAY,EACvB,uBAAuB,EAAE,SAAS,2BAA2B,EAAE,GAChE,OAAO,CAAC,0BAA0B,CAAC;IAOtC,oBAAoB,CAChB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,GACpD,WAAW;CAIjB;AAED;;GAEG;AACH,qBAAa,kCAAmC,YAAW,0BAA0B;aAE7D,SAAS,EAAE,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADP,SAAS,EAAE,YAAY,EACtB,MAAM,EAAE,oBAAoB;IAGjD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;CAMpD;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,eAAe;aAEvC,SAAS,EAAE,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADV,SAAS,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS;IAGzC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,oBAAoB,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvE,aAAa,CACT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB,GAC5B,qBAAqB;CAQ3B;AAED;;GAEG;AACH,qBAAa,6BACT,SAAQ,aAAa,CAAC,6BAA6B,CACnD,YAAW,qBAAqB,EAAE,UAAU;IAexC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,YAAY,EAAE,eAAe;IACtC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IAhBxC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;IAED,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI9B;gBAGoB,OAAO,EAAE,eAAe,EAChC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB;IAsBxC,OAAO,CAAC,eAAe;IAQvB,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,OAAO,IAAI,IAAI;CAMlB"}
@@ -104,9 +104,10 @@ export class StandardCommonMediaKeySession extends EventHostImpl {
104
104
  });
105
105
  }
106
106
  generateRequest() {
107
- const initData = this.initData;
107
+ // `initData` is already a BufferSource; reading `buffer` from a view
108
+ // would ignore its offset and length.
108
109
  return this.session
109
- .generateRequest(this.initDataType, initData instanceof ArrayBuffer ? initData : initData.buffer)
110
+ .generateRequest(this.initDataType, this.initData)
110
111
  .catch(createDrmErrorHandler());
111
112
  }
112
113
  update(key) {
@@ -1 +1 @@
1
- {"version":3,"file":"WebKitCommonEme.d.ts","sourceRoot":"","sources":["../../../../../src/drm/commonEme/WebKitCommonEme.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAEH,KAAK,UAAU,EAGf,aAAa,EAChB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EACR,SAAS,EACT,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC7B,MAAM,aAAa,CAAA;AACpB,OAAO,EAEH,wBAAwB,EAC3B,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,wBAAyB,SAAQ,mBAAmB;QAC1D,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAA;KACpD;IAED,UAAU,yBAA0B,SAAQ,KAAK;QAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;KACpD;CACJ;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAC7C,2BAA2B,CACvB,SAAS,EAAE,YAAY,EACvB,uBAAuB,EAAE,SAAS,2BAA2B,EAAE,GAChE,OAAO,CAAC,0BAA0B,CAAC;IA4BtC,oBAAoB,CAChB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,GACpD,WAAW;CAIjB;AAED,qBAAa,gCAAiC,YAAW,0BAA0B;aACnD,SAAS,EAAE,YAAY;gBAAvB,SAAS,EAAE,YAAY;IAEnD,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;CAQ9C;AAED,eAAe;AACf,qBAAa,qBAAsB,YAAW,eAAe;aAErC,SAAS,EAAE,YAAY;aACvB,SAAS,EAAE,eAAe;gBAD1B,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,eAAe;IAG9C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,oBAAoB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,aAAa,CACT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB,GAC5B,qBAAqB;CAY3B;AAED,eAAe;AACf,qBAAa,2BACT,SAAQ,aAAa,CAAC,6BAA6B,CACnD,YAAW,qBAAqB,EAAE,UAAU;IAKxC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,YAAY,EAAE,eAAe;IACtC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IANxC,OAAO,CAAC,SAAS,CAAiB;gBAGb,OAAO,EAAE,qBAAqB,EACtC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB;IAOxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI9B;IAED,OAAO,CAAC,QAAQ,CAAC,YAAY,CAW5B;IAED,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,IAAI,QAAQ,YAEX;IAED,OAAO,IAAI,IAAI;CAWlB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAgB3E"}
1
+ {"version":3,"file":"WebKitCommonEme.d.ts","sourceRoot":"","sources":["../../../../../src/drm/commonEme/WebKitCommonEme.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAGH,KAAK,UAAU,EAGf,aAAa,EAChB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EACR,SAAS,EACT,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC7B,MAAM,aAAa,CAAA;AACpB,OAAO,EAEH,wBAAwB,EAC3B,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,wBAAyB,SAAQ,mBAAmB;QAC1D,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAA;KACpD;IAED,UAAU,yBAA0B,SAAQ,KAAK;QAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;KACpD;CACJ;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAC7C,2BAA2B,CACvB,SAAS,EAAE,YAAY,EACvB,uBAAuB,EAAE,SAAS,2BAA2B,EAAE,GAChE,OAAO,CAAC,0BAA0B,CAAC;IA4BtC,oBAAoB,CAChB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,GACpD,WAAW;CAIjB;AAED,qBAAa,gCAAiC,YAAW,0BAA0B;aACnD,SAAS,EAAE,YAAY;gBAAvB,SAAS,EAAE,YAAY;IAEnD,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;CAQ9C;AAED,eAAe;AACf,qBAAa,qBAAsB,YAAW,eAAe;aAErC,SAAS,EAAE,YAAY;aACvB,SAAS,EAAE,eAAe;gBAD1B,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,eAAe;IAG9C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,oBAAoB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,aAAa,CACT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB,GAC5B,qBAAqB;CAY3B;AAED,eAAe;AACf,qBAAa,2BACT,SAAQ,aAAa,CAAC,6BAA6B,CACnD,YAAW,qBAAqB,EAAE,UAAU;IAKxC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,YAAY,EAAE,eAAe;IACtC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IANxC,OAAO,CAAC,SAAS,CAAiB;gBAGb,OAAO,EAAE,qBAAqB,EACtC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,iBAAiB;IAOxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI9B;IAED,OAAO,CAAC,QAAQ,CAAC,YAAY,CAW5B;IAED,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,IAAI,QAAQ,YAEX;IAED,OAAO,IAAI,IAAI;CAWlB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAgB3E"}
@@ -2,7 +2,7 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { bufferToByteArray, DisposedError, ErrorOrigin, EventHostImpl, } from '@amazon/vinyl-util';
5
+ import { bufferToArrayBuffer, bufferToByteArray, DisposedError, ErrorOrigin, EventHostImpl, } from '@amazon/vinyl-util';
6
6
  import { CommonMediaKeySessionError, MediaKeySessionErrorType, } from './CommonEme';
7
7
  import { DrmError } from '../error/DrmError';
8
8
  /**
@@ -87,7 +87,7 @@ export class WebKitCommonMediaKeySession extends EventHostImpl {
87
87
  }
88
88
  messageHandler = (event) => {
89
89
  this.dispatch('message', {
90
- message: event.message.buffer,
90
+ message: bufferToArrayBuffer(event.message),
91
91
  });
92
92
  };
93
93
  errorHandler = () => {
@@ -41,6 +41,6 @@ export interface MSMediaKeySessionEventMap {
41
41
  readonly mskeyerror: Event;
42
42
  }
43
43
  export interface MSMediaKeyMessageEvent extends Event {
44
- readonly message: Uint8Array;
44
+ readonly message: Uint8Array<ArrayBuffer>;
45
45
  }
46
46
  //# sourceMappingURL=MSMediaKeys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MSMediaKeys.d.ts","sourceRoot":"","sources":["../../../../../src/drm/dom/MSMediaKeys.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAI/C;;;;GAIG;AAEH,OAAO,CAAC,MAAM,CAAC;IACX,MAAM,WAAW;QACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;oBAEd,SAAS,EAAE,MAAM;QAE7B,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO;QAExE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,iBAAiB;KACvE;IAED,MAAM,eAAe;QACjB,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;QAC9C,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;QAC9C,MAAM,CAAC,QAAQ,CAAC,8BAA8B,EAAE,MAAM,CAAA;QACtD,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;QAC9C,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAA;QAC/C,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAA;QAE/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAC9B;IAED,UAAU,iBAAkB,SAAQ,WAAW;QAC3C,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;QACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,YAAY,EAAE,aAAa,GAAG,IAAI,CAAA;QAClC,YAAY,EAAE,aAAa,GAAG,IAAI,CAAA;QAClC,cAAc,EAAE,aAAa,GAAG,IAAI,CAAA;QACpC,SAAS,EAAE,MAAM,CAAA;QAEjB,KAAK,IAAI,IAAI,CAAA;QAEb,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAA;QAE7B,gBAAgB,CAAC,CAAC,SAAS,MAAM,yBAAyB,EACtD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CACN,IAAI,EAAE,iBAAiB,EACvB,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC,KAC/B,GAAG,EACR,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC5C,IAAI,CAAA;QAEP,gBAAgB,CACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC5C,IAAI,CAAA;QAEP,mBAAmB,CAAC,CAAC,SAAS,MAAM,yBAAyB,EACzD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CACN,IAAI,EAAE,iBAAiB,EACvB,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC,KAC/B,GAAG,EACR,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACzC,IAAI,CAAA;QAEP,mBAAmB,CACf,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACzC,IAAI,CAAA;KACV;CACJ;AAED,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAA;IAC7C,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAA;CAC7B;AAED,MAAM,WAAW,sBAAuB,SAAQ,KAAK;IACjD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;CAC/B"}
1
+ {"version":3,"file":"MSMediaKeys.d.ts","sourceRoot":"","sources":["../../../../../src/drm/dom/MSMediaKeys.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAI/C;;;;GAIG;AAEH,OAAO,CAAC,MAAM,CAAC;IACX,MAAM,WAAW;QACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;oBAEd,SAAS,EAAE,MAAM;QAE7B,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO;QAExE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,iBAAiB;KACvE;IAED,MAAM,eAAe;QACjB,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;QAC9C,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;QAC9C,MAAM,CAAC,QAAQ,CAAC,8BAA8B,EAAE,MAAM,CAAA;QACtD,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;QAC9C,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAA;QAC/C,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAA;QAE/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAC9B;IAED,UAAU,iBAAkB,SAAQ,WAAW;QAC3C,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;QACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,YAAY,EAAE,aAAa,GAAG,IAAI,CAAA;QAClC,YAAY,EAAE,aAAa,GAAG,IAAI,CAAA;QAClC,cAAc,EAAE,aAAa,GAAG,IAAI,CAAA;QACpC,SAAS,EAAE,MAAM,CAAA;QAEjB,KAAK,IAAI,IAAI,CAAA;QAEb,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAA;QAE7B,gBAAgB,CAAC,CAAC,SAAS,MAAM,yBAAyB,EACtD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CACN,IAAI,EAAE,iBAAiB,EACvB,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC,KAC/B,GAAG,EACR,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC5C,IAAI,CAAA;QAEP,gBAAgB,CACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC5C,IAAI,CAAA;QAEP,mBAAmB,CAAC,CAAC,SAAS,MAAM,yBAAyB,EACzD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CACN,IAAI,EAAE,iBAAiB,EACvB,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC,KAC/B,GAAG,EACR,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACzC,IAAI,CAAA;QAEP,mBAAmB,CACf,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACzC,IAAI,CAAA;KACV;CACJ;AAED,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAA;IAC7C,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAA;CAC7B;AAED,MAAM,WAAW,sBAAuB,SAAQ,KAAK;IACjD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;CAC5C"}
@@ -45,6 +45,6 @@ export interface WebKitMediaKeySessionEventMap {
45
45
  readonly webkitkeyerror: Event;
46
46
  }
47
47
  export interface WebKitMediaKeyMessageEvent extends Event {
48
- readonly message: Uint8Array;
48
+ readonly message: Uint8Array<ArrayBuffer>;
49
49
  }
50
50
  //# sourceMappingURL=WebKitMediaKeys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebKitMediaKeys.d.ts","sourceRoot":"","sources":["../../../../../src/drm/dom/WebKitMediaKeys.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C;;;;;;;;GAQG;AAEH,OAAO,CAAC,MAAM,CAAC;IACX,MAAM,eAAe;QACjB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;oBAEd,SAAS,EAAE,MAAM;QAE7B,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO;QAExE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,qBAAqB;KAC3E;IAED,MAAM,mBAAmB;QACrB,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;QAC5C,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;QAC3C,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;QAC5C,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;QAC3C,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAA;QACnD,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;QAE3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAC9B;IAED,UAAU,qBAAsB,SAAQ,WAAW;QAC/C,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAA;QAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAA;QACtC,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAA;QACtC,kBAAkB,EAAE,aAAa,GAAG,IAAI,CAAA;QACxC,SAAS,EAAE,MAAM,CAAA;QAEjB,KAAK,IAAI,IAAI,CAAA;QAEb,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;QAE1C,gBAAgB,CAAC,CAAC,SAAS,MAAM,6BAA6B,EAC1D,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CACN,IAAI,EAAE,qBAAqB,EAC3B,EAAE,EAAE,6BAA6B,CAAC,CAAC,CAAC,KACnC,GAAG,EACR,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC5C,IAAI,CAAA;QAEP,gBAAgB,CACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC5C,IAAI,CAAA;QAEP,mBAAmB,CAAC,CAAC,SAAS,MAAM,6BAA6B,EAC7D,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CACN,IAAI,EAAE,qBAAqB,EAC3B,EAAE,EAAE,6BAA6B,CAAC,CAAC,CAAC,KACnC,GAAG,EACR,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACzC,IAAI,CAAA;QAEP,mBAAmB,CACf,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACzC,IAAI,CAAA;KACV;CACJ;AAED,MAAM,WAAW,6BAA6B;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,0BAA0B,CAAA;IACrD,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAA;CACjC;AAED,MAAM,WAAW,0BAA2B,SAAQ,KAAK;IACrD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;CAC/B"}
1
+ {"version":3,"file":"WebKitMediaKeys.d.ts","sourceRoot":"","sources":["../../../../../src/drm/dom/WebKitMediaKeys.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C;;;;;;;;GAQG;AAEH,OAAO,CAAC,MAAM,CAAC;IACX,MAAM,eAAe;QACjB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;oBAEd,SAAS,EAAE,MAAM;QAE7B,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO;QAExE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,qBAAqB;KAC3E;IAED,MAAM,mBAAmB;QACrB,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;QAC5C,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;QAC3C,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;QAC5C,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;QAC3C,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAA;QACnD,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;QAE3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAC9B;IAED,UAAU,qBAAsB,SAAQ,WAAW;QAC/C,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAA;QAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAA;QACtC,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAA;QACtC,kBAAkB,EAAE,aAAa,GAAG,IAAI,CAAA;QACxC,SAAS,EAAE,MAAM,CAAA;QAEjB,KAAK,IAAI,IAAI,CAAA;QAEb,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;QAE1C,gBAAgB,CAAC,CAAC,SAAS,MAAM,6BAA6B,EAC1D,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CACN,IAAI,EAAE,qBAAqB,EAC3B,EAAE,EAAE,6BAA6B,CAAC,CAAC,CAAC,KACnC,GAAG,EACR,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC5C,IAAI,CAAA;QAEP,gBAAgB,CACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC5C,IAAI,CAAA;QAEP,mBAAmB,CAAC,CAAC,SAAS,MAAM,6BAA6B,EAC7D,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CACN,IAAI,EAAE,qBAAqB,EAC3B,EAAE,EAAE,6BAA6B,CAAC,CAAC,CAAC,KACnC,GAAG,EACR,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACzC,IAAI,CAAA;QAEP,mBAAmB,CACf,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACzC,IAAI,CAAA;KACV;CACJ;AAED,MAAM,WAAW,6BAA6B;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,0BAA0B,CAAA;IACrD,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAA;CACjC;AAED,MAAM,WAAW,0BAA2B,SAAQ,KAAK;IACrD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;CAC5C"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { ValidationError } from '@amazon/vinyl-util';
6
6
  import { ErrorOrigin } from '@amazon/vinyl-util';
7
- import { bufferToUtf16 } from '@amazon/vinyl-util';
7
+ import { bufferToArrayBuffer, bufferToUtf16 } from '@amazon/vinyl-util';
8
8
  /**
9
9
  * Extract contentId from event data encoded as UTF16.
10
10
  *
@@ -12,7 +12,7 @@ import { bufferToUtf16 } from '@amazon/vinyl-util';
12
12
  * `skd://0b5689bb-4171-97e5-c280-99f7abe4004f`
13
13
  */
14
14
  export function extractContentId(initData) {
15
- const bufferStr = bufferToUtf16(initData.buffer);
15
+ const bufferStr = bufferToUtf16(bufferToArrayBuffer(initData));
16
16
  const matches = bufferStr.match(/skd:\/\/(.+)$/);
17
17
  if (!matches) {
18
18
  throw new ValidationError('No contentId match', ErrorOrigin.MEDIA);
@@ -15,7 +15,7 @@ export interface PlaybackControllerImplOptions {
15
15
  * The minimum number of seconds before the end of the next seekable range allowed for a seek
16
16
  * operation. Some browsers will never complete a seek operation if the seek is too close to
17
17
  * this end range.
18
- * Default: getMinSeekableBufferDefault() which is between 0.5 and 5, browser dependent.
18
+ * Default: getMinSeekableBufferDefault(), which is 2 on Chromium and 5 elsewhere.
19
19
  */
20
20
  readonly minSeekableBuffer: number;
21
21
  /**
@@ -63,12 +63,11 @@ export declare class PlaybackControllerImpl extends EventHostImpl<PlaybackContro
63
63
  private _playing;
64
64
  private _seeking;
65
65
  private _waiting;
66
- private _seekId;
66
+ private readonly seekAbortSlot;
67
67
  private stopStallDetection;
68
68
  private userVolume;
69
69
  private _pendingPlay;
70
70
  private playAbort;
71
- private disposeAbort;
72
71
  readonly options: PlaybackControllerImplOptions;
73
72
  constructor(deps: PlaybackControllerImplDeps, options?: Partial<PlaybackControllerImplOptions>);
74
73
  /**
@@ -174,6 +173,13 @@ export declare class PlaybackControllerImpl extends EventHostImpl<PlaybackContro
174
173
  get hasMetadata(): boolean;
175
174
  get playIsPending(): boolean;
176
175
  seekTo(time: number, tolerance?: number): Promise<void>;
176
+ /**
177
+ * The body of a single {@link seekTo} attempt. Extracted so {@link seekTo}
178
+ * can wrap it with per-seek abort/supersession handling. `seekAbort` is
179
+ * aborted when a newer seek supersedes this one (or on dispose).
180
+ * @private
181
+ */
182
+ private doSeek;
177
183
  /**
178
184
  * Dispatches a readyStateChange event when {@link readyState} changes.
179
185
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"PlaybackControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/playback/PlaybackControllerImpl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlaybackControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/playback/PlaybackControllerImpl.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { Abort, AbortError, Browser, clamp, closeTo, createDisposer, createTimeRangesReader, DomEventHost, ErrorLevel, ErrorOrigin, EventHostImpl, hasBrowser, logDebug, logInfo, logWarn, nextEventAsPromise, noop, onAny, ownKeys, TimeoutSlot, toLowerCase, withAbort, withTimeout, } from '@amazon/vinyl-util';
5
+ import { Abort, AbortError, createAbortSlot, Browser, clamp, closeTo, createDisposer, createTimeRangesReader, DomEventHost, ErrorLevel, ErrorOrigin, EventHostImpl, hasBrowser, logDebug, logInfo, logWarn, nextEventAsPromise, noop, onAny, ownKeys, TimeoutSlot, toLowerCase, withAbort, withTimeout, } from '@amazon/vinyl-util';
6
6
  import { LIVE_DURATION } from './PlaybackController';
7
7
  import { PlaybackReadyState, playedReasons, waitedReasons, } from './ReadonlyPlaybackController';
8
8
  import { createStallDetector } from './createStallDetector';
@@ -52,15 +52,13 @@ export class PlaybackControllerImpl extends EventHostImpl {
52
52
  _playing = false;
53
53
  _seeking = false;
54
54
  _waiting = false;
55
- // Monotonic counter identifying the most recent seekTo call.
56
- _seekId = 0;
55
+ seekAbortSlot = createAbortSlot();
57
56
  // Stops the stall detector started after the last seek, if any.
58
57
  stopStallDetection = null;
59
58
  // default user volume (0.0 to 1.0 scale)
60
59
  userVolume = 1.0;
61
60
  _pendingPlay = null;
62
61
  playAbort = null;
63
- disposeAbort = new Abort();
64
62
  options;
65
63
  constructor(deps, options) {
66
64
  super();
@@ -75,8 +73,7 @@ export class PlaybackControllerImpl extends EventHostImpl {
75
73
  this.media = deps.media;
76
74
  const { add } = this.disposer;
77
75
  add(() => {
78
- this.disposeAbort.abort();
79
- this.disposeAbort.dispose();
76
+ this.seekAbortSlot.abort();
80
77
  this.stopStallDetection?.();
81
78
  });
82
79
  this.domEvents = add(new DomEventHost(deps.media));
@@ -471,34 +468,44 @@ export class PlaybackControllerImpl extends EventHostImpl {
471
468
  }
472
469
  async seekTo(time, tolerance = 0.5) {
473
470
  logDebug(this, `seekTo: ${time}`);
474
- // Claim this seek as the newest. A seek that parks on an await (e.g. waiting for loadedMetadata) can resume
475
- // AFTER a later-issued seek has already applied its target.
476
- const seekId = ++this._seekId;
477
471
  // A new seek supersedes any stall watch from the previous one.
478
472
  this.stopStallDetection?.();
479
473
  this.stopStallDetection = null;
480
- const superseded = () => {
481
- if (this._seekId === seekId)
482
- return false;
483
- logDebug(this, `seekTo: ${time} superseded by a newer seek`);
484
- return true;
485
- };
474
+ this.seekAbortSlot.abort();
475
+ const seekAbort = this.seekAbortSlot.value;
486
476
  const nextEvent = (type, options) => {
487
477
  return nextEventAsPromise(this, type, {
488
478
  timeout: options?.timeout ?? this.options.seekTimeout,
489
479
  timeoutMessage: `seek timed out on ${type} event after {time}s`,
490
480
  timeoutOrigin: ErrorOrigin.INTERNAL,
491
481
  timeoutLevel: ErrorLevel.WARN,
492
- abort: this.disposeAbort,
482
+ abort: seekAbort,
493
483
  });
494
484
  };
495
- // Cannot seek until there are seekable ranges.
485
+ try {
486
+ await this.doSeek(time, tolerance, seekAbort, nextEvent);
487
+ }
488
+ catch (error) {
489
+ // A newer seek aborted this one's waits: it owns the media element
490
+ // now, so resolve quietly (matching the mid-flight `aborted()`
491
+ // bail-outs). Dispose and any real error still propagate.
492
+ if (seekAbort.aborted() && !this.disposed)
493
+ return;
494
+ throw error;
495
+ }
496
+ }
497
+ /**
498
+ * The body of a single {@link seekTo} attempt. Extracted so {@link seekTo}
499
+ * can wrap it with per-seek abort/supersession handling. `seekAbort` is
500
+ * aborted when a newer seek supersedes this one (or on dispose).
501
+ * @private
502
+ */
503
+ async doSeek(time, tolerance, seekAbort, nextEvent) {
504
+ // Cannot seek until there are seekable ranges. If a newer seek supersedes
505
+ // this one while we wait, `seekAbort` rejects this await — the newer seek
506
+ // then owns the target, and this stale one resolves quietly in `seekTo`.
496
507
  if (!this.hasMetadata) {
497
508
  await nextEvent('loadedMetadata');
498
- // A newer seek was issued while we waited — it already applied (or
499
- // will apply) its target. Don't overwrite it with this stale one.
500
- if (superseded())
501
- return;
502
509
  }
503
510
  const seekable = this.seekable;
504
511
  const range = seekable.getRangeAt(clamp(time, 0, this.duration), tolerance);
@@ -520,18 +527,15 @@ export class PlaybackControllerImpl extends EventHostImpl {
520
527
  else {
521
528
  // A dispose rejects the seek; a timeout means the attempt is stuck.
522
529
  const nullIfStuck = (error) => {
523
- if (this.disposeAbort.aborted())
530
+ if (this.disposed)
524
531
  throw error;
525
532
  return null;
526
533
  };
527
- // Issues one seek attempt. Returns the seeked event, or null if it
528
- // didn't complete within SEEK_ATTEMPT_TIMEOUT. Observed on WebKit/iOS
529
- // Safari: seeking a freshly-attached source that has never decoded a
530
- // frame hangs — the seek never completes and playback stalls in
531
- // `waiting`. The initial attempt keeps the full seekTimeout on
532
- // `seeking` (a media that never starts seeking is a real timeout); a
533
- // re-seek to the current position emits no fresh `seeking` on WebKit,
534
- // so bound that wait and fall through to the stall detector.
534
+ // One seek attempt; returns the seeked event, or null if it didn't
535
+ // complete in SEEK_ATTEMPT_TIMEOUT. A re-seek to the current position
536
+ // emits no fresh `seeking` on WebKit, so bound that wait; the initial
537
+ // attempt keeps the full seekTimeout (a media that never starts
538
+ // seeking is a real timeout).
535
539
  const seekOnce = async (reSeeking) => {
536
540
  const seeking = reSeeking
537
541
  ? nextEvent('seeking', {
@@ -551,7 +555,7 @@ export class PlaybackControllerImpl extends EventHostImpl {
551
555
  // outside tolerance of the target. Bounded, and not fighting a newer
552
556
  // seek. The play() kick is fire-and-forget: a wedged seek can leave
553
557
  // its promise unsettled forever, which would stall the retry loop.
554
- for (let attempt = 0; !superseded() &&
558
+ for (let attempt = 0; !seekAbort.aborted() &&
555
559
  attempt < SEEK_RETRY_LIMIT &&
556
560
  (seekedEvent === null ||
557
561
  (seekedEvent.reason === 'seeked' &&
@@ -567,8 +571,9 @@ export class PlaybackControllerImpl extends EventHostImpl {
567
571
  }
568
572
  // Some WebKit versions don't resume after seeking. Watch for that:
569
573
  // nudge/kick playback back to life, and fabricate a playing event
570
- // if it resumes without emitting one.
571
- if (!this.paused)
574
+ // if it resumes without emitting one. Skip when superseded — a newer
575
+ // seek owns the element and arms its own watch.
576
+ if (!this.paused && !seekAbort.aborted())
572
577
  this.startStallDetection();
573
578
  }
574
579
  }
@@ -141,7 +141,9 @@ export interface MediaQualityMetadata extends MediaFormatMetadata {
141
141
  * An array restricts switching to only the listed group IDs.
142
142
  * Default behavior:
143
143
  * - DASH: restricted to own group unless adaptation-set-switching property is present.
144
- * - HLS: restricted to variants with the same base codec and language.
144
+ * - HLS: unconstrained (null). Every variant is one group, and renditions are
145
+ * selected by the media timeline's language and accessibility filters
146
+ * rather than by a switching group.
145
147
  */
146
148
  readonly switchingGroupIds: readonly string[] | null;
147
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MediaQualityMetadata.d.ts","sourceRoot":"","sources":["../../../../src/streaming/MediaQualityMetadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MediaQualityMetadata.d.ts","sourceRoot":"","sources":["../../../../src/streaming/MediaQualityMetadata.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export interface SegmentControllerImplDeps {
18
18
  export interface SegmentControllerImplOptions {
19
19
  /**
20
20
  * The amount of time ahead of the playhead to prefetch when the track is active.
21
- * Default: 240
21
+ * Default: 180
22
22
  */
23
23
  readonly prefetchActive: number;
24
24
  /**
@@ -119,7 +119,7 @@ export interface BufferingControllerImplOptions {
119
119
  readonly minBuffer: number;
120
120
  /**
121
121
  * The maximum number of bytes to append at a time per content type.
122
- * Default: { audio: 1MiB, video: 15MiB }
122
+ * Default: { audio: 10MiB, video: 150MiB }
123
123
  */
124
124
  readonly maxAppendSize: Partial<Record<ContentType, number>>;
125
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BufferingController.d.ts","sourceRoot":"","sources":["../../../../../src/streaming/buffering/BufferingController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BufferingController.d.ts","sourceRoot":"","sources":["../../../../../src/streaming/buffering/BufferingController.ts"],"names":[],"mappings":"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"}
@@ -277,20 +277,29 @@ export class BufferingControllerImpl extends EventHostImpl {
277
277
  return;
278
278
  }
279
279
  const byteLength = streamingSegment.data.byteLength;
280
- if (byteLength > appendSize) {
280
+ // Measured against the bytes still to append rather than the whole
281
+ // segment: the playhead draining the buffer widens the budget, which
282
+ // would otherwise re-append what is already buffered.
283
+ const remaining = byteLength - this.appendOffset;
284
+ const firstAppend = this.appendOffset === 0;
285
+ if (remaining > appendSize) {
281
286
  const newOffset = this.appendOffset + appendSize;
282
287
  const chunk = streamingSegment.data.slice(this.appendOffset, newOffset);
283
288
  await sourceBufferController.append(chunk);
284
- if (this.appendOffset === 0) {
289
+ if (firstAppend) {
285
290
  this.buffered.push(streamingSegment);
286
291
  }
287
292
  this.appendOffset = newOffset;
288
293
  logVerbose(this, `appended chunk, this.appendOffset: ${this.appendOffset}`);
289
294
  }
290
295
  else {
291
- await sourceBufferController.append(streamingSegment.data);
292
- this.appendOffset = streamingSegment.data.byteLength;
293
- this.buffered.push(streamingSegment);
296
+ await sourceBufferController.append(firstAppend
297
+ ? streamingSegment.data
298
+ : streamingSegment.data.slice(this.appendOffset));
299
+ this.appendOffset = byteLength;
300
+ if (firstAppend) {
301
+ this.buffered.push(streamingSegment);
302
+ }
294
303
  }
295
304
  if (!tail)
296
305
  this.refreshHead(); // Update quality immediately if buffer was empty