@livepeer-frameworks/player-core 0.0.3

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 (120) hide show
  1. package/dist/cjs/index.js +19493 -0
  2. package/dist/cjs/index.js.map +1 -0
  3. package/dist/esm/index.js +19398 -0
  4. package/dist/esm/index.js.map +1 -0
  5. package/dist/player.css +2140 -0
  6. package/dist/types/core/ABRController.d.ts +164 -0
  7. package/dist/types/core/CodecUtils.d.ts +54 -0
  8. package/dist/types/core/Disposable.d.ts +61 -0
  9. package/dist/types/core/EventEmitter.d.ts +73 -0
  10. package/dist/types/core/GatewayClient.d.ts +144 -0
  11. package/dist/types/core/InteractionController.d.ts +121 -0
  12. package/dist/types/core/LiveDurationProxy.d.ts +102 -0
  13. package/dist/types/core/MetaTrackManager.d.ts +220 -0
  14. package/dist/types/core/MistReporter.d.ts +163 -0
  15. package/dist/types/core/MistSignaling.d.ts +148 -0
  16. package/dist/types/core/PlayerController.d.ts +665 -0
  17. package/dist/types/core/PlayerInterface.d.ts +230 -0
  18. package/dist/types/core/PlayerManager.d.ts +182 -0
  19. package/dist/types/core/PlayerRegistry.d.ts +27 -0
  20. package/dist/types/core/QualityMonitor.d.ts +184 -0
  21. package/dist/types/core/ScreenWakeLockManager.d.ts +70 -0
  22. package/dist/types/core/SeekingUtils.d.ts +142 -0
  23. package/dist/types/core/StreamStateClient.d.ts +108 -0
  24. package/dist/types/core/SubtitleManager.d.ts +111 -0
  25. package/dist/types/core/TelemetryReporter.d.ts +79 -0
  26. package/dist/types/core/TimeFormat.d.ts +97 -0
  27. package/dist/types/core/TimerManager.d.ts +83 -0
  28. package/dist/types/core/UrlUtils.d.ts +81 -0
  29. package/dist/types/core/detector.d.ts +149 -0
  30. package/dist/types/core/index.d.ts +49 -0
  31. package/dist/types/core/scorer.d.ts +167 -0
  32. package/dist/types/core/selector.d.ts +9 -0
  33. package/dist/types/index.d.ts +45 -0
  34. package/dist/types/lib/utils.d.ts +2 -0
  35. package/dist/types/players/DashJsPlayer.d.ts +102 -0
  36. package/dist/types/players/HlsJsPlayer.d.ts +70 -0
  37. package/dist/types/players/MewsWsPlayer/SourceBufferManager.d.ts +119 -0
  38. package/dist/types/players/MewsWsPlayer/WebSocketManager.d.ts +60 -0
  39. package/dist/types/players/MewsWsPlayer/index.d.ts +220 -0
  40. package/dist/types/players/MewsWsPlayer/types.d.ts +89 -0
  41. package/dist/types/players/MistPlayer.d.ts +25 -0
  42. package/dist/types/players/MistWebRTCPlayer/index.d.ts +133 -0
  43. package/dist/types/players/NativePlayer.d.ts +143 -0
  44. package/dist/types/players/VideoJsPlayer.d.ts +59 -0
  45. package/dist/types/players/WebCodecsPlayer/JitterBuffer.d.ts +118 -0
  46. package/dist/types/players/WebCodecsPlayer/LatencyProfiles.d.ts +64 -0
  47. package/dist/types/players/WebCodecsPlayer/RawChunkParser.d.ts +63 -0
  48. package/dist/types/players/WebCodecsPlayer/SyncController.d.ts +174 -0
  49. package/dist/types/players/WebCodecsPlayer/WebSocketController.d.ts +164 -0
  50. package/dist/types/players/WebCodecsPlayer/index.d.ts +149 -0
  51. package/dist/types/players/WebCodecsPlayer/polyfills/MediaStreamTrackGenerator.d.ts +105 -0
  52. package/dist/types/players/WebCodecsPlayer/types.d.ts +395 -0
  53. package/dist/types/players/WebCodecsPlayer/worker/decoder.worker.d.ts +13 -0
  54. package/dist/types/players/WebCodecsPlayer/worker/types.d.ts +197 -0
  55. package/dist/types/players/index.d.ts +14 -0
  56. package/dist/types/styles/index.d.ts +11 -0
  57. package/dist/types/types.d.ts +363 -0
  58. package/dist/types/vanilla/FrameWorksPlayer.d.ts +143 -0
  59. package/dist/types/vanilla/index.d.ts +19 -0
  60. package/dist/workers/decoder.worker.js +989 -0
  61. package/dist/workers/decoder.worker.js.map +1 -0
  62. package/package.json +80 -0
  63. package/src/core/ABRController.ts +550 -0
  64. package/src/core/CodecUtils.ts +257 -0
  65. package/src/core/Disposable.ts +120 -0
  66. package/src/core/EventEmitter.ts +113 -0
  67. package/src/core/GatewayClient.ts +439 -0
  68. package/src/core/InteractionController.ts +712 -0
  69. package/src/core/LiveDurationProxy.ts +270 -0
  70. package/src/core/MetaTrackManager.ts +753 -0
  71. package/src/core/MistReporter.ts +543 -0
  72. package/src/core/MistSignaling.ts +346 -0
  73. package/src/core/PlayerController.ts +2829 -0
  74. package/src/core/PlayerInterface.ts +432 -0
  75. package/src/core/PlayerManager.ts +900 -0
  76. package/src/core/PlayerRegistry.ts +149 -0
  77. package/src/core/QualityMonitor.ts +597 -0
  78. package/src/core/ScreenWakeLockManager.ts +163 -0
  79. package/src/core/SeekingUtils.ts +364 -0
  80. package/src/core/StreamStateClient.ts +457 -0
  81. package/src/core/SubtitleManager.ts +297 -0
  82. package/src/core/TelemetryReporter.ts +308 -0
  83. package/src/core/TimeFormat.ts +205 -0
  84. package/src/core/TimerManager.ts +209 -0
  85. package/src/core/UrlUtils.ts +179 -0
  86. package/src/core/detector.ts +382 -0
  87. package/src/core/index.ts +140 -0
  88. package/src/core/scorer.ts +553 -0
  89. package/src/core/selector.ts +16 -0
  90. package/src/global.d.ts +11 -0
  91. package/src/index.ts +75 -0
  92. package/src/lib/utils.ts +6 -0
  93. package/src/players/DashJsPlayer.ts +642 -0
  94. package/src/players/HlsJsPlayer.ts +483 -0
  95. package/src/players/MewsWsPlayer/SourceBufferManager.ts +572 -0
  96. package/src/players/MewsWsPlayer/WebSocketManager.ts +241 -0
  97. package/src/players/MewsWsPlayer/index.ts +1065 -0
  98. package/src/players/MewsWsPlayer/types.ts +106 -0
  99. package/src/players/MistPlayer.ts +188 -0
  100. package/src/players/MistWebRTCPlayer/index.ts +703 -0
  101. package/src/players/NativePlayer.ts +820 -0
  102. package/src/players/VideoJsPlayer.ts +643 -0
  103. package/src/players/WebCodecsPlayer/JitterBuffer.ts +299 -0
  104. package/src/players/WebCodecsPlayer/LatencyProfiles.ts +151 -0
  105. package/src/players/WebCodecsPlayer/RawChunkParser.ts +151 -0
  106. package/src/players/WebCodecsPlayer/SyncController.ts +456 -0
  107. package/src/players/WebCodecsPlayer/WebSocketController.ts +564 -0
  108. package/src/players/WebCodecsPlayer/index.ts +1650 -0
  109. package/src/players/WebCodecsPlayer/polyfills/MediaStreamTrackGenerator.ts +379 -0
  110. package/src/players/WebCodecsPlayer/types.ts +542 -0
  111. package/src/players/WebCodecsPlayer/worker/decoder.worker.ts +1360 -0
  112. package/src/players/WebCodecsPlayer/worker/types.ts +276 -0
  113. package/src/players/index.ts +22 -0
  114. package/src/styles/animations.css +21 -0
  115. package/src/styles/index.ts +52 -0
  116. package/src/styles/player.css +2126 -0
  117. package/src/styles/tailwind.css +1015 -0
  118. package/src/types.ts +421 -0
  119. package/src/vanilla/FrameWorksPlayer.ts +367 -0
  120. package/src/vanilla/index.ts +22 -0
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Player Registry
3
+ *
4
+ * Central registration of all available player implementations
5
+ */
6
+
7
+ import { PlayerManager } from './PlayerManager';
8
+ import type { IPlayer } from './PlayerInterface';
9
+
10
+ /**
11
+ * Shared registration state per manager instance. Ensures that we only
12
+ * dynamically import and attach transport adapters once per manager.
13
+ */
14
+ const managerRegistrationPromises = new WeakMap<PlayerManager, Promise<void>>();
15
+
16
+ async function registerPlayersForManager(manager: PlayerManager): Promise<void> {
17
+ console.log('[PlayerRegistry] registerPlayersForManager starting...');
18
+ if (manager.getRegisteredPlayers().length > 0) {
19
+ console.log('[PlayerRegistry] Players already registered');
20
+ return;
21
+ }
22
+
23
+ console.log('[PlayerRegistry] Dynamically importing player modules...');
24
+ const [
25
+ nativeModule,
26
+ videoModule,
27
+ hlsModule,
28
+ dashModule,
29
+ mistModule,
30
+ mewsModule,
31
+ mistWebRTCModule,
32
+ webCodecsModule
33
+ ] = await Promise.all([
34
+ import('../players/NativePlayer'),
35
+ import('../players/VideoJsPlayer'),
36
+ import('../players/HlsJsPlayer'),
37
+ import('../players/DashJsPlayer'),
38
+ import('../players/MistPlayer'),
39
+ import('../players/MewsWsPlayer'),
40
+ import('../players/MistWebRTCPlayer'),
41
+ import('../players/WebCodecsPlayer')
42
+ ]);
43
+
44
+ console.log('[PlayerRegistry] All player modules imported, instantiating...');
45
+ const instantiatedPlayers: IPlayer[] = [
46
+ new nativeModule.NativePlayerImpl(),
47
+ new webCodecsModule.WebCodecsPlayerImpl(), // Priority 1 - lowest latency
48
+ new mistWebRTCModule.MistWebRTCPlayerImpl(), // Priority 2
49
+ new videoModule.VideoJsPlayerImpl(),
50
+ new hlsModule.HlsJsPlayerImpl(),
51
+ new dashModule.DashJsPlayerImpl(),
52
+ new mistModule.MistPlayerImpl(),
53
+ new mewsModule.MewsWsPlayerImpl()
54
+ ];
55
+
56
+ for (const player of instantiatedPlayers) {
57
+ const alreadyRegistered = manager
58
+ .getRegisteredPlayers()
59
+ .some(existing => existing.capability.shortname === player.capability.shortname);
60
+
61
+ if (!alreadyRegistered) {
62
+ manager.registerPlayer(player);
63
+ }
64
+ }
65
+ console.log(`[PlayerRegistry] Registration complete. ${manager.getRegisteredPlayers().length} players registered.`);
66
+ }
67
+
68
+ export function ensurePlayersRegistered(manager: PlayerManager = globalPlayerManager): Promise<void> {
69
+ console.log('[PlayerRegistry] ensurePlayersRegistered called');
70
+ if (manager.getRegisteredPlayers().length > 0) {
71
+ console.log('[PlayerRegistry] Already registered, returning');
72
+ return Promise.resolve();
73
+ }
74
+
75
+ const existing = managerRegistrationPromises.get(manager);
76
+ if (existing) {
77
+ console.log('[PlayerRegistry] Using existing registration promise');
78
+ return existing;
79
+ }
80
+
81
+ console.log('[PlayerRegistry] Starting new registration...');
82
+ const registrationPromise = registerPlayersForManager(manager).catch(error => {
83
+ console.error('[PlayerRegistry] Registration failed:', error);
84
+ managerRegistrationPromises.delete(manager);
85
+ throw error;
86
+ });
87
+
88
+ managerRegistrationPromises.set(manager, registrationPromise);
89
+ return registrationPromise;
90
+ }
91
+
92
+ const originalInitialize = PlayerManager.prototype.initializePlayer;
93
+ PlayerManager.prototype.initializePlayer = async function (...args: Parameters<PlayerManager['initializePlayer']>) {
94
+ console.log('[PlayerRegistry] initializePlayer wrapper - calling ensurePlayersRegistered...');
95
+ await ensurePlayersRegistered(this);
96
+ console.log('[PlayerRegistry] ensurePlayersRegistered done, calling original initializePlayer...');
97
+ return originalInitialize.apply(this, args);
98
+ };
99
+
100
+ /**
101
+ * Global PlayerManager instance with deferred registration
102
+ */
103
+ const isDev = (() => {
104
+ try {
105
+ // In browser builds, process may be undefined; guard access
106
+ // @ts-ignore
107
+ return typeof process !== 'undefined' && process && process.env && process.env.NODE_ENV === 'development';
108
+ } catch {
109
+ return false;
110
+ }
111
+ })();
112
+
113
+ export const globalPlayerManager = new PlayerManager({
114
+ debug: isDev,
115
+ autoFallback: true,
116
+ maxFallbackAttempts: 3
117
+ });
118
+
119
+ /**
120
+ * Register all available players (async for backwards compatibility)
121
+ */
122
+ export async function registerAllPlayers(manager: PlayerManager = globalPlayerManager): Promise<void> {
123
+ await ensurePlayersRegistered(manager);
124
+ }
125
+
126
+ /**
127
+ * Create a new PlayerManager instance with all players registered
128
+ */
129
+ export function createPlayerManager(options?: ConstructorParameters<typeof PlayerManager>[0]): PlayerManager {
130
+ const manager = new PlayerManager(options);
131
+ ensurePlayersRegistered(manager).catch(error => {
132
+ if (isDev) {
133
+ console.warn('Player registration failed:', error);
134
+ }
135
+ });
136
+ return manager;
137
+ }
138
+
139
+ /**
140
+ * Export individual player classes for direct use
141
+ */
142
+ export { NativePlayerImpl, DirectPlaybackPlayerImpl } from '../players/NativePlayer';
143
+ export { HlsJsPlayerImpl } from '../players/HlsJsPlayer';
144
+ export { DashJsPlayerImpl } from '../players/DashJsPlayer';
145
+ export { VideoJsPlayerImpl } from '../players/VideoJsPlayer';
146
+ export { MistPlayerImpl } from '../players/MistPlayer';
147
+ export { MewsWsPlayerImpl } from '../players/MewsWsPlayer';
148
+ export { MistWebRTCPlayerImpl } from '../players/MistWebRTCPlayer';
149
+ export { WebCodecsPlayerImpl } from '../players/WebCodecsPlayer';