bitmovin-player-react-native 1.2.0 → 1.4.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 (115) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/com/bitmovin/player/reactnative/PlayerModule.kt +47 -0
  4. package/android/src/main/java/com/bitmovin/player/reactnative/converter/JsonConverter.kt +32 -3
  5. package/build/adaptationConfig.d.ts +1 -1
  6. package/build/adaptationConfig.js.map +1 -1
  7. package/build/advertising.d.ts +54 -1
  8. package/build/advertising.d.ts.map +1 -1
  9. package/build/advertising.js.map +1 -1
  10. package/build/audioSession.d.ts +3 -3
  11. package/build/audioSession.js +2 -2
  12. package/build/audioSession.js.map +1 -1
  13. package/build/bitmovinCastManager.d.ts +3 -3
  14. package/build/bitmovinCastManager.js +2 -2
  15. package/build/bitmovinCastManager.js.map +1 -1
  16. package/build/bufferConfig.d.ts +2 -2
  17. package/build/bufferConfig.js.map +1 -1
  18. package/build/components/PlayerView/events.d.ts +16 -16
  19. package/build/components/PlayerView/events.js.map +1 -1
  20. package/build/components/PlayerView/nativeEvents.d.ts +16 -16
  21. package/build/components/PlayerView/nativeEvents.js.map +1 -1
  22. package/build/components/PlayerView/pictureInPictureConfig.d.ts +1 -1
  23. package/build/components/PlayerView/pictureInPictureConfig.js.map +1 -1
  24. package/build/components/PlayerView/playerViewConfig.d.ts +2 -2
  25. package/build/components/PlayerView/playerViewConfig.js.map +1 -1
  26. package/build/decoder/decoderConfig.d.ts +2 -2
  27. package/build/decoder/decoderConfig.js.map +1 -1
  28. package/build/drm/index.d.ts +2 -2
  29. package/build/drm/index.js.map +1 -1
  30. package/build/drm/widevineConfig.d.ts +5 -5
  31. package/build/drm/widevineConfig.js.map +1 -1
  32. package/build/events.d.ts +10 -10
  33. package/build/events.js.map +1 -1
  34. package/build/media.d.ts +4 -0
  35. package/build/media.d.ts.map +1 -1
  36. package/build/media.js.map +1 -1
  37. package/build/modules/PlayerModule.d.ts +12 -1
  38. package/build/modules/PlayerModule.d.ts.map +1 -1
  39. package/build/modules/PlayerModule.js.map +1 -1
  40. package/build/offline/offlineContentConfig.d.ts +1 -1
  41. package/build/offline/offlineContentConfig.js.map +1 -1
  42. package/build/offline/offlineContentManager.d.ts +2 -2
  43. package/build/offline/offlineContentManager.js +2 -2
  44. package/build/offline/offlineContentManager.js.map +1 -1
  45. package/build/offline/offlineContentManagerListener.d.ts +13 -13
  46. package/build/offline/offlineContentManagerListener.js +1 -1
  47. package/build/offline/offlineContentManagerListener.js.map +1 -1
  48. package/build/offline/offlineContentOptions.d.ts +2 -2
  49. package/build/offline/offlineContentOptions.js.map +1 -1
  50. package/build/offline/offlineDownloadRequest.d.ts +1 -1
  51. package/build/offline/offlineDownloadRequest.js.map +1 -1
  52. package/build/offline/offlineSourceOptions.d.ts +2 -2
  53. package/build/offline/offlineSourceOptions.js.map +1 -1
  54. package/build/offline/offlineState.d.ts +1 -1
  55. package/build/offline/offlineState.js +1 -1
  56. package/build/offline/offlineState.js.map +1 -1
  57. package/build/playbackConfig.d.ts +1 -1
  58. package/build/playbackConfig.js.map +1 -1
  59. package/build/player.d.ts +13 -11
  60. package/build/player.d.ts.map +1 -1
  61. package/build/player.js +42 -11
  62. package/build/player.js.map +1 -1
  63. package/build/source.d.ts +2 -2
  64. package/build/source.js +1 -1
  65. package/build/source.js.map +1 -1
  66. package/build/styleConfig.d.ts +5 -5
  67. package/build/styleConfig.js +1 -1
  68. package/build/styleConfig.js.map +1 -1
  69. package/build/subtitleFormat.d.ts +5 -5
  70. package/build/subtitleFormat.js +5 -5
  71. package/build/subtitleFormat.js.map +1 -1
  72. package/build/subtitleTrack.d.ts +1 -1
  73. package/build/subtitleTrack.js.map +1 -1
  74. package/build/tweaksConfig.d.ts +15 -15
  75. package/build/tweaksConfig.js.map +1 -1
  76. package/ios/FullscreenHandlerModule.swift +26 -3
  77. package/ios/LockedBox.swift +6 -0
  78. package/ios/PlayerModule.swift +40 -0
  79. package/ios/RCTConvert+BitmovinPlayer.swift +41 -0
  80. package/ios/RNBitmovinPlayer.podspec +1 -1
  81. package/package.json +1 -1
  82. package/plugin/build/withBitmovinConfig.js +8 -2
  83. package/plugin/src/withAppGradleDependencies.ts +24 -21
  84. package/plugin/src/withBitmovinAndroidConfig.ts +4 -1
  85. package/plugin/src/withBitmovinConfig.ts +12 -3
  86. package/plugin/src/withBitmovinIosConfig.ts +4 -1
  87. package/src/adaptationConfig.ts +1 -1
  88. package/src/advertising.ts +56 -1
  89. package/src/audioSession.ts +3 -3
  90. package/src/bitmovinCastManager.ts +3 -3
  91. package/src/bufferConfig.ts +2 -2
  92. package/src/components/PlayerView/events.ts +16 -16
  93. package/src/components/PlayerView/nativeEvents.ts +16 -16
  94. package/src/components/PlayerView/pictureInPictureConfig.ts +1 -1
  95. package/src/components/PlayerView/playerViewConfig.ts +2 -2
  96. package/src/decoder/decoderConfig.ts +2 -2
  97. package/src/drm/index.ts +2 -2
  98. package/src/drm/widevineConfig.ts +5 -5
  99. package/src/events.ts +10 -10
  100. package/src/media.ts +4 -0
  101. package/src/modules/PlayerModule.ts +18 -2
  102. package/src/offline/offlineContentConfig.ts +1 -1
  103. package/src/offline/offlineContentManager.ts +2 -2
  104. package/src/offline/offlineContentManagerListener.ts +13 -13
  105. package/src/offline/offlineContentOptions.ts +2 -2
  106. package/src/offline/offlineDownloadRequest.ts +1 -1
  107. package/src/offline/offlineSourceOptions.ts +2 -2
  108. package/src/offline/offlineState.ts +1 -1
  109. package/src/playbackConfig.ts +1 -1
  110. package/src/player.ts +47 -12
  111. package/src/source.ts +2 -2
  112. package/src/styleConfig.ts +5 -5
  113. package/src/subtitleFormat.ts +5 -5
  114. package/src/subtitleTrack.ts +1 -1
  115. package/src/tweaksConfig.ts +15 -15
@@ -3,7 +3,7 @@ import { OfflineState } from './offlineState';
3
3
 
4
4
  /**
5
5
  * Enum to hold the `eventType` on the `BitmovinNativeOfflineEventData`
6
- * @remarks Platform: Android, iOS
6
+ * @platform Android, iOS
7
7
  */
8
8
  export enum OfflineEventType {
9
9
  onCompleted = 'onCompleted',
@@ -19,7 +19,7 @@ export enum OfflineEventType {
19
19
 
20
20
  /**
21
21
  * The base interface for all offline events.
22
- * @remarks Platform: Android, iOS
22
+ * @platform Android, iOS
23
23
  */
24
24
  export interface OfflineEvent<T extends OfflineEventType> {
25
25
  /**
@@ -42,7 +42,7 @@ export interface OfflineEvent<T extends OfflineEventType> {
42
42
 
43
43
  /**
44
44
  * Emitted when the download process has completed.
45
- * @remarks Platform: Android, iOS
45
+ * @platform Android, iOS
46
46
  */
47
47
  export interface OnCompletedEvent
48
48
  extends OfflineEvent<OfflineEventType.onCompleted> {
@@ -54,7 +54,7 @@ export interface OnCompletedEvent
54
54
 
55
55
  /**
56
56
  * Emitted when an error has occurred.
57
- * @remarks Platform: Android, iOS
57
+ * @platform Android, iOS
58
58
  */
59
59
  export interface OnErrorEvent extends OfflineEvent<OfflineEventType.onError> {
60
60
  /**
@@ -69,7 +69,7 @@ export interface OnErrorEvent extends OfflineEvent<OfflineEventType.onError> {
69
69
 
70
70
  /**
71
71
  * Emitted when there is a progress change for the process call.
72
- * @remarks Platform: Android, iOS
72
+ * @platform Android, iOS
73
73
  */
74
74
  export interface OnProgressEvent
75
75
  extends OfflineEvent<OfflineEventType.onProgress> {
@@ -81,7 +81,7 @@ export interface OnProgressEvent
81
81
 
82
82
  /**
83
83
  * Emitted when the `OfflineContentOptions` is available after a `OfflineContentManager.getOptions` call.
84
- * @remarks Platform: Android, iOS
84
+ * @platform Android, iOS
85
85
  */
86
86
  export interface OnOptionsAvailableEvent
87
87
  extends OfflineEvent<OfflineEventType.onOptionsAvailable> {
@@ -93,39 +93,39 @@ export interface OnOptionsAvailableEvent
93
93
 
94
94
  /**
95
95
  * Emitted when the DRM license was updated.
96
- * @remarks Platform: Android, iOS
96
+ * @platform Android, iOS
97
97
  */
98
98
  export type OnDrmLicenseUpdatedEvent =
99
99
  OfflineEvent<OfflineEventType.onDrmLicenseUpdated>;
100
100
 
101
101
  /**
102
102
  * Emitted when the DRM license has expired.
103
- * @remarks Platform: iOS
103
+ * @platform iOS
104
104
  */
105
105
  export type OnDrmLicenseExpiredEvent =
106
106
  OfflineEvent<OfflineEventType.onDrmLicenseExpired>;
107
107
 
108
108
  /**
109
109
  * Emitted when all active actions have been suspended.
110
- * @remarks Platform: Android, iOS
110
+ * @platform Android, iOS
111
111
  */
112
112
  export type OnSuspendedEvent = OfflineEvent<OfflineEventType.onSuspended>;
113
113
 
114
114
  /**
115
115
  * Emitted when all actions have been resumed.
116
- * @remarks Platform: Android, iOS
116
+ * @platform Android, iOS
117
117
  */
118
118
  export type OnResumedEvent = OfflineEvent<OfflineEventType.onResumed>;
119
119
 
120
120
  /**
121
121
  * Emitted when the download of the media content was canceled by the user and all partially downloaded content has been deleted from disk.
122
- * @remarks Platform: Android, iOS
122
+ * @platform Android, iOS
123
123
  */
124
124
  export type OnCanceledEvent = OfflineEvent<OfflineEventType.onCanceled>;
125
125
 
126
126
  /**
127
127
  * The type aggregation for all possible native offline events received from the `DeviceEventEmitter`
128
- * @remarks Platform: Android, iOS
128
+ * @platform Android, iOS
129
129
  */
130
130
  export type BitmovinNativeOfflineEventData =
131
131
  | OnCompletedEvent
@@ -140,7 +140,7 @@ export type BitmovinNativeOfflineEventData =
140
140
 
141
141
  /**
142
142
  * The listener that can be passed to the `OfflineContentManager` to receive callbacks for different events.
143
- * @remarks Platform: Android, iOS
143
+ * @platform Android, iOS
144
144
  */
145
145
  export interface OfflineContentManagerListener {
146
146
  /**
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Superclass of entries which can be selected to download for offline playback
3
- * @remarks Platform: Android, iOS
3
+ * @platform Android, iOS
4
4
  */
5
5
  export interface OfflineContentOptionEntry {
6
6
  /**
@@ -15,7 +15,7 @@ export interface OfflineContentOptionEntry {
15
15
 
16
16
  /**
17
17
  * Represents the downloadable options provided via the `onOptionsAvailable` callback on `OfflineContentManagerListener`
18
- * @remarks Platform: Android, iOS
18
+ * @platform Android, iOS
19
19
  */
20
20
  export interface OfflineContentOptions {
21
21
  /**
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Represents the configuration to start a download.
3
- * @remarks Platform: Android, iOS
3
+ * @platform Android, iOS
4
4
  */
5
5
  export interface OfflineDownloadRequest {
6
6
  /**
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Object used configure how the native offline managers create and get offline source configurations
3
- * @remarks Platform: Android, iOS
3
+ * @platform Android, iOS
4
4
  */
5
5
  export interface OfflineSourceOptions {
6
6
  /**
7
7
  * Whether or not the player should restrict playback only to audio, video and subtitle tracks which are stored offline on the device. This has to be set to true if the device has no network access.
8
- * @remarks Platform: iOS
8
+ * @platform iOS
9
9
  */
10
10
  restrictedToAssetCache?: boolean;
11
11
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Contains the state an OfflineContentManager can have.
3
- * @remarks Platform: Android, iOS
3
+ * @platform Android, iOS
4
4
  */
5
5
  export enum OfflineState {
6
6
  /**
@@ -83,7 +83,7 @@ export interface PlaybackConfig {
83
83
  /**
84
84
  * Configures decoder behaviour.
85
85
  *
86
- * @remarks Platform: Android
86
+ * @platform Android
87
87
  */
88
88
  decoderConfig?: DecoderConfig;
89
89
  }
package/src/player.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { EventSubscription } from 'expo-modules-core';
1
2
  import { Platform } from 'react-native';
2
3
  import PlayerModule from './modules/PlayerModule';
3
4
  import NativeInstance from './nativeInstance';
@@ -8,7 +9,7 @@ import { OfflineContentManager, OfflineSourceOptions } from './offline';
8
9
  import { Thumbnail } from './thumbnail';
9
10
  import { AnalyticsApi } from './analytics/player';
10
11
  import { PlayerConfig } from './playerConfig';
11
- import { AdItem } from './advertising';
12
+ import { AdItem, ImaSettings } from './advertising';
12
13
  import { BufferApi } from './bufferApi';
13
14
  import { VideoQuality } from './media';
14
15
  import { Network } from './network';
@@ -50,11 +51,13 @@ export class Player extends NativeInstance<PlayerConfig> {
50
51
  private network?: Network;
51
52
 
52
53
  private decoderConfig?: DecoderConfigBridge;
54
+ private onImaBeforeInitializationSubscription?: EventSubscription;
53
55
  /**
54
56
  * Allocates the native `Player` instance and its resources natively.
55
57
  */
56
58
  initialize = async (): Promise<void> => {
57
59
  if (!this.isInitialized) {
60
+ this.ensureImaBeforeInitializationListener();
58
61
  if (this.config?.networkConfig) {
59
62
  this.network = new Network(this.config.networkConfig);
60
63
  await this.network.initialize();
@@ -93,6 +96,8 @@ export class Player extends NativeInstance<PlayerConfig> {
93
96
  this.source?.destroy();
94
97
  this.network?.destroy();
95
98
  this.decoderConfig?.destroy();
99
+ this.onImaBeforeInitializationSubscription?.remove();
100
+ this.onImaBeforeInitializationSubscription = undefined;
96
101
  this.isDestroyed = true;
97
102
  }
98
103
  };
@@ -198,6 +203,36 @@ export class Player extends NativeInstance<PlayerConfig> {
198
203
  PlayerModule.setVolume(this.nativeId, volume);
199
204
  };
200
205
 
206
+ private ensureImaBeforeInitializationListener = () => {
207
+ const callback = this.config?.advertisingConfig?.ima?.beforeInitialization;
208
+ if (!callback) {
209
+ return;
210
+ }
211
+ if (this.onImaBeforeInitializationSubscription) {
212
+ return;
213
+ }
214
+ this.onImaBeforeInitializationSubscription = PlayerModule.addListener(
215
+ 'onImaBeforeInitialization',
216
+ ({ nativeId, id, settings }) => {
217
+ if (nativeId !== this.nativeId) {
218
+ return;
219
+ }
220
+ const cloned: ImaSettings = { ...settings };
221
+ let prepared = cloned;
222
+ try {
223
+ const result = callback(cloned);
224
+ prepared =
225
+ result && typeof result === 'object'
226
+ ? { ...cloned, ...result }
227
+ : cloned;
228
+ } catch {
229
+ prepared = cloned;
230
+ }
231
+ PlayerModule.setPreparedImaSettings(id, prepared);
232
+ }
233
+ );
234
+ };
235
+
201
236
  /**
202
237
  * @returns The player's current volume level.
203
238
  */
@@ -257,7 +292,7 @@ export class Player extends NativeInstance<PlayerConfig> {
257
292
  };
258
293
 
259
294
  /**
260
- * @remarks Only available for iOS devices.
295
+ * @platform iOS
261
296
  * @returns `true` when media is played externally using AirPlay.
262
297
  */
263
298
  isAirPlayActive = async (): Promise<boolean> => {
@@ -271,7 +306,7 @@ export class Player extends NativeInstance<PlayerConfig> {
271
306
  };
272
307
 
273
308
  /**
274
- * @remarks Only available for iOS devices.
309
+ * @platform iOS
275
310
  * @returns `true` when AirPlay is available.
276
311
  */
277
312
  isAirPlayAvailable = async (): Promise<boolean> => {
@@ -336,7 +371,7 @@ export class Player extends NativeInstance<PlayerConfig> {
336
371
  *
337
372
  * @param adItem - Ad to be scheduled for playback.
338
373
  *
339
- * @remarks Platform: iOS, Android
374
+ * @platform iOS, Android
340
375
  */
341
376
  scheduleAd = (adItem: AdItem) => {
342
377
  PlayerModule.scheduleAd(this.nativeId, adItem);
@@ -346,7 +381,7 @@ export class Player extends NativeInstance<PlayerConfig> {
346
381
  * Skips the current ad.
347
382
  * Has no effect if the current ad is not skippable or if no ad is being played back.
348
383
  *
349
- * @remarks Platform: iOS, Android
384
+ * @platform iOS, Android
350
385
  */
351
386
  skipAd = () => {
352
387
  PlayerModule.skipAd(this.nativeId);
@@ -354,7 +389,7 @@ export class Player extends NativeInstance<PlayerConfig> {
354
389
 
355
390
  /**
356
391
  * @returns `true` while an ad is being played back or when main content playback has been paused for ad playback.
357
- * @remarks Platform: iOS, Android
392
+ * @platform iOS, Android
358
393
  */
359
394
  isAd = async (): Promise<boolean> => {
360
395
  return (await PlayerModule.isAd(this.nativeId)) ?? false;
@@ -404,7 +439,7 @@ export class Player extends NativeInstance<PlayerConfig> {
404
439
  * Whether casting to a cast-compatible remote device is available. {@link CastAvailableEvent} signals when
405
440
  * casting becomes available.
406
441
  *
407
- * @remarks Platform: iOS, Android
442
+ * @platform iOS, Android
408
443
  */
409
444
  isCastAvailable = async (): Promise<boolean> => {
410
445
  return (await PlayerModule.isCastAvailable(this.nativeId)) ?? false;
@@ -413,7 +448,7 @@ export class Player extends NativeInstance<PlayerConfig> {
413
448
  /**
414
449
  * Whether video is currently being casted to a remote device and not played locally.
415
450
  *
416
- * @remarks Platform: iOS, Android
451
+ * @platform iOS, Android
417
452
  */
418
453
  isCasting = async (): Promise<boolean> => {
419
454
  return (await PlayerModule.isCasting(this.nativeId)) ?? false;
@@ -423,7 +458,7 @@ export class Player extends NativeInstance<PlayerConfig> {
423
458
  * Initiates casting the current video to a cast-compatible remote device. The user has to choose to which device it
424
459
  * should be sent.
425
460
  *
426
- * @remarks Platform: iOS, Android
461
+ * @platform iOS, Android
427
462
  */
428
463
  castVideo = () => {
429
464
  PlayerModule.castVideo(this.nativeId);
@@ -432,7 +467,7 @@ export class Player extends NativeInstance<PlayerConfig> {
432
467
  /**
433
468
  * Stops casting the current video. Has no effect if {@link Player.isCasting} is `false`.
434
469
  *
435
- * @remarks Platform: iOS, Android
470
+ * @platform iOS, Android
436
471
  */
437
472
  castStop = () => {
438
473
  PlayerModule.castStop(this.nativeId);
@@ -456,7 +491,7 @@ export class Player extends NativeInstance<PlayerConfig> {
456
491
 
457
492
  /**
458
493
  * Sets the video quality.
459
- * @remarks Platform: Android
494
+ * @platform Android
460
495
  *
461
496
  * @param qualityId value obtained from {@link VideoQuality}'s `id` property, which can be obtained via `Player.getAvailableVideoQualities()` to select a specific quality. To use automatic quality selection, 'auto' can be passed here.
462
497
  */
@@ -502,7 +537,7 @@ export class Player extends NativeInstance<PlayerConfig> {
502
537
  * Checks the possibility to play the media at specified playback speed.
503
538
  * @param playbackSpeed - The playback speed to check.
504
539
  * @returns `true` if it's possible to play the media at the specified playback speed, otherwise `false`. On Android it always returns `undefined`.
505
- * @remarks Platform: iOS, tvOS
540
+ * @platform iOS, tvOS
506
541
  */
507
542
  canPlayAtPlaybackSpeed = async (
508
543
  playbackSpeed: number
package/src/source.ts CHANGED
@@ -136,7 +136,7 @@ export interface SourceConfig extends NativeInstanceConfig {
136
136
 
137
137
  /**
138
138
  * The remote control config for a source.
139
- * @remarks Platform: iOS
139
+ * @platform iOS
140
140
  */
141
141
  export interface SourceRemoteControlConfig {
142
142
  /**
@@ -161,7 +161,7 @@ export class Source extends NativeInstance<SourceConfig> {
161
161
  * The remote control config for this source.
162
162
  * This is only supported on iOS.
163
163
  *
164
- * @remarks Platform: iOS
164
+ * @platform iOS
165
165
  */
166
166
  remoteControl: SourceRemoteControlConfig | null = null;
167
167
  /**
@@ -26,7 +26,7 @@ export interface StyleConfig {
26
26
  * },
27
27
  * });
28
28
  * ```
29
- * @remarks Platform: iOS, tvOS
29
+ * @platform iOS, tvOS
30
30
  */
31
31
  userInterfaceType?: UserInterfaceType;
32
32
  /**
@@ -39,7 +39,7 @@ export interface StyleConfig {
39
39
  * },
40
40
  * });
41
41
  * ```
42
- * @remarks Platform: iOS, Android
42
+ * @platform iOS, Android
43
43
  */
44
44
  playerUiCss?: string;
45
45
  /**
@@ -52,7 +52,7 @@ export interface StyleConfig {
52
52
  * },
53
53
  * });
54
54
  * ```
55
- * @remarks Platform: iOS, Android
55
+ * @platform iOS, Android
56
56
  */
57
57
  supplementalPlayerUiCss?: string;
58
58
  /**
@@ -65,7 +65,7 @@ export interface StyleConfig {
65
65
  * },
66
66
  * });
67
67
  * ```
68
- * @remarks Platform: iOS, Android
68
+ * @platform iOS, Android
69
69
  */
70
70
  playerUiJs?: string;
71
71
  /**
@@ -111,7 +111,7 @@ export enum UserInterfaceType {
111
111
  Bitmovin = 'Bitmovin',
112
112
  /**
113
113
  * Indicates that the system UI should be used.
114
- * @remarks Platform: iOS, tvOS
114
+ * @platform iOS, tvOS
115
115
  */
116
116
  System = 'System',
117
117
  /**
@@ -1,26 +1,26 @@
1
1
  /**
2
2
  * Supported subtitle/caption file formats.
3
- * @remarks Platform: Android, iOS, tvOS
3
+ * @platform Android, iOS, tvOS
4
4
  */
5
5
  export enum SubtitleFormat {
6
6
  /**
7
7
  * Closed Captioning (CEA) subtitle format.
8
- * @remarks Platform: Android, iOS, tvOS
8
+ * @platform Android, iOS, tvOS
9
9
  */
10
10
  CEA = 'cea',
11
11
  /**
12
12
  * Timed Text Markup Language (TTML) subtitle format.
13
- * @remarks Platform: Android, iOS, tvOS
13
+ * @platform Android, iOS, tvOS
14
14
  */
15
15
  TTML = 'ttml',
16
16
  /**
17
17
  * Web Video Text Tracks Format (WebVTT) subtitle format.
18
- * @remarks Platform: Android, iOS, tvOS
18
+ * @platform Android, iOS, tvOS
19
19
  */
20
20
  VTT = 'vtt',
21
21
  /**
22
22
  * SubRip (SRT) subtitle format.
23
- * @remarks Platform: Android, iOS, tvOS
23
+ * @platform Android, iOS, tvOS
24
24
  */
25
25
  SRT = 'srt',
26
26
  }
@@ -3,7 +3,7 @@ import { SubtitleFormat } from './subtitleFormat';
3
3
 
4
4
  /**
5
5
  * Describes a subtitle track.
6
- * @remarks Platform: Android, iOS, tvOS
6
+ * @platform Android, iOS, tvOS
7
7
  */
8
8
  export interface SubtitleTrack {
9
9
  /**
@@ -35,7 +35,7 @@ export interface TweaksConfig {
35
35
  * Default value in iOS is `1.0`.
36
36
  * Default value in Android is `0.2`.
37
37
  *
38
- * @remarks Platform: iOS, Android
38
+ * @platform iOS, Android
39
39
  */
40
40
  timeChangedInterval?: number;
41
41
  /**
@@ -49,7 +49,7 @@ export interface TweaksConfig {
49
49
  *
50
50
  * Default is false.
51
51
  *
52
- * @remarks Platform: iOS
52
+ * @platform iOS
53
53
  */
54
54
  isNativeHlsParsingEnabled?: boolean;
55
55
  /**
@@ -62,7 +62,7 @@ export interface TweaksConfig {
62
62
  *
63
63
  * Default is true.
64
64
  *
65
- * @remarks Platform: iOS
65
+ * @platform iOS
66
66
  */
67
67
  isCustomHlsLoadingEnabled?: boolean;
68
68
  /**
@@ -76,7 +76,7 @@ export interface TweaksConfig {
76
76
  *
77
77
  * Default is 0.5.
78
78
  *
79
- * @remarks Platform: iOS
79
+ * @platform iOS
80
80
  */
81
81
  seekToEndThreshold?: number;
82
82
  /**
@@ -85,7 +85,7 @@ export interface TweaksConfig {
85
85
  * - 'relaxed': Starts playback when enough media data is buffered and continuous playback without stalling can be ensured. If insufficient media data is buffered for playback to start, the player will act as if the buffer became empty during playback.
86
86
  * - 'aggressive': When the buffer is not empty, this setting will cause the player to start playback of available media immediately. If insufficient media data is buffered for playback to start, the player will act as if the buffer became empty during playback.
87
87
  *
88
- * @remarks Platform: iOS
88
+ * @platform iOS
89
89
  */
90
90
  playbackStartBehaviour?: 'relaxed' | 'aggressive';
91
91
  /**
@@ -94,20 +94,20 @@ export interface TweaksConfig {
94
94
  * - 'relaxed': The player will wait until the buffer is filled that it can, most likely, ensure continuous playback without another stalling right after playback continued.
95
95
  * - 'aggressive': The player will try to unstall as soon as some media data became available and will start playback of this media immediately.
96
96
  *
97
- * @remarks Platform: iOS
97
+ * @platform iOS
98
98
  */
99
99
  unstallingBehaviour?: 'relaxed' | 'aggressive';
100
100
  /**
101
101
  * Constantly aggregated and weighted bandwidth samples are summed up to this weight limit to calculate an bandwidth estimation. Remaining samples (i.e. that would lead to exceeding the limit) are dropped from memory as they are not relevant anymore.
102
102
  * Default is 2000.
103
103
  *
104
- * @remarks Platform: Android
104
+ * @platform Android
105
105
  */
106
106
  bandwidthEstimateWeightLimit?: number;
107
107
  /**
108
108
  * Some devices have an incorrect implementation of MediaCodec.setOutputSurface. This leads to failure when the surface changes. To prevent failure, the codec will be released and re-instantiated in those scenarios.
109
109
  *
110
- * @remarks Platform: Android
110
+ * @platform Android
111
111
  */
112
112
  devicesThatRequireSurfaceWorkaround?: {
113
113
  /**
@@ -132,14 +132,14 @@ export interface TweaksConfig {
132
132
  * - "en_us" is normalized to "en-us"
133
133
  * - "en-US-x-lvariant-POSIX" is normalized to "en-us-posix"
134
134
  *
135
- * @remarks Platform: Android
135
+ * @platform Android
136
136
  */
137
137
  languagePropertyNormalization?: boolean;
138
138
  /**
139
139
  * The interval in which dynamic DASH windows are updated locally. I.e. The rate by which the
140
140
  * playback window is moved forward on the timeline.
141
141
  *
142
- * @remarks Platform: Android
142
+ * @platform Android
143
143
  */
144
144
  localDynamicDashWindowUpdateInterval?: number;
145
145
  /**
@@ -147,7 +147,7 @@ export interface TweaksConfig {
147
147
  * DRM sessions for clear content avoids the recreation of decoders when transitioning between clear
148
148
  * and encrypted sections of content. Default is false.
149
149
  *
150
- * @remarks Platform: Android
150
+ * @platform Android
151
151
  */
152
152
  useDrmSessionForClearPeriods?: boolean;
153
153
  /**
@@ -156,7 +156,7 @@ export interface TweaksConfig {
156
156
  * periods in a DRM protected source. Using DRM sessions for clear content avoids the recreation of
157
157
  * decoders when transitioning between clear and encrypted sections of content. Default is false.
158
158
  *
159
- * @remarks Platform: Android
159
+ * @platform Android
160
160
  */
161
161
  useDrmSessionForClearSources?: boolean;
162
162
  /**
@@ -164,7 +164,7 @@ export interface TweaksConfig {
164
164
  * matching extractor was found. If the fallback is applied, this will ignore potential incompatibilities
165
165
  * with streams and thus can result in unstable or failing playback.
166
166
  *
167
- * @remarks Platform: Android
167
+ * @platform Android
168
168
  */
169
169
  useFiletypeExtractorFallbackForHls?: boolean;
170
170
  /**
@@ -177,7 +177,7 @@ export interface TweaksConfig {
177
177
  * Default is `true`.
178
178
  *
179
179
  * @deprecated To enable the Now Playing information use {@link MediaControlConfig.isEnabled}
180
- * @remarks Platform: iOS
180
+ * @platform iOS
181
181
  */
182
182
  updatesNowPlayingInfoCenter?: boolean;
183
183
 
@@ -192,7 +192,7 @@ export interface TweaksConfig {
192
192
  *
193
193
  * Default is `null` i.e not set
194
194
  *
195
- * @remarks Platform: Android
195
+ * @platform Android
196
196
  */
197
197
  forceReuseVideoCodecReasons?: ForceReuseVideoCodecReason[];
198
198
  }