@phenixrts/sdk
Version:
JavaScript SDK
39 lines (38 loc) • 1.66 kB
TypeScript
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<HTMLVideoElement | null>;
decodedFrameTimingInformationSubject: Subject<DecodedFrameTimingInformation | null>;
renderedFrameTimingInformationSubject: Subject<RenderedFrameTimingInformation | null>;
isEnabledSubject: Subject<boolean>;
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;
}