@editframe/assets 0.49.5 → 0.49.7

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.
@@ -1,11 +1,11 @@
1
1
  const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
2
  const require_Probe = require("./Probe.cjs");
3
3
  let node_fs = require("node:fs");
4
+ let node_fs_promises = require("node:fs/promises");
4
5
  let debug = require("debug");
5
6
  debug = require_runtime.__toESM(debug);
6
7
  let node_stream = require("node:stream");
7
8
  let node_stream_promises = require("node:stream/promises");
8
- let node_fs_promises = require("node:fs/promises");
9
9
  let node_os = require("node:os");
10
10
  let node_path = require("node:path");
11
11
  let node_crypto = require("node:crypto");
@@ -1,9 +1,9 @@
1
1
  import { PacketProbe } from "./Probe.js";
2
2
  import { createWriteStream } from "node:fs";
3
+ import { unlink } from "node:fs/promises";
3
4
  import debug from "debug";
4
5
  import { Transform, Writable } from "node:stream";
5
6
  import { pipeline } from "node:stream/promises";
6
- import { unlink } from "node:fs/promises";
7
7
  import { tmpdir } from "node:os";
8
8
  import { join } from "node:path";
9
9
  import { randomBytes } from "node:crypto";
@@ -1,8 +1,8 @@
1
1
  const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
2
  const require_Probe = require("./Probe.cjs");
3
+ let node_fs_promises = require("node:fs/promises");
3
4
  let debug = require("debug");
4
5
  debug = require_runtime.__toESM(debug);
5
- let node_fs_promises = require("node:fs/promises");
6
6
  //#region src/generateWebmSegmentIndex.ts
7
7
  /**
8
8
  * WebM / Matroska segment index generator.
@@ -183,11 +183,9 @@ function parseWebmStructure(buf) {
183
183
  * More reliable than parsing SimpleBlock flags in-process for large files.
184
184
  */
185
185
  async function annotateKeyframes(clusters, absolutePath) {
186
- const keyframePositions = (await require_Probe.PacketProbe.probePath(absolutePath)).packets.filter((p) => p.flags?.includes("K") && p.pos !== void 0).map((p) => p.pos);
187
- for (const cluster of clusters) {
188
- const clusterEnd = cluster.offset + cluster.size;
189
- cluster.hasKeyframe = keyframePositions.some((pos) => pos >= cluster.offset && pos < clusterEnd);
190
- }
186
+ const probe = await require_Probe.PacketProbe.probePath(absolutePath);
187
+ const keyframeTimesMs = new Set(probe.packets.filter((p) => p.flags?.includes("K") && p.pts_time !== void 0).map((p) => Math.round(parseFloat(String(p.pts_time)) * 1e3)));
188
+ for (const cluster of clusters) cluster.hasKeyframe = keyframeTimesMs.has(cluster.timestampMs);
191
189
  }
192
190
  function buildSegments(clusters, timescale, totalDurationMs) {
193
191
  const segments = [];
@@ -243,8 +241,18 @@ async function generateWebmSegmentIndex(absolutePath, startTimeOffsetMs) {
243
241
  const lastCluster = clusters[clusters.length - 1];
244
242
  let finalDurationMs = lastCluster.timestampMs + lastCluster.size / 4096;
245
243
  try {
246
- const videoStream = (await require_Probe.PacketProbe.probePath(absolutePath)).data?.streams?.find((s) => s.codec_type === "video");
244
+ const probe = await require_Probe.PacketProbe.probePath(absolutePath);
245
+ const videoStream = probe.data?.streams?.find((s) => s.codec_type === "video");
247
246
  if (videoStream?.duration) finalDurationMs = Math.round(parseFloat(videoStream.duration) * 1e3);
247
+ else {
248
+ const videoPackets = probe.packets?.filter((p) => p.stream_index === 0);
249
+ if (videoPackets && videoPackets.length > 0) {
250
+ const lastPkt = videoPackets[videoPackets.length - 1];
251
+ const ptsMs = Math.round(parseFloat(String(lastPkt.pts_time ?? 0)) * 1e3);
252
+ const durMs = Math.round(parseFloat(String(lastPkt.duration_time ?? 0)) * 1e3);
253
+ if (ptsMs + durMs > 0) finalDurationMs = ptsMs + durMs;
254
+ }
255
+ }
248
256
  } catch {}
249
257
  log(`Total duration: ${finalDurationMs}ms`);
250
258
  const segments = buildSegments(clusters, timescale, finalDurationMs);
@@ -278,8 +286,83 @@ async function generateWebmSegmentIndex(absolutePath, startTimeOffsetMs) {
278
286
  return { 1: trackIndex };
279
287
  }
280
288
  const ID_SEEKHEAD = 290298740;
289
+ const ID_TRACKS = 374648427;
290
+ const ID_TRACK_ENTRY = 174;
291
+ const ID_VIDEO = 224;
292
+ const ID_COLOUR = 21936;
281
293
  const EBML_VOID_ID = 236;
282
294
  /**
295
+ * Encode a Void element header (id + size VINT) such that the entire
296
+ * element occupies exactly `totalBytes` bytes. Returns the [id, ...vintBytes]
297
+ * prefix; the caller fills the remaining `totalBytes - prefix.length` with zeros.
298
+ */
299
+ function encodeVoidHeader(totalBytes) {
300
+ const c1 = totalBytes - 2;
301
+ if (c1 >= 0 && c1 <= 126) return [EBML_VOID_ID, 128 | c1];
302
+ const c2 = totalBytes - 3;
303
+ if (c2 >= 0 && c2 <= 16382) return [
304
+ EBML_VOID_ID,
305
+ 64 | c2 >> 8,
306
+ c2 & 255
307
+ ];
308
+ const c3 = totalBytes - 4;
309
+ return [
310
+ EBML_VOID_ID,
311
+ 32 | c3 >> 16,
312
+ c3 >> 8 & 255,
313
+ c3 & 255
314
+ ];
315
+ }
316
+ /**
317
+ * Replace the Colour element inside the video TrackEntry with an EBML Void
318
+ * of identical byte length. We do this because ffmpeg's matroska muxer always
319
+ * emits a Colour element with `MatrixCoefficients=bt470bg, Range=full` derived
320
+ * from `format=yuva420p` filter output, but the actual VP9 bitstream encodes
321
+ * `color_space=BT.601` — the mismatch causes Chrome's WebCodecs VideoDecoder
322
+ * to silently drop every delta frame after the keyframe (issue surfaces as
323
+ * "only 1 sample emitted from a 49-frame segment"). With no Colour element
324
+ * mediabunny passes `colorSpace: undefined` to the decoder and Chrome decodes
325
+ * normally.
326
+ */
327
+ function stripColourElement(buf, tracksStart, tracksEnd) {
328
+ let pos = tracksStart;
329
+ while (pos < tracksEnd) {
330
+ const { id: childId, width: childIdW } = readElementId(buf, pos);
331
+ const { value: childSize, width: childSizeW } = readVintSize(buf, pos + childIdW);
332
+ if (childSize === null) return;
333
+ const childContentStart = pos + childIdW + childSizeW;
334
+ const childEnd = childContentStart + childSize;
335
+ if (childId === ID_TRACK_ENTRY) {
336
+ let tepos = childContentStart;
337
+ while (tepos < childEnd) {
338
+ const { id: teid, width: teidW } = readElementId(buf, tepos);
339
+ const { value: tesize, width: tesizeW } = readVintSize(buf, tepos + teidW);
340
+ if (tesize === null) break;
341
+ const teContentStart = tepos + teidW + tesizeW;
342
+ const teEnd = teContentStart + tesize;
343
+ if (teid === ID_VIDEO) {
344
+ let vpos = teContentStart;
345
+ while (vpos < teEnd) {
346
+ const { id: vid, width: vidW } = readElementId(buf, vpos);
347
+ const { value: vsize, width: vsizeW } = readVintSize(buf, vpos + vidW);
348
+ if (vsize === null) break;
349
+ const totalElementSize = vidW + vsizeW + vsize;
350
+ if (vid === ID_COLOUR) {
351
+ const header = encodeVoidHeader(totalElementSize);
352
+ for (let i = 0; i < header.length; i++) buf[vpos + i] = header[i];
353
+ buf.fill(0, vpos + header.length, vpos + totalElementSize);
354
+ return;
355
+ }
356
+ vpos += totalElementSize;
357
+ }
358
+ }
359
+ tepos = teContentStart + tesize;
360
+ }
361
+ }
362
+ pos = childContentStart + childSize;
363
+ }
364
+ }
365
+ /**
283
366
  * Patch a WebM buffer in-place to make it safe for partial (segment-sliced) serving:
284
367
  *
285
368
  * 1. Segment-element size VINT → EBML unknown-size (0x01FFFFFFFFFFFFFF).
@@ -291,7 +374,10 @@ const EBML_VOID_ID = 236;
291
374
  * falls off the end of the buffer, causing seek errors and de-sync. Replacing
292
375
  * it with a Void element forces linear parsing: EBML → Info → Tracks → Clusters.
293
376
  *
294
- * Both patches are applied to a Buffer copy; the source file on disk is not modified.
377
+ * 3. Colour element inside Video TrackEntry EBML Void of the same byte length.
378
+ * See stripColourElement() for rationale.
379
+ *
380
+ * All patches are applied to a Buffer copy; the source file on disk is not modified.
295
381
  */
296
382
  function patchWebmForSegmentedServing(buf) {
297
383
  try {
@@ -322,18 +408,12 @@ function patchWebmForSegmentedServing(buf) {
322
408
  if (childSize === null) break;
323
409
  const totalElementSize = childIdWidth + childSizeWidth + childSize;
324
410
  if (childId === ID_SEEKHEAD) {
325
- const voidContentSize = totalElementSize - 1;
326
- let vintBytes;
327
- if (voidContentSize <= 126) vintBytes = [128 | voidContentSize];
328
- else if (voidContentSize <= 16382) vintBytes = [64 | voidContentSize >> 8, voidContentSize & 255];
329
- else vintBytes = [
330
- 32 | voidContentSize >> 16,
331
- voidContentSize >> 8 & 255,
332
- voidContentSize & 255
333
- ];
334
- buf[pos] = EBML_VOID_ID;
335
- for (let i = 0; i < vintBytes.length; i++) buf[pos + 1 + i] = vintBytes[i];
336
- buf.fill(0, pos + 1 + vintBytes.length, pos + totalElementSize);
411
+ const header = encodeVoidHeader(totalElementSize);
412
+ for (let i = 0; i < header.length; i++) buf[pos + i] = header[i];
413
+ buf.fill(0, pos + header.length, pos + totalElementSize);
414
+ } else if (childId === ID_TRACKS) {
415
+ const tracksStart = pos + childIdWidth + childSizeWidth;
416
+ stripColourElement(buf, tracksStart, tracksStart + childSize);
337
417
  break;
338
418
  }
339
419
  pos += totalElementSize;
@@ -1 +1 @@
1
- {"version":3,"file":"generateWebmSegmentIndex.cjs","names":["PacketProbe"],"sources":["../src/generateWebmSegmentIndex.ts"],"mappings":"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"}
1
+ {"version":3,"file":"generateWebmSegmentIndex.cjs","names":["PacketProbe"],"sources":["../src/generateWebmSegmentIndex.ts"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { PacketProbe } from "./Probe.js";
2
- import debug from "debug";
3
2
  import { readFile } from "node:fs/promises";
3
+ import debug from "debug";
4
4
  //#region src/generateWebmSegmentIndex.ts
5
5
  /**
6
6
  * WebM / Matroska segment index generator.
@@ -181,11 +181,9 @@ function parseWebmStructure(buf) {
181
181
  * More reliable than parsing SimpleBlock flags in-process for large files.
182
182
  */
183
183
  async function annotateKeyframes(clusters, absolutePath) {
184
- const keyframePositions = (await PacketProbe.probePath(absolutePath)).packets.filter((p) => p.flags?.includes("K") && p.pos !== void 0).map((p) => p.pos);
185
- for (const cluster of clusters) {
186
- const clusterEnd = cluster.offset + cluster.size;
187
- cluster.hasKeyframe = keyframePositions.some((pos) => pos >= cluster.offset && pos < clusterEnd);
188
- }
184
+ const probe = await PacketProbe.probePath(absolutePath);
185
+ const keyframeTimesMs = new Set(probe.packets.filter((p) => p.flags?.includes("K") && p.pts_time !== void 0).map((p) => Math.round(parseFloat(String(p.pts_time)) * 1e3)));
186
+ for (const cluster of clusters) cluster.hasKeyframe = keyframeTimesMs.has(cluster.timestampMs);
189
187
  }
190
188
  function buildSegments(clusters, timescale, totalDurationMs) {
191
189
  const segments = [];
@@ -241,8 +239,18 @@ async function generateWebmSegmentIndex(absolutePath, startTimeOffsetMs) {
241
239
  const lastCluster = clusters[clusters.length - 1];
242
240
  let finalDurationMs = lastCluster.timestampMs + lastCluster.size / 4096;
243
241
  try {
244
- const videoStream = (await PacketProbe.probePath(absolutePath)).data?.streams?.find((s) => s.codec_type === "video");
242
+ const probe = await PacketProbe.probePath(absolutePath);
243
+ const videoStream = probe.data?.streams?.find((s) => s.codec_type === "video");
245
244
  if (videoStream?.duration) finalDurationMs = Math.round(parseFloat(videoStream.duration) * 1e3);
245
+ else {
246
+ const videoPackets = probe.packets?.filter((p) => p.stream_index === 0);
247
+ if (videoPackets && videoPackets.length > 0) {
248
+ const lastPkt = videoPackets[videoPackets.length - 1];
249
+ const ptsMs = Math.round(parseFloat(String(lastPkt.pts_time ?? 0)) * 1e3);
250
+ const durMs = Math.round(parseFloat(String(lastPkt.duration_time ?? 0)) * 1e3);
251
+ if (ptsMs + durMs > 0) finalDurationMs = ptsMs + durMs;
252
+ }
253
+ }
246
254
  } catch {}
247
255
  log(`Total duration: ${finalDurationMs}ms`);
248
256
  const segments = buildSegments(clusters, timescale, finalDurationMs);
@@ -276,8 +284,83 @@ async function generateWebmSegmentIndex(absolutePath, startTimeOffsetMs) {
276
284
  return { 1: trackIndex };
277
285
  }
278
286
  const ID_SEEKHEAD = 290298740;
287
+ const ID_TRACKS = 374648427;
288
+ const ID_TRACK_ENTRY = 174;
289
+ const ID_VIDEO = 224;
290
+ const ID_COLOUR = 21936;
279
291
  const EBML_VOID_ID = 236;
280
292
  /**
293
+ * Encode a Void element header (id + size VINT) such that the entire
294
+ * element occupies exactly `totalBytes` bytes. Returns the [id, ...vintBytes]
295
+ * prefix; the caller fills the remaining `totalBytes - prefix.length` with zeros.
296
+ */
297
+ function encodeVoidHeader(totalBytes) {
298
+ const c1 = totalBytes - 2;
299
+ if (c1 >= 0 && c1 <= 126) return [EBML_VOID_ID, 128 | c1];
300
+ const c2 = totalBytes - 3;
301
+ if (c2 >= 0 && c2 <= 16382) return [
302
+ EBML_VOID_ID,
303
+ 64 | c2 >> 8,
304
+ c2 & 255
305
+ ];
306
+ const c3 = totalBytes - 4;
307
+ return [
308
+ EBML_VOID_ID,
309
+ 32 | c3 >> 16,
310
+ c3 >> 8 & 255,
311
+ c3 & 255
312
+ ];
313
+ }
314
+ /**
315
+ * Replace the Colour element inside the video TrackEntry with an EBML Void
316
+ * of identical byte length. We do this because ffmpeg's matroska muxer always
317
+ * emits a Colour element with `MatrixCoefficients=bt470bg, Range=full` derived
318
+ * from `format=yuva420p` filter output, but the actual VP9 bitstream encodes
319
+ * `color_space=BT.601` — the mismatch causes Chrome's WebCodecs VideoDecoder
320
+ * to silently drop every delta frame after the keyframe (issue surfaces as
321
+ * "only 1 sample emitted from a 49-frame segment"). With no Colour element
322
+ * mediabunny passes `colorSpace: undefined` to the decoder and Chrome decodes
323
+ * normally.
324
+ */
325
+ function stripColourElement(buf, tracksStart, tracksEnd) {
326
+ let pos = tracksStart;
327
+ while (pos < tracksEnd) {
328
+ const { id: childId, width: childIdW } = readElementId(buf, pos);
329
+ const { value: childSize, width: childSizeW } = readVintSize(buf, pos + childIdW);
330
+ if (childSize === null) return;
331
+ const childContentStart = pos + childIdW + childSizeW;
332
+ const childEnd = childContentStart + childSize;
333
+ if (childId === ID_TRACK_ENTRY) {
334
+ let tepos = childContentStart;
335
+ while (tepos < childEnd) {
336
+ const { id: teid, width: teidW } = readElementId(buf, tepos);
337
+ const { value: tesize, width: tesizeW } = readVintSize(buf, tepos + teidW);
338
+ if (tesize === null) break;
339
+ const teContentStart = tepos + teidW + tesizeW;
340
+ const teEnd = teContentStart + tesize;
341
+ if (teid === ID_VIDEO) {
342
+ let vpos = teContentStart;
343
+ while (vpos < teEnd) {
344
+ const { id: vid, width: vidW } = readElementId(buf, vpos);
345
+ const { value: vsize, width: vsizeW } = readVintSize(buf, vpos + vidW);
346
+ if (vsize === null) break;
347
+ const totalElementSize = vidW + vsizeW + vsize;
348
+ if (vid === ID_COLOUR) {
349
+ const header = encodeVoidHeader(totalElementSize);
350
+ for (let i = 0; i < header.length; i++) buf[vpos + i] = header[i];
351
+ buf.fill(0, vpos + header.length, vpos + totalElementSize);
352
+ return;
353
+ }
354
+ vpos += totalElementSize;
355
+ }
356
+ }
357
+ tepos = teContentStart + tesize;
358
+ }
359
+ }
360
+ pos = childContentStart + childSize;
361
+ }
362
+ }
363
+ /**
281
364
  * Patch a WebM buffer in-place to make it safe for partial (segment-sliced) serving:
282
365
  *
283
366
  * 1. Segment-element size VINT → EBML unknown-size (0x01FFFFFFFFFFFFFF).
@@ -289,7 +372,10 @@ const EBML_VOID_ID = 236;
289
372
  * falls off the end of the buffer, causing seek errors and de-sync. Replacing
290
373
  * it with a Void element forces linear parsing: EBML → Info → Tracks → Clusters.
291
374
  *
292
- * Both patches are applied to a Buffer copy; the source file on disk is not modified.
375
+ * 3. Colour element inside Video TrackEntry EBML Void of the same byte length.
376
+ * See stripColourElement() for rationale.
377
+ *
378
+ * All patches are applied to a Buffer copy; the source file on disk is not modified.
293
379
  */
294
380
  function patchWebmForSegmentedServing(buf) {
295
381
  try {
@@ -320,18 +406,12 @@ function patchWebmForSegmentedServing(buf) {
320
406
  if (childSize === null) break;
321
407
  const totalElementSize = childIdWidth + childSizeWidth + childSize;
322
408
  if (childId === ID_SEEKHEAD) {
323
- const voidContentSize = totalElementSize - 1;
324
- let vintBytes;
325
- if (voidContentSize <= 126) vintBytes = [128 | voidContentSize];
326
- else if (voidContentSize <= 16382) vintBytes = [64 | voidContentSize >> 8, voidContentSize & 255];
327
- else vintBytes = [
328
- 32 | voidContentSize >> 16,
329
- voidContentSize >> 8 & 255,
330
- voidContentSize & 255
331
- ];
332
- buf[pos] = EBML_VOID_ID;
333
- for (let i = 0; i < vintBytes.length; i++) buf[pos + 1 + i] = vintBytes[i];
334
- buf.fill(0, pos + 1 + vintBytes.length, pos + totalElementSize);
409
+ const header = encodeVoidHeader(totalElementSize);
410
+ for (let i = 0; i < header.length; i++) buf[pos + i] = header[i];
411
+ buf.fill(0, pos + header.length, pos + totalElementSize);
412
+ } else if (childId === ID_TRACKS) {
413
+ const tracksStart = pos + childIdWidth + childSizeWidth;
414
+ stripColourElement(buf, tracksStart, tracksStart + childSize);
335
415
  break;
336
416
  }
337
417
  pos += totalElementSize;
@@ -1 +1 @@
1
- {"version":3,"file":"generateWebmSegmentIndex.js","names":[],"sources":["../src/generateWebmSegmentIndex.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAM,MAAM,MAAM,8BAA8B;AAEhD,MAAM,0BAA0B;AAKhC,MAAM,UAAU;AAChB,MAAM,aAAa;AACnB,MAAM,UAAU;AAChB,MAAM,aAAa;AACnB,MAAM,eAAe;AACrB,MAAM,kBAAkB;AACxB,MAAM,iBAAiB;AACvB,MAAM,qBAAqB;AAC3B,MAAM,qBAAqB;;;;;;;AAY3B,SAAS,aAAa,KAAa,QAAyD;CAC1F,MAAM,IAAI,IAAI;CACd,IAAI,QAAQ;CACZ,IAAI,OAAO;AACX,QAAO,SAAS,KAAK,EAAE,IAAI,OAAO;AAChC,WAAS;AACT;;CAEF,IAAI,QAAQ,IAAK,OAAO;AACxB,MAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IACzB,SAAS,SAAS,KAAM,IAAI,SAAS,MAAM;CAG7C,MAAM,mBAAmB,KAAM,IAAI,SAAU;AAC7C,QAAO;EAAE,OAAO,UAAU,kBAAkB,OAAO;EAAO;EAAO;;;;;;AAOnE,SAAS,cAAc,KAAa,QAA+C;CACjF,MAAM,IAAI,IAAI;CACd,IAAI,QAAQ;CACZ,IAAI,OAAO;AACX,QAAO,SAAS,KAAK,EAAE,IAAI,OAAO;AAChC,WAAS;AACT;;CAEF,IAAI,KAAK;AACT,MAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IACzB,MAAM,MAAM,KAAM,IAAI,SAAS,MAAM;AAEvC,QAAO;EAAE;EAAI;EAAO;;;AAItB,SAAS,WAAW,KAAa,QAAgB,MAAsB;CACrE,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,IACxB,OAAO,MAAM,OAAO,IAAI,SAAS,MAAM,OAAQ;AAEjD,QAAO;;;;;;AAsCT,SAAS,mBAAmB,KAA4B;CACtD,IAAI,MAAM;CAGV,MAAM,EAAE,IAAI,QAAQ,OAAO,gBAAgB,cAAc,KAAK,IAAI;AAClE,KAAI,WAAW,QACb,OAAM,IAAI,MAAM,6CAA6C,OAAO,SAAS,GAAG,GAAG;CAErF,MAAM,EAAE,OAAO,UAAU,OAAO,kBAAkB,aAAa,KAAK,MAAM,YAAY;AACtF,KAAI,aAAa,KAAM,OAAM,IAAI,MAAM,gCAAgC;AACvE,QAAO,cAAc,gBAAgB;CAGrC,MAAM,EAAE,IAAI,OAAO,OAAO,eAAe,cAAc,KAAK,IAAI;AAChE,KAAI,UAAU,WACZ,OAAM,IAAI,MAAM,gDAAgD,MAAM,SAAS,GAAG,GAAG;CAEvF,MAAM,wBAAwB,MAAM;CACpC,MAAM,EAAE,OAAO,iBAAiB,aAAa,KAAK,sBAAsB;CAIxE,IAAI,OAHoB,wBAAwB;CAIhD,IAAI,WAAW;CACf,IAAI,mBAAmB;CACvB,MAAM,WAA0B,EAAE;AAElC,QAAO,OAAO,IAAI,QAAQ;AACxB,MAAI,IAAI,SAAS,OAAO,EAAG;EAE3B,MAAM,EAAE,IAAI,SAAS,OAAO,iBAAiB,cAAc,KAAK,KAAK;EACrE,MAAM,EAAE,OAAO,WAAW,OAAO,mBAAmB,aAAa,KAAK,OAAO,aAAa;EAC1F,MAAM,aAAa,eAAe;AAElC,MAAI,cAAc,MAAM;AAEtB,OAAI,0BAA0B,QAAQ,SAAS,GAAG,CAAC,MAAM,KAAK,YAAY;AAC1E;;EAGF,MAAM,aAAa,OAAO,aAAa;AAEvC,MAAI,YAAY,SAAS;GAEvB,IAAI,OAAO,OAAO;AAClB,UAAO,OAAO,cAAc,OAAO,IAAI,QAAQ;IAC7C,MAAM,EAAE,IAAI,aAAa,OAAO,YAAY,cAAc,KAAK,KAAK;IACpE,MAAM,EAAE,OAAO,eAAe,OAAO,cAAc,aAAa,KAAK,OAAO,QAAQ;AACpF,QAAI,kBAAkB,KAAM;AAC5B,QAAI,gBAAgB,mBAClB,oBAAmB,WAAW,KAAK,OAAO,UAAU,WAAW,cAAc;AAE/E,YAAQ,UAAU,YAAY;;aAEvB,YAAY,YAAY;AACjC,OAAI,aAAa,EACf,YAAW;GAIb,IAAI,wBAAwB;GAC5B,IAAI,cAAc;GAClB,IAAI,OAAO,OAAO;AAElB,UAAO,OAAO,cAAc,OAAO,IAAI,QAAQ;AAC7C,QAAI,IAAI,SAAS,OAAO,EAAG;IAC3B,MAAM,EAAE,IAAI,KAAK,OAAO,SAAS,cAAc,KAAK,KAAK;IACzD,MAAM,EAAE,OAAO,OAAO,OAAO,WAAW,aAAa,KAAK,OAAO,KAAK;AACtE,QAAI,UAAU,KAAM;IACpB,MAAM,cAAc,OAAO;AAE3B,QAAI,QAAQ,aACV,yBAAwB,WAAW,KAAK,OAAO,aAAa,MAAM;aACzD,QAAQ,iBAAiB;KAElC,MAAM,WAAW,OAAO;KACxB,MAAM,EAAE,OAAO,kBAAkB,aAAa,KAAK,SAAS;AAE5D,UADkB,IAAI,WAAW,gBAAgB,MAAM,KACvC,IACd,eAAc;eAEP,QAAQ,gBAAgB;KAEjC,IAAI,QAAQ,OAAO;KACnB,MAAM,QAAQ,OAAO,cAAc;KACnC,IAAI,oBAAoB;AACxB,YAAO,QAAQ,SAAS,QAAQ,IAAI,QAAQ;MAC1C,MAAM,EAAE,IAAI,MAAM,OAAO,UAAU,cAAc,KAAK,MAAM;MAC5D,MAAM,EAAE,OAAO,QAAQ,OAAO,YAAY,aAAa,KAAK,QAAQ,MAAM;AAC1E,UAAI,WAAW,KAAM;AACrB,UAAI,SAAS,oBAAoB;AAC/B,2BAAoB;AACpB;;AAEF,eAAS,QAAQ,UAAU;;AAE7B,SAAI,CAAC,kBAAmB,eAAc;;AAGxC,YAAQ,cAAc;;GAGxB,MAAM,cAAc,KAAK,MAAO,wBAAwB,mBAAoB,IAAU;AACtF,YAAS,KAAK;IAAE,QAAQ;IAAM,MAAM,aAAa;IAAW;IAAa;IAAa,CAAC;;AAGzF,SAAO;;AAGT,KAAI,aAAa,EACf,OAAM,IAAI,MAAM,yCAAyC;AAG3D,QAAO;EACL;EACA,sBAAsB;EACtB;EACA;EACA;EACD;;;;;;AAWH,eAAe,kBAAkB,UAAyB,cAAqC;CAE7F,MAAM,qBADQ,MAAM,YAAY,UAAU,aAAa,EACtB,QAC9B,QAAQ,MAAM,EAAE,OAAO,SAAS,IAAI,IAAI,EAAE,QAAQ,KAAA,EAAU,CAC5D,KAAK,MAAM,EAAE,IAAc;AAE9B,MAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,aAAa,QAAQ,SAAS,QAAQ;AAC5C,UAAQ,cAAc,kBAAkB,MACrC,QAAQ,OAAO,QAAQ,UAAU,MAAM,WACzC;;;AAQL,SAAS,cACP,UACA,WACA,iBACgB;CAChB,MAAM,WAA2B,EAAE;CAEnC,IAAI,kBAAiC,EAAE;CACvC,IAAI,iBAAiB;CAErB,MAAM,gBAAgB,gBAAwB;AAC5C,MAAI,gBAAgB,WAAW,EAAG;EAClC,MAAM,QAAQ,gBAAgB;EAC9B,MAAM,OAAO,gBAAgB,gBAAgB,SAAS;EACtD,MAAM,SAAS,MAAM;EACrB,MAAM,OAAO,KAAK,SAAS,KAAK,OAAO,MAAM;EAC7C,MAAM,MAAM,KAAK,MAAO,iBAAiB,YAAa,IAAK;EAC3D,MAAM,MAAM;EACZ,MAAM,WAAW,KAAK,OAAQ,cAAc,kBAAkB,YAAa,IAAK;AAChF,WAAS,KAAK;GAAE;GAAK;GAAK;GAAQ;GAAM;GAAU,CAAC;AACnD,oBAAkB,EAAE;;AAGtB,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;EACxC,MAAM,UAAU,SAAS;EACzB,MAAM,kBAAkB,gBAAgB,SAAS,IAAI,QAAQ,cAAc,iBAAiB;AAO5F,MAJE,gBAAgB,SAAS,KACzB,mBAAmB,2BACnB,QAAQ,aAEU;AAClB,gBAAa,QAAQ,YAAY;AACjC,oBAAiB,QAAQ;;AAG3B,MAAI,gBAAgB,WAAW,GAAG;AAChC,OAAI,CAAC,QAAQ,YAAa;AAC1B,oBAAiB,QAAQ;;AAG3B,kBAAgB,KAAK,QAAQ;;AAI/B,cAAa,gBAAgB;AAE7B,QAAO;;;;;;;;AAaT,eAAsB,yBACpB,cACA,mBAC6C;AAC7C,KAAI,qCAAqC,eAAe;CAKxD,MAAM,EAAE,UAAU,UAAU,qBAFV,mBADN,MAAM,SAAS,aAAa,CACC;CAGzC,MAAM,YAAY;AAElB,KACE,UAAU,SAAS,OAAO,kBAAkB,SAAS,yBACjC,iBAAiB,IACtC;AAGD,OAAM,kBAAkB,UAAU,aAAa;AAG/C,KACE,sBAFuB,SAAS,QAAQ,MAAM,EAAE,YAAY,CAErB,KAAK,MAAM,GAAG,EAAE,YAAY,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,GAC/F;CAGD,MAAM,cAAc,SAAS,SAAS,SAAS;CAG/C,IAAI,kBAFoB,YAAY,cAAc,YAAY,OAAO;AAGrE,KAAI;EAEF,MAAM,eADQ,MAAM,YAAY,UAAU,aAAa,EACpB,MAAM,SAAS,MAAM,MAAW,EAAE,eAAe,QAAQ;AAC5F,MAAI,aAAa,SACf,mBAAkB,KAAK,MAAM,WAAW,YAAY,SAAS,GAAG,IAAK;SAEjE;AAIR,KAAI,mBAAmB,gBAAgB,IAAI;CAE3C,MAAM,WAAW,cAAc,UAAU,WAAW,gBAAgB;AAEpE,KACE,SAAS,SAAS,OAAO,aAAa,SAAS,KAAK,MAAM,IAAM,EAAE,MAAM,YAAa,MAAQ,EAAE,YAAY,EAAE,OAAO,QAAQ,EAAE,KAAK,GAAG,CAAC,KAAK,KAAK,GAClJ;CAGD,MAAM,SAAS,MAAM,YAAY,UAAU,aAAa;CACxD,MAAM,cAAe,OAAe,MAAM,SAAS,MAAM,MAAW,EAAE,eAAe,QAAQ;CAC7F,MAAM,QAAgB,aAAa,SAAS;CAC5C,MAAM,SAAiB,aAAa,UAAU;CAC9C,MAAM,QAAgB,aAAa,oBAAoB,aAAa,cAAc;CAClF,MAAM,cACH,OAAe,SAAS,QAAQ,MAAW,EAAE,eAAe,QAAQ,CAAC,UAAU;CAElF,IAAI;AACJ,KAAI,sBAAsB,KAAA,EACxB,0BAAyB;UAChB,SAAS,MAAM,SAAS,GAAG,cAAc,EAClD,0BAAyB,SAAS,GAAG;CAGvC,MAAM,aAAiC;EACrC,OAAO;EACP,MAAM;EACN;EACA;EACA;EACA;EACA,SAAS;EACT,UAAU,KAAK,MAAO,kBAAkB,YAAa,IAAK;EAC1D,cAAc;EACd,mBAAmB;EACnB,aAAa;GAAE,QAAQ;GAAG,MAAM;GAAU;EAC1C;EACD;AAED,QAAO,EAAE,GAAG,YAAY;;AAO1B,MAAM,cAAc;AACpB,MAAM,eAAe;;;;;;;;;;;;;;;AAgBrB,SAAgB,6BAA6B,KAAmB;AAC9D,KAAI;EAEF,MAAM,EAAE,IAAI,QAAQ,OAAO,gBAAgB,cAAc,KAAK,EAAE;AAChE,MAAI,WAAW,QAAS;EACxB,MAAM,EAAE,OAAO,UAAU,OAAO,kBAAkB,aAAa,KAAK,YAAY;AAChF,MAAI,aAAa,KAAM;EACvB,MAAM,SAAS,cAAc,gBAAgB;EAC7C,MAAM,EAAE,IAAI,OAAO,OAAO,eAAe,cAAc,KAAK,OAAO;AACnE,MAAI,UAAU,WAAY;EAG1B,MAAM,gBAAgB,SAAS;EAC/B,MAAM,EAAE,OAAO,iBAAiB,aAAa,KAAK,cAAc;AAChE,MAAI,iBAAiB,EACE,QAAO,KAAK;GAAC;GAAM;GAAM;GAAM;GAAM;GAAM;GAAM;GAAM;GAAK,CAAC,CACrE,KAAK,KAAK,cAAc;EAKvC,IAAI,MADoB,SAAS,aAAa;EAK9C,MAAM,YAAY,KAAK,IAAI,MAAM,MAAM,IAAI,OAAO;AAClD,SAAO,MAAM,WAAW;GACtB,MAAM,EAAE,IAAI,SAAS,OAAO,iBAAiB,cAAc,KAAK,IAAI;GACpE,MAAM,EAAE,OAAO,WAAW,OAAO,mBAAmB,aAAa,KAAK,MAAM,aAAa;AACzF,OAAI,cAAc,KAAM;GACxB,MAAM,mBAAmB,eAAe,iBAAiB;AAEzD,OAAI,YAAY,aAAa;IAI3B,MAAM,kBAAkB,mBAAmB;IAI3C,IAAI;AACJ,QAAI,mBAAmB,IAErB,aAAY,CAAC,MAAO,gBAAgB;aAC3B,mBAAmB,MAE5B,aAAY,CAAC,KAAQ,mBAAmB,GAAI,kBAAkB,IAAK;QAGnE,aAAY;KACV,KAAQ,mBAAmB;KAC1B,mBAAmB,IAAK;KACzB,kBAAkB;KACnB;AAGH,QAAI,OAAO;AACX,SAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,IACpC,KAAI,MAAM,IAAI,KAAK,UAAU;AAG/B,QAAI,KAAK,GAAG,MAAM,IAAI,UAAU,QAAQ,MAAM,iBAAiB;AAC/D;;AAGF,UAAO;;SAEH"}
1
+ {"version":3,"file":"generateWebmSegmentIndex.js","names":[],"sources":["../src/generateWebmSegmentIndex.ts"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
2
  const require_md5 = require("./md5.cjs");
3
3
  let node_fs = require("node:fs");
4
+ let node_fs_promises = require("node:fs/promises");
4
5
  let debug = require("debug");
5
6
  debug = require_runtime.__toESM(debug);
6
7
  let node_stream = require("node:stream");
7
- let node_fs_promises = require("node:fs/promises");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_runtime.__toESM(node_path);
10
10
  let node_url = require("node:url");
@@ -1,8 +1,8 @@
1
1
  import { md5FilePath } from "./md5.js";
2
2
  import { createWriteStream, existsSync, readFileSync } from "node:fs";
3
+ import { mkdir, readFile, readdir, rename, rm, stat, writeFile } from "node:fs/promises";
3
4
  import debug from "debug";
4
5
  import { Readable } from "node:stream";
5
- import { mkdir, readFile, readdir, rename, rm, stat, writeFile } from "node:fs/promises";
6
6
  import path, { join } from "node:path";
7
7
  import { fileURLToPath } from "node:url";
8
8
  //#region src/idempotentTask.ts
package/dist/index.cjs CHANGED
@@ -2,8 +2,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_Probe = require("./Probe.cjs");
3
3
  const require_generateFragmentIndex = require("./generateFragmentIndex.cjs");
4
4
  const require_md5 = require("./md5.cjs");
5
- const require_generateTrackFragmentIndex = require("./tasks/generateTrackFragmentIndex.cjs");
6
5
  const require_generateTrack = require("./tasks/generateTrack.cjs");
6
+ const require_generateTrackFragmentIndex = require("./tasks/generateTrackFragmentIndex.cjs");
7
7
  const require_generateScrubTrack = require("./tasks/generateScrubTrack.cjs");
8
8
  const require_findOrCreateCaptions = require("./tasks/findOrCreateCaptions.cjs");
9
9
  const require_cacheImage = require("./tasks/cacheImage.cjs");
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { PacketProbe, Probe } from "./Probe.js";
2
2
  import { generateFragmentIndex } from "./generateFragmentIndex.js";
3
3
  import { md5Buffer, md5Directory, md5FilePath, md5ReadStream } from "./md5.js";
4
- import { generateTrackFragmentIndex, generateTrackFragmentIndexFromPath } from "./tasks/generateTrackFragmentIndex.js";
5
4
  import { generateTrack, generateTrackFromPath } from "./tasks/generateTrack.js";
5
+ import { generateTrackFragmentIndex, generateTrackFragmentIndexFromPath } from "./tasks/generateTrackFragmentIndex.js";
6
6
  import { generateScrubTrack, generateScrubTrackFromPath } from "./tasks/generateScrubTrack.js";
7
7
  import { findOrCreateCaptions, generateCaptionDataFromPath } from "./tasks/findOrCreateCaptions.js";
8
8
  import { cacheImage } from "./tasks/cacheImage.js";
@@ -3,11 +3,10 @@ const require_Probe = require("../Probe.cjs");
3
3
  const require_generateFragmentIndex = require("../generateFragmentIndex.cjs");
4
4
  const require_idempotentTask = require("../idempotentTask.cjs");
5
5
  const require_generateWebmSegmentIndex = require("../generateWebmSegmentIndex.cjs");
6
- let node_fs = require("node:fs");
6
+ let node_fs_promises = require("node:fs/promises");
7
7
  let debug = require("debug");
8
8
  debug = require_runtime.__toESM(debug);
9
9
  let node_stream = require("node:stream");
10
- let node_fs_promises = require("node:fs/promises");
11
10
  let node_os = require("node:os");
12
11
  let node_path = require("node:path");
13
12
  //#region src/tasks/generateScrubTrack.ts
@@ -21,30 +20,26 @@ const generateScrubTrackFromPath = async (absolutePath) => {
21
20
  log("VP9 alpha source: generating WebM scrub track");
22
21
  const tmpDir = await (0, node_fs_promises.mkdtemp)((0, node_path.join)((0, node_os.tmpdir)(), "ef-scrub-webm-"));
23
22
  const tmpPath = (0, node_path.join)(tmpDir, "scrub.webm");
24
- await probe.transcodeWebmScrubToFile(tmpPath);
25
- const scrubTrack = (await require_generateWebmSegmentIndex.generateWebmSegmentIndex(tmpPath, startTimeOffsetMs))[1];
26
- if (!scrubTrack) throw new Error("No track 1 in VP9 scrub WebM segment index");
27
- const fragmentIndex = { [-1]: {
28
- ...scrubTrack,
29
- track: -1
30
- } };
31
- const outputStream = (0, node_fs.createReadStream)(tmpPath);
32
- outputStream.on("close", () => {
33
- (0, node_fs_promises.rm)(tmpDir, {
34
- recursive: true,
35
- force: true
36
- }).catch(() => {});
37
- });
38
- outputStream.on("error", () => {
23
+ try {
24
+ await probe.transcodeWebmScrubToFile(tmpPath);
25
+ const scrubTrack = (await require_generateWebmSegmentIndex.generateWebmSegmentIndex(tmpPath, startTimeOffsetMs))[1];
26
+ if (!scrubTrack) throw new Error("No track 1 in VP9 scrub WebM segment index");
27
+ const fragmentIndex = { [-1]: {
28
+ ...scrubTrack,
29
+ track: -1
30
+ } };
31
+ const buf = await (0, node_fs_promises.readFile)(tmpPath);
32
+ require_generateWebmSegmentIndex.patchWebmForSegmentedServing(buf);
33
+ return {
34
+ stream: node_stream.Readable.from(buf),
35
+ fragmentIndex: Promise.resolve(fragmentIndex)
36
+ };
37
+ } finally {
39
38
  (0, node_fs_promises.rm)(tmpDir, {
40
39
  recursive: true,
41
40
  force: true
42
41
  }).catch(() => {});
43
- });
44
- return {
45
- stream: outputStream,
46
- fragmentIndex: Promise.resolve(fragmentIndex)
47
- };
42
+ }
48
43
  }
49
44
  const scrubStream = probe.createScrubTrackReadstream();
50
45
  const outputStream = new node_stream.PassThrough();
@@ -86,15 +81,17 @@ const generateScrubTrackTask = require_idempotentTask.idempotentTask({
86
81
  log("VP9 alpha source: generating WebM scrub track for cache");
87
82
  const tmpDir = await (0, node_fs_promises.mkdtemp)((0, node_path.join)((0, node_os.tmpdir)(), "ef-scrub-webm-"));
88
83
  const tmpPath = (0, node_path.join)(tmpDir, "scrub.webm");
89
- await probe.transcodeWebmScrubToFile(tmpPath);
90
- const fileStream = (0, node_fs.createReadStream)(tmpPath);
91
- fileStream.on("close", () => {
84
+ try {
85
+ await probe.transcodeWebmScrubToFile(tmpPath);
86
+ const buf = await (0, node_fs_promises.readFile)(tmpPath);
87
+ require_generateWebmSegmentIndex.patchWebmForSegmentedServing(buf);
88
+ return node_stream.Readable.from(buf);
89
+ } finally {
92
90
  (0, node_fs_promises.rm)(tmpDir, {
93
91
  recursive: true,
94
92
  force: true
95
93
  }).catch(() => {});
96
- });
97
- return fileStream;
94
+ }
98
95
  }
99
96
  const scrubStream = probe.createScrubTrackReadstream();
100
97
  const finalStream = new node_stream.PassThrough();
@@ -1 +1 @@
1
- {"version":3,"file":"generateScrubTrack.cjs","names":["Probe","generateWebmSegmentIndex","PassThrough","generateFragmentIndex","idempotentTask"],"sources":["../../src/tasks/generateScrubTrack.ts"],"mappings":";;;;;;;;;;;;;AAYA,MAAM,OAAA,GAAA,MAAA,SAAY,wBAAwB;AAE1C,MAAa,6BAA6B,OAAO,iBAAyB;AACxE,KAAI,8BAA8B,eAAe;CAEjD,MAAM,QAAQ,MAAMA,cAAAA,MAAM,UAAU,aAAa;AAEjD,KAAI,MAAM,aAAa,WAAW,EAChC,OAAM,IAAI,MAAM,mDAAmD;CAGrE,MAAM,oBAAoB,MAAM;AAEhC,KAAI,MAAM,eAAe;AACvB,MAAI,gDAAgD;EAEpD,MAAM,SAAS,OAAA,GAAA,iBAAA,UAAA,GAAA,UAAA,OAAA,GAAA,QAAA,SAA2B,EAAE,iBAAiB,CAAC;EAC9D,MAAM,WAAA,GAAA,UAAA,MAAe,QAAQ,aAAa;AAE1C,QAAM,MAAM,yBAAyB,QAAQ;EAG7C,MAAM,cADW,MAAMC,iCAAAA,yBAAyB,SAAS,kBAAkB,EAC/C;AAC5B,MAAI,CAAC,WAAY,OAAM,IAAI,MAAM,6CAA6C;EAC9E,MAAM,gBAAoD,GACvD,KAAK;GAAE,GAAG;GAAY,OAAO;GAAI,EACnC;EAED,MAAM,gBAAA,GAAA,QAAA,kBAAgC,QAAQ;AAC9C,eAAa,GAAG,eAAe;AAC7B,IAAA,GAAA,iBAAA,IAAG,QAAQ;IAAE,WAAW;IAAM,OAAO;IAAM,CAAC,CAAC,YAAY,GAAG;IAC5D;AACF,eAAa,GAAG,eAAe;AAC7B,IAAA,GAAA,iBAAA,IAAG,QAAQ;IAAE,WAAW;IAAM,OAAO;IAAM,CAAC,CAAC,YAAY,GAAG;IAC5D;AAEF,SAAO;GACL,QAAQ;GACR,eAAe,QAAQ,QAAQ,cAAc;GAC9C;;CAIH,MAAM,cAAc,MAAM,4BAA4B;CAEtD,MAAM,eAAe,IAAIC,YAAAA,aAAa;CACtC,MAAM,cAAc,IAAIA,YAAAA,aAAa;AAErC,aAAY,KAAK,cAAc,EAAE,KAAK,OAAO,CAAC;AAC9C,aAAY,KAAK,YAAY;CAE7B,IAAI,oBAAoB;AACxB,aAAY,GAAG,aAAa;AAC1B,sBAAoB;GACpB;AAEF,aAAY,GAAG,UAAU,UAAU;AACjC,eAAa,QAAQ,MAAM;AAC3B,cAAY,QAAQ,MAAM;GAC1B;CAIF,MAAM,uBAAuBC,8BAAAA,sBAC3B,aACA,mBAJqB,EAAE,GAAG,IAAa,CAMxC;AAED,sBACG,WAAW;AACV,MAAI,kBACF,cAAa,KAAK;MAElB,aAAY,KAAK,aAAa;AAC5B,gBAAa,KAAK;IAClB;GAEJ,CACD,OAAO,UAAU;AAChB,eAAa,QAAQ,MAAM;GAC3B;AAEJ,QAAO;EAAE,QAAQ;EAAc,eAAe;EAAsB;;AAGtE,MAAa,yBAAyBC,uBAAAA,eAAe;CACnD,OAAO;CACP,WAAW,iBAAyB;EAElC,MAAM,MAAM,aAAa,SAAS,QAAQ,GAAG,SAAS;AACtD,SAAO,IAAA,GAAA,UAAA,UAAY,aAAa,CAAC,eAAe;;CAElD,QAAQ,OAAO,iBAAyB;EACtC,MAAM,QAAQ,MAAMJ,cAAAA,MAAM,UAAU,aAAa;AAEjD,MAAI,MAAM,aAAa,WAAW,EAChC,OAAM,IAAI,MAAM,mDAAmD;AAGrE,MAAI,MAAM,eAAe;AACvB,OAAI,0DAA0D;GAE9D,MAAM,SAAS,OAAA,GAAA,iBAAA,UAAA,GAAA,UAAA,OAAA,GAAA,QAAA,SAA2B,EAAE,iBAAiB,CAAC;GAC9D,MAAM,WAAA,GAAA,UAAA,MAAe,QAAQ,aAAa;AAE1C,SAAM,MAAM,yBAAyB,QAAQ;GAE7C,MAAM,cAAA,GAAA,QAAA,kBAA8B,QAAQ;AAC5C,cAAW,GAAG,eAAe;AAC3B,KAAA,GAAA,iBAAA,IAAG,QAAQ;KAAE,WAAW;KAAM,OAAO;KAAM,CAAC,CAAC,YAAY,GAAG;KAC5D;AACF,UAAO;;EAIT,MAAM,cAAc,MAAM,4BAA4B;EACtD,MAAM,cAAc,IAAIE,YAAAA,aAAa;EAErC,IAAI,kBAAyC;EAE7C,MAAM,6BAA6B;AACjC,OAAI,gBACF,cAAa,gBAAgB;AAG/B,qBAAkB,iBAAiB;AACjC,QAAI,CAAC,YAAY,WAAW;AAC1B,aAAQ,KAAK,0EAA0E;AACvF,iBAAY,wBAAQ,IAAI,MAAM,iCAAiC,CAAC;;MAEjE,IAAM;;AAGX,wBAAsB;AAEtB,cAAY,GAAG,cAAc;AAC3B,yBAAsB;IACtB;AAEF,cAAY,GAAG,aAAa;AAC1B,yBAAsB;AACtB,eAAY,KAAK;IACjB;AAEF,cAAY,GAAG,UAAU,UAAU;AACjC,OAAI,gBACF,cAAa,gBAAgB;AAE/B,eAAY,QAAQ,MAAM;IAC1B;AAEF,cAAY,KAAK,aAAa,EAAE,KAAK,OAAO,CAAC;AAE7C,cAAY,GAAG,aAAa;AAC1B,OAAI,gBACF,cAAa,gBAAgB;IAE/B;AAEF,SAAO;;CAEV,CAAC;AAEF,MAAa,qBAAqB,OAAO,WAAmB,iBAAyB;AACnF,KAAI;AACF,SAAO,MAAM,uBAAuB,WAAW,aAAa;UACrD,OAAO;AACd,UAAQ,MAAM,MAAM;AACpB,UAAQ,MAAM,gCAAgC,MAAM;AACpD,QAAM"}
1
+ {"version":3,"file":"generateScrubTrack.cjs","names":["Probe","generateWebmSegmentIndex","Readable","PassThrough","generateFragmentIndex","idempotentTask"],"sources":["../../src/tasks/generateScrubTrack.ts"],"mappings":"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"}