react-native-theoplayer 9.5.0 → 9.7.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 (81) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/android/build.gradle +126 -156
  3. package/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt +8 -1
  4. package/ios/THEOplayerRCTBridge.m +15 -0
  5. package/ios/THEOplayerRCTDebug.swift +3 -0
  6. package/ios/THEOplayerRCTTrackMetadataAggregator.swift +4 -0
  7. package/ios/THEOplayerRCTView.swift +11 -2
  8. package/ios/ads/THEOplayerRCTSourceDescriptionBuilder+Ads.swift +1 -1
  9. package/ios/theoAds/THEOplayerRCTSourceDescriptionBuilder+TheoAds.swift +2 -2
  10. package/ios/theoAds/THEOplayerRCTView+TheoAds.swift +4 -4
  11. package/ios/theolive/THEOplayerRCTTHEOliveAPI.swift +85 -0
  12. package/ios/theolive/THEOplayerRCTView+THEOlive.swift +28 -0
  13. package/ios/theolive/THEOplayerRCTView+THEOliveConfig.swift +21 -0
  14. package/lib/commonjs/api/player/THEOplayer.js.map +1 -1
  15. package/lib/commonjs/api/theolive/TheoLiveAPI.js +2 -0
  16. package/lib/commonjs/api/theolive/TheoLiveAPI.js.map +1 -0
  17. package/lib/commonjs/api/theolive/barrel.js +11 -0
  18. package/lib/commonjs/api/theolive/barrel.js.map +1 -1
  19. package/lib/commonjs/api/track/MediaTrack.js.map +1 -1
  20. package/lib/commonjs/api/track/TextTrack.js.map +1 -1
  21. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +5 -0
  22. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
  23. package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js +5 -0
  24. package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
  25. package/lib/commonjs/internal/adapter/theolive/TheoLiveNativeAdapter.js +34 -0
  26. package/lib/commonjs/internal/adapter/theolive/TheoLiveNativeAdapter.js.map +1 -0
  27. package/lib/commonjs/internal/adapter/theolive/TheoLiveWebAdapter.js +30 -0
  28. package/lib/commonjs/internal/adapter/theolive/TheoLiveWebAdapter.js.map +1 -0
  29. package/lib/commonjs/manifest.json +1 -1
  30. package/lib/module/api/player/THEOplayer.js.map +1 -1
  31. package/lib/module/api/theolive/TheoLiveAPI.js +2 -0
  32. package/lib/module/api/theolive/TheoLiveAPI.js.map +1 -0
  33. package/lib/module/api/theolive/barrel.js +1 -0
  34. package/lib/module/api/theolive/barrel.js.map +1 -1
  35. package/lib/module/api/track/MediaTrack.js.map +1 -1
  36. package/lib/module/api/track/TextTrack.js.map +1 -1
  37. package/lib/module/internal/adapter/THEOplayerAdapter.js +5 -0
  38. package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
  39. package/lib/module/internal/adapter/THEOplayerWebAdapter.js +5 -0
  40. package/lib/module/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
  41. package/lib/module/internal/adapter/theolive/TheoLiveNativeAdapter.js +29 -0
  42. package/lib/module/internal/adapter/theolive/TheoLiveNativeAdapter.js.map +1 -0
  43. package/lib/module/internal/adapter/theolive/TheoLiveWebAdapter.js +25 -0
  44. package/lib/module/internal/adapter/theolive/TheoLiveWebAdapter.js.map +1 -0
  45. package/lib/module/manifest.json +1 -1
  46. package/lib/typescript/api/ads/GoogleImaConfiguration.d.ts +8 -0
  47. package/lib/typescript/api/ads/GoogleImaConfiguration.d.ts.map +1 -1
  48. package/lib/typescript/api/player/THEOplayer.d.ts +5 -0
  49. package/lib/typescript/api/player/THEOplayer.d.ts.map +1 -1
  50. package/lib/typescript/api/theolive/TheoLiveAPI.d.ts +41 -0
  51. package/lib/typescript/api/theolive/TheoLiveAPI.d.ts.map +1 -0
  52. package/lib/typescript/api/theolive/TheoLiveConfiguration.d.ts +14 -0
  53. package/lib/typescript/api/theolive/TheoLiveConfiguration.d.ts.map +1 -1
  54. package/lib/typescript/api/theolive/barrel.d.ts +1 -0
  55. package/lib/typescript/api/theolive/barrel.d.ts.map +1 -1
  56. package/lib/typescript/api/track/MediaTrack.d.ts +6 -0
  57. package/lib/typescript/api/track/MediaTrack.d.ts.map +1 -1
  58. package/lib/typescript/api/track/TextTrack.d.ts +6 -0
  59. package/lib/typescript/api/track/TextTrack.d.ts.map +1 -1
  60. package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +3 -1
  61. package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts.map +1 -1
  62. package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts +3 -2
  63. package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts.map +1 -1
  64. package/lib/typescript/internal/adapter/theolive/TheoLiveNativeAdapter.d.ts +8 -0
  65. package/lib/typescript/internal/adapter/theolive/TheoLiveNativeAdapter.d.ts.map +1 -0
  66. package/lib/typescript/internal/adapter/theolive/TheoLiveWebAdapter.d.ts +9 -0
  67. package/lib/typescript/internal/adapter/theolive/TheoLiveWebAdapter.d.ts.map +1 -0
  68. package/package.json +1 -1
  69. package/react-native-theoplayer.podspec +11 -11
  70. package/src/api/ads/GoogleImaConfiguration.ts +10 -0
  71. package/src/api/player/THEOplayer.ts +6 -0
  72. package/src/api/theolive/TheoLiveAPI.ts +47 -0
  73. package/src/api/theolive/TheoLiveConfiguration.ts +17 -0
  74. package/src/api/theolive/barrel.ts +1 -0
  75. package/src/api/track/MediaTrack.ts +7 -0
  76. package/src/api/track/TextTrack.ts +7 -0
  77. package/src/internal/adapter/THEOplayerAdapter.ts +8 -0
  78. package/src/internal/adapter/THEOplayerWebAdapter.ts +9 -1
  79. package/src/internal/adapter/theolive/TheoLiveNativeAdapter.ts +29 -0
  80. package/src/internal/adapter/theolive/TheoLiveWebAdapter.ts +25 -0
  81. package/src/manifest.json +1 -1
@@ -46,6 +46,13 @@ export interface MediaTrack extends Track {
46
46
  */
47
47
  readonly label: string;
48
48
 
49
+ /**
50
+ * The unlocalized label of the media track, as extracted from the manifest.
51
+ *
52
+ * @platform ios
53
+ */
54
+ readonly unlocalizedLabel?: string;
55
+
49
56
  /**
50
57
  * The language of the media track.
51
58
  */
@@ -83,6 +83,13 @@ export interface TextTrack extends Track {
83
83
  */
84
84
  readonly kind: TextTrackKind;
85
85
 
86
+ /**
87
+ * The unlocalized label of the text track, as extracted from the manifest.
88
+ *
89
+ * @platform ios
90
+ */
91
+ readonly unlocalizedLabel?: string;
92
+
86
93
  /**
87
94
  * The label of the text track.
88
95
  */
@@ -20,6 +20,7 @@ import {
20
20
  SourceDescription,
21
21
  TextTrack,
22
22
  TheoAdsAPI,
23
+ TheoLiveAPI,
23
24
  THEOplayer,
24
25
  THEOplayerView,
25
26
  TimeUpdateEvent,
@@ -48,6 +49,7 @@ import type { NativePlayerState } from './NativePlayerState';
48
49
  import { EventBroadcastAdapter } from './broadcast/EventBroadcastAdapter';
49
50
  import { DefaultNativePlayerState } from './DefaultNativePlayerState';
50
51
  import { THEOAdsNativeAdapter } from './theoads/THEOAdsNativeAdapter';
52
+ import { TheoLiveNativeAdapter } from './theolive/TheoLiveNativeAdapter';
51
53
 
52
54
  const NativePlayerModule = NativeModules.THEORCTPlayerModule;
53
55
 
@@ -59,6 +61,7 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
59
61
  private readonly _castAdapter: THEOplayerNativeCastAdapter;
60
62
  private readonly _abrAdapter: AbrAdapter;
61
63
  private readonly _textTrackStyleAdapter: TextTrackStyleAdapter;
64
+ private readonly _theoliveAdapter: TheoLiveNativeAdapter;
62
65
  private _externalEventRouter: EventBroadcastAPI | undefined = undefined;
63
66
  private _playerVersion!: PlayerVersion;
64
67
 
@@ -71,6 +74,7 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
71
74
  this._castAdapter = new THEOplayerNativeCastAdapter(this, this._view);
72
75
  this._abrAdapter = new AbrAdapter(this._view);
73
76
  this._textTrackStyleAdapter = new TextTrackStyleAdapter(this._view);
77
+ this._theoliveAdapter = new TheoLiveNativeAdapter(this._view);
74
78
 
75
79
  this.addEventListener(PlayerEventType.LOADED_METADATA, this.onLoadedMetadata);
76
80
  this.addEventListener(PlayerEventType.PAUSE, this.onPause);
@@ -210,6 +214,10 @@ export class THEOplayerAdapter extends DefaultEventDispatcher<PlayerEventMap> im
210
214
  return this._theoAdsAdapter;
211
215
  }
212
216
 
217
+ get theolive(): TheoLiveAPI {
218
+ return this._theoliveAdapter;
219
+ }
220
+
213
221
  set autoplay(autoplay: boolean) {
214
222
  this._state.autoplay = autoplay;
215
223
  NativePlayerModule.setAutoplay(this._view.nativeHandle, autoplay);
@@ -2,6 +2,7 @@ import { DefaultEventDispatcher } from './event/DefaultEventDispatcher';
2
2
  import {
3
3
  AdsAPI,
4
4
  AspectRatio,
5
+ BackgroundAudioConfiguration,
5
6
  CastAPI,
6
7
  CmcdConfiguration,
7
8
  CmcdTransmissionMode,
@@ -17,6 +18,7 @@ import {
17
18
  TextTrack,
18
19
  TextTrackStyle,
19
20
  TheoAdsAPI,
21
+ TheoLiveAPI,
20
22
  THEOplayer,
21
23
  } from 'react-native-theoplayer';
22
24
  import { THEOplayerWebAdsAdapter } from './ads/THEOplayerWebAdsAdapter';
@@ -27,7 +29,6 @@ import { findNativeQualitiesByUid, fromNativeMediaTrackList } from './web/TrackU
27
29
  import type { ABRConfiguration, SourceDescription } from 'src/api/barrel';
28
30
  import { WebEventForwarder } from './WebEventForwarder';
29
31
  import type { PiPConfiguration } from 'src/api/pip/PiPConfiguration';
30
- import type { BackgroundAudioConfiguration } from 'src/api/backgroundAudio/BackgroundAudioConfiguration';
31
32
  import { WebPresentationModeManager } from './web/WebPresentationModeManager';
32
33
  import { WebMediaSession } from './web/WebMediaSession';
33
34
  import { BaseEvent } from './event/BaseEvent';
@@ -36,6 +37,7 @@ import { TextTrackState } from './NativePlayerState';
36
37
  import { DefaultTextTrackState } from './DefaultTextTrackState';
37
38
  import { THEOAdsWebAdapter } from './theoads/THEOAdsWebAdapter';
38
39
  import { CMCDConnector, Configuration, createCMCDConnector, TransmissionMode } from '@theoplayer/cmcd-connector-web';
40
+ import { TheoLiveWebAdapter } from './theolive/TheoLiveWebAdapter';
39
41
 
40
42
  const defaultBackgroundAudioConfiguration: BackgroundAudioConfiguration = {
41
43
  enabled: false,
@@ -51,6 +53,7 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher<PlayerEventMap>
51
53
  private readonly _theoAdsAdapter: THEOAdsWebAdapter;
52
54
  private readonly _textTrackState: TextTrackState;
53
55
  private readonly _presentationModeManager: WebPresentationModeManager;
56
+ private readonly _theoliveAdapter: TheoLiveWebAdapter;
54
57
  private _player: NativeChromelessPlayer | undefined;
55
58
  private _eventForwarder: WebEventForwarder | undefined;
56
59
  private _mediaSession: WebMediaSession | undefined = undefined;
@@ -66,6 +69,7 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher<PlayerEventMap>
66
69
  this._adsAdapter = new THEOplayerWebAdsAdapter(this._player);
67
70
  this._castAdapter = new THEOplayerWebCastAdapter(this._player);
68
71
  this._theoAdsAdapter = new THEOAdsWebAdapter(this._player);
72
+ this._theoliveAdapter = new TheoLiveWebAdapter(this._player);
69
73
  this._textTrackState = new DefaultTextTrackState(this);
70
74
  this._eventForwarder = new WebEventForwarder(this._player, this);
71
75
  this._presentationModeManager = new WebPresentationModeManager(this._player, this);
@@ -363,6 +367,10 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher<PlayerEventMap>
363
367
  return this._castAdapter;
364
368
  }
365
369
 
370
+ public get theolive(): TheoLiveAPI {
371
+ return this._theoliveAdapter;
372
+ }
373
+
366
374
  public get version(): PlayerVersion {
367
375
  return {
368
376
  version: nativeVersion,
@@ -0,0 +1,29 @@
1
+ import type { HespLatencies, TheoLiveAPI, THEOplayerView } from 'react-native-theoplayer';
2
+ import { NativeModules, Platform } from 'react-native';
3
+
4
+ const NativeTheoLiveModule = NativeModules.THEORCTTHEOliveModule;
5
+
6
+ export class TheoLiveNativeAdapter implements TheoLiveAPI {
7
+ constructor(private _player: THEOplayerView) {}
8
+
9
+ get currentLatency(): Promise<number> {
10
+ if (Platform.OS === 'ios') {
11
+ return NativeTheoLiveModule.currentLatency(this._player.nativeHandle);
12
+ }
13
+ // TODO: implement for Android
14
+ return Promise.resolve(-1);
15
+ }
16
+
17
+ get latencies(): Promise<HespLatencies> {
18
+ if (Platform.OS === 'ios') {
19
+ return NativeTheoLiveModule.latencies(this._player.nativeHandle);
20
+ }
21
+ // TODO: implement for Android
22
+ return Promise.resolve({
23
+ engineLatency: -1,
24
+ distributionLatency: -1,
25
+ playerLatency: -1,
26
+ theoliveLatency: -1,
27
+ });
28
+ }
29
+ }
@@ -0,0 +1,25 @@
1
+ import type { HespLatencies, TheoLiveAPI } from 'react-native-theoplayer';
2
+ import type { ChromelessPlayer } from 'theoplayer';
3
+
4
+ export class TheoLiveWebAdapter implements TheoLiveAPI {
5
+ constructor(private _player: ChromelessPlayer) {}
6
+
7
+ get currentLatency(): Promise<number> {
8
+ const currentLatency = this._player.latency.currentLatency;
9
+ return currentLatency ? Promise.resolve(currentLatency) : Promise.reject<number>('latency not available');
10
+ }
11
+
12
+ get latencies(): Promise<HespLatencies> {
13
+ const webLatencies = this._player.hesp?.latencies;
14
+ if (webLatencies) {
15
+ return Promise.resolve({
16
+ engineLatency: webLatencies?.engine,
17
+ distributionLatency: webLatencies?.distribution,
18
+ playerLatency: webLatencies?.player,
19
+ theoliveLatency: webLatencies?.theolive,
20
+ });
21
+ } else {
22
+ return Promise.reject<HespLatencies>('latencies not available');
23
+ }
24
+ }
25
+ }
package/src/manifest.json CHANGED
@@ -1 +1 @@
1
- {"version":"9.5.0","buildDate":"2025-06-20T10:02:00.763Z"}
1
+ {"version":"9.7.0","buildDate":"2025-07-01T14:45:04.561Z"}