Phase 21.3: seek-back-past-window refill + clean refill-failure recovery
Seek-back past the retained tail reuses the existing seek-beyond-buffer Range path (per-path resolver). A failed refill now halts the scheduler into a paused-but-loaded state (AC6) instead of a silent false end.
This commit is contained in:
@@ -131,6 +131,15 @@ const DeepDrftAudio = {
|
||||
return player.reinitializeFromOffset(totalStreamLength, seekPosition);
|
||||
},
|
||||
|
||||
// Phase 21.3 / AC6: recover into a clean paused-but-loaded state after a window-miss refill
|
||||
// (seek-back past the retained tail) failed its Range fetch or reinit. Prevents the starved
|
||||
// scheduler from firing a silent false end; leaves the track loaded so a retry is possible.
|
||||
recoverFromFailedRefill: (playerId: string, seekPosition: number): AudioResult => {
|
||||
const player = audioPlayers.get(playerId);
|
||||
if (!player) return { success: false, error: 'Player not found' };
|
||||
return player.recoverFromFailedRefill(seekPosition);
|
||||
},
|
||||
|
||||
setVolume: (playerId: string, volume: number): AudioResult => {
|
||||
const player = audioPlayers.get(playerId);
|
||||
if (!player) return { success: false, error: 'Player not found' };
|
||||
|
||||
Reference in New Issue
Block a user