shaka-player 4.12.8 → 4.13.0

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 (261) hide show
  1. package/AUTHORS +1 -0
  2. package/CONTRIBUTORS +4 -0
  3. package/README.md +22 -21
  4. package/cspell.config.yaml +18 -0
  5. package/dist/controls.css +1 -1
  6. package/dist/controls.css.map +1 -1
  7. package/dist/deps.js +29 -24
  8. package/dist/locales.js +33 -33
  9. package/dist/shaka-player.compiled.d.ts +138 -36
  10. package/dist/shaka-player.compiled.debug.d.ts +138 -36
  11. package/dist/shaka-player.compiled.debug.externs.js +367 -107
  12. package/dist/shaka-player.compiled.debug.js +828 -765
  13. package/dist/shaka-player.compiled.debug.map +4 -4
  14. package/dist/shaka-player.compiled.externs.js +367 -107
  15. package/dist/shaka-player.compiled.js +1451 -1416
  16. package/dist/shaka-player.compiled.map +4 -4
  17. package/dist/shaka-player.ui.d.ts +172 -38
  18. package/dist/shaka-player.ui.debug.d.ts +172 -38
  19. package/dist/shaka-player.ui.debug.externs.js +406 -113
  20. package/dist/shaka-player.ui.debug.js +842 -766
  21. package/dist/shaka-player.ui.debug.map +4 -4
  22. package/dist/shaka-player.ui.externs.js +406 -113
  23. package/dist/shaka-player.ui.js +1670 -1628
  24. package/dist/shaka-player.ui.map +4 -4
  25. package/eslint.config.mjs +343 -0
  26. package/externs/airplay.js +1 -1
  27. package/externs/audiotrack.js +1 -1
  28. package/externs/awesomplete.js +1 -1
  29. package/externs/cast-sdk-v2.js +2 -2
  30. package/externs/cmcd.js +16 -1
  31. package/externs/device_sensor_event.js +1 -1
  32. package/externs/ima.js +8 -8
  33. package/externs/isoboxer.js +31 -31
  34. package/externs/jwk_set.js +1 -1
  35. package/externs/lcevc.js +8 -8
  36. package/externs/mediakeys.js +1 -1
  37. package/externs/mediasession.js +3 -2
  38. package/externs/mediatailor.js +18 -18
  39. package/externs/pictureinpicture.js +41 -1
  40. package/externs/playstation.js +2 -2
  41. package/externs/prefixed_eme.js +1 -1
  42. package/externs/shaka/abortable.js +4 -4
  43. package/externs/shaka/abr_manager.js +1 -1
  44. package/externs/shaka/ads.js +45 -6
  45. package/externs/shaka/cea.js +2 -2
  46. package/externs/shaka/codecs.js +4 -4
  47. package/externs/shaka/drm_info.js +6 -6
  48. package/externs/shaka/error.js +5 -5
  49. package/externs/shaka/manifest.js +51 -56
  50. package/externs/shaka/manifest_parser.js +3 -9
  51. package/externs/shaka/net.js +23 -20
  52. package/externs/shaka/offline.js +37 -37
  53. package/externs/shaka/offline_compat_v1.js +10 -10
  54. package/externs/shaka/offline_compat_v2.js +10 -10
  55. package/externs/shaka/player.js +139 -109
  56. package/externs/shaka/text.js +10 -3
  57. package/externs/shaka/transmuxer.js +1 -1
  58. package/externs/videotrack.js +1 -1
  59. package/lib/abr/ewma.js +1 -1
  60. package/lib/abr/simple_abr_manager.js +70 -22
  61. package/lib/ads/ad_manager.js +43 -18
  62. package/lib/ads/ad_utils.js +160 -58
  63. package/lib/ads/ads_stats.js +1 -1
  64. package/lib/ads/client_side_ad_manager.js +2 -2
  65. package/lib/ads/interstitial_ad.js +16 -11
  66. package/lib/ads/interstitial_ad_manager.js +419 -72
  67. package/lib/ads/interstitial_static_ad.js +299 -0
  68. package/lib/ads/media_tailor_ad.js +1 -0
  69. package/lib/ads/media_tailor_ad_manager.js +37 -36
  70. package/lib/ads/server_side_ad_manager.js +7 -6
  71. package/lib/cast/cast_receiver.js +5 -3
  72. package/lib/cast/cast_sender.js +2 -2
  73. package/lib/cast/cast_utils.js +20 -13
  74. package/lib/cea/cea608_data_channel.js +53 -53
  75. package/lib/cea/cea708_service.js +42 -40
  76. package/lib/cea/cea708_window.js +5 -2
  77. package/lib/cea/cea_decoder.js +5 -7
  78. package/lib/cea/mp4_cea_parser.js +1 -1
  79. package/lib/cea/sei_processor.js +1 -1
  80. package/lib/dash/content_protection.js +62 -192
  81. package/lib/dash/dash_parser.js +119 -119
  82. package/lib/dash/mpd_utils.js +14 -13
  83. package/lib/dash/segment_base.js +5 -5
  84. package/lib/dash/segment_list.js +10 -10
  85. package/lib/dash/segment_template.js +55 -53
  86. package/lib/debug/log.js +2 -2
  87. package/lib/dependencies/all.js +2 -1
  88. package/lib/{media → drm}/drm_engine.js +274 -143
  89. package/lib/{util → drm}/drm_utils.js +20 -11
  90. package/lib/drm/playready.js +233 -0
  91. package/lib/hls/hls_classes.js +14 -14
  92. package/lib/hls/hls_parser.js +257 -196
  93. package/lib/hls/hls_utils.js +14 -14
  94. package/lib/hls/manifest_text_parser.js +10 -10
  95. package/lib/media/adaptation_set.js +6 -5
  96. package/lib/media/adaptation_set_criteria.js +51 -379
  97. package/lib/media/buffering_observer.js +5 -4
  98. package/lib/media/closed_caption_parser.js +2 -2
  99. package/lib/media/content_workarounds.js +2 -2
  100. package/lib/media/example_based_criteria.js +69 -0
  101. package/lib/media/gap_jumping_controller.js +14 -1
  102. package/lib/media/manifest_filterer.js +8 -8
  103. package/lib/media/manifest_parser.js +2 -2
  104. package/lib/media/media_source_capabilities.js +20 -1
  105. package/lib/media/media_source_engine.js +84 -35
  106. package/lib/media/mp4_segment_index_parser.js +5 -5
  107. package/lib/media/playhead.js +2 -8
  108. package/lib/media/playhead_observer.js +1 -1
  109. package/lib/media/preference_based_criteria.js +333 -0
  110. package/lib/media/preload_manager.js +53 -37
  111. package/lib/media/presentation_timeline.js +2 -2
  112. package/lib/media/quality_observer.js +35 -35
  113. package/lib/media/region_observer.js +2 -2
  114. package/lib/media/region_timeline.js +3 -3
  115. package/lib/media/segment_index.js +14 -14
  116. package/lib/media/segment_prefetch.js +17 -13
  117. package/lib/media/segment_reference.js +7 -7
  118. package/lib/media/segment_utils.js +9 -9
  119. package/lib/media/streaming_engine.js +77 -38
  120. package/lib/media/time_ranges_utils.js +1 -1
  121. package/lib/media/video_wrapper.js +1 -1
  122. package/lib/media/webm_segment_index_parser.js +4 -4
  123. package/lib/mss/content_protection.js +17 -222
  124. package/lib/mss/mss_parser.js +23 -24
  125. package/lib/net/data_uri_plugin.js +1 -0
  126. package/lib/net/http_fetch_plugin.js +8 -7
  127. package/lib/net/http_plugin_utils.js +5 -2
  128. package/lib/net/http_xhr_plugin.js +4 -3
  129. package/lib/net/networking_engine.js +72 -17
  130. package/lib/net/networking_utils.js +5 -2
  131. package/lib/offline/download_info.js +5 -1
  132. package/lib/offline/download_manager.js +15 -4
  133. package/lib/offline/download_progress_estimator.js +1 -1
  134. package/lib/offline/indexeddb/base_storage_cell.js +9 -9
  135. package/lib/offline/indexeddb/db_connection.js +1 -1
  136. package/lib/offline/indexeddb/db_operation.js +2 -2
  137. package/lib/offline/indexeddb/eme_session_storage_cell.js +1 -1
  138. package/lib/offline/indexeddb/storage_mechanism.js +1 -1
  139. package/lib/offline/indexeddb/v1_storage_cell.js +3 -3
  140. package/lib/offline/indexeddb/v2_storage_cell.js +2 -2
  141. package/lib/offline/manifest_converter.js +11 -12
  142. package/lib/offline/offline_scheme.js +8 -4
  143. package/lib/offline/session_deleter.js +11 -11
  144. package/lib/offline/storage.js +137 -88
  145. package/lib/offline/storage_muxer.js +8 -8
  146. package/lib/offline/stored_content_utils.js +3 -3
  147. package/lib/offline/stream_bandwidth_estimator.js +1 -1
  148. package/lib/player.js +291 -207
  149. package/lib/polyfill/all.js +1 -1
  150. package/lib/polyfill/media_capabilities.js +5 -5
  151. package/lib/polyfill/patchedmediakeys_apple.js +6 -6
  152. package/lib/polyfill/patchedmediakeys_webkit.js +8 -8
  153. package/lib/polyfill/video_play_promise.js +0 -1
  154. package/lib/text/cue.js +3 -2
  155. package/lib/text/lrc_text_parser.js +1 -1
  156. package/lib/text/mp4_ttml_parser.js +1 -1
  157. package/lib/text/mp4_vtt_parser.js +3 -3
  158. package/lib/text/sbv_text_parser.js +1 -1
  159. package/lib/text/simple_text_displayer.js +37 -10
  160. package/lib/text/ssa_text_parser.js +3 -1
  161. package/lib/text/stub_text_displayer.js +12 -5
  162. package/lib/text/text_engine.js +5 -4
  163. package/lib/text/text_utils.js +4 -4
  164. package/lib/text/ttml_text_parser.js +21 -20
  165. package/lib/text/ui_text_displayer.js +20 -13
  166. package/lib/text/vtt_text_parser.js +10 -10
  167. package/lib/text/web_vtt_generator.js +2 -2
  168. package/lib/transmuxer/aac_transmuxer.js +2 -2
  169. package/lib/transmuxer/ac3_transmuxer.js +2 -2
  170. package/lib/transmuxer/adts.js +2 -0
  171. package/lib/transmuxer/ec3.js +3 -3
  172. package/lib/transmuxer/ec3_transmuxer.js +2 -2
  173. package/lib/transmuxer/h264.js +5 -5
  174. package/lib/transmuxer/h265.js +3 -3
  175. package/lib/transmuxer/mp3_transmuxer.js +2 -2
  176. package/lib/transmuxer/mpeg_audio.js +6 -6
  177. package/lib/transmuxer/mss_transmuxer.js +2 -0
  178. package/lib/transmuxer/transmuxer_engine.js +1 -1
  179. package/lib/transmuxer/ts_transmuxer.js +10 -10
  180. package/lib/util/abortable_operation.js +10 -10
  181. package/lib/util/array_utils.js +6 -6
  182. package/lib/util/cmcd_manager.js +149 -18
  183. package/lib/util/cmsd_manager.js +11 -11
  184. package/lib/util/config_utils.js +3 -3
  185. package/lib/util/content_steering_manager.js +17 -17
  186. package/lib/util/data_view_reader.js +3 -3
  187. package/lib/util/ebml_parser.js +1 -1
  188. package/lib/util/error.js +11 -6
  189. package/lib/util/event_manager.js +1 -1
  190. package/lib/util/exp_golomb.js +1 -1
  191. package/lib/util/fairplay_utils.js +6 -1
  192. package/lib/util/fake_event.js +3 -2
  193. package/lib/util/fake_event_target.js +1 -1
  194. package/lib/util/functional.js +8 -8
  195. package/lib/util/id3_utils.js +1 -1
  196. package/lib/util/iterables.js +6 -6
  197. package/lib/util/language_utils.js +17 -17
  198. package/lib/util/manifest_parser_utils.js +13 -13
  199. package/lib/util/map_utils.js +6 -6
  200. package/lib/util/media_ready_state_utils.js +1 -1
  201. package/lib/util/mime_utils.js +15 -4
  202. package/lib/util/mp4_box_parsers.js +5 -5
  203. package/lib/util/mp4_generator.js +31 -30
  204. package/lib/util/mp4_parser.js +2 -2
  205. package/lib/util/multi_map.js +5 -5
  206. package/lib/util/mutex.js +1 -1
  207. package/lib/util/networking.js +1 -1
  208. package/lib/util/object_utils.js +5 -1
  209. package/lib/util/operation_manager.js +1 -1
  210. package/lib/util/periods.js +24 -24
  211. package/lib/util/platform.js +8 -4
  212. package/lib/util/player_configuration.js +50 -17
  213. package/lib/util/pssh.js +34 -6
  214. package/lib/util/public_promise.js +2 -2
  215. package/lib/util/state_history.js +2 -2
  216. package/lib/util/stream_utils.js +138 -120
  217. package/lib/util/string_utils.js +4 -3
  218. package/lib/util/switch_history.js +2 -2
  219. package/lib/util/tXml.js +22 -17
  220. package/lib/util/text_parser.js +2 -2
  221. package/lib/util/timer.js +1 -1
  222. package/lib/util/ts_parser.js +22 -22
  223. package/lib/util/xml_utils.js +1 -0
  224. package/package.json +7 -4
  225. package/project-words.txt +485 -0
  226. package/shaka-player.uncompiled.js +1 -1
  227. package/third_party/closure-uri/uri.js +2 -2
  228. package/third_party/closure-uri/utils.js +2 -2
  229. package/third_party/language-mapping-list/language-mapping-list.js +1 -1
  230. package/ui/ad_statistics_button.js +9 -5
  231. package/ui/airplay_button.js +1 -0
  232. package/ui/audio_language_selection.js +2 -1
  233. package/ui/context_menu.js +2 -2
  234. package/ui/controls.js +7 -7
  235. package/ui/externs/ui.js +29 -21
  236. package/ui/externs/watermark.js +64 -0
  237. package/ui/fast_forward_button.js +1 -1
  238. package/ui/gl_matrix/matrix_4x4.js +11 -5
  239. package/ui/hidden_fast_forward_button.js +1 -1
  240. package/ui/hidden_seek_button.js +1 -1
  241. package/ui/language_utils.js +27 -26
  242. package/ui/less/buttons.less +2 -2
  243. package/ui/localization.js +21 -21
  244. package/ui/loop_button.js +2 -2
  245. package/ui/overflow_menu.js +2 -2
  246. package/ui/playback_rate_selection.js +1 -1
  247. package/ui/presentation_time.js +4 -1
  248. package/ui/range_element.js +2 -2
  249. package/ui/resolution_selection.js +42 -6
  250. package/ui/rewind_button.js +1 -1
  251. package/ui/seek_bar.js +5 -5
  252. package/ui/statistics_button.js +8 -4
  253. package/ui/text_selection.js +3 -2
  254. package/ui/ui.js +32 -2
  255. package/ui/vr_manager.js +3 -3
  256. package/ui/vr_utils.js +14 -14
  257. package/ui/vr_webgl.js +5 -5
  258. package/ui/watermark.js +313 -0
  259. package/.eslintignore +0 -4
  260. package/.eslintrc.js +0 -310
  261. package/lib/polyfill/patchedmediakeys_nop.js +0 -148
@@ -92,8 +92,8 @@ shaka.extern.StateChange;
92
92
  * manifestPeriodCount: number,
93
93
  * manifestGapCount: number,
94
94
  *
95
- * switchHistory: !Array.<shaka.extern.TrackChoice>,
96
- * stateHistory: !Array.<shaka.extern.StateChange>
95
+ * switchHistory: !Array<shaka.extern.TrackChoice>,
96
+ * stateHistory: !Array<shaka.extern.StateChange>
97
97
  * }}
98
98
  *
99
99
  * @description
@@ -187,9 +187,9 @@ shaka.extern.StateChange;
187
187
  * and GAP=YES occurrences. For MSS, it is always set to 0.
188
188
  * If in src= mode or nothing is loaded, NaN.
189
189
  *
190
- * @property {!Array.<shaka.extern.TrackChoice>} switchHistory
190
+ * @property {!Array<shaka.extern.TrackChoice>} switchHistory
191
191
  * A history of the stream changes.
192
- * @property {!Array.<shaka.extern.StateChange>} stateHistory
192
+ * @property {!Array<shaka.extern.StateChange>} stateHistory
193
193
  * A history of the state changes.
194
194
  * @exportDoc
195
195
  */
@@ -216,23 +216,23 @@ shaka.extern.BufferedRange;
216
216
 
217
217
  /**
218
218
  * @typedef {{
219
- * total: !Array.<shaka.extern.BufferedRange>,
220
- * audio: !Array.<shaka.extern.BufferedRange>,
221
- * video: !Array.<shaka.extern.BufferedRange>,
222
- * text: !Array.<shaka.extern.BufferedRange>
219
+ * total: !Array<shaka.extern.BufferedRange>,
220
+ * audio: !Array<shaka.extern.BufferedRange>,
221
+ * video: !Array<shaka.extern.BufferedRange>,
222
+ * text: !Array<shaka.extern.BufferedRange>
223
223
  * }}
224
224
  *
225
225
  * @description
226
226
  * Contains information about the current buffered ranges.
227
227
  *
228
- * @property {!Array.<shaka.extern.BufferedRange>} total
228
+ * @property {!Array<shaka.extern.BufferedRange>} total
229
229
  * The combined audio/video buffered ranges, reported by
230
230
  * <code>video.buffered</code>.
231
- * @property {!Array.<shaka.extern.BufferedRange>} audio
231
+ * @property {!Array<shaka.extern.BufferedRange>} audio
232
232
  * The buffered ranges for audio content.
233
- * @property {!Array.<shaka.extern.BufferedRange>} video
233
+ * @property {!Array<shaka.extern.BufferedRange>} video
234
234
  * The buffered ranges for video content.
235
- * @property {!Array.<shaka.extern.BufferedRange>} text
235
+ * @property {!Array<shaka.extern.BufferedRange>} text
236
236
  * The buffered ranges for text content.
237
237
  * @exportDoc
238
238
  */
@@ -264,8 +264,8 @@ shaka.extern.BufferedInfo;
264
264
  * audioCodec: ?string,
265
265
  * videoCodec: ?string,
266
266
  * primary: boolean,
267
- * roles: !Array.<string>,
268
- * audioRoles: Array.<string>,
267
+ * roles: !Array<string>,
268
+ * audioRoles: Array<string>,
269
269
  * accessibilityPurpose: ?shaka.media.ManifestParser.AccessibilityPurpose,
270
270
  * forced: boolean,
271
271
  * videoId: ?number,
@@ -343,15 +343,15 @@ shaka.extern.BufferedInfo;
343
343
  * This can be a useful hint about which language should be the default, and
344
344
  * indicates which track Shaka will use when the user's language preference
345
345
  * cannot be satisfied.
346
- * @property {!Array.<string>} roles
346
+ * @property {!Array<string>} roles
347
347
  * The roles of the track, e.g. <code>'main'</code>, <code>'caption'</code>,
348
348
  * or <code>'commentary'</code>.
349
- * @property {Array.<string>} audioRoles
349
+ * @property {Array<string>} audioRoles
350
350
  * The roles of the audio in the track, e.g. <code>'main'</code> or
351
351
  * <code>'commentary'</code>. Will be null for text tracks or variant tracks
352
352
  * without audio.
353
- * @property {?shaka.media.ManifestParser.AccessibilityPurpose}
354
- * accessibilityPurpose
353
+ * @property {?shaka.media.ManifestParser.AccessibilityPurpose
354
+ * } accessibilityPurpose
355
355
  * The DASH accessibility descriptor, if one was provided for this track.
356
356
  * For text tracks, this describes the text; otherwise, this is for the audio.
357
357
  * @property {boolean} forced
@@ -398,7 +398,7 @@ shaka.extern.Track;
398
398
 
399
399
 
400
400
  /**
401
- * @typedef {!Array.<!shaka.extern.Track>}
401
+ * @typedef {!Array<!shaka.extern.Track>}
402
402
  */
403
403
  shaka.extern.TrackList;
404
404
 
@@ -495,7 +495,8 @@ shaka.extern.Restrictions;
495
495
  * persistentState: boolean,
496
496
  * encryptionSchemes: !Array<string|null>,
497
497
  * videoRobustnessLevels: !Array<string>,
498
- * audioRobustnessLevels: !Array<string>
498
+ * audioRobustnessLevels: !Array<string>,
499
+ * minHdcpVersions: !Array<string>
499
500
  * }}
500
501
  *
501
502
  * @property {boolean} persistentState
@@ -512,6 +513,10 @@ shaka.extern.Restrictions;
512
513
  * An array of audio robustness levels that are reported to work. An empty
513
514
  * array indicates that none were tested. Not all key systems have a list of
514
515
  * known robustness levels built into probeSupport().
516
+ * @property {!Array<string>} minHdcpVersions
517
+ * An array of min HDCP levels that are reported to work. An empty
518
+ * array indicates that none were tested. Not all key systems have support to
519
+ * check min HDCP levels.
515
520
  * @exportDoc
516
521
  */
517
522
  shaka.extern.DrmSupportType;
@@ -519,22 +524,22 @@ shaka.extern.DrmSupportType;
519
524
 
520
525
  /**
521
526
  * @typedef {{
522
- * manifest: !Object.<string, boolean>,
523
- * media: !Object.<string, boolean>,
524
- * drm: !Object.<string, ?shaka.extern.DrmSupportType>,
527
+ * manifest: !Object<string, boolean>,
528
+ * media: !Object<string, boolean>,
529
+ * drm: !Object<string, ?shaka.extern.DrmSupportType>,
525
530
  * hardwareResolution: shaka.extern.Resolution
526
531
  * }}
527
532
  *
528
533
  * @description
529
534
  * An object detailing browser support for various features.
530
535
  *
531
- * @property {!Object.<string, boolean>} manifest
536
+ * @property {!Object<string, boolean>} manifest
532
537
  * A map of supported manifest types.
533
538
  * The keys are manifest MIME types and file extensions.
534
- * @property {!Object.<string, boolean>} media
539
+ * @property {!Object<string, boolean>} media
535
540
  * A map of supported media types.
536
541
  * The keys are media MIME types.
537
- * @property {!Object.<string, ?shaka.extern.DrmSupportType>} drm
542
+ * @property {!Object<string, ?shaka.extern.DrmSupportType>} drm
538
543
  * A map of supported key systems.
539
544
  * The keys are the key system names. The value is <code>null</code> if it is
540
545
  * not supported. Key systems not probed will not be in this dictionary.
@@ -551,7 +556,7 @@ shaka.extern.SupportType;
551
556
  * @typedef {{
552
557
  * cueTime: ?number,
553
558
  * data: !Uint8Array,
554
- * frames: !Array.<shaka.extern.MetadataFrame>,
559
+ * frames: !Array<shaka.extern.MetadataFrame>,
555
560
  * dts: ?number,
556
561
  * pts: ?number
557
562
  * }}
@@ -563,7 +568,7 @@ shaka.extern.SupportType;
563
568
  *
564
569
  * @property {?number} cueTime
565
570
  * @property {!Uint8Array} data
566
- * @property {!Array.<shaka.extern.MetadataFrame>} frames
571
+ * @property {!Array<shaka.extern.MetadataFrame>} frames
567
572
  * @property {?number} dts
568
573
  * @property {?number} pts
569
574
  *
@@ -648,12 +653,12 @@ shaka.extern.PlaybackStreamInfo;
648
653
  * @typedef {{
649
654
  * startTime: number,
650
655
  * endTime: ?number,
651
- * values: !Array.<shaka.extern.MetadataFrame>
656
+ * values: !Array<shaka.extern.MetadataFrame>
652
657
  * }}
653
658
  *
654
659
  * @property {number} startTime
655
660
  * @property {?number} endTime
656
- * @property {!Array.<shaka.extern.MetadataFrame>} values
661
+ * @property {!Array<shaka.extern.MetadataFrame>} values
657
662
  * @exportDoc
658
663
  */
659
664
  shaka.extern.HLSInterstitial;
@@ -704,7 +709,7 @@ shaka.extern.TimelineRegionInfo;
704
709
  * height: ?number,
705
710
  * mimeType: ?string,
706
711
  * label: ?string,
707
- * roles: ?Array.<string>,
712
+ * roles: ?Array<string>,
708
713
  * language: ?string,
709
714
  * channelsCount: ?number,
710
715
  * pixelAspectRatio: ?string,
@@ -731,7 +736,7 @@ shaka.extern.TimelineRegionInfo;
731
736
  * The MIME type.
732
737
  * @property {?string} label
733
738
  * The stream's label, when available.
734
- * @property {?Array.<string>} roles
739
+ * @property {?Array<string>} roles
735
740
  * The stream's role, when available.
736
741
  * @property {?string} language
737
742
  * The stream's language, when available.
@@ -808,13 +813,13 @@ shaka.extern.ProducerReferenceTime;
808
813
  * @typedef {{
809
814
  * distinctiveIdentifierRequired: boolean,
810
815
  * persistentStateRequired: boolean,
811
- * videoRobustness: string,
812
- * audioRobustness: string,
816
+ * videoRobustness: Array<string>,
817
+ * audioRobustness: Array<string>,
813
818
  * serverCertificate: Uint8Array,
814
819
  * serverCertificateUri: string,
815
820
  * individualizationServer: string,
816
821
  * sessionType: string,
817
- * headers: !Object.<string, string>
822
+ * headers: !Object<string, string>
818
823
  * }}
819
824
  *
820
825
  * @property {boolean} distinctiveIdentifierRequired
@@ -827,16 +832,18 @@ shaka.extern.ProducerReferenceTime;
827
832
  * state, e.g., for persistent license storage.
828
833
  * <br>
829
834
  * Defaults to <code>false</code>.
830
- * @property {string} videoRobustness
831
- * A key-system-specific string that specifies a required security level for
832
- * video.
833
- * <br>
834
- * Defaults to <code>''</code>, i.e., no specific robustness required.
835
- * @property {string} audioRobustness
836
- * A key-system-specific string that specifies a required security level for
837
- * audio.
838
- * <br>
839
- * Defaults to <code>''</code>, i.e., no specific robustness required.
835
+ * @property {Array<string>} videoRobustness
836
+ * A key-system-specific Array of strings that specifies a required security
837
+ * level for video. For multiple robustness levels, list items in priority
838
+ * order.
839
+ * <br>
840
+ * Defaults to <code>[]</code>, i.e., no specific robustness required.
841
+ * @property {Array<string>} audioRobustness
842
+ * A key-system-specific Array of strings that specifies a required security
843
+ * level for audio. For multiple robustness levels, list items in priority
844
+ * order.
845
+ * <br>
846
+ * Defaults to <code>[]</code>, i.e., no specific robustness required.
840
847
  * @property {Uint8Array} serverCertificate
841
848
  * <i>An empty certificate (<code>byteLength==0</code>) will be treated as
842
849
  * <code>null</code>.</i> <br>
@@ -853,8 +860,8 @@ shaka.extern.ProducerReferenceTime;
853
860
  * <br>
854
861
  * Defaults to <code>''</code>.
855
862
  * @property {string} individualizationServer
856
- * The server that handles an <code>'individualiation-request'</code>. If the
857
- * server isn't given, it will default to the license server.
863
+ * The server that handles an <code>'individualization-request'</code>.
864
+ * If the server isn't given, it will default to the license server.
858
865
  * <br>
859
866
  * Defaults to <code>''</code>.
860
867
  * @property {string} sessionType
@@ -862,7 +869,7 @@ shaka.extern.ProducerReferenceTime;
862
869
  * affect offline storage.
863
870
  * <br>
864
871
  * Defaults to <code>'temporary'</code>.
865
- * @property {!Object.<string, string>} headers
872
+ * @property {!Object<string, string>} headers
866
873
  * The headers to use in the license request.
867
874
  * <br>
868
875
  * Defaults to <code>{}</code>.
@@ -920,33 +927,35 @@ shaka.extern.PersistentSessionMetadata;
920
927
  /**
921
928
  * @typedef {{
922
929
  * retryParameters: shaka.extern.RetryParameters,
923
- * servers: !Object.<string, string>,
924
- * clearKeys: !Object.<string, string>,
930
+ * servers: !Object<string, string>,
931
+ * clearKeys: !Object<string, string>,
925
932
  * delayLicenseRequestUntilPlayed: boolean,
926
933
  * persistentSessionOnlinePlayback: boolean,
927
934
  * persistentSessionsMetadata:
928
- * !Array.<shaka.extern.PersistentSessionMetadata>,
929
- * advanced: Object.<string, shaka.extern.AdvancedDrmConfiguration>,
935
+ * !Array<shaka.extern.PersistentSessionMetadata>,
936
+ * advanced: Object<string, shaka.extern.AdvancedDrmConfiguration>,
930
937
  * initDataTransform:(shaka.extern.InitDataTransform|undefined),
931
938
  * logLicenseExchange: boolean,
932
939
  * updateExpirationTime: number,
933
- * preferredKeySystems: !Array.<string>,
934
- * keySystemsMapping: !Object.<string, string>,
940
+ * preferredKeySystems: !Array<string>,
941
+ * keySystemsMapping: !Object<string, string>,
935
942
  * parseInbandPsshEnabled: boolean,
936
943
  * minHdcpVersion: string,
937
- * ignoreDuplicateInitData: boolean
944
+ * ignoreDuplicateInitData: boolean,
945
+ * defaultAudioRobustnessForWidevine: string,
946
+ * defaultVideoRobustnessForWidevine: string
938
947
  * }}
939
948
  *
940
949
  * @property {shaka.extern.RetryParameters} retryParameters
941
950
  * Retry parameters for license requests.
942
- * @property {!Object.<string, string>} servers
951
+ * @property {!Object<string, string>} servers
943
952
  * <i>Required for all but the clear key CDM.</i> <br>
944
953
  * A dictionary which maps key system IDs to their license servers.
945
954
  * For example,
946
955
  * <code>{'com.widevine.alpha': 'https://example.com/drm'}</code>.
947
956
  * <br>
948
957
  * Defaults to <code>{}</code>.
949
- * @property {!Object.<string, string>} clearKeys
958
+ * @property {!Object<string, string>} clearKeys
950
959
  * <i>Forces the use of the Clear Key CDM.</i>
951
960
  * A map of key IDs (hex or base64) to keys (hex or base64).
952
961
  * <br>
@@ -962,11 +971,11 @@ shaka.extern.PersistentSessionMetadata;
962
971
  * stop, as-to be able to re-use it later.
963
972
  * <br>
964
973
  * Defaults to <code>false</code>.
965
- * @property {!Array.<PersistentSessionMetadata>} persistentSessionsMetadata
974
+ * @property {!Array<PersistentSessionMetadata>} persistentSessionsMetadata
966
975
  * Persistent sessions metadata to load before starting playback.
967
976
  * <br>
968
977
  * Defaults to <code>[]</code>.
969
- * @property {Object.<string, shaka.extern.AdvancedDrmConfiguration>} advanced
978
+ * @property {Object<string, shaka.extern.AdvancedDrmConfiguration>} advanced
970
979
  * <i>Optional.</i> <br>
971
980
  * A dictionary which maps key system IDs to advanced DRM configuration for
972
981
  * those key systems.
@@ -989,12 +998,12 @@ shaka.extern.PersistentSessionMetadata;
989
998
  * The frequency in seconds with which to check the expiration of a session.
990
999
  * <br>
991
1000
  * Defaults to <code>1</code>.
992
- * @property {!Array.<string>} preferredKeySystems
993
- * Specifies the priorties of available DRM key systems.
1001
+ * @property {!Array<string>} preferredKeySystems
1002
+ * Specifies the priorities of available DRM key systems.
994
1003
  * <br>
995
1004
  * Defaults <code>['com.microsoft.playready']</code> on Xbox One and
996
1005
  * PlayStation 4, and <code>[]</code> for all other browsers.
997
- * @property {Object.<string, string>} keySystemsMapping
1006
+ * @property {Object<string, string>} keySystemsMapping
998
1007
  * A map of key system name to key system name.
999
1008
  * <br>
1000
1009
  * Defaults to <code>{}</code>.
@@ -1013,11 +1022,21 @@ shaka.extern.PersistentSessionMetadata;
1013
1022
  * @property {boolean} ignoreDuplicateInitData
1014
1023
  * When true indicate that the player doesn't ignore duplicate init data.
1015
1024
  * Note: Tizen 2015 and 2016 models will send multiple webkitneedkey events
1016
- * with the same init data. If the duplicates are supressed, playback
1025
+ * with the same init data. If the duplicates are suppressed, playback
1017
1026
  * will stall without errors.
1018
1027
  * <br>
1019
1028
  * Defaults to <code>false</code> on Tizen 2, and <code>true</code> for all
1020
1029
  * other browsers.
1030
+ * @property {string} defaultAudioRobustnessForWidevine
1031
+ * Specify the default audio security level for Widevine when audio robustness
1032
+ * is not specified.
1033
+ * <br>
1034
+ * Defaults to <code>'SW_SECURE_CRYPTO'</code>.
1035
+ * @property {string} defaultVideoRobustnessForWidevine
1036
+ * Specify the default video security level for Widevine when video robustness
1037
+ * is not specified.
1038
+ * <br>
1039
+ * Defaults to <code>'SW_SECURE_DECODE'</code>.
1021
1040
  * @exportDoc
1022
1041
  */
1023
1042
  shaka.extern.DrmConfiguration;
@@ -1038,7 +1057,7 @@ shaka.extern.InitDataTransform;
1038
1057
  * @typedef {{
1039
1058
  * tagName: !string,
1040
1059
  * attributes: !Object<string, string>,
1041
- * children: !Array.<shaka.extern.xml.Node | string>,
1060
+ * children: !Array<shaka.extern.xml.Node | string>,
1042
1061
  * parent: ?shaka.extern.xml.Node
1043
1062
  * }}
1044
1063
  *
@@ -1049,7 +1068,7 @@ shaka.extern.InitDataTransform;
1049
1068
  * The name of the element
1050
1069
  * @property {!object} attributes
1051
1070
  * The attributes of the element
1052
- * @property {!Array.<shaka.extern.xml.Node | string>} children
1071
+ * @property {!Array<shaka.extern.xml.Node | string>} children
1053
1072
  * The child nodes or string body of the element
1054
1073
  * @property {?shaka.extern.xml.Node} parent
1055
1074
  * The parent of the current element
@@ -1070,14 +1089,15 @@ shaka.extern.xml.Node;
1070
1089
  * ignoreSuggestedPresentationDelay: boolean,
1071
1090
  * ignoreEmptyAdaptationSet: boolean,
1072
1091
  * ignoreMaxSegmentDuration: boolean,
1073
- * keySystemsByURI: !Object.<string, string>,
1092
+ * keySystemsByURI: !Object<string, string>,
1074
1093
  * manifestPreprocessor: function(!Element),
1075
1094
  * manifestPreprocessorTXml: function(!shaka.extern.xml.Node),
1076
1095
  * sequenceMode: boolean,
1077
1096
  * multiTypeVariantsAllowed: boolean,
1078
1097
  * useStreamOnceInPeriodFlattening: boolean,
1079
1098
  * updatePeriod: number,
1080
- * enableFastSwitching: boolean
1099
+ * enableFastSwitching: boolean,
1100
+ * ignoreSupplementalCodecs: boolean
1081
1101
  * }}
1082
1102
  *
1083
1103
  * @property {string} clockSyncUri
@@ -1104,8 +1124,7 @@ shaka.extern.xml.Node;
1104
1124
  * Defaults to <code>false</code>.
1105
1125
  * @property {boolean} ignoreMinBufferTime
1106
1126
  * If true will cause DASH parser to ignore <code>minBufferTime</code> from
1107
- * manifest. It allows player config to take precedence over manifest for
1108
- * <code>rebufferingGoal</code>.
1127
+ * manifest.
1109
1128
  * <br>
1110
1129
  * Defaults to <code>false</code>.
1111
1130
  * @property {boolean} autoCorrectDrift
@@ -1137,7 +1156,7 @@ shaka.extern.xml.Node;
1137
1156
  * <code>maxSegmentDuration</code> from manifest.
1138
1157
  * <br>
1139
1158
  * Defaults to <code>false</code>.
1140
- * @property {Object.<string, string>} keySystemsByURI
1159
+ * @property {Object<string, string>} keySystemsByURI
1141
1160
  * A map of scheme URI to key system name. Defaults to default key systems
1142
1161
  * mapping handled by Shaka.
1143
1162
  * @property {function(!Element)} manifestPreprocessor
@@ -1183,6 +1202,10 @@ shaka.extern.xml.Node;
1183
1202
  * If false, disables fast switching track recognition.
1184
1203
  * <br>
1185
1204
  * Defaults to <code>true</code>.
1205
+ * @property {boolean} ignoreSupplementalCodecs
1206
+ * If true, ignores supplemental codecs.
1207
+ * <br>
1208
+ * Defaults to <code>false</code>.
1186
1209
  * @exportDoc
1187
1210
  */
1188
1211
  shaka.extern.DashManifestConfiguration;
@@ -1203,7 +1226,8 @@ shaka.extern.DashManifestConfiguration;
1203
1226
  * disableCodecGuessing: boolean,
1204
1227
  * disableClosedCaptionsDetection: boolean,
1205
1228
  * allowLowLatencyByteRangeOptimization: boolean,
1206
- * updatePeriod: number
1229
+ * updatePeriod: number,
1230
+ * ignoreSupplementalCodecs: boolean
1207
1231
  * }}
1208
1232
  *
1209
1233
  * @property {boolean} ignoreTextStreamFailures
@@ -1232,7 +1256,7 @@ shaka.extern.DashManifestConfiguration;
1232
1256
  * incorrect or malformed.
1233
1257
  * <br>
1234
1258
  * Defaults to <code>false</code>.
1235
- * @property {!Array.<string>} ignoreManifestProgramDateTimeForTypes
1259
+ * @property {!Array<string>} ignoreManifestProgramDateTimeForTypes
1236
1260
  * An array of strings representing types for which
1237
1261
  * <code>EXT-X-PROGRAM-DATE-TIME</code> should be ignored. Only used if the
1238
1262
  * the main ignoreManifestProgramDateTime is set to false.
@@ -1297,6 +1321,10 @@ shaka.extern.DashManifestConfiguration;
1297
1321
  * trigger a new download of the manifest.
1298
1322
  * <br>
1299
1323
  * Defaults to <code>-1</code>.
1324
+ * @property {boolean} ignoreSupplementalCodecs
1325
+ * If true, ignores supplemental codecs.
1326
+ * <br>
1327
+ * Defaults to <code>false</code>.
1300
1328
  * @exportDoc
1301
1329
  */
1302
1330
  shaka.extern.HlsManifestConfiguration;
@@ -1307,7 +1335,7 @@ shaka.extern.HlsManifestConfiguration;
1307
1335
  * manifestPreprocessor: function(!Element),
1308
1336
  * manifestPreprocessorTXml: function(!shaka.extern.xml.Node),
1309
1337
  * sequenceMode: boolean,
1310
- * keySystemsBySystemId: !Object.<string, string>
1338
+ * keySystemsBySystemId: !Object<string, string>
1311
1339
  * }}
1312
1340
  *
1313
1341
  * @property {function(!Element)} manifestPreprocessor
@@ -1324,7 +1352,7 @@ shaka.extern.HlsManifestConfiguration;
1324
1352
  * "sequence mode" (ignoring their internal timestamps).
1325
1353
  * <br>
1326
1354
  * Defaults to <code>false</code>.
1327
- * @property {Object.<string, string>} keySystemsBySystemId
1355
+ * @property {Object<string, string>} keySystemsBySystemId
1328
1356
  * A map of system id to key system name. Defaults to default key systems
1329
1357
  * mapping handled by Shaka.
1330
1358
  * @exportDoc
@@ -1382,7 +1410,8 @@ shaka.extern.MssManifestConfiguration;
1382
1410
  * @property {number} defaultPresentationDelay
1383
1411
  * For DASH, it's a default <code>presentationDelay</code> value if
1384
1412
  * <code>suggestedPresentationDelay</code> is missing in the MPEG DASH
1385
- * manifest. The default value is <code>1.5 * minBufferTime</code> if not
1413
+ * manifest. The default value is the lower of <code>1.5 *
1414
+ * minBufferTime</code> and <code>segmentAvailabilityDuration</code> if not
1386
1415
  * configured or set as 0.
1387
1416
  * For HLS, the default value is 3 segments duration if not configured or
1388
1417
  * set as 0.
@@ -1517,8 +1546,8 @@ shaka.extern.DynamicTargetLatencyConfiguration;
1517
1546
  * Number of seconds that playback stays in panic mode after a rebuffering.
1518
1547
  * <br>
1519
1548
  * Defaults to <code>60</code>.
1520
- * @property {shaka.extern.DynamicTargetLatencyConfiguration}
1521
- * dynamicTargetLatency
1549
+ * @property {shaka.extern.DynamicTargetLatencyConfiguration
1550
+ * } dynamicTargetLatency
1522
1551
  *
1523
1552
  * The dynamic target latency config for dynamically adjusting the target
1524
1553
  * latency to be closer to edge when network conditions are good and to back
@@ -1551,10 +1580,10 @@ shaka.extern.LiveSyncConfiguration;
1551
1580
  * useNativeHlsForFairPlay: boolean,
1552
1581
  * inaccurateManifestTolerance: number,
1553
1582
  * lowLatencyMode: boolean,
1554
- * autoLowLatencyMode: boolean,
1555
1583
  * forceHTTP: boolean,
1556
1584
  * forceHTTPS: boolean,
1557
1585
  * minBytesForProgressEvents: number,
1586
+ * preferNativeDash: boolean,
1558
1587
  * preferNativeHls: boolean,
1559
1588
  * updateIntervalSeconds: number,
1560
1589
  * observeQualityChanges: boolean,
@@ -1570,7 +1599,6 @@ shaka.extern.LiveSyncConfiguration;
1570
1599
  * vodDynamicPlaybackRate: boolean,
1571
1600
  * vodDynamicPlaybackRateLowBufferRate: number,
1572
1601
  * vodDynamicPlaybackRateBufferRatio: number,
1573
- * infiniteLiveStreamDuration: boolean,
1574
1602
  * preloadNextUrlWindow: number,
1575
1603
  * loadTimeout: number,
1576
1604
  * clearDecodingCache: boolean,
@@ -1591,8 +1619,9 @@ shaka.extern.LiveSyncConfiguration;
1591
1619
  * buffer before it can begin playback or can continue playback after it has
1592
1620
  * entered into a buffering state (i.e., after it has depleted one more
1593
1621
  * more of its buffers).
1622
+ * When the value is 0, the playback rate is not used to control the buffer.
1594
1623
  * <br>
1595
- * Defaults to <code>2</code>.
1624
+ * Defaults to <code>0</code>.
1596
1625
  * @property {number} bufferingGoal
1597
1626
  * The number of seconds of content that the StreamingEngine will attempt to
1598
1627
  * buffer ahead of the playhead. This value must be greater than or equal to
@@ -1662,7 +1691,7 @@ shaka.extern.LiveSyncConfiguration;
1662
1691
  * Defaults to <code>5</code>.
1663
1692
  * @property {number} safeSeekEndOffset
1664
1693
  * The amount of seconds that should be added when repositioning the playhead
1665
- * after falling out of the seakable end range. This is helpful for live
1694
+ * after falling out of the seekable end range. This is helpful for live
1666
1695
  * stream with a lot of GAP. This will reposition the playback in the past
1667
1696
  * and avoid to be block at the edge and buffer at the next GAP
1668
1697
  * <br>
@@ -1708,13 +1737,6 @@ shaka.extern.LiveSyncConfiguration;
1708
1737
  * other things, see: docs/tutorials/config.md
1709
1738
  * <br>
1710
1739
  * Defaults to <code>false</code>.
1711
- * @property {boolean} autoLowLatencyMode
1712
- * If the stream is low latency and the user has not configured the
1713
- * lowLatencyMode, but if it has been configured to activate the
1714
- * lowLatencyMode if a stream of this type is detected, we automatically
1715
- * activate the lowLatencyMode.
1716
- * <br>
1717
- * Defaults to <code>false</code>.
1718
1740
  * @property {boolean} forceHTTP
1719
1741
  * If true, if the protocol is HTTPs change it to HTTP.
1720
1742
  * If both forceHTTP and forceHTTPS are set, forceHTTPS wins.
@@ -1730,6 +1752,10 @@ shaka.extern.LiveSyncConfiguration;
1730
1752
  * if possible. To avoid issues around feeding ABR with request history, this
1731
1753
  * value should be greater than or equal to `abr.advanced.minBytes`.
1732
1754
  * By default equals 16e3 (the same value as `abr.advanced.minBytes`).
1755
+ * @property {boolean} preferNativeDash
1756
+ * If true, prefer native DASH playback when possible, regardless of platform.
1757
+ * <br>
1758
+ * Defaults to <code>false</code>.
1733
1759
  * @property {boolean} preferNativeHls
1734
1760
  * If true, prefer native HLS playback when possible, regardless of platform.
1735
1761
  * <br>
@@ -1799,13 +1825,6 @@ shaka.extern.LiveSyncConfiguration;
1799
1825
  * <code>vodDynamicPlaybackRateLowBufferRate</code>.
1800
1826
  * <br>
1801
1827
  * Defaults to <code>0.5</code>.
1802
- * @property {boolean} infiniteLiveStreamDuration
1803
- * If <code>true</code>, the media source duration of livestreams will be set
1804
- * to <code>Infinity</code>. Otherwise, it will be set to a high but
1805
- * non-infinite number (2^32).
1806
- * <br>
1807
- * Defaults to <code>false</code> except on Safari 17 or above whose default
1808
- * value is <code>true</code>.
1809
1828
  * @property {number} preloadNextUrlWindow
1810
1829
  * The window of time at the end of the presentation to begin preloading the
1811
1830
  * next URL, such as one specified by a urn:mpeg:dash:chaining:2016 element
@@ -1877,7 +1896,7 @@ shaka.extern.StreamingConfiguration;
1877
1896
  * <br><br>
1878
1897
  * See https://github.com/shaka-project/shaka-player/issues/2759.
1879
1898
  * <br><br>
1880
- * If you know you don't need this, you canset this value to
1899
+ * If you know you don't need this, you can set this value to
1881
1900
  * <code>false</code> to gain a few milliseconds on loading time and seek
1882
1901
  * time.
1883
1902
  * <br><br>
@@ -2103,7 +2122,8 @@ shaka.extern.AdvancedAbrConfiguration;
2103
2122
  * sessionId: string,
2104
2123
  * contentId: string,
2105
2124
  * rtpSafetyFactor: number,
2106
- * includeKeys: !Array<string>
2125
+ * includeKeys: !Array<string>,
2126
+ * version: number
2107
2127
  * }}
2108
2128
  *
2109
2129
  * @description
@@ -2142,6 +2162,12 @@ shaka.extern.AdvancedAbrConfiguration;
2142
2162
  * will be included.
2143
2163
  * <br>
2144
2164
  * Defaults to <code>[]</code>.
2165
+ * @property {number} version
2166
+ * The CMCD version.
2167
+ * Valid values are <code>1</code> or <code>2</code>, corresponding to CMCD v1
2168
+ * and CMCD v2 specifications, respectively.
2169
+ * <br>
2170
+ * Defaults to <code>1</code>.
2145
2171
  * @exportDoc
2146
2172
  */
2147
2173
  shaka.extern.CmcdConfiguration;
@@ -2232,8 +2258,8 @@ shaka.extern.LcevcConfiguration;
2232
2258
  * numberOfParallelDownloads: number
2233
2259
  * }}
2234
2260
  *
2235
- * @property {function(shaka.extern.TrackList):!Promise<shaka.extern.TrackList>}
2236
- * trackSelectionCallback
2261
+ * @property {function(shaka.extern.TrackList):
2262
+ * !Promise<shaka.extern.TrackList>} trackSelectionCallback
2237
2263
  * Called inside <code>store()</code> to determine which tracks to save from a
2238
2264
  * manifest. It is passed an array of Tracks from the manifest and it should
2239
2265
  * return an array of the tracks to store.
@@ -2292,6 +2318,7 @@ shaka.extern.TextDisplayerConfiguration;
2292
2318
  * streaming: shaka.extern.StreamingConfiguration,
2293
2319
  * mediaSource: shaka.extern.MediaSourceConfiguration,
2294
2320
  * abrFactory: shaka.extern.AbrManager.Factory,
2321
+ * adaptationSetCriteriaFactory: shaka.media.AdaptationSetCriteria.Factory,
2295
2322
  * abr: shaka.extern.AbrConfiguration,
2296
2323
  * cmcd: shaka.extern.CmcdConfiguration,
2297
2324
  * cmsd: shaka.extern.CmsdConfiguration,
@@ -2303,14 +2330,14 @@ shaka.extern.TextDisplayerConfiguration;
2303
2330
  * preferredTextLanguage: string,
2304
2331
  * preferredVariantRole: string,
2305
2332
  * preferredTextRole: string,
2306
- * preferredVideoCodecs: !Array.<string>,
2307
- * preferredAudioCodecs: !Array.<string>,
2308
- * preferredTextFormats: !Array.<string>,
2333
+ * preferredVideoCodecs: !Array<string>,
2334
+ * preferredAudioCodecs: !Array<string>,
2335
+ * preferredTextFormats: !Array<string>,
2309
2336
  * preferredAudioChannelCount: number,
2310
2337
  * preferredVideoHdrLevel: string,
2311
2338
  * preferredVideoLayout: string,
2312
2339
  * preferredVideoLabel: string,
2313
- * preferredDecodingAttributes: !Array.<string>,
2340
+ * preferredDecodingAttributes: !Array<string>,
2314
2341
  * preferForcedSubs: boolean,
2315
2342
  * preferSpatialAudio: boolean,
2316
2343
  * restrictions: shaka.extern.Restrictions,
@@ -2337,6 +2364,9 @@ shaka.extern.TextDisplayerConfiguration;
2337
2364
  * Media source configuration and settings.
2338
2365
  * @property {shaka.extern.AbrManager.Factory} abrFactory
2339
2366
  * A factory to construct an abr manager.
2367
+ * @property {shaka.media.AdaptationSetCriteria.Factory
2368
+ * } adaptationSetCriteriaFactory
2369
+ * A factory to construct an adaptation set criteria.
2340
2370
  * @property {shaka.extern.AbrConfiguration} abr
2341
2371
  * ABR configuration and settings.
2342
2372
  * @property {shaka.extern.CmcdConfiguration} cmcd
@@ -2382,15 +2412,15 @@ shaka.extern.TextDisplayerConfiguration;
2382
2412
  * The preferred role to use for text tracks.
2383
2413
  * <br>
2384
2414
  * Defaults to <code>''</code>.
2385
- * @property {!Array.<string>} preferredVideoCodecs
2415
+ * @property {!Array<string>} preferredVideoCodecs
2386
2416
  * The list of preferred video codecs, in order of highest to lowest priority.
2387
2417
  * <br>
2388
2418
  * Defaults to <code>[]</code>.
2389
- * @property {!Array.<string>} preferredAudioCodecs
2419
+ * @property {!Array<string>} preferredAudioCodecs
2390
2420
  * The list of preferred audio codecs, in order of highest to lowest priority.
2391
2421
  * <br>
2392
2422
  * Defaults to <code>[]</code>.
2393
- * @property {!Array.<string>} preferredTextFormats
2423
+ * @property {!Array<string>} preferredTextFormats
2394
2424
  * The list of preferred text formats, in order of highest to lowest priority.
2395
2425
  * <br>
2396
2426
  * Defaults to <code>[]</code>.
@@ -2414,7 +2444,7 @@ shaka.extern.TextDisplayerConfiguration;
2414
2444
  * If the content is predominantly monoscopic you should use 'CH-MONO'.
2415
2445
  * <br>
2416
2446
  * Defaults to <code>''</code>.
2417
- * @property {!Array.<string>} preferredDecodingAttributes
2447
+ * @property {!Array<string>} preferredDecodingAttributes
2418
2448
  * The list of preferred attributes of decodingInfo, in the order of their
2419
2449
  * priorities.
2420
2450
  * <br>
@@ -2484,7 +2514,7 @@ shaka.extern.LanguageRole;
2484
2514
  * positionY: number,
2485
2515
  * startTime: number,
2486
2516
  * duration: number,
2487
- * uris: !Array.<string>,
2517
+ * uris: !Array<string>,
2488
2518
  * width: number,
2489
2519
  * sprite: boolean
2490
2520
  * }}
@@ -2507,7 +2537,7 @@ shaka.extern.LanguageRole;
2507
2537
  * The start time of the thumbnail in the presentation timeline, in seconds.
2508
2538
  * @property {number} duration
2509
2539
  * The duration of the thumbnail, in seconds.
2510
- * @property {!Array.<string>} uris
2540
+ * @property {!Array<string>} uris
2511
2541
  * An array of URIs to attempt. They will be tried in the order they are
2512
2542
  * given.
2513
2543
  * @property {number} width