shaka-player 4.9.13 → 4.10.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 (91) hide show
  1. package/README.md +4 -0
  2. package/dist/controls.css +2 -2
  3. package/dist/controls.css.map +1 -1
  4. package/dist/deps.js +24 -19
  5. package/dist/locales.js +46 -35
  6. package/dist/shaka-player.compiled.d.ts +291 -12
  7. package/dist/shaka-player.compiled.debug.d.ts +291 -12
  8. package/dist/shaka-player.compiled.debug.externs.js +443 -6
  9. package/dist/shaka-player.compiled.debug.js +651 -556
  10. package/dist/shaka-player.compiled.debug.map +4 -4
  11. package/dist/shaka-player.compiled.externs.js +443 -6
  12. package/dist/shaka-player.compiled.js +1325 -1270
  13. package/dist/shaka-player.compiled.map +4 -4
  14. package/dist/shaka-player.ui.d.ts +306 -13
  15. package/dist/shaka-player.ui.debug.d.ts +306 -13
  16. package/dist/shaka-player.ui.debug.externs.js +477 -18
  17. package/dist/shaka-player.ui.debug.js +799 -681
  18. package/dist/shaka-player.ui.debug.map +4 -4
  19. package/dist/shaka-player.ui.externs.js +477 -18
  20. package/dist/shaka-player.ui.js +1600 -1533
  21. package/dist/shaka-player.ui.map +4 -4
  22. package/externs/shaka/ads.js +21 -1
  23. package/externs/shaka/manifest.js +20 -1
  24. package/externs/shaka/manifest_parser.js +18 -1
  25. package/externs/shaka/player.js +164 -50
  26. package/lib/ads/ad_manager.js +225 -10
  27. package/lib/ads/ad_utils.js +323 -0
  28. package/lib/ads/ads_stats.js +24 -0
  29. package/lib/ads/client_side_ad_manager.js +42 -34
  30. package/lib/ads/interstitial_ad.js +292 -0
  31. package/lib/ads/interstitial_ad_manager.js +772 -0
  32. package/lib/ads/media_tailor_ad_manager.js +19 -22
  33. package/lib/ads/server_side_ad_manager.js +12 -15
  34. package/lib/cast/cast_utils.js +1 -0
  35. package/lib/cea/cea_utils.js +12 -0
  36. package/lib/cea/mp4_cea_parser.js +17 -0
  37. package/lib/dash/dash_parser.js +81 -28
  38. package/lib/dash/segment_base.js +3 -0
  39. package/lib/hls/hls_parser.js +429 -121
  40. package/lib/hls/manifest_text_parser.js +1 -0
  41. package/lib/media/adaptation_set_criteria.js +31 -1
  42. package/lib/media/drm_engine.js +16 -2
  43. package/lib/media/manifest_filterer.js +7 -5
  44. package/lib/media/preload_manager.js +8 -10
  45. package/lib/media/presentation_timeline.js +37 -5
  46. package/lib/media/quality_observer.js +68 -2
  47. package/lib/media/segment_reference.js +1 -1
  48. package/lib/media/segment_utils.js +33 -1
  49. package/lib/media/streaming_engine.js +120 -43
  50. package/lib/mss/mss_parser.js +13 -2
  51. package/lib/net/networking_engine.js +1 -0
  52. package/lib/offline/manifest_converter.js +3 -0
  53. package/lib/offline/offline_manifest_parser.js +5 -0
  54. package/lib/offline/storage.js +2 -0
  55. package/lib/player.js +498 -165
  56. package/lib/util/fake_event.js +1 -0
  57. package/lib/util/manifest_parser_utils.js +9 -2
  58. package/lib/util/mp4_box_parsers.js +32 -0
  59. package/lib/util/player_configuration.js +21 -9
  60. package/lib/util/stats.js +43 -0
  61. package/package.json +1 -1
  62. package/shaka-player.uncompiled.js +2 -0
  63. package/ui/ad_counter.js +3 -3
  64. package/ui/ad_position.js +3 -3
  65. package/ui/ad_statistics_button.js +237 -0
  66. package/ui/audio_language_selection.js +8 -4
  67. package/ui/controls.js +6 -3
  68. package/ui/element.js +3 -3
  69. package/ui/enums.js +1 -0
  70. package/ui/externs/ui.js +3 -0
  71. package/ui/language_utils.js +48 -3
  72. package/ui/less/containers.less +32 -0
  73. package/ui/less/thumbnails.less +13 -0
  74. package/ui/locales/en.json +2 -0
  75. package/ui/locales/es-419.json +2 -0
  76. package/ui/locales/es.json +3 -0
  77. package/ui/locales/fr.json +1 -0
  78. package/ui/locales/pl.json +1 -0
  79. package/ui/locales/pt-BR.json +1 -0
  80. package/ui/locales/pt-PT.json +1 -0
  81. package/ui/locales/source.json +8 -0
  82. package/ui/mute_button.js +4 -4
  83. package/ui/overflow_menu.js +3 -3
  84. package/ui/play_button.js +5 -7
  85. package/ui/presentation_time.js +3 -3
  86. package/ui/save_video_frame_button.js +196 -0
  87. package/ui/seek_bar.js +75 -20
  88. package/ui/skip_ad_button.js +4 -4
  89. package/ui/statistics_button.js +14 -2
  90. package/ui/ui.js +15 -0
  91. package/ui/volume_bar.js +4 -4
@@ -12,9 +12,11 @@
12
12
  /**
13
13
  * @typedef {{
14
14
  * loadTimes: !Array.<number>,
15
+ * averageLoadTime: number,
15
16
  * started: number,
16
17
  * playedCompletely: number,
17
- * skipped: number
18
+ * skipped: number,
19
+ * errors: number
18
20
  * }}
19
21
  *
20
22
  * @description
@@ -22,12 +24,16 @@
22
24
  *
23
25
  * @property {number} loadTimes
24
26
  * The set of amounts of time it took to get the final manifest.
27
+ * @property {number} averageLoadTime
28
+ * The average time it took to get the final manifest.
25
29
  * @property {number} started
26
30
  * The number of ads started.
27
31
  * @property {number} playedCompletely
28
32
  * The number of ads played completely.
29
33
  * @property {number} skipped
30
34
  * The number of ads skipped.
35
+ * @property {number} errors
36
+ * The number of ads with errors.
31
37
  * @exportDoc
32
38
  */
33
39
  shaka.extern.AdsStats;
@@ -77,6 +83,13 @@ shaka.extern.IAdManager = class extends EventTarget {
77
83
 
78
84
  onAssetUnload() {}
79
85
 
86
+ /**
87
+ * @param {?HTMLElement} adContainer
88
+ * @param {!shaka.Player} basePlayer
89
+ * @param {!HTMLMediaElement} baseVideo
90
+ */
91
+ initInterstitial(adContainer, basePlayer, baseVideo) {}
92
+
80
93
  /**
81
94
  * @param {!HTMLElement} adContainer
82
95
  * @param {!HTMLMediaElement} video
@@ -170,6 +183,13 @@ shaka.extern.IAdManager = class extends EventTarget {
170
183
  * @param {shaka.extern.MetadataFrame} value
171
184
  */
172
185
  onCueMetadataChange(value) {}
186
+
187
+ /**
188
+ * @param {!shaka.Player} basePlayer
189
+ * @param {!HTMLMediaElement} baseVideo
190
+ * @param {shaka.extern.Interstitial} interstitial
191
+ */
192
+ onInterstitialMetadata(basePlayer, baseVideo, interstitial) {}
173
193
  };
174
194
 
175
195
 
@@ -22,7 +22,10 @@
22
22
  * ignoreManifestTimestampsInSegmentsMode: boolean,
23
23
  * type: string,
24
24
  * serviceDescription: ?shaka.extern.ServiceDescription,
25
- * nextUrl: ?string
25
+ * nextUrl: ?string,
26
+ * periodCount: number,
27
+ * gapCount: number,
28
+ * isLowLatency: boolean
26
29
  * }}
27
30
  *
28
31
  * @description
@@ -96,6 +99,18 @@
96
99
  * decrease latency.
97
100
  * @property {?string} nextUrl
98
101
  * The next url to play.
102
+ * @property {number} periodCount
103
+ * Number of periods found in a manifest. For DASH, it represents number of
104
+ * Period elements in a manifest. If streaming protocol does not implement
105
+ * period-like structure, it should be set to 1.
106
+ * <i>Defaults to <code>1</code>.</i>
107
+ * @property {number} gapCount
108
+ * The amount of gaps found in a manifest. For DASH, it represents number of
109
+ * discontinuities found between periods. For HLS, it is a number of EXT-X-GAP
110
+ * and GAP=YES occurrences. For MSS, it is always set to 0.
111
+ * If in src= mode or nothing is loaded, NaN.
112
+ * @property {bolean} isLowLatency
113
+ * If true, the manifest is Low Latency.
99
114
  *
100
115
  * @exportDoc
101
116
  */
@@ -188,6 +203,7 @@ shaka.extern.ServiceDescription;
188
203
  * @typedef {{
189
204
  * keySystem: string,
190
205
  * encryptionScheme: string,
206
+ * keySystemUris: (Set.<string>|undefined),
191
207
  * licenseServerUri: string,
192
208
  * distinctiveIdentifierRequired: boolean,
193
209
  * persistentStateRequired: boolean,
@@ -209,6 +225,9 @@ shaka.extern.ServiceDescription;
209
225
  * @property {string} encryptionScheme
210
226
  * <i>Required.</i> <br>
211
227
  * The encryption scheme, e.g., "cenc", "cbcs", "cbcs-1-9".
228
+ * @property {(Set.<string>|undefined)} keySystemUris
229
+ * <i>Optional.</i> <br>
230
+ * The key system uri, e.g., "skd://" for fairplay.
212
231
  * @property {string} licenseServerUri
213
232
  * <i>Filled in by DRM config if missing.</i> <br>
214
233
  * The license server URI.
@@ -111,6 +111,14 @@ shaka.extern.ManifestParser = class {
111
111
  * @exportDoc
112
112
  */
113
113
  banLocation(uri) {}
114
+
115
+ /**
116
+ * Set media element.
117
+ *
118
+ * @param {HTMLMediaElement} mediaElement
119
+ * @exportDoc
120
+ */
121
+ setMediaElement(mediaElement) {}
114
122
  };
115
123
 
116
124
 
@@ -128,7 +136,10 @@ shaka.extern.ManifestParser = class {
128
136
  * updateDuration: function(),
129
137
  * newDrmInfo: function(shaka.extern.Stream),
130
138
  * onManifestUpdated: function(),
131
- * getBandwidthEstimate: function():number
139
+ * getBandwidthEstimate: function():number,
140
+ * onMetadata: function(string, number, ?number,
141
+ * !Array.<shaka.extern.MetadataFrame>),
142
+ * disableStream: function(!shaka.extern.Stream)
132
143
  * }}
133
144
  *
134
145
  * @description
@@ -167,6 +178,12 @@ shaka.extern.ManifestParser = class {
167
178
  * Should be called when the manifest is updated.
168
179
  * @property {function():number} getBandwidthEstimate
169
180
  * Get the estimated bandwidth in bits per second.
181
+ * @property {function(string, number, ?number,
182
+ * !Array.<shaka.extern.MetadataFrame>)} onMetadata
183
+ * Called when an metadata is found in the manifest.
184
+ * @property {function(!shaka.extern.Stream)} disableStream
185
+ * Called to temporarily disable a stream i.e. disabling all variant
186
+ * containing said stream.
170
187
  * @exportDoc
171
188
  */
172
189
  shaka.extern.ManifestParser.PlayerInterface;
@@ -85,8 +85,13 @@ shaka.extern.StateChange;
85
85
  * gapsJumped: number,
86
86
  * stallsDetected: number,
87
87
  *
88
+ * manifestSizeBytes: number,
88
89
  * bytesDownloaded: number,
89
90
  *
91
+ * nonFatalErrorCount: number,
92
+ * manifestPeriodCount: number,
93
+ * manifestGapCount: number,
94
+ *
90
95
  * switchHistory: !Array.<shaka.extern.TrackChoice>,
91
96
  * stateHistory: !Array.<shaka.extern.StateChange>
92
97
  * }}
@@ -163,9 +168,25 @@ shaka.extern.StateChange;
163
168
  * The presentation's max segment duration in seconds. If nothing is loaded,
164
169
  * NaN.
165
170
  *
171
+ * @property {number} manifestSizeBytes
172
+ * Size of the manifest payload. For DASH & MSS it will match the latest
173
+ * downloaded manifest. For HLS, it will match the lastly downloaded playlist.
174
+ * If nothing is loaded or in src= mode, NaN.
166
175
  * @property {number} bytesDownloaded
167
176
  * The bytes downloaded during the playback. If nothing is loaded, NaN.
168
177
  *
178
+ * @property {number} nonFatalErrorCount
179
+ * The amount of non fatal errors that occurred. If nothing is loaded, NaN.
180
+ * @property {number} manifestPeriodCount
181
+ * The amount of periods occurred in the manifest. For DASH it represents
182
+ * number of Period elements in a manifest. For HLS & MSS it is always 1.
183
+ * In src= mode or if nothing is loaded, NaN.
184
+ * @property {number} manifestGapCount
185
+ * The amount of gaps found in a manifest. For DASH, it represents number of
186
+ * discontinuities found between periods. For HLS, it is a number of EXT-X-GAP
187
+ * and GAP=YES occurrences. For MSS, it is always set to 0.
188
+ * If in src= mode or nothing is loaded, NaN.
189
+ *
169
190
  * @property {!Array.<shaka.extern.TrackChoice>} switchHistory
170
191
  * A history of the stream changes.
171
192
  * @property {!Array.<shaka.extern.StateChange>} stateHistory
@@ -563,6 +584,21 @@ shaka.extern.MetadataRawFrame;
563
584
  shaka.extern.MetadataFrame;
564
585
 
565
586
 
587
+ /**
588
+ * @typedef {{
589
+ * startTime: number,
590
+ * endTime: ?number,
591
+ * values: !Array.<shaka.extern.MetadataFrame>
592
+ * }}
593
+ *
594
+ * @property {number} startTime
595
+ * @property {?number} endTime
596
+ * @property {!Array.<shaka.extern.MetadataFrame>} values
597
+ * @exportDoc
598
+ */
599
+ shaka.extern.Interstitial;
600
+
601
+
566
602
  /**
567
603
  * @typedef {{
568
604
  * schemeIdUri: string,
@@ -607,6 +643,9 @@ shaka.extern.TimelineRegionInfo;
607
643
  * frameRate: ?number,
608
644
  * height: ?number,
609
645
  * mimeType: ?string,
646
+ * label: ?string,
647
+ * roles: ?Array.<string>,
648
+ * language: ?string,
610
649
  * channelsCount: ?number,
611
650
  * pixelAspectRatio: ?string,
612
651
  * width: ?number
@@ -630,6 +669,12 @@ shaka.extern.TimelineRegionInfo;
630
669
  * The video height in pixels.
631
670
  * @property {string} mimeType
632
671
  * The MIME type.
672
+ * @property {?string} label
673
+ * The stream's label, when available.
674
+ * @property {?Array.<string>} roles
675
+ * The stream's role, when available.
676
+ * @property {?string} language
677
+ * The stream's language, when available.
633
678
  * @property {?number} channelsCount
634
679
  * The number of audio channels, or null if unknown.
635
680
  * @property {?string} pixelAspectRatio
@@ -1071,9 +1116,9 @@ shaka.extern.DashManifestConfiguration;
1071
1116
  * @property {boolean} ignoreManifestProgramDateTime
1072
1117
  * If <code>true</code>, the HLS parser will ignore the
1073
1118
  * <code>EXT-X-PROGRAM-DATE-TIME</code> tags in the manifest and use media
1074
- * sequence numbers instead.
1075
- * Meant for streams where <code>EXT-X-PROGRAM-DATE-TIME</code> is incorrect
1076
- * or malformed.
1119
+ * sequence numbers instead. It also causes EXT-X-DATERANGE tags to be
1120
+ * ignored. Meant for streams where <code>EXT-X-PROGRAM-DATE-TIME</code> is
1121
+ * incorrect or malformed.
1077
1122
  * <i>Defaults to <code>false</code>.</i>
1078
1123
  * @property {!Array.<string>} ignoreManifestProgramDateTimeForTypes
1079
1124
  * An array of strings representing types for which
@@ -1178,7 +1223,8 @@ shaka.extern.MssManifestConfiguration;
1178
1223
  * dash: shaka.extern.DashManifestConfiguration,
1179
1224
  * hls: shaka.extern.HlsManifestConfiguration,
1180
1225
  * mss: shaka.extern.MssManifestConfiguration,
1181
- * raiseFatalErrorOnManifestUpdateRequestFailure: boolean
1226
+ * raiseFatalErrorOnManifestUpdateRequestFailure: boolean,
1227
+ * continueLoadingWhenPaused: boolean
1182
1228
  * }}
1183
1229
  *
1184
1230
  * @property {shaka.extern.RetryParameters} retryParameters
@@ -1221,11 +1267,109 @@ shaka.extern.MssManifestConfiguration;
1221
1267
  * @property {boolean} raiseFatalErrorOnManifestUpdateRequestFailure
1222
1268
  * If true, manifest update request failures will cause a fatal error.
1223
1269
  * Defaults to <code>false</code> if not provided.
1224
- *
1270
+ * @property {boolean} continueLoadingWhenPaused
1271
+ * If true, live manifest will be updated with the regular intervals even if
1272
+ * the video is paused.
1273
+ * Defaults to <code>true</code> if not provided.
1225
1274
  * @exportDoc
1226
1275
  */
1227
1276
  shaka.extern.ManifestConfiguration;
1228
1277
 
1278
+ /**
1279
+ * @typedef {{
1280
+ * enabled: boolean,
1281
+ * stabilityThreshold: number,
1282
+ * rebufferIncrement: number,
1283
+ * maxAttempts: number,
1284
+ * maxLatency: number,
1285
+ * minLatency: number
1286
+ * }}
1287
+ *
1288
+ * @description
1289
+ * Dynamic Target Latency configuration options.
1290
+ *
1291
+ * @property {boolean} enabled
1292
+ * If <code>true</code>, dynamic latency for live sync is enabled. When
1293
+ * enabled, the target latency will be adjusted closer to the min latency
1294
+ * when playback is stable (see <code>stabilityThreshold</code>). If
1295
+ * there are rebuffering events, then the target latency will move towards
1296
+ * the max latency value in increments of <code>rebufferIncrement</code>.
1297
+ * Defaults to <code>false</code>.
1298
+ * @property {number} rebufferIncrement
1299
+ * The value, in seconds, to increment the target latency towards
1300
+ * <code>maxLatency</code> after a rebuffering event. Defaults to
1301
+ * <code>0.5</code>.
1302
+ * @property {number} stabilityThreshold
1303
+ * Number of seconds after a rebuffering before we are considered stable and
1304
+ * will move the target latency towards <code>minLatency</code>
1305
+ * value. Defaults to <code>60</code>
1306
+ * @property {number} maxAttempts
1307
+ * Number of times that dynamic target latency will back off to
1308
+ * <code>maxLatency</code> and attempt to adjust it closer to
1309
+ * <code>minLatency</code>. Defaults to <code>10</code>
1310
+ * @property {number} maxLatency
1311
+ * The latency to use when a rebuffering event causes us to back off from
1312
+ * the live edge. Defaults to <code>4</code>
1313
+ * @property {number} minLatency
1314
+ * The latency to work towards when the network is stable and we want to get
1315
+ * closer to the live edge. Defaults to <code>1</code>
1316
+ * @exportDoc
1317
+ */
1318
+ shaka.extern.DynamicTargetLatencyConfiguration;
1319
+
1320
+
1321
+ /**
1322
+ * @typedef {{
1323
+ * enabled: boolean,
1324
+ * targetLatency: number,
1325
+ * targetLatencyTolerance: number,
1326
+ * maxPlaybackRate: number,
1327
+ * minPlaybackRate: number,
1328
+ * panicMode: boolean,
1329
+ * panicThreshold: number,
1330
+ * dynamicTargetLatency: shaka.extern.DynamicTargetLatencyConfiguration
1331
+ * }}
1332
+ *
1333
+ * @description
1334
+ * LiveSync configuration options.
1335
+ *
1336
+ * @property {boolean} enabled
1337
+ * Enable the live stream sync against the live edge by changing the playback
1338
+ * rate. Defaults to <code>false</code>.
1339
+ * Note: on some SmartTVs, if this is activated, it may not work or the sound
1340
+ * may be lost when activated.
1341
+ * @property {number} targetLatency
1342
+ * Preferred latency, in seconds. Effective only if liveSync is true.
1343
+ * Defaults to <code>0.5</code>.
1344
+ * @property {number} targetLatencyTolerance
1345
+ * Latency tolerance for target latency, in seconds. Effective only if
1346
+ * liveSync is enabled. Defaults to <code>0.5</code>.
1347
+ * @property {number} maxPlaybackRate
1348
+ * Max playback rate used for latency chasing. It is recommended to use a
1349
+ * value between 1 and 2. Effective only if liveSync is enabled. Defaults to
1350
+ * <code>1.1</code>.
1351
+ * @property {number} minPlaybackRate
1352
+ * Minimum playback rate used for latency chasing. It is recommended to use a
1353
+ * value between 0 and 1. Effective only if liveSync is enabled. Defaults to
1354
+ * <code>0.95</code>.
1355
+ * @property {boolean} panicMode
1356
+ * If <code>true</code>, panic mode for live sync is enabled. When enabled,
1357
+ * will set the playback rate to the <code>minPlaybackRate</code>
1358
+ * until playback has continued past a rebuffering for longer than the
1359
+ * <code>panicThreshold</code>. Defaults to <code>false</code>.
1360
+ * @property {number} panicThreshold
1361
+ * Number of seconds that playback stays in panic mode after a rebuffering.
1362
+ * Defaults to <code>60</code>
1363
+ * @property {shaka.extern.DynamicTargetLatencyConfiguration}
1364
+ * dynamicTargetLatency
1365
+ *
1366
+ * The dynamic target latency config for dynamically adjusting the target
1367
+ * latency to be closer to edge when network conditions are good and to back
1368
+ * off when network conditions are bad.
1369
+ * @exportDoc
1370
+ */
1371
+ shaka.extern.LiveSyncConfiguration;
1372
+
1229
1373
 
1230
1374
  /**
1231
1375
  * @typedef {{
@@ -1245,7 +1389,6 @@ shaka.extern.ManifestConfiguration;
1245
1389
  * stallEnabled: boolean,
1246
1390
  * stallThreshold: number,
1247
1391
  * stallSkip: number,
1248
- * useNativeHlsOnSafari: boolean,
1249
1392
  * useNativeHlsForFairPlay: boolean,
1250
1393
  * inaccurateManifestTolerance: number,
1251
1394
  * lowLatencyMode: boolean,
@@ -1263,14 +1406,7 @@ shaka.extern.ManifestConfiguration;
1263
1406
  * disableAudioPrefetch: boolean,
1264
1407
  * disableTextPrefetch: boolean,
1265
1408
  * disableVideoPrefetch: boolean,
1266
- * liveSync: boolean,
1267
- * liveSyncTargetLatencyTolerance: number,
1268
- * liveSyncMaxLatency: number,
1269
- * liveSyncPlaybackRate: number,
1270
- * liveSyncMinLatency: number,
1271
- * liveSyncMinPlaybackRate: number,
1272
- * liveSyncPanicMode: boolean,
1273
- * liveSyncPanicThreshold: number,
1409
+ * liveSync: shaka.extern.LiveSyncConfiguration,
1274
1410
  * allowMediaSourceRecoveries: boolean,
1275
1411
  * minTimeBetweenRecoveries: number,
1276
1412
  * vodDynamicPlaybackRate: boolean,
@@ -1279,7 +1415,9 @@ shaka.extern.ManifestConfiguration;
1279
1415
  * infiniteLiveStreamDuration: boolean,
1280
1416
  * preloadNextUrlWindow: number,
1281
1417
  * loadTimeout: number,
1282
- * clearDecodingCache: boolean
1418
+ * clearDecodingCache: boolean,
1419
+ * dontChooseCodecs: boolean,
1420
+ * shouldFixTimestampOffset: boolean
1283
1421
  * }}
1284
1422
  *
1285
1423
  * @description
@@ -1352,11 +1490,6 @@ shaka.extern.ManifestConfiguration;
1352
1490
  * been detected. If 0, the player will pause and immediately play instead of
1353
1491
  * seeking. A value of 0 is recommended and provided as default on TV
1354
1492
  * platforms (WebOS, Tizen, Chromecast, etc).
1355
- * @property {boolean} useNativeHlsOnSafari
1356
- * Desktop Safari has both MediaSource and their native HLS implementation.
1357
- * Depending on the application's needs, it may prefer one over the other.
1358
- * Only applies to clear streams
1359
- * Defaults to <code>true</code>.
1360
1493
  * @property {boolean} useNativeHlsForFairPlay
1361
1494
  * Desktop Safari has both MediaSource and their native HLS implementation.
1362
1495
  * Depending on the application's needs, it may prefer one over the other.
@@ -1424,36 +1557,8 @@ shaka.extern.ManifestConfiguration;
1424
1557
  * If set and prefetch limit is defined, it will prevent from prefetching data
1425
1558
  * for video.
1426
1559
  * Defaults to <code>false</code>.
1427
- * @property {boolean} liveSync
1428
- * Enable the live stream sync against the live edge by changing the playback
1429
- * rate. Defaults to <code>false</code>.
1430
- * Note: on some SmartTVs, if this is activated, it may not work or the sound
1431
- * may be lost when activated.
1432
- * @property {number} liveSyncTargetLatencyTolerance
1433
- * Latency tolerance for target latency, in seconds. Effective only if
1434
- * liveSync is true. Defaults to <code>0.5</code>.
1435
- * @property {number} liveSyncMaxLatency
1436
- * Maximum acceptable latency, in seconds. Effective only if liveSync is
1437
- * true. Defaults to <code>1</code>.
1438
- * @property {number} liveSyncPlaybackRate
1439
- * Playback rate used for latency chasing. It is recommended to use a value
1440
- * between 1 and 2. Effective only if liveSync is true. Defaults to
1441
- * <code>1.1</code>.
1442
- * @property {number} liveSyncMinLatency
1443
- * Minimum acceptable latency, in seconds. Effective only if liveSync is
1444
- * true. Defaults to <code>0</code>.
1445
- * @property {number} liveSyncMinPlaybackRate
1446
- * Minimum playback rate used for latency chasing. It is recommended to use a
1447
- * value between 0 and 1. Effective only if liveSync is true. Defaults to
1448
- * <code>0.95</code>.
1449
- * @property {boolean} liveSyncPanicMode
1450
- * If <code>true</code>, panic mode for live sync is enabled. When enabled,
1451
- * will set the playback rate to the <code>liveSyncMinPlaybackRate</code>
1452
- * until playback has continued past a rebuffering for longer than the
1453
- * <code>liveSyncPanicThreshold</code>. Defaults to <code>false</code>.
1454
- * @property {number} liveSyncPanicThreshold
1455
- * Number of seconds that playback stays in panic mode after a rebuffering.
1456
- * Defaults to <code>60</code>
1560
+ * @property {shaka.extern.LiveSyncConfiguration} liveSync
1561
+ * The live sync configuration for keeping near the live edge.
1457
1562
  * @property {boolean} allowMediaSourceRecoveries
1458
1563
  * Indicate if we should recover from VIDEO_ERROR resetting Media Source.
1459
1564
  * Defaults to <code>true</code>.
@@ -1492,6 +1597,15 @@ shaka.extern.ManifestConfiguration;
1492
1597
  * playbacks on some platforms.
1493
1598
  * Defaults to <code>true</code> on PlayStation devices and to
1494
1599
  * <code>false</code> on other devices.
1600
+ * @property {boolean} dontChooseCodecs
1601
+ * If true, we don't choose codecs in the player, and keep all the variants.
1602
+ * Defaults to <code>false</code>.
1603
+ * @property {boolean} shouldFixTimestampOffset
1604
+ * If true, we will try to fix problems when the timestampOffset is less than
1605
+ * the baseMediaDecodeTime. This only works when the manifest is DASH with
1606
+ * MP4 segments.
1607
+ * Defaults to <code>false</code> except on Tizen, WebOS whose default value
1608
+ * is <code>true</code>.
1495
1609
  * @exportDoc
1496
1610
  */
1497
1611
  shaka.extern.StreamingConfiguration;