aboutsummaryrefslogtreecommitdiff
path: root/web/script/player/track/mse.ts
diff options
context:
space:
mode:
Diffstat (limited to 'web/script/player/track/mse.ts')
-rw-r--r--web/script/player/track/mse.ts29
1 files changed, 17 insertions, 12 deletions
diff --git a/web/script/player/track/mse.ts b/web/script/player/track/mse.ts
index 803d562..b7a31e0 100644
--- a/web/script/player/track/mse.ts
+++ b/web/script/player/track/mse.ts
@@ -1,3 +1,8 @@
+/*
+ This file is part of jellything (https://codeberg.org/metamuffin/jellything)
+ which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
+ Copyright (C) 2025 metamuffin <metamuffin.org>
+*/
import { JhlsTrackIndex, SourceTrack } from "../jhls.d.ts";
import { OVar } from "../../jshelper/mod.ts";
import { profile_to_partial_track, track_to_content_type } from "../mediacaps.ts";
@@ -91,7 +96,7 @@ export class MSEPlayerTrack extends PlayerTrack {
});
}
for (const r of this.loading) {
- ranges.push({ ...this.index.segments[r], status: "loading" });
+ ranges.push({ ...this.index.fragments[r], status: "loading" });
}
this.buffered.value = ranges;
}
@@ -101,12 +106,12 @@ export class MSEPlayerTrack extends PlayerTrack {
this.update_buf_ranges(); // TODO required?
const blocking = [];
- for (let i = 0; i < this.index.segments.length; i++) {
- const seg = this.index.segments[i];
- if (seg.end < target) continue;
- if (seg.start >= target + TARGET_BUFFER_DURATION) break;
- if (!this.check_buf_collision(seg.start, seg.end)) continue;
- if (seg.start <= target + MIN_BUFFER_DURATION)
+ for (let i = 0; i < this.index.fragments.length; i++) {
+ const frag = this.index.fragments[i];
+ if (frag.end < target) continue;
+ if (frag.start >= target + TARGET_BUFFER_DURATION) break;
+ if (!this.check_buf_collision(frag.start, frag.end)) continue;
+ if (frag.start <= target + MIN_BUFFER_DURATION)
blocking.push(this.load(i));
else
this.load(i);
@@ -129,20 +134,20 @@ export class MSEPlayerTrack extends PlayerTrack {
await new Promise<void>(cb => {
if (!this.index) return;
if (this.abort.signal.aborted) return;
- this.append_queue.push({ buf, ...this.index.segments[index], index, cb });
+ this.append_queue.push({ buf, ...this.index.fragments[index], index, cb });
this.tick_append();
});
}
tick_append() {
if (this.source_buffer.updating || this.current_load) return;
if (this.append_queue.length) {
- const seg = this.append_queue[0];
+ const frag = this.append_queue[0];
this.append_queue.splice(0, 1);
- this.current_load = seg;
+ this.current_load = frag;
// TODO why is appending so unreliable?! sometimes it does not add it
this.source_buffer.changeType(track_to_content_type(this.track_from_profile())!);
- // this.source_buffer.timestampOffset = seg.start;
- this.source_buffer.appendBuffer(seg.buf);
+ console.log(`append track ${this.track_index}`);
+ this.source_buffer.appendBuffer(frag.buf);
}
}