mediasoup
Version:
Cutting Edge WebRTC Video Conferencing
207 lines • 4.88 kB
TypeScript
import type { EnhancedEventEmitter } from './enhancedEvents';
import type { MediaKind, RtpParameters } from './rtpParametersTypes';
import type { RtpStreamRecvStats } from './rtpStreamStatsTypes';
import type { AppData } from './types';
export type ProducerOptions<ProducerAppData extends AppData = AppData> = {
/**
* Producer id (just for Router.pipeToRouter() method).
*/
id?: string;
/**
* Media kind ('audio' or 'video').
*/
kind: MediaKind;
/**
* RTP parameters defining what the endpoint is sending.
*/
rtpParameters: RtpParameters;
/**
* Whether the producer must start in paused mode. Default false.
*/
paused?: boolean;
/**
* Just for video. Time (in ms) before asking the sender for a new key frame
* after having asked a previous one. Default 0.
*/
keyFrameRequestDelay?: number;
/**
* Add mediasoup custom 'urn:mediasoup:params:rtp-hdrext:packet-id' header
* extension to RTP packets received from the sender endpoint.
*/
enableMediasoupPacketIdHeaderExtension?: boolean;
/**
* Custom application data.
*/
appData?: ProducerAppData;
};
/**
* Producer type.
*/
export type ProducerType = 'simple' | 'simulcast' | 'svc';
export type ProducerScore = {
/**
* Index of the RTP stream in the rtpParameters.encodings array.
*/
encodingIdx: number;
/**
* SSRC of the RTP stream.
*/
ssrc: number;
/**
* RID of the RTP stream.
*/
rid?: string;
/**
* The score of the RTP stream.
*/
score: number;
};
export type ProducerVideoOrientation = {
/**
* Whether the source is a video camera.
*/
camera: boolean;
/**
* Whether the video source is flipped.
*/
flip: boolean;
/**
* Rotation degrees (0, 90, 180 or 270).
*/
rotation: number;
};
export type ProducerDump = {
id: string;
kind: string;
type: ProducerType;
rtpParameters: RtpParameters;
rtpMapping: unknown;
rtpStreams: unknown;
traceEventTypes: string[];
paused: boolean;
};
export type ProducerStat = RtpStreamRecvStats;
/**
* Valid types for 'trace' event.
*/
export type ProducerTraceEventType = 'rtp' | 'keyframe' | 'nack' | 'pli' | 'fir' | 'sr';
/**
* 'trace' event data.
*/
export type ProducerTraceEventData = {
/**
* Trace type.
*/
type: ProducerTraceEventType;
/**
* Event timestamp.
*/
timestamp: number;
/**
* Event direction.
*/
direction: 'in' | 'out';
/**
* Per type information.
*/
info: Record<string, unknown>;
};
export type ProducerEvents = {
transportclose: [];
score: [ProducerScore[]];
videoorientationchange: [ProducerVideoOrientation];
trace: [ProducerTraceEventData];
'@close': [];
};
export type ProducerObserver = EnhancedEventEmitter<ProducerObserverEvents>;
export type ProducerObserverEvents = {
close: [];
pause: [];
resume: [];
score: [ProducerScore[]];
videoorientationchange: [ProducerVideoOrientation];
trace: [ProducerTraceEventData];
};
export interface Producer<ProducerAppData extends AppData = AppData> extends EnhancedEventEmitter<ProducerEvents> {
/**
* Producer id.
*/
get id(): string;
/**
* Whether the Producer is closed.
*/
get closed(): boolean;
/**
* Media kind.
*/
get kind(): MediaKind;
/**
* RTP parameters.
*/
get rtpParameters(): RtpParameters;
/**
* Producer type.
*/
get type(): ProducerType;
/**
* Consumable RTP parameters.
*
* @private
*/
get consumableRtpParameters(): RtpParameters;
/**
* Whether the Producer is paused.
*/
get paused(): boolean;
/**
* Producer score list.
*/
get score(): ProducerScore[];
/**
* App custom data.
*/
get appData(): ProducerAppData;
/**
* App custom data setter.
*/
set appData(appData: ProducerAppData);
/**
* Observer.
*/
get observer(): ProducerObserver;
/**
* Close the Producer.
*/
close(): void;
/**
* Transport was closed.
*
* @private
*/
transportClosed(): void;
/**
* Dump Producer.
*/
dump(): Promise<ProducerDump>;
/**
* Get Producer stats.
*/
getStats(): Promise<ProducerStat[]>;
/**
* Pause the Producer.
*/
pause(): Promise<void>;
/**
* Resume the Producer.
*/
resume(): Promise<void>;
/**
* Enable 'trace' event.
*/
enableTraceEvent(types?: ProducerTraceEventType[]): Promise<void>;
/**
* Send RTP packet (just valid for Producers created on a DirectTransport).
*/
send(rtpPacket: Buffer): void;
}
//# sourceMappingURL=ProducerTypes.d.ts.map