Preserve native broadcast video and add patient shared stream startup
This commit is contained in:
@@ -52,7 +52,7 @@ window.DecoderChannelPlayback = async () => class DecoderChannelPlayback {
|
||||
api.ajax({ type: 'GET', dataType: 'json', url: api.getUrl('DecoderIntegration/StartupMessages', { language }) }),
|
||||
new Promise(resolve => { timer = setTimeout(() => resolve(null), 1000); })
|
||||
]);
|
||||
return response?.Texts ? { ...fallback, ...response.Texts } : fallback;
|
||||
return response?.Texts ? { ...fallback, ...response.Texts, StartupTimeoutSeconds: response.StartupTimeoutSeconds } : fallback;
|
||||
} catch { return fallback; } finally { clearTimeout(timer); }
|
||||
};
|
||||
let generation = 0, starting = null, cancelButton = null, watcher = null, statusPanel = null, statusText = null, elapsedText = null, playbackSequence = 0;
|
||||
@@ -97,9 +97,11 @@ window.DecoderChannelPlayback = async () => class DecoderChannelPlayback {
|
||||
cancelButton.style.cssText = 'position:fixed;right:16px;top:72px;z-index:2147483647;background:#252525;color:white;border:1px solid #aaa;border-radius:6px;padding:12px;font:16px system-ui;cursor:pointer';
|
||||
cancelButton.onclick = () => void leave(); document.body.append(cancelButton);
|
||||
showStatus(item.Name);
|
||||
// Allow the bounded metadata probe (25 s) plus HLS startup (20 s).
|
||||
// Use this provider's bounded startup budget; retain compatibility with older DLLs.
|
||||
let opened = false, opening = false, hasPlayed = false, polling = false, pollFailures = 0, lastPoll = -Infinity;
|
||||
const began = Date.now(), deadline = began + 45000, initialVideo = document.querySelector('video'), initialSource = initialVideo?.currentSrc, initialSequence = playbackSequence;
|
||||
const configuredWait = Number(messages.StartupTimeoutSeconds);
|
||||
const waitMs = Number.isFinite(configuredWait) && configuredWait >= 45 && configuredWait <= 225 ? configuredWait * 1000 : 45000;
|
||||
const began = Date.now(), deadline = began + waitMs, initialVideo = document.querySelector('video'), initialSource = initialVideo?.currentSrc, initialSequence = playbackSequence;
|
||||
watcher = setInterval(() => {
|
||||
if (ticket !== generation) return;
|
||||
const video = document.querySelector('video');
|
||||
|
||||
Reference in New Issue
Block a user