import IDisposable from '../../lang/IDisposable'; import Subject from '../../rx/Subject'; import { DecodedFrameTimingInformation, RenderedFrameTimingInformation } from './FrameTimingInformation'; import { VideoCodec } from '../decode/bitstream/codec/VideoCodec'; import TransformMessageRouter from '../transformation/worker/MessageRouter'; export type FrameTimingInformationManagerContext = { codec: VideoCodec; streamId: string; videoElement: Subject; decodedFrameTimingInformationSubject: Subject; renderedFrameTimingInformationSubject: Subject; isEnabledSubject: Subject; receiver: RTCRtpReceiver; mid: string; trackId: string; transformFunctionNames: string[]; transformMessageRouter: TransformMessageRouter; }; export default class FrameTimingInformationManager implements IDisposable { private static readonly _transformName; private readonly _logger; private readonly _decodedFrameTimingInformationByRtpTimestamp; private readonly _videoElementDisposables; private readonly _disposables; private _currentPlaybackState; private _armedVideoFrameCallbackId; private _disposed; constructor(context: FrameTimingInformationManagerContext); dispose(): void; private initialize; private canProcessFrameTimingInformation; private setupFrameTimingInformationTransform; private handleFrameTimingMessage; private setupVideoElementHandling; private handleVideoFrameCallback; private setupVideoEventListeners; private _armVideoFrameCallback; }