aboutsummaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-03-22 20:51:55 +0100
committermetamuffin <metamuffin@disroot.org>2026-03-22 20:51:55 +0100
commit7d15aec5be589b2d53c89a427a9c99dec2dea1ff (patch)
tree9e9f6e3955f7f6c85ceb348f3bdb25594cf02a20 /ui
parentd437d7cbf967a2520ebaa2cf63ae5e4b3cb4544a (diff)
downloadjellything-7d15aec5be589b2d53c89a427a9c99dec2dea1ff.tar
jellything-7d15aec5be589b2d53c89a427a9c99dec2dea1ff.tar.bz2
jellything-7d15aec5be589b2d53c89a427a9c99dec2dea1ff.tar.zst
hacky solution for init in jsp
Diffstat (limited to 'ui')
-rw-r--r--ui/client-scripts/src/player/mod.ts4
-rw-r--r--ui/client-scripts/src/player/track/mse.ts22
2 files changed, 18 insertions, 8 deletions
diff --git a/ui/client-scripts/src/player/mod.ts b/ui/client-scripts/src/player/mod.ts
index 3927be0..8121a1f 100644
--- a/ui/client-scripts/src/player/mod.ts
+++ b/ui/client-scripts/src/player/mod.ts
@@ -337,8 +337,8 @@ function send_player_progress(node_id: string, player: Player) {
const nt = player.video.currentTime
if (t != nt) {
t = nt
- const start = nt < 1 * 60
- const end = nt > player.duration.value - 5 * 60
+ const start = nt < 60
+ const end = nt > player.duration.value - 300
// if (!start && !send_watched) fetch(`/n/${node_id}/progress?t=${nt}`, { method: "POST" })
if (end && !sent_watched) {
diff --git a/ui/client-scripts/src/player/track/mse.ts b/ui/client-scripts/src/player/track/mse.ts
index faee825..4f30f0b 100644
--- a/ui/client-scripts/src/player/track/mse.ts
+++ b/ui/client-scripts/src/player/track/mse.ts
@@ -20,6 +20,7 @@ export class MSEPlayerTrack extends PlayerTrack {
private append_queue: AppendRange[] = [];
public index?: FragmentIndex
public active_format = new OVar<UsableFormat | undefined>(undefined);
+ private queue_format_init: number = -1
public usable_formats: UsableFormat[] = []
constructor(
@@ -163,12 +164,21 @@ export class MSEPlayerTrack extends PlayerTrack {
this.loading.add(index);
this.update_buf_ranges()
// TODO update format selection
- const url = `${this.base_url}/${this.track_index}/${this.active_format.value!.format_index}/frag${index}.${this.active_format.value!.container}`;
- const buf = await this.player.downloader.download(url);
+ const f = this.active_format.value!;
+ let init: ArrayBuffer | undefined
+ if (this.queue_format_init != f.format_index) {
+ init = await this.player.downloader.download(`${this.base_url}/${this.track_index}/${f.format_index}/init.${f.container}`);
+ }
+ const frag = await this.player.downloader.download(`${this.base_url}/${this.track_index}/${f.format_index}/frag${index}.${f.container}`);
await new Promise<void>(cb => {
if (!this.index) return;
if (this.abort.signal.aborted) return;
- this.append_queue.push({ buf, ...this.index[index], index, cb });
+ if (this.queue_format_init != f.format_index) {
+ if (!init) return console.warn("queue switched back in-load");
+ this.append_queue.push({ buf: init, ...this.index[index], index, cb });
+ this.queue_format_init = f.format_index
+ }
+ this.append_queue.push({ buf: frag, ...this.index[index], index, cb });
this.tick_append();
});
}
@@ -179,12 +189,12 @@ export class MSEPlayerTrack extends PlayerTrack {
this.append_queue.splice(0, 1);
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.active_format.value!.format, this.active_format.value!.container));
+ // this.source_buffer.changeType(track_to_content_type(this.active_format.value!.format, this.active_format.value!.container));
+ this.source_buffer.appendBuffer(frag.buf);
// this.source_buffer.timestampOffset = this.active_format.value?.container == "mpeg4" ? frag.start : 0
// this.source_buffer.timestampOffset = this.trackinfo.kind == "video" && !this.active_format.value!.format.remux ? frag.start : 0
// this.source_buffer.timestampOffset = this.active_format.value?.format.remux ? 0 : frag.start
- this.source_buffer.timestampOffset = 0
- this.source_buffer.appendBuffer(frag.buf);
+ // this.source_buffer.timestampOffset = 0
}
}