@amazon/vinyl 2.0.4 → 3.0.1

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 (170) hide show
  1. package/dist/index.cjs +624 -338
  2. package/dist/index.cjs.map +4 -4
  3. package/dist/index.js +643 -350
  4. package/dist/index.js.map +4 -4
  5. package/dist/test/benchmark.es5.js +8 -5
  6. package/dist/test/benchmark.js +228 -0
  7. package/dist/test/benchmark.js.map +4 -4
  8. package/dist/test/integ.es5.js +183 -157
  9. package/dist/test/integ.js +1966 -817
  10. package/dist/test/integ.js.map +4 -4
  11. package/dist/types/current/index.d.ts +4 -0
  12. package/dist/types/current/index.d.ts.map +1 -1
  13. package/dist/types/current/index.js +4 -0
  14. package/dist/types/current/streaming/AudioOptions.d.ts +39 -0
  15. package/dist/types/current/streaming/AudioOptions.d.ts.map +1 -0
  16. package/dist/types/current/streaming/AudioOptions.js +15 -0
  17. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts +2 -2
  18. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts.map +1 -1
  19. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.js +5 -5
  20. package/dist/types/current/text/HtmlTextTrackRenderer.d.ts +60 -0
  21. package/dist/types/current/text/HtmlTextTrackRenderer.d.ts.map +1 -0
  22. package/dist/types/current/text/HtmlTextTrackRenderer.js +231 -0
  23. package/dist/types/current/text/SidecarTextTrackController.d.ts +65 -53
  24. package/dist/types/current/text/SidecarTextTrackController.d.ts.map +1 -1
  25. package/dist/types/current/text/SidecarTextTrackController.js +167 -154
  26. package/dist/types/current/text/SidecarTextTrackLoader.d.ts +5 -0
  27. package/dist/types/current/text/SidecarTextTrackLoader.d.ts.map +1 -1
  28. package/dist/types/current/text/SidecarTextTrackLoader.js +13 -7
  29. package/dist/types/current/text/TextTrack.d.ts +74 -20
  30. package/dist/types/current/text/TextTrack.d.ts.map +1 -1
  31. package/dist/types/current/text/TextTrack.js +20 -0
  32. package/dist/types/current/text/TextTrackRenderer.d.ts +24 -0
  33. package/dist/types/current/text/TextTrackRenderer.d.ts.map +1 -0
  34. package/dist/types/current/text/TextTrackRenderer.js +5 -0
  35. package/dist/types/current/text/mediaTextTrackProvider.d.ts +34 -0
  36. package/dist/types/current/text/mediaTextTrackProvider.d.ts.map +1 -0
  37. package/dist/types/current/text/mediaTextTrackProvider.js +42 -0
  38. package/dist/types/current/text/parseWebVtt.d.ts +16 -2
  39. package/dist/types/current/text/parseWebVtt.d.ts.map +1 -1
  40. package/dist/types/current/text/parseWebVtt.js +176 -48
  41. package/dist/types/current/text/pickPreferredTextTrack.d.ts +2 -1
  42. package/dist/types/current/text/pickPreferredTextTrack.d.ts.map +1 -1
  43. package/dist/types/current/text/pickPreferredTextTrack.js +6 -3
  44. package/dist/types/current/track/Track.d.ts +1 -1
  45. package/dist/types/current/track/TrackController.d.ts.map +1 -1
  46. package/dist/types/current/track/TrackController.js +30 -30
  47. package/dist/types/current/track/dash/createDashFactories.d.ts +21 -10
  48. package/dist/types/current/track/dash/createDashFactories.d.ts.map +1 -1
  49. package/dist/types/current/track/dash/createDashFactories.js +9 -21
  50. package/dist/types/current/track/hls/createHlsFactories.d.ts +21 -10
  51. package/dist/types/current/track/hls/createHlsFactories.d.ts.map +1 -1
  52. package/dist/types/current/track/hls/createHlsFactories.js +9 -21
  53. package/dist/types/current/track/mse/MseTrack.d.ts +1 -2
  54. package/dist/types/current/track/mse/MseTrack.d.ts.map +1 -1
  55. package/dist/types/current/track/mse/MseTrack.js +3 -7
  56. package/dist/types/current/tsconfig.tsbuildinfo +1 -1
  57. package/dist/types/current/vinyl/VinylOptions.d.ts +18 -40
  58. package/dist/types/current/vinyl/VinylOptions.d.ts.map +1 -1
  59. package/dist/types/current/vinyl/VinylOptions.js +12 -11
  60. package/dist/types/current/vinyl/VinylPlayer.d.ts +0 -6
  61. package/dist/types/current/vinyl/VinylPlayer.d.ts.map +1 -1
  62. package/dist/types/current/vinyl/VinylPlayer.js +2 -23
  63. package/dist/types/current/vinyl/createVinylFactories.d.ts +32 -18
  64. package/dist/types/current/vinyl/createVinylFactories.d.ts.map +1 -1
  65. package/dist/types/current/vinyl/createVinylFactories.js +6 -0
  66. package/dist/types/ts3.7/index.d.ts +4 -0
  67. package/dist/types/ts3.7/streaming/AudioOptions.d.ts +39 -0
  68. package/dist/types/ts3.7/streaming/createDefaultMediaTimelineTransformer.d.ts +2 -2
  69. package/dist/types/ts3.7/text/HtmlTextTrackRenderer.d.ts +60 -0
  70. package/dist/types/ts3.7/text/SidecarTextTrackController.d.ts +65 -53
  71. package/dist/types/ts3.7/text/SidecarTextTrackLoader.d.ts +5 -0
  72. package/dist/types/ts3.7/text/TextTrack.d.ts +74 -20
  73. package/dist/types/ts3.7/text/TextTrackRenderer.d.ts +24 -0
  74. package/dist/types/ts3.7/text/mediaTextTrackProvider.d.ts +34 -0
  75. package/dist/types/ts3.7/text/parseWebVtt.d.ts +16 -2
  76. package/dist/types/ts3.7/text/pickPreferredTextTrack.d.ts +2 -1
  77. package/dist/types/ts3.7/track/Track.d.ts +1 -1
  78. package/dist/types/ts3.7/track/dash/createDashFactories.d.ts +21 -10
  79. package/dist/types/ts3.7/track/hls/createHlsFactories.d.ts +21 -10
  80. package/dist/types/ts3.7/track/mse/MseTrack.d.ts +1 -2
  81. package/dist/types/ts3.7/vinyl/VinylOptions.d.ts +18 -40
  82. package/dist/types/ts3.7/vinyl/VinylPlayer.d.ts +0 -6
  83. package/dist/types/ts3.7/vinyl/createVinylFactories.d.ts +32 -18
  84. package/dist/types/ts4.1/index.d.ts +4 -0
  85. package/dist/types/ts4.1/streaming/AudioOptions.d.ts +39 -0
  86. package/dist/types/ts4.1/streaming/createDefaultMediaTimelineTransformer.d.ts +2 -2
  87. package/dist/types/ts4.1/text/HtmlTextTrackRenderer.d.ts +60 -0
  88. package/dist/types/ts4.1/text/SidecarTextTrackController.d.ts +65 -53
  89. package/dist/types/ts4.1/text/SidecarTextTrackLoader.d.ts +5 -0
  90. package/dist/types/ts4.1/text/TextTrack.d.ts +74 -20
  91. package/dist/types/ts4.1/text/TextTrackRenderer.d.ts +24 -0
  92. package/dist/types/ts4.1/text/mediaTextTrackProvider.d.ts +34 -0
  93. package/dist/types/ts4.1/text/parseWebVtt.d.ts +16 -2
  94. package/dist/types/ts4.1/text/pickPreferredTextTrack.d.ts +2 -1
  95. package/dist/types/ts4.1/track/Track.d.ts +1 -1
  96. package/dist/types/ts4.1/track/dash/createDashFactories.d.ts +21 -10
  97. package/dist/types/ts4.1/track/hls/createHlsFactories.d.ts +21 -10
  98. package/dist/types/ts4.1/track/mse/MseTrack.d.ts +1 -2
  99. package/dist/types/ts4.1/vinyl/VinylOptions.d.ts +18 -40
  100. package/dist/types/ts4.1/vinyl/VinylPlayer.d.ts +0 -6
  101. package/dist/types/ts4.1/vinyl/createVinylFactories.d.ts +32 -18
  102. package/dist/types/ts4.7/index.d.ts +4 -0
  103. package/dist/types/ts4.7/streaming/AudioOptions.d.ts +39 -0
  104. package/dist/types/ts4.7/streaming/createDefaultMediaTimelineTransformer.d.ts +2 -2
  105. package/dist/types/ts4.7/text/HtmlTextTrackRenderer.d.ts +60 -0
  106. package/dist/types/ts4.7/text/SidecarTextTrackController.d.ts +65 -53
  107. package/dist/types/ts4.7/text/SidecarTextTrackLoader.d.ts +5 -0
  108. package/dist/types/ts4.7/text/TextTrack.d.ts +74 -20
  109. package/dist/types/ts4.7/text/TextTrackRenderer.d.ts +24 -0
  110. package/dist/types/ts4.7/text/mediaTextTrackProvider.d.ts +34 -0
  111. package/dist/types/ts4.7/text/parseWebVtt.d.ts +16 -2
  112. package/dist/types/ts4.7/text/pickPreferredTextTrack.d.ts +2 -1
  113. package/dist/types/ts4.7/track/Track.d.ts +1 -1
  114. package/dist/types/ts4.7/track/dash/createDashFactories.d.ts +21 -10
  115. package/dist/types/ts4.7/track/hls/createHlsFactories.d.ts +21 -10
  116. package/dist/types/ts4.7/track/mse/MseTrack.d.ts +1 -2
  117. package/dist/types/ts4.7/vinyl/VinylOptions.d.ts +18 -40
  118. package/dist/types/ts4.7/vinyl/VinylPlayer.d.ts +0 -6
  119. package/dist/types/ts4.7/vinyl/createVinylFactories.d.ts +32 -18
  120. package/dist/unit/types/current/index.d.ts +2 -0
  121. package/dist/unit/types/current/index.d.ts.map +1 -1
  122. package/dist/unit/types/current/index.js +2 -0
  123. package/dist/unit/types/current/streaming/MseTrack.test.js +13 -7
  124. package/dist/unit/types/current/streaming/createDefaultMediaTimelineTransformer.test.js +8 -4
  125. package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.d.ts +2 -0
  126. package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.d.ts.map +1 -0
  127. package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.js +231 -0
  128. package/dist/unit/types/current/text/SidecarTextTrackController.test.js +432 -333
  129. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.js +29 -0
  130. package/dist/unit/types/current/text/mediaTextTrackProvider.test.d.ts +2 -0
  131. package/dist/unit/types/current/text/mediaTextTrackProvider.test.d.ts.map +1 -0
  132. package/dist/unit/types/current/text/mediaTextTrackProvider.test.js +86 -0
  133. package/dist/unit/types/current/text/parseWebVtt.test.js +187 -6
  134. package/dist/unit/types/current/text/pickPreferredTextTrack.test.js +12 -1
  135. package/dist/unit/types/current/track/TrackController.test.js +36 -0
  136. package/dist/unit/types/current/track/dash/createDashFactories.test.js +1 -2
  137. package/dist/unit/types/current/track/hls/buildHlsMediaTimeline.test.js +1 -2
  138. package/dist/unit/types/current/track/hls/createHlsFactories.test.js +1 -2
  139. package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
  140. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.js +102 -177
  141. package/dist/unit/types/current/vinyl/createVinylFactories.test.js +2 -0
  142. package/dist/vinylTestUtil/index.js +14 -8
  143. package/dist/vinylTestUtil/index.js.map +2 -2
  144. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts +3 -2
  145. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts.map +1 -1
  146. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.js +5 -2
  147. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts +3 -3
  148. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts.map +1 -1
  149. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.js +3 -3
  150. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts +1 -2
  151. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts.map +1 -1
  152. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.js +3 -2
  153. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts +1 -2
  154. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts.map +1 -1
  155. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.js +3 -2
  156. package/dist/vinylTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
  157. package/dist/vinylTestUtil/types/ts3.7/mock/player/MockVinylPlayerDependencies.d.ts +3 -2
  158. package/dist/vinylTestUtil/types/ts3.7/mock/text/MockTextTrackController.d.ts +3 -3
  159. package/dist/vinylTestUtil/types/ts3.7/mock/track/dash/createMockDashDependencies.d.ts +1 -2
  160. package/dist/vinylTestUtil/types/ts3.7/mock/track/hls/createMockHlsDependencies.d.ts +1 -2
  161. package/dist/vinylTestUtil/types/ts4.1/mock/player/MockVinylPlayerDependencies.d.ts +3 -2
  162. package/dist/vinylTestUtil/types/ts4.1/mock/text/MockTextTrackController.d.ts +3 -3
  163. package/dist/vinylTestUtil/types/ts4.1/mock/track/dash/createMockDashDependencies.d.ts +1 -2
  164. package/dist/vinylTestUtil/types/ts4.1/mock/track/hls/createMockHlsDependencies.d.ts +1 -2
  165. package/dist/vinylTestUtil/types/ts4.7/mock/player/MockVinylPlayerDependencies.d.ts +3 -2
  166. package/dist/vinylTestUtil/types/ts4.7/mock/text/MockTextTrackController.d.ts +3 -3
  167. package/dist/vinylTestUtil/types/ts4.7/mock/track/dash/createMockDashDependencies.d.ts +1 -2
  168. package/dist/vinylTestUtil/types/ts4.7/mock/track/hls/createMockHlsDependencies.d.ts +1 -2
  169. package/docs/USAGE.md +82 -31
  170. package/package.json +9 -9
@@ -20,9 +20,11 @@ import { type BuildHlsMediaTimelineDeps } from './buildHlsMediaTimeline';
20
20
  import { createDefaultMediaTimelineTransformer } from '../../streaming/createDefaultMediaTimelineTransformer';
21
21
  import type { HlsManifestData } from './HlsManifestData';
22
22
  import { SidecarTextTrackController } from '../../text/SidecarTextTrackController';
23
+ import type { MediaTextTrackProvider } from '../../text/mediaTextTrackProvider';
24
+ import type { TextTrackRenderer } from '../../text/TextTrackRenderer';
23
25
  import { ManifestControllerImpl, type ManifestControllerImplDeps } from '../../streaming/ManifestControllerImpl';
24
26
  export interface HlsFactoryDeps {
25
- readonly options: ObservableValue<Pick<VinylOptions, 'abr' | 'preferredAudioLanguage' | 'allowedContentTypes' | 'preferDescriptiveAudio' | 'preferredTextLanguage' | 'textCueStyle'>>;
27
+ readonly options: ObservableValue<Pick<VinylOptions, 'abr' | 'audio' | 'allowedContentTypes' | 'text'>>;
26
28
  readonly playbackController: PlaybackController;
27
29
  readonly playbackSource: PlaybackSource;
28
30
  readonly drmKeySystemResolver: DrmKeySystemResolver;
@@ -34,6 +36,14 @@ export interface HlsFactoryDeps {
34
36
  * `media.addTextTrack`.
35
37
  */
36
38
  readonly media: HTMLMediaElement;
39
+ /**
40
+ * Creates and reuses the DOM text tracks for sidecar captions.
41
+ */
42
+ readonly textTrackProvider: MediaTextTrackProvider;
43
+ /**
44
+ * Optional HTML cue renderer; null for native rendering.
45
+ */
46
+ readonly textTrackRenderer: TextTrackRenderer | null;
37
47
  /**
38
48
  * The player-level ad controller. MseTrack sets discovered ad breaks on it
39
49
  * when the media timeline resolves.
@@ -66,15 +76,12 @@ export declare function createHlsFactories(options: Maybe<HlsInitOptions>): (dep
66
76
  qualitySelector: (deps: {
67
77
  options: ObservableValue<Pick<VinylOptions, "abr">>;
68
78
  }) => QualitySelectorImpl;
69
- preferredAudioLanguage: (deps: {
70
- options: ObservableValue<Pick<VinylOptions, "preferredAudioLanguage">>;
71
- }) => ObservableValue<string | readonly string[] | null>;
79
+ audio: (deps: {
80
+ options: ObservableValue<Pick<VinylOptions, "audio">>;
81
+ }) => ObservableValue<import("../..").AudioOptions>;
72
82
  allowedContentTypes: (deps: {
73
83
  options: ObservableValue<Pick<VinylOptions, "allowedContentTypes">>;
74
84
  }) => ObservableValue<readonly import("../..").RestrictableContentType[] | null>;
75
- preferDescriptiveAudio: (deps: {
76
- options: ObservableValue<Pick<VinylOptions, "preferDescriptiveAudio">>;
77
- }) => ObservableValue<boolean>;
78
85
  abr: (deps: {
79
86
  options: ObservableValue<Pick<VinylOptions, "abr">>;
80
87
  }) => ObservableValue<import("../..").QualitySelectorImplOptions>;
@@ -83,11 +90,13 @@ export declare function createHlsFactories(options: Maybe<HlsInitOptions>): (dep
83
90
  }) => ObservableValue<Promise<import("../..").MediaTimeline>>;
84
91
  mediaTimelineTransformed: typeof createDefaultMediaTimelineTransformer;
85
92
  textTrackController: (deps: {
86
- readonly media: HTMLMediaElement;
93
+ readonly textTrackProvider: MediaTextTrackProvider;
94
+ readonly textTrackRenderer: TextTrackRenderer | null;
95
+ readonly playbackController: PlaybackController;
87
96
  readonly manifestTransformed: ObservableValue<Promise<HlsManifestData>>;
88
- readonly options: ObservableValue<Pick<VinylOptions, "preferredTextLanguage" | "textCueStyle">>;
97
+ readonly options: ObservableValue<Pick<VinylOptions, "text">>;
89
98
  }) => SidecarTextTrackController;
90
- options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "abr" | "preferredAudioLanguage" | "preferredTextLanguage" | "preferDescriptiveAudio" | "allowedContentTypes" | "textCueStyle">>>;
99
+ options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "audio" | "text" | "abr" | "allowedContentTypes">>>;
91
100
  playbackController: import("@amazon/vinyl-di").Factory<PlaybackController>;
92
101
  playbackSource: import("@amazon/vinyl-di").Factory<PlaybackSource>;
93
102
  drmKeySystemResolver: import("@amazon/vinyl-di").Factory<DrmKeySystemResolver>;
@@ -95,6 +104,8 @@ export declare function createHlsFactories(options: Maybe<HlsInitOptions>): (dep
95
104
  drmController: import("@amazon/vinyl-di").Factory<DrmController>;
96
105
  capabilities: import("@amazon/vinyl-di").Factory<Capabilities>;
97
106
  media: import("@amazon/vinyl-di").Factory<HTMLMediaElement>;
107
+ textTrackProvider: import("@amazon/vinyl-di").Factory<MediaTextTrackProvider>;
108
+ textTrackRenderer: import("@amazon/vinyl-di").Factory<TextTrackRenderer | null>;
98
109
  adController: import("@amazon/vinyl-di").Factory<AdController>;
99
110
  };
100
111
  //# sourceMappingURL=createHlsFactories.d.ts.map
@@ -42,9 +42,8 @@ export type MseTrackDeps = TrackBaseDeps & {
42
42
  * the initial value) is applied to this track immediately so it takes
43
43
  * effect without waiting for the buffered media to drain.
44
44
  */
45
- readonly preferredAudioLanguage: ObservableValue<VinylOptions['preferredAudioLanguage']>;
45
+ readonly audio: ObservableValue<VinylOptions['audio']>;
46
46
  readonly allowedContentTypes: ObservableValue<VinylOptions['allowedContentTypes']>;
47
- readonly preferDescriptiveAudio: ObservableValue<VinylOptions['preferDescriptiveAudio']>;
48
47
  readonly abr: ObservableValue<VinylOptions['abr']>;
49
48
  };
50
49
  /**
@@ -3,7 +3,8 @@ import type { ObjectSchema } from '@amazon/vinyl-validation';
3
3
  import type { CodecOverrides } from '../util/media/codecOverrides';
4
4
  import { type RestrictableContentType } from '../streaming/MediaQualityMetadata';
5
5
  import { type LoudnessNormalizationControllerImplOptions } from '../playback/loudness/LoudnessNormalizationControllerImplOptions';
6
- import { type VttCueStyle } from '../text/VttCueStyle';
6
+ import { type TextTrackControllerOptions } from '../text/TextTrack';
7
+ import { type AudioOptions } from '../streaming/AudioOptions';
7
8
  export interface VinylOptions {
8
9
  /**
9
10
  * Configuration for the default adaptive bitrate selector.
@@ -11,40 +12,16 @@ export interface VinylOptions {
11
12
  readonly abr: QualitySelectorImplOptions;
12
13
  readonly loudnessNormalization: LoudnessNormalizationControllerImplOptions;
13
14
  /**
14
- * Preferred language(s) for audio content, as RFC 5646 codes (e.g. `'en'`,
15
- * `'ja'`, `'fr-CA'`). May be a single tag or an ordered list of tags —
16
- * earlier entries are preferred, with the best relatedness match kept for
17
- * each period (audio without a language tag is always kept). `null` (the
18
- * default) is NOT "no preference": it orders by the platform's
19
- * `navigator.languages`. To keep every language, this option is not the
20
- * mechanism — omit language content or pass a tag matching all.
21
- */
22
- readonly preferredAudioLanguage: string | readonly string[] | null;
23
- /**
24
- * Preferred language(s) for text tracks (subtitles / closed captions), as
25
- * RFC 5646 codes (e.g. `'en'`, `'ja'`, `'fr-CA'`). May be a single tag or
26
- * an ordered list of tags — earlier entries are preferred, with the best
27
- * relatedness match chosen among the discovered text tracks. When set, the
28
- * matching text track is selected automatically and the choice carries
29
- * across track changes (e.g. across an ad break), mirroring how
30
- * {@link preferredAudioLanguage} drives audio selection.
15
+ * Audio (language / audio-description) configuration. See
16
+ * {@link AudioOptions}.
31
17
  *
32
- * Unlike audio, `null` (the default) means *no caption preference*: it does
33
- * NOT fall back to `navigator.languages` and does NOT force captions on —
34
- * forced narrative subtitles still auto-display as usual. Setting it to a
35
- * language turns captions on in that language; setting it back to `null`
36
- * after a prior selection turns captions off.
37
- */
38
- readonly preferredTextLanguage: string | readonly string[] | null;
39
- /**
40
- * Opt in to audio-description (a.k.a. described-video / DVS) audio: audio
41
- * renditions carrying an accessibility "describes video" characteristic that
42
- * narrate on-screen action. `false` (the default) keeps them out of the
43
- * automatic default-audio selection — they are chosen only when this is set.
44
- * When `true`, a description rendition is preferred where one exists for the
45
- * selected language. Changing this reselects audio immediately.
18
+ * The default is `{ selection: { language: null, descriptive: false } }`:
19
+ * audio is ordered by the platform's `navigator.languages` and
20
+ * audio-description renditions are excluded. Set `selection.language` to
21
+ * prefer specific language(s) and `selection.descriptive` to `true` to opt
22
+ * into described audio.
46
23
  */
47
- readonly preferDescriptiveAudio: boolean;
24
+ readonly audio: AudioOptions;
48
25
  /**
49
26
  * Explicit codec allow/deny overrides that bypass browser support
50
27
  * detection. Keys are RFC 6381 codec strings or prefixes (e.g. `"hvc1"`),
@@ -68,15 +45,16 @@ export interface VinylOptions {
68
45
  */
69
46
  readonly allowedContentTypes: readonly RestrictableContentType[] | null;
70
47
  /**
71
- * Layout style applied to rendered WebVTT cues (the settable `VTTCue`
72
- * positioning properties: size, line, position, align, etc.). Applied to
73
- * each cue as it is added, on platforms that support `VTTCue`.
48
+ * Text-track (subtitles / closed captions) configuration: enable/disable
49
+ * and the selection criteria. See {@link TextTrackControllerOptions}.
74
50
  *
75
- * Defaults to `{ size: 90 }`, insetting the cue box from the full video
76
- * width so long lines don't clip at the screen edges in fullscreen (which
77
- * `::cue` CSS cannot fix). Set to `null` to keep the browser defaults.
51
+ * The default is `{ enabled: 'forced' }`: with no
52
+ * explicit language, the platform's `navigator.languages` are preferred,
53
+ * showing only forced (narrative) tracks. Set `enabled` to `'on'` for full
54
+ * subtitle tracks or `'off'` to render nothing;
55
+ * `selection.language`/`selection.id` choose a specific rendition.
78
56
  */
79
- readonly textCueStyle: VttCueStyle | null;
57
+ readonly text: TextTrackControllerOptions;
80
58
  }
81
59
  export declare const defaultVinylOptions: VinylOptions;
82
60
  export declare const vinylOptionsValidator: ObjectSchema<VinylOptions>;
@@ -221,12 +221,6 @@ export declare class VinylPlayer<TrackLoadOptionsType extends TrackLoadOptions =
221
221
  * The currently active text track, or null if no track is selected.
222
222
  */
223
223
  get activeTextTrack(): TextTrackInfo | null;
224
- /**
225
- * Selects the text track with the given id, or clears the active text
226
- * track when called with null. No-op when the current track does not
227
- * surface text tracks or the id is unknown.
228
- */
229
- setActiveTextTrack(id: string | null): void;
230
224
  private emitTextTrackChangeEventsFor;
231
225
  /**
232
226
  * The current track's ad breaks.
@@ -12,6 +12,8 @@ import { TrackControllerImpl } from '../track/TrackController';
12
12
  import type { VinylPatchOptions } from './VinylPatchOptions';
13
13
  import { type QualitySelectorImplOptions } from '../streaming/abr/QualitySelectorImpl';
14
14
  import { AdControllerImpl, type AdControllerImplDeps, type AdControllerImplOptions } from '../ad/AdControllerImpl';
15
+ import { type MediaTextTrackProvider } from '../text/mediaTextTrackProvider';
16
+ import type { TextTrackRenderer } from '../text/TextTrackRenderer';
15
17
  import { type DrmOptions } from '../drm/DrmOptions';
16
18
  import { commonEmeFactory } from '../drm/commonEme/CommonEmeFactory';
17
19
  import { DrmControllerImpl, type DrmControllerImplDeps } from '../drm/DrmControllerImpl';
@@ -33,6 +35,12 @@ export interface VinylDependencyOptions {
33
35
  * The media element.
34
36
  */
35
37
  readonly media: HTMLMediaElement;
38
+ /**
39
+ * Optional renderer for text-track cues (an HTML overlay). When provided,
40
+ * captions are painted by the renderer and the DOM text track is kept
41
+ * `'hidden'`; without one they render natively. See `TextTrackRenderer`.
42
+ */
43
+ readonly textTrackRenderer?: TextTrackRenderer;
36
44
  /**
37
45
  * Flags for patches that should be applied browser-specifically.
38
46
  * These will be defaulted based on the user-agent.
@@ -80,6 +88,10 @@ export declare function createVinylFactories(options: VinylDependencyOptions): {
80
88
  readonly patched: HTMLMediaElement;
81
89
  };
82
90
  }) => HTMLMediaElement;
91
+ textTrackProvider: (deps: {
92
+ readonly media: HTMLMediaElement;
93
+ }) => MediaTextTrackProvider;
94
+ textTrackRenderer: () => TextTrackRenderer | null;
83
95
  playbackController: (deps: PlaybackControllerImplDeps) => PlaybackControllerImpl;
84
96
  playbackSource: (deps: PlaybackSourceImplDeps) => PlaybackSourceImpl;
85
97
  loudnessNormalizationController: (deps: {
@@ -120,15 +132,12 @@ export declare function createVinylFactories(options: VinylDependencyOptions): {
120
132
  qualitySelector: (deps: {
121
133
  options: ObservableValue<Pick<VinylOptions, "abr">>;
122
134
  }) => import("..").QualitySelectorImpl;
123
- preferredAudioLanguage: (deps: {
124
- options: ObservableValue<Pick<VinylOptions, "preferredAudioLanguage">>;
125
- }) => ObservableValue<string | readonly string[] | null>;
135
+ audio: (deps: {
136
+ options: ObservableValue<Pick<VinylOptions, "audio">>;
137
+ }) => ObservableValue<import("..").AudioOptions>;
126
138
  allowedContentTypes: (deps: {
127
139
  options: ObservableValue<Pick<VinylOptions, "allowedContentTypes">>;
128
140
  }) => ObservableValue<readonly import("..").RestrictableContentType[] | null>;
129
- preferDescriptiveAudio: (deps: {
130
- options: ObservableValue<Pick<VinylOptions, "preferDescriptiveAudio">>;
131
- }) => ObservableValue<boolean>;
132
141
  abr: (deps: {
133
142
  options: ObservableValue<Pick<VinylOptions, "abr">>;
134
143
  }) => ObservableValue<QualitySelectorImplOptions>;
@@ -138,11 +147,13 @@ export declare function createVinylFactories(options: VinylDependencyOptions): {
138
147
  }) => ObservableValue<Promise<import("..").MediaTimeline>>;
139
148
  mediaTimelineTransformed: typeof import("..").createDefaultMediaTimelineTransformer;
140
149
  textTrackController: (deps: {
141
- readonly media: HTMLMediaElement;
150
+ readonly textTrackProvider: MediaTextTrackProvider;
151
+ readonly textTrackRenderer: TextTrackRenderer | null;
152
+ readonly playbackController: import("..").PlaybackController;
142
153
  readonly manifestTransformed: ObservableValue<Promise<import("..").DashManifestData>>;
143
- readonly options: ObservableValue<Pick<VinylOptions, "preferredTextLanguage" | "textCueStyle">>;
154
+ readonly options: ObservableValue<Pick<VinylOptions, "text">>;
144
155
  }) => import("..").SidecarTextTrackController;
145
- options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "abr" | "preferredAudioLanguage" | "preferredTextLanguage" | "preferDescriptiveAudio" | "allowedContentTypes" | "textCueStyle">>>;
156
+ options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "audio" | "text" | "abr" | "allowedContentTypes">>>;
146
157
  playbackController: import("@amazon/vinyl-di").Factory<import("..").PlaybackController>;
147
158
  playbackSource: import("@amazon/vinyl-di").Factory<import("..").PlaybackSource>;
148
159
  drmKeySystemResolver: import("@amazon/vinyl-di").Factory<import("..").DrmKeySystemResolver>;
@@ -150,6 +161,8 @@ export declare function createVinylFactories(options: VinylDependencyOptions): {
150
161
  drmController: import("@amazon/vinyl-di").Factory<import("..").DrmController>;
151
162
  capabilities: import("@amazon/vinyl-di").Factory<import("..").Capabilities>;
152
163
  media: import("@amazon/vinyl-di").Factory<HTMLMediaElement>;
164
+ textTrackProvider: import("@amazon/vinyl-di").Factory<MediaTextTrackProvider>;
165
+ textTrackRenderer: import("@amazon/vinyl-di").Factory<TextTrackRenderer | null>;
153
166
  adController: import("@amazon/vinyl-di").Factory<import("..").AdController>;
154
167
  };
155
168
  createHlsFactories: (deps: import("..").HlsFactoryDeps) => (loadOptions: import("..").HlsTrackLoadOptions) => {
@@ -175,15 +188,12 @@ export declare function createVinylFactories(options: VinylDependencyOptions): {
175
188
  qualitySelector: (deps: {
176
189
  options: ObservableValue<Pick<VinylOptions, "abr">>;
177
190
  }) => import("..").QualitySelectorImpl;
178
- preferredAudioLanguage: (deps: {
179
- options: ObservableValue<Pick<VinylOptions, "preferredAudioLanguage">>;
180
- }) => ObservableValue<string | readonly string[] | null>;
191
+ audio: (deps: {
192
+ options: ObservableValue<Pick<VinylOptions, "audio">>;
193
+ }) => ObservableValue<import("..").AudioOptions>;
181
194
  allowedContentTypes: (deps: {
182
195
  options: ObservableValue<Pick<VinylOptions, "allowedContentTypes">>;
183
196
  }) => ObservableValue<readonly import("..").RestrictableContentType[] | null>;
184
- preferDescriptiveAudio: (deps: {
185
- options: ObservableValue<Pick<VinylOptions, "preferDescriptiveAudio">>;
186
- }) => ObservableValue<boolean>;
187
197
  abr: (deps: {
188
198
  options: ObservableValue<Pick<VinylOptions, "abr">>;
189
199
  }) => ObservableValue<QualitySelectorImplOptions>;
@@ -192,11 +202,13 @@ export declare function createVinylFactories(options: VinylDependencyOptions): {
192
202
  }) => ObservableValue<Promise<import("..").MediaTimeline>>;
193
203
  mediaTimelineTransformed: typeof import("..").createDefaultMediaTimelineTransformer;
194
204
  textTrackController: (deps: {
195
- readonly media: HTMLMediaElement;
205
+ readonly textTrackProvider: MediaTextTrackProvider;
206
+ readonly textTrackRenderer: TextTrackRenderer | null;
207
+ readonly playbackController: import("..").PlaybackController;
196
208
  readonly manifestTransformed: ObservableValue<Promise<import("..").HlsManifestData>>;
197
- readonly options: ObservableValue<Pick<VinylOptions, "preferredTextLanguage" | "textCueStyle">>;
209
+ readonly options: ObservableValue<Pick<VinylOptions, "text">>;
198
210
  }) => import("..").SidecarTextTrackController;
199
- options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "abr" | "preferredAudioLanguage" | "preferredTextLanguage" | "preferDescriptiveAudio" | "allowedContentTypes" | "textCueStyle">>>;
211
+ options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "audio" | "text" | "abr" | "allowedContentTypes">>>;
200
212
  playbackController: import("@amazon/vinyl-di").Factory<import("..").PlaybackController>;
201
213
  playbackSource: import("@amazon/vinyl-di").Factory<import("..").PlaybackSource>;
202
214
  drmKeySystemResolver: import("@amazon/vinyl-di").Factory<import("..").DrmKeySystemResolver>;
@@ -204,6 +216,8 @@ export declare function createVinylFactories(options: VinylDependencyOptions): {
204
216
  drmController: import("@amazon/vinyl-di").Factory<import("..").DrmController>;
205
217
  capabilities: import("@amazon/vinyl-di").Factory<import("..").Capabilities>;
206
218
  media: import("@amazon/vinyl-di").Factory<HTMLMediaElement>;
219
+ textTrackProvider: import("@amazon/vinyl-di").Factory<MediaTextTrackProvider>;
220
+ textTrackRenderer: import("@amazon/vinyl-di").Factory<TextTrackRenderer | null>;
207
221
  adController: import("@amazon/vinyl-di").Factory<import("..").AdController>;
208
222
  };
209
223
  };
@@ -63,6 +63,8 @@ import './streaming/StreamingEventMap.test';
63
63
  import './streaming/util/segment.test';
64
64
  import './text/discoverDashTextTracks.test';
65
65
  import './text/discoverHlsTextTracks.test';
66
+ import './text/HtmlTextTrackRenderer.test';
67
+ import './text/mediaTextTrackProvider.test';
66
68
  import './text/parseWebVtt.test';
67
69
  import './text/pickPreferredTextTrack.test';
68
70
  import './text/SidecarTextTrackController.test';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../test/unit/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../test/unit/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,wBAAwB,CAAA;AAC/B,OAAO,4BAA4B,CAAA;AACnC,OAAO,wCAAwC,CAAA;AAC/C,OAAO,oCAAoC,CAAA;AAC3C,OAAO,gCAAgC,CAAA;AACvC,cAAc,0CAA0C,CAAA;AACxD,OAAO,iCAAiC,CAAA;AACxC,OAAO,gCAAgC,CAAA;AACvC,OAAO,4CAA4C,CAAA;AACnD,OAAO,kCAAkC,CAAA;AACzC,OAAO,wCAAwC,CAAA;AAC/C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,6BAA6B,CAAA;AACpC,OAAO,8BAA8B,CAAA;AACrC,OAAO,yBAAyB,CAAA;AAChC,OAAO,iCAAiC,CAAA;AACxC,OAAO,2BAA2B,CAAA;AAClC,OAAO,mDAAmD,CAAA;AAC1D,OAAO,+CAA+C,CAAA;AACtD,OAAO,kCAAkC,CAAA;AACzC,OAAO,0CAA0C,CAAA;AACjD,OAAO,0BAA0B,CAAA;AACjC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,2BAA2B,CAAA;AAClC,OAAO,yBAAyB,CAAA;AAChC,OAAO,8BAA8B,CAAA;AACrC,OAAO,6CAA6C,CAAA;AACpD,OAAO,qDAAqD,CAAA;AAC5D,OAAO,gEAAgE,CAAA;AACvE,OAAO,sCAAsC,CAAA;AAC7C,OAAO,wCAAwC,CAAA;AAC/C,OAAO,4CAA4C,CAAA;AACnD,OAAO,0CAA0C,CAAA;AACjD,OAAO,qDAAqD,CAAA;AAC5D,OAAO,sCAAsC,CAAA;AAC7C,OAAO,wCAAwC,CAAA;AAC/C,OAAO,oCAAoC,CAAA;AAC3C,OAAO,4CAA4C,CAAA;AACnD,OAAO,SAAS,CAAA;AAChB,OAAO,0CAA0C,CAAA;AACjD,OAAO,gDAAgD,CAAA;AACvD,OAAO,0CAA0C,CAAA;AACjD,OAAO,oDAAoD,CAAA;AAC3D,OAAO,kDAAkD,CAAA;AACzD,OAAO,mDAAmD,CAAA;AAC1D,OAAO,gCAAgC,CAAA;AACvC,OAAO,iDAAiD,CAAA;AACxD,OAAO,wDAAwD,CAAA;AAC/D,OAAO,mCAAmC,CAAA;AAC1C,OAAO,+DAA+D,CAAA;AACtE,OAAO,yCAAyC,CAAA;AAChD,OAAO,uCAAuC,CAAA;AAC9C,OAAO,gCAAgC,CAAA;AACvC,OAAO,mDAAmD,CAAA;AAC1D,OAAO,sCAAsC,CAAA;AAC7C,OAAO,8CAA8C,CAAA;AACrD,OAAO,2BAA2B,CAAA;AAClC,OAAO,wCAAwC,CAAA;AAC/C,OAAO,kCAAkC,CAAA;AACzC,OAAO,kCAAkC,CAAA;AACzC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,+BAA+B,CAAA;AACtC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,mCAAmC,CAAA;AAC1C,OAAO,mCAAmC,CAAA;AAC1C,OAAO,oCAAoC,CAAA;AAC3C,OAAO,yBAAyB,CAAA;AAChC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,wCAAwC,CAAA;AAC/C,OAAO,oCAAoC,CAAA;AAC3C,OAAO,yBAAyB,CAAA;AAChC,OAAO,kCAAkC,CAAA;AACzC,OAAO,wCAAwC,CAAA;AAC/C,OAAO,wCAAwC,CAAA;AAC/C,OAAO,0CAA0C,CAAA;AACjD,OAAO,oDAAoD,CAAA;AAC3D,OAAO,+CAA+C,CAAA;AACtD,OAAO,uCAAuC,CAAA;AAC9C,OAAO,8CAA8C,CAAA;AACrD,OAAO,wDAAwD,CAAA;AAC/D,OAAO,kDAAkD,CAAA;AACzD,OAAO,oDAAoD,CAAA;AAC3D,OAAO,6BAA6B,CAAA;AACpC,OAAO,0CAA0C,CAAA;AACjD,OAAO,8DAA8D,CAAA;AACrE,OAAO,2CAA2C,CAAA;AAClD,OAAO,iCAAiC,CAAA;AACxC,OAAO,4BAA4B,CAAA;AACnC,OAAO,sCAAsC,CAAA;AAC7C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,qCAAqC,CAAA;AAC5C,OAAO,yCAAyC,CAAA;AAChD,OAAO,uCAAuC,CAAA;AAC9C,OAAO,wCAAwC,CAAA;AAC/C,OAAO,sDAAsD,CAAA;AAC7D,OAAO,kDAAkD,CAAA;AACzD,OAAO,6CAA6C,CAAA;AACpD,OAAO,qCAAqC,CAAA;AAC5C,OAAO,+CAA+C,CAAA;AACtD,OAAO,wCAAwC,CAAA;AAC/C,OAAO,kDAAkD,CAAA;AACzD,OAAO,2BAA2B,CAAA;AAClC,OAAO,gDAAgD,CAAA;AACvD,OAAO,sCAAsC,CAAA;AAC7C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,wBAAwB,CAAA;AAC/B,OAAO,0CAA0C,CAAA;AACjD,OAAO,uCAAuC,CAAA;AAC9C,OAAO,iCAAiC,CAAA;AACxC,OAAO,qCAAqC,CAAA;AAC5C,OAAO,wBAAwB,CAAA;AAC/B,OAAO,8BAA8B,CAAA;AACrC,OAAO,2BAA2B,CAAA;AAClC,OAAO,kCAAkC,CAAA;AACzC,OAAO,gCAAgC,CAAA;AACvC,OAAO,mCAAmC,CAAA;AAC1C,OAAO,+BAA+B,CAAA;AACtC,OAAO,gCAAgC,CAAA;AACvC,OAAO,mCAAmC,CAAA;AAC1C,OAAO,kCAAkC,CAAA;AACzC,OAAO,0BAA0B,CAAA;AACjC,OAAO,kCAAkC,CAAA;AACzC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,mDAAmD,CAAA"}
@@ -63,6 +63,8 @@ import './streaming/StreamingEventMap.test';
63
63
  import './streaming/util/segment.test';
64
64
  import './text/discoverDashTextTracks.test';
65
65
  import './text/discoverHlsTextTracks.test';
66
+ import './text/HtmlTextTrackRenderer.test';
67
+ import './text/mediaTextTrackProvider.test';
66
68
  import './text/parseWebVtt.test';
67
69
  import './text/pickPreferredTextTrack.test';
68
70
  import './text/SidecarTextTrackController.test';
@@ -796,9 +796,9 @@ describe('MseTrack', () => {
796
796
  it('suspends the controller on deactivate and resumes it on activate', () => {
797
797
  track = createTrack();
798
798
  track.activate({});
799
- expect(deps.textTrackController.resume).toHaveBeenCalled();
799
+ expect(deps.textTrackController.activate).toHaveBeenCalled();
800
800
  track.deactivate();
801
- expect(deps.textTrackController.suspend).toHaveBeenCalled();
801
+ expect(deps.textTrackController.deactivate).toHaveBeenCalled();
802
802
  });
803
803
  // Regression: reading a disposed track's controller threw DisposedError
804
804
  // (disposed DI-container lazy). An ad track evicted mid-break is still
@@ -1012,20 +1012,26 @@ describe('MseTrack', () => {
1012
1012
  expect(deps.manifestController.reset).not.toHaveBeenCalled();
1013
1013
  expect(getAudioStream().reset).not.toHaveBeenCalled();
1014
1014
  });
1015
- // A shared array reference so re-applying it reads as unchanged.
1015
+ // Shared references so re-applying them reads as unchanged.
1016
1016
  const allowed = ['audio'];
1017
+ const jaAudio = {
1018
+ selection: { language: 'ja' },
1019
+ };
1020
+ const descriptiveAudio = {
1021
+ selection: { descriptive: true },
1022
+ };
1017
1023
  for (const scenario of [
1018
1024
  {
1019
- name: 'preferredAudioLanguage',
1020
- apply: () => (deps.preferredAudioLanguage.value = 'ja'),
1025
+ name: 'audio language',
1026
+ apply: () => (deps.audio.value = jaAudio),
1021
1027
  },
1022
1028
  {
1023
1029
  name: 'allowedContentTypes',
1024
1030
  apply: () => (deps.allowedContentTypes.value = allowed),
1025
1031
  },
1026
1032
  {
1027
- name: 'preferDescriptiveAudio',
1028
- apply: () => (deps.preferDescriptiveAudio.value = true),
1033
+ name: 'audio descriptive',
1034
+ apply: () => (deps.audio.value = descriptiveAudio),
1029
1035
  },
1030
1036
  ]) {
1031
1037
  describe(`when ${scenario.name} changes`, () => {
@@ -30,9 +30,13 @@ describe('createDefaultMediaTimelineTransformer', () => {
30
30
  drmController,
31
31
  mediaTimeline: data(Promise.resolve(timeline)),
32
32
  options: data({
33
- preferredAudioLanguage,
33
+ audio: {
34
+ selection: {
35
+ language: preferredAudioLanguage,
36
+ descriptive: preferDescriptiveAudio,
37
+ },
38
+ },
34
39
  codecOverrides,
35
- preferDescriptiveAudio,
36
40
  }),
37
41
  };
38
42
  }
@@ -311,7 +315,7 @@ describe('createDefaultMediaTimelineTransformer', () => {
311
315
  getDuration: () => Promise.resolve(Infinity),
312
316
  };
313
317
  const options = data({
314
- preferredAudioLanguage: 'en',
318
+ audio: { selection: { language: 'en' } },
315
319
  });
316
320
  const deps = {
317
321
  capabilities,
@@ -323,7 +327,7 @@ describe('createDefaultMediaTimelineTransformer', () => {
323
327
  const unsub = transformed.onData(() => { });
324
328
  let result = await transformed.value;
325
329
  expect(result.periods[0].qualities[0].metadata.qualityId).toBe('en');
326
- options.value = { preferredAudioLanguage: 'ja' };
330
+ options.value = { audio: { selection: { language: 'ja' } } };
327
331
  result = await transformed.value;
328
332
  expect(result.periods[0].qualities[0].metadata.qualityId).toBe('ja');
329
333
  unsub();
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=HtmlTextTrackRenderer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlTextTrackRenderer.test.d.ts","sourceRoot":"","sources":["../../../../../test/unit/text/HtmlTextTrackRenderer.test.ts"],"names":[],"mappings":""}