///
import { EnhancedEventEmitter } from './EnhancedEventEmitter';
import { Channel } from './Channel';
import { PayloadChannel } from './PayloadChannel';
import { MediaKind, RtpParameters } from './RtpParameters';
export declare type ProducerOptions = {
/**
* 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;
/**
* Custom application data.
*/
appData?: Record;
};
/**
* Valid types for 'trace' event.
*/
export declare type ProducerTraceEventType = 'rtp' | 'keyframe' | 'nack' | 'pli' | 'fir';
/**
* 'trace' event data.
*/
export declare type ProducerTraceEventData = {
/**
* Trace type.
*/
type: ProducerTraceEventType;
/**
* Event timestamp.
*/
timestamp: number;
/**
* Event direction.
*/
direction: 'in' | 'out';
/**
* Per type information.
*/
info: any;
};
export declare type ProducerScore = {
/**
* SSRC of the RTP stream.
*/
ssrc: number;
/**
* RID of the RTP stream.
*/
rid?: string;
/**
* The score of the RTP stream.
*/
score: number;
};
export declare 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 declare type ProducerStat = {
type: string;
timestamp: number;
ssrc: number;
rtxSsrc?: number;
rid?: string;
kind: string;
mimeType: string;
packetsLost: number;
fractionLost: number;
packetsDiscarded: number;
packetsRetransmitted: number;
packetsRepaired: number;
nackCount: number;
nackPacketCount: number;
pliCount: number;
firCount: number;
score: number;
packetCount: number;
byteCount: number;
bitrate: number;
roundTripTime?: number;
rtxPacketsDiscarded?: number;
jitter: number;
bitrateByLayer?: any;
};
/**
* Producer type.
*/
export declare type ProducerType = 'simple' | 'simulcast' | 'svc';
export declare type ProducerEvents = {
transportclose: [];
score: [ProducerScore[]];
videoorientationchange: [ProducerVideoOrientation];
trace: [ProducerTraceEventData];
'@close': [];
};
export declare type ProducerObserverEvents = {
close: [];
pause: [];
resume: [];
score: [ProducerScore[]];
videoorientationchange: [ProducerVideoOrientation];
trace: [ProducerTraceEventData];
};
export declare class Producer extends EnhancedEventEmitter {
#private;
/**
* @private
*/
constructor({ internal, data, channel, payloadChannel, appData, paused }: {
internal: any;
data: any;
channel: Channel;
payloadChannel: PayloadChannel;
appData?: Record;
paused: boolean;
});
/**
* 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(): Record;
/**
* Invalid setter.
*/
set appData(appData: Record);
/**
* Observer.
*/
get observer(): EnhancedEventEmitter;
/**
* @private
* Just for testing purposes.
*/
get channelForTesting(): Channel;
/**
* Close the Producer.
*/
close(): void;
/**
* Transport was closed.
*
* @private
*/
transportClosed(): void;
/**
* Dump Producer.
*/
dump(): Promise;
/**
* Get Producer stats.
*/
getStats(): Promise;
/**
* Pause the Producer.
*/
pause(): Promise;
/**
* Resume the Producer.
*/
resume(): Promise;
/**
* Enable 'trace' event.
*/
enableTraceEvent(types?: ProducerTraceEventType[]): Promise;
/**
* Send RTP packet (just valid for Producers created on a DirectTransport).
*/
send(rtpPacket: Buffer): void;
private handleWorkerNotifications;
}
//# sourceMappingURL=Producer.d.ts.map