dasha 4.4.0 → 4.4.2

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.
package/dist/index.d.mts CHANGED
@@ -561,16 +561,19 @@ type SegmentAccessMethods = {
561
561
  type TrackMetadataOverrideMethods = {
562
562
  setLanguageCode(value: string): void;
563
563
  };
564
+ type TrackSourceMethods = {
565
+ readonly source: Source;
566
+ };
564
567
  type VideoDynamicRangeMethods = {
565
568
  getDynamicRange(): Promise<VideoDynamicRange>;
566
569
  };
567
570
  type MediabunnySubtitleTrackLike = InputTrack$2 & {
568
571
  type: 'subtitle';
569
572
  };
570
- type InputTrack$1 = InputTrack$2 & SegmentAccessMethods & TrackMetadataOverrideMethods;
571
- type InputVideoTrack = InputVideoTrack$1 & SegmentAccessMethods & VideoDynamicRangeMethods & TrackMetadataOverrideMethods;
572
- type InputAudioTrack = InputAudioTrack$1 & SegmentAccessMethods & TrackMetadataOverrideMethods;
573
- type InputSubtitleTrack = MediabunnySubtitleTrackLike & SegmentAccessMethods & TrackMetadataOverrideMethods;
573
+ type InputTrack$1 = InputTrack$2 & SegmentAccessMethods & TrackMetadataOverrideMethods & TrackSourceMethods;
574
+ type InputVideoTrack = InputVideoTrack$1 & SegmentAccessMethods & VideoDynamicRangeMethods & TrackMetadataOverrideMethods & TrackSourceMethods;
575
+ type InputAudioTrack = InputAudioTrack$1 & SegmentAccessMethods & TrackMetadataOverrideMethods & TrackSourceMethods;
576
+ type InputSubtitleTrack = MediabunnySubtitleTrackLike & SegmentAccessMethods & TrackMetadataOverrideMethods & TrackSourceMethods;
574
577
  type InputSubtitleSource = PathedSource | SourceRef<PathedSource>;
575
578
  type InputSubtitleTrackMetadata = {
576
579
  codec?: SubtitleCodec | null;
@@ -607,6 +610,8 @@ type SegmentableBacking = {
607
610
  getDecoderConfig?(): Promise<VideoDecoderConfig | AudioDecoderConfig | null>;
608
611
  getMetadataCodecParameterString?(): string | null | Promise<string | null>;
609
612
  getSegmentedInput?(): HlsSegmentedInput | DashSegmentedInput;
613
+ segmentedInput?: HlsSegmentedInput;
614
+ getSource?(): Source;
610
615
  };
611
616
  type NativeTrackBacking = SegmentableBacking;
612
617
  type TrackBacking = NativeTrackBacking | SegmentableBacking;
@@ -632,6 +637,7 @@ declare class ImportedAudioTrackBacking {
632
637
  isRelativeToUnixEpoch(): boolean | Promise<boolean>;
633
638
  getDisposition(): {};
634
639
  getPairingMask(): bigint;
640
+ getSource(): Source;
635
641
  getBitrate(): number | Promise<number | null> | null;
636
642
  getAverageBitrate(): number | Promise<number | null> | null;
637
643
  getDurationFromMetadata(options: unknown): Promise<number | null>;
package/dist/index.mjs CHANGED
@@ -1419,11 +1419,13 @@ var ImportedAudioTrackBacking = class {
1419
1419
  #backing;
1420
1420
  #id;
1421
1421
  #number;
1422
+ #source;
1422
1423
  #wholeResourceSegmentedInput;
1423
1424
  constructor(params) {
1424
1425
  this.#backing = params.backing;
1425
1426
  this.#id = params.id;
1426
1427
  this.#number = params.number;
1428
+ this.#source = params.source;
1427
1429
  this.#wholeResourceSegmentedInput = new WholeResourceAudioSegmentedInput(params.source);
1428
1430
  }
1429
1431
  getType() {
@@ -1459,6 +1461,9 @@ var ImportedAudioTrackBacking = class {
1459
1461
  getPairingMask() {
1460
1462
  return 0n;
1461
1463
  }
1464
+ getSource() {
1465
+ return this.#source;
1466
+ }
1462
1467
  getBitrate() {
1463
1468
  return this.#backing.getBitrate?.() ?? null;
1464
1469
  }
@@ -1503,6 +1508,7 @@ var ImportedAudioTrackBacking = class {
1503
1508
  }
1504
1509
  getSegmentedInput() {
1505
1510
  if (this.#backing.getSegmentedInput) return this.#backing.getSegmentedInput();
1511
+ if (this.#backing.segmentedInput) return this.#backing.segmentedInput;
1506
1512
  const hlsBacking = this.#backing;
1507
1513
  if (hlsBacking.internalTrack?.demuxer?.getSegmentedInputForPath) return hlsBacking.internalTrack.demuxer.getSegmentedInputForPath(hlsBacking.internalTrack.fullPath);
1508
1514
  return this.#wholeResourceSegmentedInput;
@@ -1536,10 +1542,14 @@ const patchBaseMediabunnyInput = () => {
1536
1542
  const getSegmentedInputForTrack = (track) => {
1537
1543
  const backing = getTrackBacking(track);
1538
1544
  if ("getSegmentedInput" in backing && typeof backing.getSegmentedInput === "function") return backing.getSegmentedInput();
1545
+ if ("segmentedInput" in backing && backing.segmentedInput) return backing.segmentedInput;
1539
1546
  const internalTrack = backing.internalTrack;
1540
1547
  return internalTrack.demuxer.getSegmentedInputForPath(internalTrack.fullPath);
1541
1548
  };
1542
1549
  const getTrackBacking = (track) => track._backing;
1550
+ const getTrackSource = (track) => {
1551
+ return getTrackBacking(track).getSource?.() ?? track.input.source;
1552
+ };
1543
1553
  const getTrackMetadataOverrides = (backing) => backing[TRACK_METADATA_OVERRIDES] ??= {};
1544
1554
  const ensureLanguageCodeOverridePatch = (backing) => {
1545
1555
  const patchedBacking = backing;
@@ -1552,6 +1562,7 @@ const setTrackLanguageCode = (track, value) => {
1552
1562
  getTrackMetadataOverrides(ensureLanguageCodeOverridePatch(getTrackBacking(track))).languageCode = value;
1553
1563
  };
1554
1564
  const addSegmentAccess = (track) => new Proxy(track, { get(target, prop) {
1565
+ if (prop === "source") return getTrackSource(target);
1555
1566
  if (prop === "getDynamicRange" && target instanceof InputVideoTrack) return () => getDynamicRangeForTrack(target);
1556
1567
  if (prop === "setLanguageCode") return (value) => setTrackLanguageCode(target, value);
1557
1568
  if (prop === "getSegmentedInput") return () => getSegmentedInputForTrack(target);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dasha",
3
- "version": "4.4.0",
3
+ "version": "4.4.2",
4
4
  "description": "Streaming manifest parser",
5
5
  "files": [
6
6
  "dist"