Phase 21 Direction B: bound network memory via Range-segmented forward fetch
Replace the open-ended forward GET with sequential bounded bytes=start-end segments, the next fetched only when the scheduler drains below low-water, so the browser holds ~one segment regardless of file size. Seek converges on the same loop. Strip BP-DIAG.
This commit is contained in:
@@ -107,14 +107,6 @@ export class PlaybackScheduler {
|
||||
// Mutated by evaluateProductionPause() — named to signal the state-advance on each call.
|
||||
private productionPaused_: boolean = false;
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────────────────
|
||||
// [BP-DIAG] Phase 21.4 back-pressure diagnostic. TEMPORARY — strip once the cause is confirmed
|
||||
// in Daniel's browser run. Throttles evaluateProductionPause() logging to one line per ~250 ms
|
||||
// so the console shows the live lookahead / byte-estimate / latch without flooding (the signal
|
||||
// is evaluated on every chunk + every poll). Grep "[BP-DIAG]" in the browser console.
|
||||
private bpDiagLastLogMs: number = 0;
|
||||
// ─────────────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
// Callbacks
|
||||
public onPlaybackEnded: (() => void) | null = null;
|
||||
|
||||
@@ -245,22 +237,6 @@ export class PlaybackScheduler {
|
||||
this.productionPaused_ = true;
|
||||
}
|
||||
|
||||
// [BP-DIAG] Phase 21.4 — the single source of truth for the latch decision. If `paused`
|
||||
// never goes true while bytes keep arriving, the lookahead is not growing as expected:
|
||||
// inspect `lookahead` vs `high` (should cross 30 during a fast fill) and `bufCount`/`bytes`
|
||||
// (decode must actually be populating the scheduler). Throttled to ~4 Hz. TEMPORARY — strip
|
||||
// once the cause is confirmed. (Uses performance.now when present; Date.now fallback.)
|
||||
const bpNow = (typeof performance !== 'undefined' ? performance.now() : Date.now());
|
||||
if (bpNow - this.bpDiagLastLogMs >= 250) {
|
||||
this.bpDiagLastLogMs = bpNow;
|
||||
console.log(
|
||||
`[BP-DIAG] evaluateProductionPause paused=${this.productionPaused_} ` +
|
||||
`lookahead=${lookahead.toFixed(2)}s high=${this.forwardHighWaterSeconds} low=${this.forwardLowWaterSeconds} ` +
|
||||
`bytes=${(this.getDecodedByteEstimate() / (1024 * 1024)).toFixed(1)}MB cap=${(this.maxDecodedBytes / (1024 * 1024)).toFixed(0)}MB ` +
|
||||
`overByteCeiling=${overByteCeiling} bufCount=${this.buffers.length} pos=${this.getCurrentPosition().toFixed(2)}s ` +
|
||||
`decodedEnd=${(this.getTotalDuration() + this.playbackOffset).toFixed(2)}s active=${this.isActive_}`);
|
||||
}
|
||||
|
||||
return this.productionPaused_;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user