aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-04-21 20:36:24 +0200
committermetamuffin <metamuffin@disroot.org>2025-04-21 20:36:24 +0200
commit30c3bb552aba8794d57eb08688e0c1c751ab27a0 (patch)
treec7124644f8fff70afcc59738febbbfa2a5344d40
parentddfc3223b247fd18ca753b5debb95711726e1388 (diff)
downloadjellything-30c3bb552aba8794d57eb08688e0c1c751ab27a0.tar
jellything-30c3bb552aba8794d57eb08688e0c1c751ab27a0.tar.bz2
jellything-30c3bb552aba8794d57eb08688e0c1c751ab27a0.tar.zst
generic buffering slow start
-rw-r--r--web/script/player/track/mod.ts2
-rw-r--r--web/script/player/track/mse.ts5
2 files changed, 3 insertions, 4 deletions
diff --git a/web/script/player/track/mod.ts b/web/script/player/track/mod.ts
index 99b348c..78a987b 100644
--- a/web/script/player/track/mod.ts
+++ b/web/script/player/track/mod.ts
@@ -8,7 +8,7 @@ import { TimeRange } from "../types_stream.ts";
import { OVar } from "../../jshelper/mod.ts";
import { BufferRange } from "../player.ts";
-export const TARGET_BUFFER_DURATION = 15
+export const TARGET_BUFFER_DURATION = 20
export const MIN_BUFFER_DURATION = 1
export interface AppendRange extends TimeRange { buf: ArrayBuffer, index: number, cb: () => void }
diff --git a/web/script/player/track/mse.ts b/web/script/player/track/mse.ts
index af252a4..7c54e28 100644
--- a/web/script/player/track/mse.ts
+++ b/web/script/player/track/mse.ts
@@ -133,9 +133,7 @@ export class MSEPlayerTrack extends PlayerTrack {
if (!this.index) return;
this.update_buf_ranges(); // TODO required?
- let buffer_to = target + TARGET_BUFFER_DURATION
- if (target < 1) buffer_to = 1
- if (target < 3) buffer_to = 5
+ const buffer_to = target + (target < 20 ? Math.max(1, target) : TARGET_BUFFER_DURATION)
const blocking = [];
for (let i = 0; i < this.index.length; i++) {
@@ -181,6 +179,7 @@ export class MSEPlayerTrack extends PlayerTrack {
// 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.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);