/** * TrackMonitor следит за изменением MediaStreamTrack, который отправляется * локальным RTCRtpSender-ом. * * 1. Обнаруживает смену sender или его track (replaceTrack). * 2. При изменении разрешения (resize-event или polling) вызывает callback. * 3. При replaceTrack вызывает callback сразу после замены и перенастраивает слежение. */ export declare class TrackMonitor { private currentSender?; private originalReplaceTrack?; private lastWidth?; private lastHeight?; private readonly maxPollIntervalMs; private currentPollIntervalMs; private readonly pollIntervalMs; private readonly setTimeoutRequest; constructor({ pollIntervalMs, maxPollIntervalMs, }: { pollIntervalMs?: number; maxPollIntervalMs?: number; }); /** * Проверяет актуальный video-sender и (при необходимости) перенастраивает наблюдение. */ subscribe(sender: RTCRtpSender | undefined, callback: () => void): void; /** Останавливает всю активность мониторинга */ unsubscribe(): void; private attachSender; private detachSender; private attachTrack; /** * Периодически опрашивает track с экспоненциальной адаптацией частоты. * При отсутствии изменений интервал удваивается до maxPollIntervalMs, * при обнаружении изменений сбрасывается до начального. */ private schedulePoll; private detachTrack; }