mediabunny 1.7.0 → 1.7.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.
@@ -5434,8 +5434,7 @@ var EBMLWriter = class {
5434
5434
  }
5435
5435
  this.writer.write(this.helper.subarray(0, pos));
5436
5436
  }
5437
- // Assumes the string is ASCII
5438
- writeString(str) {
5437
+ writeAsciiString(str) {
5439
5438
  this.writer.write(new Uint8Array(str.split("").map((x) => x.charCodeAt(0))));
5440
5439
  }
5441
5440
  writeEBML(data) {
@@ -5473,7 +5472,7 @@ var EBMLWriter = class {
5473
5472
  this.writeUnsignedInt(data.data, size);
5474
5473
  } else if (typeof data.data === "string") {
5475
5474
  this.writeVarInt(data.data.length);
5476
- this.writeString(data.data);
5475
+ this.writeAsciiString(data.data);
5477
5476
  } else if (data.data instanceof Uint8Array) {
5478
5477
  this.writeVarInt(data.data.byteLength, data.size);
5479
5478
  this.writer.write(data.data);
@@ -5575,7 +5574,7 @@ var EBMLReader = class {
5575
5574
  this.pos += width;
5576
5575
  return value;
5577
5576
  }
5578
- readString(length) {
5577
+ readAsciiString(length) {
5579
5578
  const { view: view2, offset } = this.reader.getViewAndOffset(this.pos, this.pos + length);
5580
5579
  this.pos += length;
5581
5580
  let strLength = 0;
@@ -8960,6 +8959,10 @@ var AudioDecoderWrapper = class extends DecoderWrapper {
8960
8959
  this.customDecoderCallSerializer = new CallSerializer();
8961
8960
  this.customDecoderQueueSize = 0;
8962
8961
  const sampleHandler = (sample) => {
8962
+ if (sample.numberOfFrames === 0) {
8963
+ sample.close();
8964
+ return;
8965
+ }
8963
8966
  const sampleRate = decoderConfig.sampleRate;
8964
8967
  sample.setTimestamp(Math.round(sample.timestamp * sampleRate) / sampleRate);
8965
8968
  onSample(sample);
@@ -10549,7 +10552,8 @@ var EncodedVideoPacketSource = class extends VideoSource {
10549
10552
  super(codec);
10550
10553
  }
10551
10554
  /**
10552
- * Adds an encoded packet to the output video track.
10555
+ * Adds an encoded packet to the output video track. Packets must be added in *decode order*, while a packet's
10556
+ * timestamp must be its *presentation timestamp*. B-frames are handled automatically.
10553
10557
  *
10554
10558
  * @param meta - Additional metadata from the encoder. You should pass this for the first call, including a valid
10555
10559
  * decoder config.
@@ -10986,7 +10990,7 @@ var EncodedAudioPacketSource = class extends AudioSource {
10986
10990
  super(codec);
10987
10991
  }
10988
10992
  /**
10989
- * Adds an encoded packet to the output audio track.
10993
+ * Adds an encoded packet to the output audio track. Packets must be added in *decode order*.
10990
10994
  *
10991
10995
  * @param meta - Additional metadata from the encoder. You should pass this for the first call, including a valid
10992
10996
  * decoder config.
@@ -12015,7 +12019,9 @@ var UrlSource = class extends Source {
12015
12019
  super();
12016
12020
  /** @internal */
12017
12021
  this._fullData = null;
12018
- this._url = url2;
12022
+ /** @internal */
12023
+ this._nextUrlVersion = null;
12024
+ this._url = url2 instanceof URL ? url2 : new URL(url2);
12019
12025
  this._options = options;
12020
12026
  }
12021
12027
  /** @internal */
@@ -12024,6 +12030,10 @@ var UrlSource = class extends Source {
12024
12030
  if (range) {
12025
12031
  headers["Range"] = `bytes=${range.start}-${range.end - 1}`;
12026
12032
  }
12033
+ if (this._nextUrlVersion !== null) {
12034
+ this._url.searchParams.set("mediabunny_version", this._nextUrlVersion.toString());
12035
+ this._nextUrlVersion++;
12036
+ }
12027
12037
  const response = await retriedFetch(
12028
12038
  this._url,
12029
12039
  mergeObjectsDeeply(this._options.requestInit ?? {}, {
@@ -12036,6 +12046,10 @@ var UrlSource = class extends Source {
12036
12046
  throw new Error(`Error fetching ${this._url}: ${response.status} ${response.statusText}`);
12037
12047
  }
12038
12048
  const buffer = await response.arrayBuffer();
12049
+ if (response.status === 206 && range && buffer.byteLength !== range.end - range.start && this._nextUrlVersion === null) {
12050
+ this._nextUrlVersion = 1;
12051
+ return this._makeRequest(range);
12052
+ }
12039
12053
  if (response.status === 200) {
12040
12054
  this._fullData = buffer;
12041
12055
  }
@@ -13132,6 +13146,9 @@ var IsobmffDemuxer = class extends Demuxer {
13132
13146
  const sampleIndex = this.metadataReader.readU32() - 1;
13133
13147
  track.sampleTable.keySampleIndices.push(sampleIndex);
13134
13148
  }
13149
+ if (track.sampleTable.keySampleIndices[0] !== 0) {
13150
+ track.sampleTable.keySampleIndices.unshift(0);
13151
+ }
13135
13152
  }
13136
13153
  ;
13137
13154
  break;
@@ -14527,7 +14544,7 @@ var MatroskaDemuxer = class extends Demuxer {
14527
14544
  switch (id) {
14528
14545
  case 17026 /* DocType */:
14529
14546
  {
14530
- this.isWebM = reader.readString(size) === "webm";
14547
+ this.isWebM = reader.readAsciiString(size) === "webm";
14531
14548
  }
14532
14549
  ;
14533
14550
  break;
@@ -14725,7 +14742,7 @@ var MatroskaDemuxer = class extends Demuxer {
14725
14742
  case 134 /* CodecID */:
14726
14743
  {
14727
14744
  if (!this.currentTrack) break;
14728
- this.currentTrack.codecId = reader.readString(size);
14745
+ this.currentTrack.codecId = reader.readAsciiString(size);
14729
14746
  }
14730
14747
  ;
14731
14748
  break;
@@ -14746,7 +14763,7 @@ var MatroskaDemuxer = class extends Demuxer {
14746
14763
  case 2274716 /* Language */:
14747
14764
  {
14748
14765
  if (!this.currentTrack) break;
14749
- this.currentTrack.languageCode = reader.readString(size);
14766
+ this.currentTrack.languageCode = reader.readAsciiString(size);
14750
14767
  if (!isIso639Dash2LanguageCode(this.currentTrack.languageCode)) {
14751
14768
  this.currentTrack.languageCode = UNDETERMINED_LANGUAGE;
14752
14769
  }
@@ -16554,7 +16571,7 @@ var MatroskaInputFormat = class extends InputFormat {
16554
16571
  break;
16555
16572
  case 17026 /* DocType */:
16556
16573
  {
16557
- const docType = ebmlReader.readString(size);
16574
+ const docType = ebmlReader.readAsciiString(size);
16558
16575
  if (docType !== desiredDocType) {
16559
16576
  return false;
16560
16577
  }
@@ -665,7 +665,7 @@ export declare abstract class CustomVideoEncoder {
665
665
  export declare class EncodedAudioPacketSource extends AudioSource {
666
666
  constructor(codec: AudioCodec);
667
667
  /**
668
- * Adds an encoded packet to the output audio track.
668
+ * Adds an encoded packet to the output audio track. Packets must be added in *decode order*.
669
669
  *
670
670
  * @param meta - Additional metadata from the encoder. You should pass this for the first call, including a valid
671
671
  * decoder config.
@@ -809,7 +809,8 @@ export declare class EncodedPacketSink {
809
809
  export declare class EncodedVideoPacketSource extends VideoSource {
810
810
  constructor(codec: VideoCodec);
811
811
  /**
812
- * Adds an encoded packet to the output video track.
812
+ * Adds an encoded packet to the output video track. Packets must be added in *decode order*, while a packet's
813
+ * timestamp must be its *presentation timestamp*. B-frames are handled automatically.
813
814
  *
814
815
  * @param meta - Additional metadata from the encoder. You should pass this for the first call, including a valid
815
816
  * decoder config.
@@ -131,7 +131,7 @@ export class MatroskaInputFormat extends InputFormat {
131
131
  break;
132
132
  case EBMLId.DocType:
133
133
  {
134
- const docType = ebmlReader.readString(size);
134
+ const docType = ebmlReader.readAsciiString(size);
135
135
  if (docType !== desiredDocType) {
136
136
  return false;
137
137
  }
@@ -1 +1 @@
1
- {"version":3,"file":"isobmff-demuxer.d.ts","sourceRoot":"","sources":["../../../../src/isobmff/isobmff-demuxer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"isobmff-demuxer.d.ts","sourceRoot":"","sources":["../../../../src/isobmff/isobmff-demuxer.ts"],"names":[],"mappings":"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"}
@@ -1151,6 +1151,11 @@ export class IsobmffDemuxer extends Demuxer {
1151
1151
  const sampleIndex = this.metadataReader.readU32() - 1; // Convert to 0-indexed
1152
1152
  track.sampleTable.keySampleIndices.push(sampleIndex);
1153
1153
  }
1154
+ if (track.sampleTable.keySampleIndices[0] !== 0) {
1155
+ // Some files don't mark the first sample a key sample, which is basically almost always incorrect.
1156
+ // Here, we correct for that mistake:
1157
+ track.sampleTable.keySampleIndices.unshift(0);
1158
+ }
1154
1159
  }
1155
1160
  ;
1156
1161
  break;
@@ -124,7 +124,7 @@ export declare class EBMLWriter {
124
124
  writeUnsignedInt(value: number, width?: number): void;
125
125
  writeSignedInt(value: number, width?: number): void;
126
126
  writeVarInt(value: number, width?: number): void;
127
- writeString(str: string): void;
127
+ writeAsciiString(str: string): void;
128
128
  writeEBML(data: EBML | null): void;
129
129
  }
130
130
  export declare const MIN_HEADER_SIZE = 2;
@@ -141,7 +141,7 @@ export declare class EBMLReader {
141
141
  readUnsignedInt(width: number): number;
142
142
  readSignedInt(width: number): number;
143
143
  readFloat(width: number): number;
144
- readString(length: number): string;
144
+ readAsciiString(length: number): string;
145
145
  readElementId(): number;
146
146
  readElementSize(): number | null;
147
147
  readElementHeader(): {
@@ -1 +1 @@
1
- {"version":3,"file":"ebml.d.ts","sourceRoot":"","sources":["../../../../src/matroska/ebml.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;CACjG;AAED,MAAM,MAAM,IAAI,GAAG,WAAW,GAAG,UAAU,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;AAE9D,4EAA4E;AAC5E,qBAAa,WAAW;IACvB,KAAK,EAAE,MAAM,CAAC;gBAEF,KAAK,EAAE,MAAM;CAGzB;AAED,4EAA4E;AAC5E,qBAAa,WAAW;IACvB,KAAK,EAAE,MAAM,CAAC;gBAEF,KAAK,EAAE,MAAM;CAGzB;AAED,4EAA4E;AAC5E,qBAAa,aAAa;IACzB,KAAK,EAAE,MAAM,CAAC;gBAEF,KAAK,EAAE,MAAM;CAGzB;AAED,2DAA2D;AAC3D,oBAAY,MAAM;IACjB,IAAI,YAAa;IACjB,WAAW,QAAS;IACpB,eAAe,QAAS;IACxB,eAAe,QAAS;IACxB,iBAAiB,QAAS;IAC1B,OAAO,QAAS;IAChB,cAAc,QAAS;IACvB,kBAAkB,QAAS;IAC3B,QAAQ,YAAa;IACrB,IAAI,QAAS;IACb,MAAM,QAAS;IACf,YAAY,QAAS;IACrB,QAAQ,QAAS;IACjB,IAAI,YAAa;IACjB,cAAc,UAAW;IACzB,SAAS,QAAS;IAClB,UAAU,QAAS;IACnB,MAAM,YAAa;IACnB,UAAU,MAAO;IACjB,WAAW,MAAO;IAClB,QAAQ,QAAS;IACjB,SAAS,MAAO;IAChB,WAAW,MAAO;IAClB,WAAW,MAAO;IAClB,UAAU,QAAS;IACnB,UAAU,MAAO;IACjB,QAAQ,UAAW;IACnB,OAAO,MAAO;IACd,YAAY,QAAS;IACrB,UAAU,QAAS;IACnB,WAAW,QAAS;IACpB,eAAe,UAAW;IAC1B,KAAK,MAAO;IACZ,UAAU,MAAO;IACjB,WAAW,MAAO;IAClB,KAAK,MAAO;IACZ,iBAAiB,MAAO;IACxB,QAAQ,MAAO;IACf,QAAQ,QAAS;IACjB,OAAO,YAAa;IACpB,WAAW,MAAO;IAClB,UAAU,MAAO;IACjB,KAAK,MAAO;IACZ,cAAc,QAAS;IACvB,SAAS,MAAO;IAChB,eAAe,MAAO;IACtB,UAAU,MAAO;IACjB,aAAa,MAAO;IACpB,cAAc,MAAO;IACrB,OAAO,YAAa;IACpB,SAAS,MAAO;IAChB,IAAI,YAAa;IACjB,QAAQ,MAAO;IACf,OAAO,MAAO;IACd,iBAAiB,MAAO;IACxB,QAAQ,MAAO;IACf,kBAAkB,MAAO;IACzB,MAAM,QAAS;IACf,kBAAkB,QAAS;IAC3B,uBAAuB,QAAS;IAChC,SAAS,QAAS;IAClB,KAAK,QAAS;IACd,UAAU,QAAS;IACnB,cAAc,QAAS;IACvB,kBAAkB,QAAS;IAC3B,WAAW,YAAa;IACxB,QAAQ,YAAa;IACrB,IAAI,YAAa;CACjB;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAGpC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAWpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,UAGlC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,0BAc/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,0BAc7C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,0BAoB1C,CAAC;AAEF,qBAAa,UAAU;IAYV,OAAO,CAAC,MAAM;IAX1B,MAAM,0BAAqB;IAC3B,UAAU,wBAAoC;IAE9C;;;OAGG;IACH,OAAO,wBAA+B;IACtC,uGAAuG;IACvG,WAAW,wBAA+B;gBAEtB,MAAM,EAAE,MAAM;IAElC,SAAS,CAAC,KAAK,EAAE,MAAM;IAKvB,YAAY,CAAC,KAAK,EAAE,MAAM;IAK1B,YAAY,CAAC,KAAK,EAAE,MAAM;IAK1B,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAA4B;IA+BjE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAA0B;IAS7D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAuB;IAkDvD,WAAW,CAAC,GAAG,EAAE,MAAM;IAIvB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;CA2D3B;AAGD,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,eAAe,QAAuB,CAAC;AAEpD,qBAAa,UAAU;IAGH,MAAM,EAAE,MAAM;IAFjC,GAAG,SAAK;gBAEW,MAAM,EAAE,MAAM;IAEjC,SAAS,CAAC,MAAM,EAAE,MAAM;IAOxB,MAAM;IAON,OAAO;IAOP,cAAc;IAcd,UAAU;IA4BV,eAAe,CAAC,KAAK,EAAE,MAAM;IAkB7B,aAAa,CAAC,KAAK,EAAE,MAAM;IAW3B,SAAS,CAAC,KAAK,EAAE,MAAM;IAgBvB,UAAU,CAAC,MAAM,EAAE,MAAM;IAazB,aAAa;IAOb,eAAe;IAsBf,iBAAiB;;;;IAOjB,kFAAkF;IAC5E,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM;CAsBzD;AAED,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAuBhE,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,UAAU,EAAE,QAAQ,MAAM;;;CA8B1D,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAI7E"}
1
+ {"version":3,"file":"ebml.d.ts","sourceRoot":"","sources":["../../../../src/matroska/ebml.ts"],"names":[],"mappings":"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"}
@@ -288,8 +288,7 @@ export class EBMLWriter {
288
288
  }
289
289
  this.writer.write(this.helper.subarray(0, pos));
290
290
  }
291
- // Assumes the string is ASCII
292
- writeString(str) {
291
+ writeAsciiString(str) {
293
292
  this.writer.write(new Uint8Array(str.split('').map(x => x.charCodeAt(0))));
294
293
  }
295
294
  writeEBML(data) {
@@ -334,7 +333,7 @@ export class EBMLWriter {
334
333
  }
335
334
  else if (typeof data.data === 'string') {
336
335
  this.writeVarInt(data.data.length);
337
- this.writeString(data.data);
336
+ this.writeAsciiString(data.data);
338
337
  }
339
338
  else if (data.data instanceof Uint8Array) {
340
339
  this.writeVarInt(data.data.byteLength, data.size);
@@ -446,7 +445,7 @@ export class EBMLReader {
446
445
  this.pos += width;
447
446
  return value;
448
447
  }
449
- readString(length) {
448
+ readAsciiString(length) {
450
449
  const { view, offset } = this.reader.getViewAndOffset(this.pos, this.pos + length);
451
450
  this.pos += length;
452
451
  // Actual string length might be shorter due to null terminators
@@ -468,7 +468,7 @@ export class MatroskaDemuxer extends Demuxer {
468
468
  switch (id) {
469
469
  case EBMLId.DocType:
470
470
  {
471
- this.isWebM = reader.readString(size) === 'webm';
471
+ this.isWebM = reader.readAsciiString(size) === 'webm';
472
472
  }
473
473
  ;
474
474
  break;
@@ -706,7 +706,7 @@ export class MatroskaDemuxer extends Demuxer {
706
706
  {
707
707
  if (!this.currentTrack)
708
708
  break;
709
- this.currentTrack.codecId = reader.readString(size);
709
+ this.currentTrack.codecId = reader.readAsciiString(size);
710
710
  }
711
711
  ;
712
712
  break;
@@ -731,7 +731,7 @@ export class MatroskaDemuxer extends Demuxer {
731
731
  {
732
732
  if (!this.currentTrack)
733
733
  break;
734
- this.currentTrack.languageCode = reader.readString(size);
734
+ this.currentTrack.languageCode = reader.readAsciiString(size);
735
735
  if (!isIso639Dash2LanguageCode(this.currentTrack.languageCode)) {
736
736
  this.currentTrack.languageCode = UNDETERMINED_LANGUAGE;
737
737
  }
@@ -1 +1 @@
1
- {"version":3,"file":"media-sink.d.ts","sourceRoot":"","sources":["../../../src/media-sink.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media-sink.d.ts","sourceRoot":"","sources":["../../../src/media-sink.ts"],"names":[],"mappings":"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"}
@@ -943,8 +943,14 @@ class AudioDecoderWrapper extends DecoderWrapper {
943
943
  this.customDecoderCallSerializer = new CallSerializer();
944
944
  this.customDecoderQueueSize = 0;
945
945
  const sampleHandler = (sample) => {
946
- const sampleRate = decoderConfig.sampleRate;
946
+ if (sample.numberOfFrames === 0) {
947
+ // We skip zero-data (empty) AudioSamples. These are sometimes emitted, for example, by Firefox when it
948
+ // decodes Vorbis (at the start).
949
+ sample.close();
950
+ return;
951
+ }
947
952
  // Round the timestamp to the sample rate
953
+ const sampleRate = decoderConfig.sampleRate;
948
954
  sample.setTimestamp(Math.round(sample.timestamp * sampleRate) / sampleRate);
949
955
  onSample(sample);
950
956
  };
@@ -34,7 +34,8 @@ export declare abstract class VideoSource extends MediaSource {
34
34
  export declare class EncodedVideoPacketSource extends VideoSource {
35
35
  constructor(codec: VideoCodec);
36
36
  /**
37
- * Adds an encoded packet to the output video track.
37
+ * Adds an encoded packet to the output video track. Packets must be added in *decode order*, while a packet's
38
+ * timestamp must be its *presentation timestamp*. B-frames are handled automatically.
38
39
  *
39
40
  * @param meta - Additional metadata from the encoder. You should pass this for the first call, including a valid
40
41
  * decoder config.
@@ -133,7 +134,7 @@ export declare abstract class AudioSource extends MediaSource {
133
134
  export declare class EncodedAudioPacketSource extends AudioSource {
134
135
  constructor(codec: AudioCodec);
135
136
  /**
136
- * Adds an encoded packet to the output audio track.
137
+ * Adds an encoded packet to the output audio track. Packets must be added in *decode order*.
137
138
  *
138
139
  * @param meta - Additional metadata from the encoder. You should pass this for the first call, including a valid
139
140
  * decoder config.
@@ -1 +1 @@
1
- {"version":3,"file":"media-source.d.ts","sourceRoot":"","sources":["../../../src/media-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media-source.d.ts","sourceRoot":"","sources":["../../../src/media-source.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEN,UAAU,EASV,OAAO,EAEP,aAAa,EAEb,UAAU,EACV,MAAM,SAAS,CAAC;AAYjB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD;;;GAGG;AACH,8BAAsB,WAAW;IA0ChC;;;;OAIG;IACH,KAAK;CAqCL;AAED;;;GAGG;AACH,8BAAsB,WAAY,SAAQ,WAAW;gBAMxC,KAAK,EAAE,UAAU;CAS7B;AAED;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,WAAW;gBAC5C,KAAK,EAAE,UAAU;IAI7B;;;;;;;;;OASG;IACH,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,yBAAyB;CAc3D;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IACjC,mFAAmF;IACnF,KAAK,EAAE,UAAU,CAAC;IAClB;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,uFAAuF;IACvF,WAAW,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAChD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,yGAAyG;IACzG,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,yBAAyB,GAAG,SAAS,KAAK,OAAO,CAAC;IAClG,yFAAyF;IACzF,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC;CAC1D,CAAC;AAoRF;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;gBAIrC,cAAc,EAAE,mBAAmB;IAO/C;;;;;OAKG;IACH,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,yBAAyB;CAYvE;AAED;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,WAAW;gBAMhC,MAAM,EAAE,iBAAiB,GAAG,eAAe,EAAE,cAAc,EAAE,mBAAmB;IAc5F;;;;;;;;OAQG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,aAAa,CAAC,EAAE,yBAAyB;CAgB9E;AAED;;;;;;GAMG;AACH,qBAAa,2BAA4B,SAAQ,WAAW;IAgB3D,6FAA6F;IAC7F,IAAI,YAAY,kBAGf;gBAEW,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB;CAsJ7E;AAED;;;GAGG;AACH,8BAAsB,WAAY,SAAQ,WAAW;gBAMxC,KAAK,EAAE,UAAU;CAS7B;AAED;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,WAAW;gBAC5C,KAAK,EAAE,UAAU;IAI7B;;;;;;;;OAQG;IACH,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,yBAAyB;CAc3D;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IACjC,0EAA0E;IAC1E,KAAK,EAAE,UAAU,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,yGAAyG;IACzG,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,yBAAyB,GAAG,SAAS,KAAK,OAAO,CAAC;IAClG,yFAAyF;IACzF,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC;CAC1D,CAAC;AAqbF;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;gBAIrC,cAAc,EAAE,mBAAmB;IAO/C;;;;;OAKG;IACH,GAAG,CAAC,WAAW,EAAE,WAAW;CAY5B;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;gBAMrC,cAAc,EAAE,mBAAmB;IAO/C;;;;;;;OAOG;IACH,GAAG,CAAC,WAAW,EAAE,WAAW;CAgB5B;AAED;;;;;;GAMG;AACH,qBAAa,2BAA4B,SAAQ,WAAW;IAgB3D,6FAA6F;IAC7F,IAAI,YAAY,kBAGf;gBAEW,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB;CAoI7E;AAgKD;;;GAGG;AACH,8BAAsB,cAAe,SAAQ,WAAW;gBAM3C,KAAK,EAAE,aAAa;CAShC;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;gBAIzC,KAAK,EAAE,aAAa;IAUhC;;;;;;OAMG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM;CAUhB"}
@@ -113,7 +113,8 @@ export class EncodedVideoPacketSource extends VideoSource {
113
113
  super(codec);
114
114
  }
115
115
  /**
116
- * Adds an encoded packet to the output video track.
116
+ * Adds an encoded packet to the output video track. Packets must be added in *decode order*, while a packet's
117
+ * timestamp must be its *presentation timestamp*. B-frames are handled automatically.
117
118
  *
118
119
  * @param meta - Additional metadata from the encoder. You should pass this for the first call, including a valid
119
120
  * decoder config.
@@ -607,7 +608,7 @@ export class EncodedAudioPacketSource extends AudioSource {
607
608
  super(codec);
608
609
  }
609
610
  /**
610
- * Adds an encoded packet to the output audio track.
611
+ * Adds an encoded packet to the output audio track. Packets must be added in *decode order*.
611
612
  *
612
613
  * @param meta - Additional metadata from the encoder. You should pass this for the first call, including a valid
613
614
  * decoder config.
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/source.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;GAGG;AACH,8BAAsB,MAAM;IAS3B;;;OAGG;IACH,OAAO;IAIP,0DAA0D;IAC1D,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,CAAQ;CAChE;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,MAAM;gBAI3B,MAAM,EAAE,WAAW,GAAG,UAAU;CAmB5C;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IACjC,0GAA0G;IAC1G,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvE,2GAA2G;IAC3G,OAAO,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF;;;GAGG;AACH,qBAAa,YAAa,SAAQ,MAAM;gBAI3B,OAAO,EAAE,mBAAmB;CAyBxC;AAED;;;GAGG;AACH,qBAAa,UAAW,SAAQ,MAAM;gBAIzB,IAAI,EAAE,IAAI;CAqBtB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC5D,CAAC;AAEF;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,MAAM;gBASnC,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,OAAO,GAAE,gBAAqB;CAiI/B"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/source.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;GAGG;AACH,8BAAsB,MAAM;IAS3B;;;OAGG;IACH,OAAO;IAIP,0DAA0D;IAC1D,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,CAAQ;CAChE;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,MAAM;gBAI3B,MAAM,EAAE,WAAW,GAAG,UAAU;CAmB5C;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IACjC,0GAA0G;IAC1G,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvE,2GAA2G;IAC3G,OAAO,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF;;;GAGG;AACH,qBAAa,YAAa,SAAQ,MAAM;gBAI3B,OAAO,EAAE,mBAAmB;CAyBxC;AAED;;;GAGG;AACH,qBAAa,UAAW,SAAQ,MAAM;gBAIzB,IAAI,EAAE,IAAI;CAqBtB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC5D,CAAC;AAEF;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,MAAM;gBAWnC,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,OAAO,GAAE,gBAAqB;CAmJ/B"}
@@ -118,7 +118,9 @@ export class UrlSource extends Source {
118
118
  super();
119
119
  /** @internal */
120
120
  this._fullData = null;
121
- this._url = url;
121
+ /** @internal */
122
+ this._nextUrlVersion = null;
123
+ this._url = url instanceof URL ? url : new URL(url);
122
124
  this._options = options;
123
125
  }
124
126
  /** @internal */
@@ -127,6 +129,10 @@ export class UrlSource extends Source {
127
129
  if (range) {
128
130
  headers['Range'] = `bytes=${range.start}-${range.end - 1}`;
129
131
  }
132
+ if (this._nextUrlVersion !== null) {
133
+ this._url.searchParams.set('mediabunny_version', this._nextUrlVersion.toString());
134
+ this._nextUrlVersion++;
135
+ }
130
136
  const response = await retriedFetch(this._url, mergeObjectsDeeply(this._options.requestInit ?? {}, {
131
137
  method: 'GET',
132
138
  headers,
@@ -135,6 +141,16 @@ export class UrlSource extends Source {
135
141
  throw new Error(`Error fetching ${this._url}: ${response.status} ${response.statusText}`);
136
142
  }
137
143
  const buffer = await response.arrayBuffer();
144
+ if (response.status === 206
145
+ && range
146
+ && buffer.byteLength !== range.end - range.start
147
+ && this._nextUrlVersion === null) {
148
+ // We did a range request but it resolved with the wrong range; in Chromium, this can be due to a caching
149
+ // bug (https://issues.chromium.org/issues/436025873). Let's circumvent the cache for the rest of the
150
+ // session by appending a version to the URL.
151
+ this._nextUrlVersion = 1;
152
+ return this._makeRequest(range);
153
+ }
138
154
  if (response.status === 200) {
139
155
  // The server didn't return 206 Partial Content, so it's not a range response
140
156
  this._fullData = buffer;