prismcast 1.6.0 → 1.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 (194) hide show
  1. package/dist/browser/cdp.js +1 -1
  2. package/dist/browser/cdp.js.map +1 -1
  3. package/dist/browser/channelSelection.d.ts +10 -34
  4. package/dist/browser/channelSelection.js +19 -96
  5. package/dist/browser/channelSelection.js.map +1 -1
  6. package/dist/browser/display.d.ts +19 -0
  7. package/dist/browser/display.js +16 -11
  8. package/dist/browser/display.js.map +1 -1
  9. package/dist/browser/index.d.ts +9 -46
  10. package/dist/browser/index.js +136 -191
  11. package/dist/browser/index.js.map +1 -1
  12. package/dist/browser/login.d.ts +65 -0
  13. package/dist/browser/login.js +193 -0
  14. package/dist/browser/login.js.map +1 -0
  15. package/dist/browser/precaching.js +12 -0
  16. package/dist/browser/precaching.js.map +1 -1
  17. package/dist/browser/tuning/comcastPolymer.d.ts +23 -0
  18. package/dist/browser/tuning/comcastPolymer.js +655 -0
  19. package/dist/browser/tuning/comcastPolymer.js.map +1 -0
  20. package/dist/browser/tuning/cox.d.ts +2 -0
  21. package/dist/browser/tuning/cox.js +14 -0
  22. package/dist/browser/tuning/cox.js.map +1 -0
  23. package/dist/browser/tuning/directv.js +1 -1
  24. package/dist/browser/tuning/directv.js.map +1 -1
  25. package/dist/browser/tuning/fox.js +2 -2
  26. package/dist/browser/tuning/fox.js.map +1 -1
  27. package/dist/browser/tuning/hbo.js +1 -1
  28. package/dist/browser/tuning/hbo.js.map +1 -1
  29. package/dist/browser/tuning/hulu.js +1 -1
  30. package/dist/browser/tuning/hulu.js.map +1 -1
  31. package/dist/browser/tuning/shared.d.ts +46 -0
  32. package/dist/browser/tuning/shared.js +100 -0
  33. package/dist/browser/tuning/shared.js.map +1 -0
  34. package/dist/browser/tuning/sling.js +1 -1
  35. package/dist/browser/tuning/sling.js.map +1 -1
  36. package/dist/browser/tuning/spectrum.js +1 -1
  37. package/dist/browser/tuning/spectrum.js.map +1 -1
  38. package/dist/browser/tuning/thumbnailRow.js +1 -1
  39. package/dist/browser/tuning/thumbnailRow.js.map +1 -1
  40. package/dist/browser/tuning/tileClick.js +1 -1
  41. package/dist/browser/tuning/tileClick.js.map +1 -1
  42. package/dist/browser/tuning/xfinity.js +10 -603
  43. package/dist/browser/tuning/xfinity.js.map +1 -1
  44. package/dist/browser/tuning/youtubeTv.js +1 -1
  45. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  46. package/dist/browser/video.d.ts +18 -0
  47. package/dist/browser/video.js +69 -107
  48. package/dist/browser/video.js.map +1 -1
  49. package/dist/channels/index.d.ts +2 -2
  50. package/dist/channels/index.js +2075 -800
  51. package/dist/channels/index.js.map +1 -1
  52. package/dist/config/health.js +20 -2
  53. package/dist/config/health.js.map +1 -1
  54. package/dist/config/index.js +29 -64
  55. package/dist/config/index.js.map +1 -1
  56. package/dist/config/providerPacks.js +4 -1
  57. package/dist/config/providerPacks.js.map +1 -1
  58. package/dist/config/providers.d.ts +12 -5
  59. package/dist/config/providers.js +110 -94
  60. package/dist/config/providers.js.map +1 -1
  61. package/dist/config/sites.js +15 -9
  62. package/dist/config/sites.js.map +1 -1
  63. package/dist/config/userChannels.d.ts +50 -2
  64. package/dist/config/userChannels.js +212 -10
  65. package/dist/config/userChannels.js.map +1 -1
  66. package/dist/config/userConfig.d.ts +1 -1
  67. package/dist/config/userConfig.js +2 -15
  68. package/dist/config/userConfig.js.map +1 -1
  69. package/dist/hdhr/channelMap.d.ts +1 -1
  70. package/dist/hdhr/channelMap.js +4 -4
  71. package/dist/hdhr/channelMap.js.map +1 -1
  72. package/dist/index.js +9 -15
  73. package/dist/index.js.map +1 -1
  74. package/dist/native/index.d.ts +3 -0
  75. package/dist/native/index.js +2 -1
  76. package/dist/native/index.js.map +1 -1
  77. package/dist/native/probe.d.ts +4 -3
  78. package/dist/native/probe.js +36 -12
  79. package/dist/native/probe.js.map +1 -1
  80. package/dist/native/proxy.d.ts +2 -0
  81. package/dist/native/proxy.js +369 -326
  82. package/dist/native/proxy.js.map +1 -1
  83. package/dist/routes/components.d.ts +43 -0
  84. package/dist/routes/components.js +122 -0
  85. package/dist/routes/components.js.map +1 -1
  86. package/dist/routes/config/channels/index.d.ts +2 -2
  87. package/dist/routes/config/channels/index.js +1 -1
  88. package/dist/routes/config/channels/index.js.map +1 -1
  89. package/dist/routes/config/channels/routes.js +443 -65
  90. package/dist/routes/config/channels/routes.js.map +1 -1
  91. package/dist/routes/config/channels/table.d.ts +76 -0
  92. package/dist/routes/config/channels/table.js +352 -66
  93. package/dist/routes/config/channels/table.js.map +1 -1
  94. package/dist/routes/config/index.d.ts +1 -1
  95. package/dist/routes/config/index.js +1 -1
  96. package/dist/routes/config/index.js.map +1 -1
  97. package/dist/routes/config/providers.d.ts +6 -6
  98. package/dist/routes/config/providers.js +69 -95
  99. package/dist/routes/config/providers.js.map +1 -1
  100. package/dist/routes/index.d.ts +0 -16
  101. package/dist/routes/index.js +0 -17
  102. package/dist/routes/index.js.map +1 -1
  103. package/dist/routes/providers.js +106 -3
  104. package/dist/routes/providers.js.map +1 -1
  105. package/dist/routes/root/content.js +55 -38
  106. package/dist/routes/root/content.js.map +1 -1
  107. package/dist/routes/root/index.js +2 -1
  108. package/dist/routes/root/index.js.map +1 -1
  109. package/dist/routes/root/scripts/channels.js +772 -312
  110. package/dist/routes/root/scripts/channels.js.map +1 -1
  111. package/dist/routes/root/scripts/config.js +596 -544
  112. package/dist/routes/root/scripts/config.js.map +1 -1
  113. package/dist/routes/root/scripts/index.d.ts +1 -0
  114. package/dist/routes/root/scripts/index.js +1 -0
  115. package/dist/routes/root/scripts/index.js.map +1 -1
  116. package/dist/routes/root/scripts/shared.d.ts +6 -0
  117. package/dist/routes/root/scripts/shared.js +391 -0
  118. package/dist/routes/root/scripts/shared.js.map +1 -0
  119. package/dist/routes/root/scripts/status.js +36 -21
  120. package/dist/routes/root/scripts/status.js.map +1 -1
  121. package/dist/routes/root/styles.js +113 -8
  122. package/dist/routes/root/styles.js.map +1 -1
  123. package/dist/service/commands.js +2 -1
  124. package/dist/service/commands.js.map +1 -1
  125. package/dist/streaming/fmp4Segmenter.d.ts +2 -0
  126. package/dist/streaming/fmp4Segmenter.js +7 -4
  127. package/dist/streaming/fmp4Segmenter.js.map +1 -1
  128. package/dist/streaming/hls.js +269 -188
  129. package/dist/streaming/hls.js.map +1 -1
  130. package/dist/streaming/hlsResume.d.ts +9 -3
  131. package/dist/streaming/hlsResume.js +13 -6
  132. package/dist/streaming/hlsResume.js.map +1 -1
  133. package/dist/streaming/hlsSegments.d.ts +1 -2
  134. package/dist/streaming/hlsSegments.js +48 -46
  135. package/dist/streaming/hlsSegments.js.map +1 -1
  136. package/dist/streaming/lifecycle.js +8 -12
  137. package/dist/streaming/lifecycle.js.map +1 -1
  138. package/dist/streaming/monitor.js +625 -585
  139. package/dist/streaming/monitor.js.map +1 -1
  140. package/dist/streaming/mpegts.js +1 -1
  141. package/dist/streaming/mpegts.js.map +1 -1
  142. package/dist/streaming/preroll.d.ts +40 -20
  143. package/dist/streaming/preroll.js +147 -86
  144. package/dist/streaming/preroll.js.map +1 -1
  145. package/dist/streaming/recovery.d.ts +0 -6
  146. package/dist/streaming/recovery.js +0 -8
  147. package/dist/streaming/recovery.js.map +1 -1
  148. package/dist/streaming/registry.d.ts +36 -9
  149. package/dist/streaming/registry.js +6 -9
  150. package/dist/streaming/registry.js.map +1 -1
  151. package/dist/streaming/setup.d.ts +1 -1
  152. package/dist/streaming/setup.js +44 -21
  153. package/dist/streaming/setup.js.map +1 -1
  154. package/dist/streaming/showInfo.d.ts +7 -6
  155. package/dist/streaming/showInfo.js +156 -36
  156. package/dist/streaming/showInfo.js.map +1 -1
  157. package/dist/streaming/statusEmitter.d.ts +14 -2
  158. package/dist/streaming/statusEmitter.js +22 -4
  159. package/dist/streaming/statusEmitter.js.map +1 -1
  160. package/dist/types/channels.d.ts +31 -0
  161. package/dist/types/config.d.ts +2 -2
  162. package/dist/types/index.d.ts +1 -1
  163. package/dist/types/index.js.map +1 -1
  164. package/dist/types/profiles.d.ts +8 -3
  165. package/dist/types/selection.d.ts +1 -0
  166. package/dist/types/shared.d.ts +1 -1
  167. package/dist/utils/debugFilter.d.ts +0 -5
  168. package/dist/utils/debugFilter.js +5 -11
  169. package/dist/utils/debugFilter.js.map +1 -1
  170. package/dist/utils/delay.d.ts +12 -0
  171. package/dist/utils/delay.js +20 -0
  172. package/dist/utils/delay.js.map +1 -1
  173. package/dist/utils/evaluate.js +6 -11
  174. package/dist/utils/evaluate.js.map +1 -1
  175. package/dist/utils/ffmpeg.d.ts +13 -5
  176. package/dist/utils/ffmpeg.js +32 -11
  177. package/dist/utils/ffmpeg.js.map +1 -1
  178. package/dist/utils/format.d.ts +6 -0
  179. package/dist/utils/format.js +8 -0
  180. package/dist/utils/format.js.map +1 -1
  181. package/dist/utils/index.d.ts +1 -0
  182. package/dist/utils/index.js +1 -0
  183. package/dist/utils/index.js.map +1 -1
  184. package/dist/utils/logEmitter.js +1 -1
  185. package/dist/utils/logEmitter.js.map +1 -1
  186. package/dist/utils/retry.d.ts +15 -9
  187. package/dist/utils/retry.js +7 -23
  188. package/dist/utils/retry.js.map +1 -1
  189. package/dist/utils/timing.d.ts +5 -0
  190. package/dist/utils/timing.js +13 -0
  191. package/dist/utils/timing.js.map +1 -0
  192. package/dist/utils/version.js +2 -2
  193. package/dist/utils/version.js.map +1 -1
  194. package/package.json +5 -5
@@ -1,19 +1,10 @@
1
- import { LOG, resolveFFmpegPath } from "../utils/index.js";
1
+ import { LOG, getBundledFFmpegPath } from "../utils/index.js";
2
2
  import { createMP4BoxParser, offsetMoofTimestamps, parseMoovTrackInfo } from "./mp4Parser.js";
3
3
  import { CONFIG } from "../config/index.js";
4
4
  import { buildPlaylist } from "./playlistBuilder.js";
5
5
  import { getEffectiveViewport } from "../config/presets.js";
6
+ import { getGpuCapabilities } from "../browser/display.js";
6
7
  import { spawn } from "node:child_process";
7
- /* When a client requests an HLS playlist for a channel that is still starting up, PrismCast returns a startup playlist immediately to prevent HTTP timeouts. Channels
8
- * DVR requires at least one segment in the playlist — an empty playlist is rejected with "Playlist had no segments." This module generates PREROLL_TOTAL_DURATION
9
- * seconds of black+silence fMP4 at server startup, splits it into individual segments with naturally monotonic PTS, and serves them via global routes so the startup
10
- * playlist can reference valid media content.
11
- *
12
- * The preroll playlist is served progressively — segments are revealed over time based on elapsed wall-clock time, simulating a live stream. The client polls for
13
- * updates, sees new segments appear, and keeps playing without stalling for the full duration of the tune. When real content arrives, the fMP4 segmenter's composite
14
- * playlist takes over, including preroll entries in its sliding window during the transition. As real segments accumulate, preroll entries fall off the window and the
15
- * playlist becomes purely live content.
16
- */
17
8
  // Total duration of preroll content in seconds. FFmpeg generates this much continuous black+silence fMP4, which is then split into individual segments at keyframe
18
9
  // boundaries. The configured duration provides ample coverage for the slowest providers with the progressive playlist delivering content in real time for the full
19
10
  // tune duration.
@@ -21,89 +12,140 @@ const PREROLL_TOTAL_DURATION = 30;
21
12
  // Number of segments to reveal immediately on the first preroll playlist request. The HLS spec (RFC 8216 Section 6.3.3) says a client should start playback 3 target
22
13
  // durations from the end of a live playlist, so 4 segments gives the client 3 playable segments plus one buffer.
23
14
  const PREROLL_INITIAL_WINDOW = 4;
24
- // Cached preroll buffers. Generated once at startup, reused for all streams.
25
- let prerollInitSegment = null;
26
- // Individual preroll media segment buffers. Each entry is one moof+mdat pair with naturally monotonic PTS from the continuous FFmpeg output. Unlike the previous
27
- // implementation that served the same buffer N times (causing PTS restarts), each segment has distinct timestamps.
28
- const prerollMediaSegments = [];
29
- // Per-segment durations in seconds. Derived from trun sample durations and moov timescales during splitPrerollBuffers(). Used for EXTINF values in the playlist.
30
- const prerollSegmentDurations = [];
15
+ // Cached preroll variants keyed by codec label ("h264", "hevc"). Generated once at startup, reused for all streams. The H.264 variant is always generated; the HEVC
16
+ // variant is generated when the GPU supports HEVC hardware encoding.
17
+ const prerollVariants = new Map();
31
18
  // Public Accessors.
32
19
  /**
33
- * Returns true when the preroll init segment and at least one media segment have been generated and are ready to serve.
20
+ * Returns true when the specified preroll variant has been generated and is ready to serve.
21
+ * @param codec - The preroll codec variant to check.
34
22
  */
35
- export function isPrerollReady() {
36
- return (prerollInitSegment !== null) && (prerollMediaSegments.length > 0);
23
+ export function isPrerollReady(codec) {
24
+ const variant = prerollVariants.get(codec);
25
+ return (variant !== undefined) && (variant.mediaSegments.length > 0);
37
26
  }
38
27
  /**
39
- * Returns the number of preroll segments available. Used by the segmenter to determine the preroll-to-real segment index boundary.
28
+ * Returns the number of preroll segments available for the specified codec. Used by the segmenter to determine the preroll-to-real segment index boundary.
29
+ * @param codec - The preroll codec variant.
40
30
  * @returns The count of preroll media segments.
41
31
  */
42
- export function getPrerollSegmentCount() {
43
- return prerollMediaSegments.length;
32
+ export function getPrerollSegmentCount(codec) {
33
+ return prerollVariants.get(codec)?.mediaSegments.length ?? 0;
44
34
  }
45
35
  /**
46
36
  * Returns the duration of a specific preroll segment in seconds. Used by the segmenter's generatePlaylist() for EXTINF values when preroll entries are in the sliding
47
37
  * window.
38
+ * @param codec - The preroll codec variant.
48
39
  * @param index - The zero-based segment index.
49
40
  * @returns The segment duration in seconds.
50
41
  */
51
- export function getPrerollSegmentDuration(index) {
52
- return prerollSegmentDurations[index] ?? 2;
42
+ export function getPrerollSegmentDuration(codec, index) {
43
+ return prerollVariants.get(codec)?.durations[index] ?? 2;
53
44
  }
54
45
  /**
55
46
  * Returns the total duration of all preroll segments in seconds. Used by the fmp4Segmenter to compute PTS offsets that make Chrome's real content timestamps continue
56
47
  * from where the preroll ended, eliminating the PTS discontinuity at the preroll-to-live boundary.
48
+ * @param codec - The preroll codec variant.
57
49
  * @returns The sum of all preroll segment durations in seconds.
58
50
  */
59
- export function getPrerollTotalDurationSec() {
51
+ export function getPrerollTotalDurationSec(codec) {
52
+ const variant = prerollVariants.get(codec);
53
+ if (!variant) {
54
+ return 0;
55
+ }
60
56
  let total = 0;
61
- for (const duration of prerollSegmentDurations) {
57
+ for (const duration of variant.durations) {
62
58
  total += duration;
63
59
  }
64
60
  return total;
65
61
  }
66
62
  /**
67
- * Returns the maximum duration across all preroll segments, rounded up to the nearest integer. Used for TARGETDURATION computation in the composite playlist.
63
+ * Returns the maximum duration across all preroll segments for the specified codec, rounded up to the nearest integer. Used for TARGETDURATION computation in the
64
+ * composite playlist.
65
+ * @param codec - The preroll codec variant.
68
66
  * @returns The ceiling of the maximum preroll segment duration.
69
67
  */
70
- export function getPrerollMaxDuration() {
71
- if (prerollSegmentDurations.length === 0) {
68
+ export function getPrerollMaxDuration(codec) {
69
+ const variant = prerollVariants.get(codec);
70
+ if (!variant || (variant.durations.length === 0)) {
72
71
  return 2;
73
72
  }
74
73
  let max = 0;
75
- for (const duration of prerollSegmentDurations) {
74
+ for (const duration of variant.durations) {
76
75
  if (duration > max) {
77
76
  max = duration;
78
77
  }
79
78
  }
80
79
  return Math.ceil(max);
81
80
  }
81
+ /**
82
+ * Returns the preroll codec that should be used for new streams. HEVC is preferred when the GPU supports HEVC hardware encoding (matching the capture codec), with
83
+ * H.264 as the fallback. If the preferred variant was not generated (e.g., HEVC generation failed), falls back to whichever variant is available.
84
+ * @returns The codec to use for preroll, or "h264" as the default.
85
+ */
86
+ export function getPrerollCodec() {
87
+ const preferHevc = getGpuCapabilities()?.hevcHardwareEncoding === true;
88
+ const preferred = preferHevc ? "hevc" : "h264";
89
+ if (isPrerollReady(preferred)) {
90
+ return preferred;
91
+ }
92
+ // Fall back: if the preferred variant failed to generate, use the other one.
93
+ const fallback = preferHevc ? "h264" : "hevc";
94
+ if (isPrerollReady(fallback)) {
95
+ return fallback;
96
+ }
97
+ return "h264";
98
+ }
82
99
  // Preroll Generation.
83
100
  /**
84
- * Generates the preroll fMP4 at startup. Spawns FFmpeg to create PREROLL_TOTAL_DURATION seconds of black frame + silence as fragmented MP4, then splits
85
- * the output into an init segment (ftyp + moov) and individual media segments (moof + mdat pairs) using the MP4 box parser. Each segment has naturally monotonic PTS
86
- * because it comes from a continuous FFmpeg encode. If FFmpeg is unavailable or fails, the preroll is left uninitialized and the system degrades gracefully — the
87
- * blocking stream setup path is used instead.
101
+ * Generates preroll fMP4 variants at startup. Uses the bundled ffmpeg-for-homebridge binary (which includes both libx264 and libx265) to guarantee encoder
102
+ * availability regardless of the user's system FFmpeg installation. The H.264 variant is always generated. The HEVC variant is generated when the GPU supports HEVC
103
+ * hardware encoding, so the preroll codec can match the capture codec at the preroll-to-live boundary.
104
+ *
105
+ * Each variant spawns FFmpeg to create PREROLL_TOTAL_DURATION seconds of black frame + silence as fragmented MP4, then splits the output into an init segment
106
+ * (ftyp + moov) and individual media segments (moof + mdat pairs) using the MP4 box parser. Each segment has naturally monotonic PTS because it comes from a
107
+ * continuous FFmpeg encode. If the bundled FFmpeg is unavailable or a variant fails, the system degrades gracefully — the blocking stream setup path is used instead.
88
108
  */
89
109
  export async function generatePreroll() {
90
- const ffmpegPath = await resolveFFmpegPath();
91
- if (!ffmpegPath) {
92
- LOG.warn("FFmpeg is not available. Preroll generation skipped — startup playlists will have no segments.");
110
+ const ffmpegBin = getBundledFFmpegPath();
111
+ if (!ffmpegBin) {
112
+ LOG.warn("Bundled FFmpeg is not available. Preroll generation skipped — startup playlists will have no segments.");
93
113
  return;
94
114
  }
95
- // Use the effective viewport to match the resolution Chrome MediaRecorder will produce. This prevents a resolution mismatch at the preroll→live discontinuity
96
- // boundary. Baseline profile and level 3.1 match Chrome's MediaRecorder output (confirmed via parseMoovCodecConfig telemetry). Slow preset and CRF 18 produce
97
- // higher quality — acceptable for a short duration of simple content generated once at startup.
115
+ // Use the effective viewport to match the resolution Chrome MediaRecorder will produce. This prevents a resolution mismatch at the preroll-to-live discontinuity
116
+ // boundary.
98
117
  const viewport = getEffectiveViewport(CONFIG);
99
118
  const size = String(viewport.width) + "x" + String(viewport.height);
119
+ // Generate the H.264 variant. Baseline profile and level 3.1 match Chrome's MediaRecorder output (confirmed via parseMoovCodecConfig telemetry). Slow preset and
120
+ // CRF 18 produce higher quality — acceptable for a short duration of simple content generated once at startup.
121
+ await generateVariant(ffmpegBin, "h264", [
122
+ "-c:v", "libx264", "-preset", "slow", "-tune", "stillimage", "-profile:v", "baseline", "-level", "3.1", "-pix_fmt", "yuv420p",
123
+ "-crf", "18"
124
+ ], size);
125
+ // Generate the HEVC variant when the GPU supports HEVC hardware encoding. The libx265 encoder does not support the -tune stillimage option (libx264-specific), so
126
+ // we omit it. The -tag:v hvc1 flag ensures the output uses the hvc1 box type (matching Chrome's MediaRecorder HEVC output) rather than libx265's default hev1.
127
+ if (getGpuCapabilities()?.hevcHardwareEncoding === true) {
128
+ await generateVariant(ffmpegBin, "hevc", [
129
+ "-c:v", "libx265", "-preset", "slow", "-profile:v", "main", "-pix_fmt", "yuv420p",
130
+ "-crf", "18", "-tag:v", "hvc1"
131
+ ], size);
132
+ }
133
+ }
134
+ /**
135
+ * Generates a single preroll variant (H.264 or HEVC) and stores it in the variant cache. Constructs the FFmpeg argument list from shared parameters (input sources,
136
+ * duration, GOP size, audio codec, fMP4 output flags) combined with the codec-specific video encoder arguments.
137
+ * @param ffmpegBin - Path to the FFmpeg executable.
138
+ * @param codec - The codec label for this variant.
139
+ * @param videoArgs - Codec-specific FFmpeg arguments for the video encoder (e.g., "-c:v libx264 -preset slow ...").
140
+ * @param size - The output resolution as "WxH".
141
+ */
142
+ async function generateVariant(ffmpegBin, codec, videoArgs, size) {
100
143
  const args = [
101
- "-hide_banner", "-loglevel", "warning",
144
+ "-hide_banner", "-nostats", "-loglevel", "warning",
102
145
  "-f", "lavfi", "-i", "color=black:size=" + size + ":rate=30:duration=" + String(PREROLL_TOTAL_DURATION),
103
146
  "-f", "lavfi", "-i", "anullsrc=r=48000:cl=stereo",
104
147
  "-t", String(PREROLL_TOTAL_DURATION),
105
- "-c:v", "libx264", "-preset", "slow", "-tune", "stillimage", "-profile:v", "baseline", "-level", "3.1", "-pix_fmt", "yuv420p",
106
- "-crf", "18",
148
+ ...videoArgs,
107
149
  "-g", "60",
108
150
  "-c:a", "aac", "-b:a", "128000",
109
151
  "-f", "mp4",
@@ -112,20 +154,19 @@ export async function generatePreroll() {
112
154
  "pipe:1"
113
155
  ];
114
156
  try {
115
- const output = await spawnAndCollect(ffmpegPath, args);
116
- splitPrerollBuffers(output);
117
- const init = prerollInitSegment;
118
- if (init && (prerollMediaSegments.length > 0)) {
119
- const totalSize = prerollMediaSegments.reduce((sum, seg) => sum + seg.length, 0);
120
- LOG.debug("streaming:preroll", "Preroll ready: %d segments, init=%d bytes, media=%d bytes total.", prerollMediaSegments.length, init.length, totalSize);
157
+ const output = await spawnAndCollect(ffmpegBin, args);
158
+ const variant = splitPrerollBuffers(output);
159
+ if (variant && (variant.mediaSegments.length > 0)) {
160
+ prerollVariants.set(codec, variant);
161
+ const totalSize = variant.mediaSegments.reduce((sum, seg) => sum + seg.length, 0);
162
+ LOG.debug("streaming:preroll", "Preroll %s ready: %d segments, init=%d bytes, media=%d bytes total.", codec, variant.mediaSegments.length, variant.initSegment.length, totalSize);
121
163
  }
122
164
  else {
123
- LOG.warn("Preroll generation produced incomplete output — startup playlists will have no segments.");
124
- return;
165
+ LOG.warn("Preroll %s generation produced incomplete output.", codec);
125
166
  }
126
167
  }
127
168
  catch (error) {
128
- LOG.warn("Preroll generation failed: %s.", error instanceof Error ? error.message : String(error));
169
+ LOG.warn("Preroll %s generation failed: %s.", codec, error instanceof Error ? error.message : String(error));
129
170
  }
130
171
  }
131
172
  // Internal Helpers.
@@ -170,9 +211,12 @@ async function spawnAndCollect(ffmpegBin, args) {
170
211
  * segment's EXTINF duration.
171
212
  *
172
213
  * @param data - The complete fMP4 output from FFmpeg.
214
+ * @returns The parsed variant, or null if the output was incomplete.
173
215
  */
174
216
  function splitPrerollBuffers(data) {
175
217
  const initBoxes = [];
218
+ const mediaSegments = [];
219
+ const durations = [];
176
220
  let moovBox = null;
177
221
  // Accumulator for the current moof+mdat pair. A segment is finalized when the mdat following a moof arrives.
178
222
  let pendingMoof = null;
@@ -190,20 +234,21 @@ function splitPrerollBuffers(data) {
190
234
  else if (box.type === "mdat") {
191
235
  // Finalize the current segment by combining the pending moof with this mdat.
192
236
  if (pendingMoof) {
193
- prerollMediaSegments.push(Buffer.concat([pendingMoof, box.data]));
237
+ mediaSegments.push(Buffer.concat([pendingMoof, box.data]));
194
238
  pendingMoof = null;
195
239
  }
196
240
  }
197
241
  });
198
242
  parser.push(data);
199
243
  parser.flush();
200
- if (initBoxes.length > 0) {
201
- prerollInitSegment = Buffer.concat(initBoxes);
244
+ if (initBoxes.length === 0) {
245
+ return null;
202
246
  }
247
+ const initSegment = Buffer.concat(initBoxes);
203
248
  // Extract per-segment durations from the moov timescales and moof trun sample durations. The moov provides the timescale for converting raw sample durations to
204
249
  // seconds. Each moof's traf/trun boxes contain the accumulated sample durations for that fragment.
205
250
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- moovBox is set inside the parser callback; TS can't track closure mutations.
206
- if (moovBox && (prerollMediaSegments.length > 0)) {
251
+ if (moovBox && (mediaSegments.length > 0)) {
207
252
  const trackInfoMap = parseMoovTrackInfo(moovBox);
208
253
  // Build a timescale lookup from trackId to timescale.
209
254
  const timescales = new Map();
@@ -213,10 +258,10 @@ function splitPrerollBuffers(data) {
213
258
  // Extract duration from each segment's moof box. The offsetMoofTimestamps function with an empty offset map acts as a pure reader — it returns per-track
214
259
  // durations without modifying the buffer (it writes back the same tfdt values it read since the offset is 0). A fresh map is created per segment to prevent
215
260
  // state accumulation across iterations.
216
- for (const segment of prerollMediaSegments) {
261
+ for (const segment of mediaSegments) {
217
262
  // The segment buffer is moof+mdat concatenated. The moof is the first box — parse it to find its size.
218
263
  if (segment.length < 8) {
219
- prerollSegmentDurations.push(2);
264
+ durations.push(2);
220
265
  continue;
221
266
  }
222
267
  const moofSize = segment.readUInt32BE(0);
@@ -234,9 +279,10 @@ function splitPrerollBuffers(data) {
234
279
  }
235
280
  }
236
281
  // Fall back to 2 seconds if duration extraction failed (shouldn't happen with well-formed FFmpeg output).
237
- prerollSegmentDurations.push(maxDurationSec > 0 ? maxDurationSec : 2);
282
+ durations.push(maxDurationSec > 0 ? maxDurationSec : 2);
238
283
  }
239
284
  }
285
+ return { durations, initSegment, mediaSegments };
240
286
  }
241
287
  // Preroll Compositor.
242
288
  // Maximum number of preroll entries allowed in a composite playlist window. When the composite playlist first appears, the client may be mid-stream in the progressive
@@ -268,8 +314,8 @@ export function buildPrerollEntries(options) {
268
314
  const entries = [];
269
315
  for (let i = options.startIndex; i < options.prerollSegmentCount; i++) {
270
316
  entries.push({
271
- duration: getPrerollSegmentDuration(i),
272
- url: options.baseUrl + "/preroll/segment" + String(i) + options.extension
317
+ duration: getPrerollSegmentDuration(options.codec, i),
318
+ url: options.baseUrl + "/preroll/" + options.codec + "/segment" + String(i) + options.extension
273
319
  });
274
320
  }
275
321
  return entries;
@@ -279,22 +325,27 @@ export function buildPrerollEntries(options) {
279
325
  * is revealed immediately so the client has enough content to begin playback per the HLS 3-from-end rule. Additional segments are revealed one at a time as wall-clock
280
326
  * time passes — each new segment appears when enough time has elapsed for the client to have consumed the prior content beyond the initial window.
281
327
  *
328
+ * @param codec - The preroll codec variant.
282
329
  * @param prerollStartTime - Wall-clock time when the preroll began.
283
330
  * @returns The number of preroll segments to reveal.
284
331
  */
285
- export function computeProgressiveReveal(prerollStartTime) {
286
- const totalSegments = prerollMediaSegments.length;
332
+ export function computeProgressiveReveal(codec, prerollStartTime) {
333
+ const variant = prerollVariants.get(codec);
334
+ if (!variant) {
335
+ return 0;
336
+ }
337
+ const totalSegments = variant.mediaSegments.length;
287
338
  const elapsedSec = (Date.now() - prerollStartTime.getTime()) / 1000;
288
339
  let revealCount = Math.min(PREROLL_INITIAL_WINDOW, totalSegments);
289
340
  // Compute the total duration of the initial window. Segments beyond this threshold are revealed progressively — each one becomes visible when elapsed time
290
341
  // exceeds the cumulative duration of all segments before it, minus the initial window's duration (since those were available from the start).
291
342
  let initialWindowDuration = 0;
292
343
  for (let i = 0; i < Math.min(PREROLL_INITIAL_WINDOW, totalSegments); i++) {
293
- initialWindowDuration += prerollSegmentDurations[i] ?? 2;
344
+ initialWindowDuration += variant.durations[i] ?? 2;
294
345
  }
295
346
  let cumulativeDuration = initialWindowDuration;
296
347
  for (let i = PREROLL_INITIAL_WINDOW; i < totalSegments; i++) {
297
- cumulativeDuration += prerollSegmentDurations[i] ?? 2;
348
+ cumulativeDuration += variant.durations[i] ?? 2;
298
349
  if (elapsedSec < (cumulativeDuration - initialWindowDuration)) {
299
350
  break;
300
351
  }
@@ -304,11 +355,12 @@ export function computeProgressiveReveal(prerollStartTime) {
304
355
  }
305
356
  // Playlist Generation.
306
357
  /**
307
- * Generates a progressive HLS playlist referencing the global preroll segments. The playlist simulates a live stream by revealing segments based on elapsed wall-clock
308
- * time since the preroll started. On each client poll, more segments become visible — the client sees new content appear and keeps playing without stalling.
358
+ * Generates a progressive HLS playlist referencing the global preroll segments for the specified codec. The playlist simulates a live stream by revealing segments
359
+ * based on elapsed wall-clock time since the preroll started. On each client poll, more segments become visible — the client sees new content appear and keeps playing
360
+ * without stalling.
309
361
  *
310
- * The playlist uses absolute URLs because preroll segments are served at global routes (/preroll/*) while the playlist itself is served under /hls/:name/. Without
311
- * absolute URLs, the client would request /hls/:name/preroll/segment0.m4s which does not exist. The playlist omits #EXT-X-ENDLIST so it behaves as a live playlist —
362
+ * The playlist uses absolute URLs because preroll segments are served at global routes (/preroll/:codec/*) while the playlist itself is served under /hls/:name/.
363
+ * Without absolute URLs, the client would request /hls/:name/preroll/... which does not exist. The playlist omits #EXT-X-ENDLIST so it behaves as a live playlist —
312
364
  * the client polls for updates and receives the real content playlist when ready.
313
365
  *
314
366
  * PROGRAM-DATE-TIME is intentionally omitted from the preroll playlist. Preroll is synthetic placeholder content — assigning it wall-clock timestamps would be
@@ -316,44 +368,53 @@ export function computeProgressiveReveal(prerollStartTime) {
316
368
  * seconds of content but real content typically arrives in ~15 seconds). PDT is emitted only on real segments once the segmenter produces them.
317
369
  *
318
370
  * @param baseUrl - The server's external URL (e.g., "http://192.168.1.100:5589").
371
+ * @param codec - The preroll codec variant.
319
372
  * @param startingSequence - The MEDIA-SEQUENCE offset. Zero for fresh starts. For resume streams, this is set to the saved segment index so the preroll
320
373
  * playlist continues from the prior session's sequence range rather than restarting at 0.
321
374
  * @param prerollStartTime - Wall-clock time when the preroll began. Used to compute elapsed time and determine how many segments to reveal.
322
375
  * @returns The complete HLS playlist string, or an empty string if the preroll is not ready.
323
376
  */
324
- export function generatePrerollPlaylist(baseUrl, startingSequence, prerollStartTime) {
325
- if (!isPrerollReady()) {
377
+ export function generatePrerollPlaylist(baseUrl, codec, startingSequence, prerollStartTime) {
378
+ if (!isPrerollReady(codec)) {
326
379
  return "";
327
380
  }
328
- const revealCount = computeProgressiveReveal(prerollStartTime);
329
- const entries = buildPrerollEntries({ baseUrl, extension: ".m4s", prerollSegmentCount: revealCount, startIndex: 0 });
381
+ const revealCount = computeProgressiveReveal(codec, prerollStartTime);
382
+ const entries = buildPrerollEntries({ baseUrl, codec, extension: ".m4s", prerollSegmentCount: revealCount, startIndex: 0 });
330
383
  return buildPlaylist({
331
- initialMapUri: baseUrl + "/preroll/init.mp4",
384
+ initialMapUri: baseUrl + "/preroll/" + codec + "/init.mp4",
332
385
  mediaSequence: startingSequence,
333
- targetDuration: getPrerollMaxDuration(),
386
+ targetDuration: getPrerollMaxDuration(codec),
334
387
  version: 7
335
388
  }, entries);
336
389
  }
337
390
  // Route Setup.
338
391
  /**
339
- * Registers the preroll segment routes on the Express application. These serve the cached preroll buffers with immutable cache headers since the content never
340
- * changes after generation.
392
+ * Registers the preroll segment routes on the Express application. Routes are codec-prefixed (/preroll/:codec/init.mp4 and /preroll/:codec/segmentN.m4s) so each
393
+ * variant is served at a distinct path. The cached preroll buffers are served with immutable cache headers since the content never changes after generation.
341
394
  * @param app - The Express application.
342
395
  */
343
396
  export function setupPrerollRoutes(app) {
344
- app.get("/preroll/init.mp4", (_req, res) => {
345
- if (!prerollInitSegment) {
397
+ app.get("/preroll/:codec/init.mp4", (req, res) => {
398
+ const codec = req.params.codec;
399
+ const variant = ((codec === "h264") || (codec === "hevc")) ? prerollVariants.get(codec) : undefined;
400
+ if (!variant) {
346
401
  res.status(404).send("Preroll not available.");
347
402
  return;
348
403
  }
349
404
  res.setHeader("Cache-Control", "public, max-age=86400");
350
405
  res.setHeader("Content-Type", "video/mp4");
351
- res.send(prerollInitSegment);
406
+ res.send(variant.initSegment);
352
407
  });
353
408
  // Parameterized route serves individual preroll segment buffers. Each segment contains a distinct moof+mdat pair with unique PTS values from the continuous FFmpeg
354
409
  // output. The init.mp4 exact route above takes priority over this catch-all for init segment requests.
355
- app.get("/preroll/:segment", (req, res) => {
356
- // Extract the segment index from the filename (e.g., "segment5.m4s" → 5).
410
+ app.get("/preroll/:codec/:segment", (req, res) => {
411
+ const codec = req.params.codec;
412
+ const variant = ((codec === "h264") || (codec === "hevc")) ? prerollVariants.get(codec) : undefined;
413
+ if (!variant) {
414
+ res.status(404).send("Preroll not available.");
415
+ return;
416
+ }
417
+ // Extract the segment index from the filename (e.g., "segment5.m4s" -> 5).
357
418
  const segmentParam = req.params.segment;
358
419
  const match = (typeof segmentParam === "string") ? /^segment(\d+)\.m4s$/.exec(segmentParam) : null;
359
420
  if (!match) {
@@ -361,13 +422,13 @@ export function setupPrerollRoutes(app) {
361
422
  return;
362
423
  }
363
424
  const index = parseInt(match[1], 10);
364
- if ((index < 0) || (index >= prerollMediaSegments.length)) {
425
+ if ((index < 0) || (index >= variant.mediaSegments.length)) {
365
426
  res.status(404).send("Preroll segment not found.");
366
427
  return;
367
428
  }
368
429
  res.setHeader("Cache-Control", "public, max-age=86400");
369
430
  res.setHeader("Content-Type", "video/mp4");
370
- res.send(prerollMediaSegments[index]);
431
+ res.send(variant.mediaSegments[index]);
371
432
  });
372
433
  }
373
434
  //# sourceMappingURL=preroll.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preroll.js","sourceRoot":"","sources":["../../src/streaming/preroll.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;;;;;;;GASG;AAEH,mKAAmK;AACnK,mKAAmK;AACnK,iBAAiB;AACjB,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC,qKAAqK;AACrK,iHAAiH;AACjH,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,6EAA6E;AAC7E,IAAI,kBAAkB,GAAqB,IAAI,CAAC;AAEhD,iKAAiK;AACjK,mHAAmH;AACnH,MAAM,oBAAoB,GAAa,EAAE,CAAC;AAE1C,iKAAiK;AACjK,MAAM,uBAAuB,GAAa,EAAE,CAAC;AAE7C,oBAAoB;AAEpB;;GAEG;AACH,MAAM,UAAU,cAAc;IAE5B,OAAO,CAAC,kBAAkB,KAAK,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IAEpC,OAAO,oBAAoB,CAAC,MAAM,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAa;IAErD,OAAO,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B;IAExC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAI,MAAM,QAAQ,IAAI,uBAAuB,EAAE,CAAC;QAE9C,KAAK,IAAI,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IAEnC,IAAG,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAExC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,KAAI,MAAM,QAAQ,IAAI,uBAAuB,EAAE,CAAC;QAE9C,IAAG,QAAQ,GAAG,GAAG,EAAE,CAAC;YAElB,GAAG,GAAG,QAAQ,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,sBAAsB;AAEtB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IAEnC,MAAM,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAE7C,IAAG,CAAC,UAAU,EAAE,CAAC;QAEf,GAAG,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;QAE3G,OAAO;IACT,CAAC;IAED,8JAA8J;IAC9J,8JAA8J;IAC9J,gGAAgG;IAChG,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEpE,MAAM,IAAI,GAAG;QACX,cAAc,EAAE,WAAW,EAAE,SAAS;QACtC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI,GAAG,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC;QACvG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,4BAA4B;QACjD,IAAI,EAAE,MAAM,CAAC,sBAAsB,CAAC;QACpC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS;QAC7H,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ;QAC/B,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,mEAAmE;QAChF,gBAAgB,EAAE,GAAG;QACrB,QAAQ;KACT,CAAC;IAEF,IAAI,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEvD,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAE5B,MAAM,IAAI,GAAG,kBAAkB,CAAC;QAEhC,IAAG,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YAE7C,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAEjF,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,kEAAkE,EAAE,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC1J,CAAC;aAAM,CAAC;YAEN,GAAG,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;YAErG,OAAO;QACT,CAAC;IACH,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrG,CAAC;AACH,CAAC;AAED,oBAAoB;AAEpB;;;;;;GAMG;AACH,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,IAAc;IAE9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAErC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAE,EAAE,CAAC,CAAC;QAE/E,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAEzC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YAExC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YAEvC,IAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAEtB,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAE3B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAEzB,IAAG,IAAI,KAAK,CAAC,EAAE,CAAC;gBAEd,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBAEnE,OAAO;YACT,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,mBAAmB,CAAC,IAAY;IAEvC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,OAAO,GAAqB,IAAI,CAAC;IAErC,6GAA6G;IAC7G,IAAI,WAAW,GAAqB,IAAI,CAAC;IAEzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,GAAG,EAAE,EAAE;QAExC,IAAG,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC;YAElD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEzB,IAAG,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAEvB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;aAAM,IAAG,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAE9B,2IAA2I;YAC3I,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;QACzB,CAAC;aAAM,IAAG,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAE9B,6EAA6E;YAC7E,IAAG,WAAW,EAAE,CAAC;gBAEf,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAE,WAAW,EAAE,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC;gBACpE,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,IAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAExB,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,gKAAgK;IAChK,mGAAmG;IACnG,uJAAuJ;IACvJ,IAAG,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAEhD,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEjD,sDAAsD;QACtD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE7C,KAAI,MAAM,CAAE,OAAO,EAAE,IAAI,CAAE,IAAI,YAAY,EAAE,CAAC;YAE5C,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;QAED,yJAAyJ;QACzJ,4JAA4J;QAC5J,wCAAwC;QACxC,KAAI,MAAM,OAAO,IAAI,oBAAoB,EAAE,CAAC;YAE1C,uGAAuG;YACvG,IAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAEtB,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEhC,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAE/C,oGAAoG;YACpG,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAkB,CAAC,CAAC;YAE/E,IAAI,cAAc,GAAG,CAAC,CAAC;YAEvB,KAAI,MAAM,CAAE,OAAO,EAAE,MAAM,CAAE,IAAI,YAAY,EAAE,CAAC;gBAE9C,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAE1C,IAAG,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC;oBAEvC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;oBAEpD,IAAG,OAAO,GAAG,cAAc,EAAE,CAAC;wBAE5B,cAAc,GAAG,OAAO,CAAC;oBAC3B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,0GAA0G;YAC1G,uBAAuB,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;AACH,CAAC;AAED,sBAAsB;AAEtB,uKAAuK;AACvK,qKAAqK;AACrK,wGAAwG;AACxG,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAoBhC;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA6B;IAEhE,MAAM,cAAc,GAAG,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAEjE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,mBAAmB,GAAG,UAAU,EAAE,OAAO,CAAC,mBAAmB,GAAG,qBAAqB,CAAC,CAAC;AACpH,CAAC;AAoBD;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA4B;IAE9D,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,KAAI,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE,CAAC;QAErE,OAAO,CAAC,IAAI,CAAC;YAEX,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC;YACtC,GAAG,EAAE,OAAO,CAAC,OAAO,GAAG,kBAAkB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,gBAAsB;IAE7D,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC;IAClD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAEpE,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;IAElE,2JAA2J;IAC3J,8IAA8I;IAC9I,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAE9B,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAExE,qBAAqB,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,kBAAkB,GAAG,qBAAqB,CAAC;IAE/C,KAAI,IAAI,CAAC,GAAG,sBAAsB,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QAE3D,kBAAkB,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEtD,IAAG,UAAU,GAAG,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,EAAE,CAAC;YAE7D,MAAM;QACR,CAAC;QAED,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,uBAAuB;AAEvB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,gBAAwB,EAAE,gBAAsB;IAEvG,IAAG,CAAC,cAAc,EAAE,EAAE,CAAC;QAErB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IAErH,OAAO,aAAa,CAAC;QAEnB,aAAa,EAAE,OAAO,GAAG,mBAAmB;QAC5C,aAAa,EAAE,gBAAgB;QAC/B,cAAc,EAAE,qBAAqB,EAAE;QACvC,OAAO,EAAE,CAAC;KACX,EAAE,OAAO,CAAC,CAAC;AACd,CAAC;AAED,eAAe;AAEf;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAE7C,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QAE5D,IAAG,CAAC,kBAAkB,EAAE,CAAC;YAEvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAE/C,OAAO;QACT,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC;QACxD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,mKAAmK;IACnK,uGAAuG;IACvG,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QAE3D,0EAA0E;QAC1E,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;QACxC,MAAM,KAAK,GAAG,CAAC,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEnG,IAAG,CAAC,KAAK,EAAE,CAAC;YAEV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAE/C,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAErC,IAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YAEzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAEnD,OAAO;QACT,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC;QACxD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"preroll.js","sourceRoot":"","sources":["../../src/streaming/preroll.ts"],"names":[],"mappings":"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"}
@@ -70,12 +70,6 @@ export declare function recordRecoveryAttempt(metrics: RecoveryMetrics, method:
70
70
  * @param method - The recovery method that succeeded.
71
71
  */
72
72
  export declare function recordRecoverySuccess(metrics: RecoveryMetrics, method: string): void;
73
- /**
74
- * Capitalizes the first letter of a string.
75
- * @param str - The string to capitalize.
76
- * @returns The string with the first letter capitalized.
77
- */
78
- export declare function capitalize(str: string): string;
79
73
  /**
80
74
  * Formats the recovery metrics summary for the termination log. Uses the SUCCESS_FIELDS mapping to iterate over all recovery methods, eliminating hardcoded
81
75
  * checks for each method type. This ensures new recovery methods are automatically included in the summary.
@@ -151,14 +151,6 @@ export function recordRecoverySuccess(metrics, method) {
151
151
  metrics.currentRecoveryStartTime = null;
152
152
  metrics.currentRecoveryMethod = null;
153
153
  }
154
- /**
155
- * Capitalizes the first letter of a string.
156
- * @param str - The string to capitalize.
157
- * @returns The string with the first letter capitalized.
158
- */
159
- export function capitalize(str) {
160
- return str.charAt(0).toUpperCase() + str.slice(1);
161
- }
162
154
  /**
163
155
  * Formats the recovery metrics summary for the termination log. Uses the SUCCESS_FIELDS mapping to iterate over all recovery methods, eliminating hardcoded
164
156
  * checks for each method type. This ensures new recovery methods are automatically included in the summary.
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/streaming/recovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/streaming/recovery.ts"],"names":[],"mappings":"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"}