* WEBRTC classes

This commit is contained in:
michael 2020-03-23 13:51:28 +00:00
parent a5a202af2a
commit 6ba4e00741

929
packages/rtl/webrtc.pas Normal file
View File

@ -0,0 +1,929 @@
Unit webrtc;
{$MODE ObjFPC}
{$H+}
{$modeswitch externalclass}
interface
uses SysUtils, JS,web;
{
Automatically generated file by TWebIDLToPas on 2020-03-23 14:48:13
Used command-line options :
-x
web
-i
/home/michael/webrtc.idl
-d
TJSObject
-t
DOMTimeStamp=String,Mediastream=TJSHTMLMediaStream,DOMHighResTimeStamp=double,MediaStreamTrack=JSValue,RTCStatsType=String,EventTarget=TJSEventTarget,EventHandler=TJSEventHandler,Promise=TJSPromise,VoidFunction=TProcedure,Event=TJSEvent,Blob=TJSBlob,ArrayBufferView=TJSTypedArray
-p
Command-line options translate to:
Options : [coDictionaryAsClass,coaddOptionsToheader]
Keyword prefix :
Keyword suffix : _
Class prefix : TJS
Class suffix :
Field prefix : F
WEBIDLversion : v2
Type aliases:
DOMTimeStamp=String
Mediastream=TJSHTMLMediaStream
DOMHighResTimeStamp=double
MediaStreamTrack=JSValue
RTCStatsType=String
EventTarget=TJSEventTarget
EventHandler=TJSEventHandler
Promise=TJSPromise
VoidFunction=TProcedure
Event=TJSEvent
Blob=TJSBlob
ArrayBufferView=TJSTypedArray
}
Type
// Forward class definitions
TJSRTCPeerConnection = Class;
TJSRTCSessionDescription = Class;
TJSRTCIceCandidate = Class;
TJSRTCPeerConnectionIceEvent = Class;
TJSRTCPeerConnectionIceErrorEvent = Class;
TJSRTCCertificate = Class;
TJSRTCRtpSender = Class;
TJSRTCRtpReceiver = Class;
TJSRTCRtpTransceiver = Class;
TJSRTCDtlsTransport = Class;
TJSRTCIceTransport = Class;
TJSRTCTrackEvent = Class;
TJSRTCSctpTransport = Class;
TJSRTCDataChannel = Class;
TJSRTCDataChannelEvent = Class;
TJSRTCDTMFSender = Class;
TJSRTCDTMFToneChangeEvent = Class;
TJSRTCStatsReport = Class;
TJSRTCError = Class;
TJSRTCErrorEvent = Class;
TJSRTCConfiguration = Class;
TJSRTCIceServer = Class;
TJSRTCOfferAnswerOptions = Class;
TJSRTCOfferOptions = Class;
TJSRTCAnswerOptions = Class;
TJSRTCSessionDescriptionInit = Class;
TJSRTCIceCandidateInit = Class;
TJSRTCPeerConnectionIceEventInit = Class;
TJSRTCPeerConnectionIceErrorEventInit = Class;
TJSRTCCertificateExpiration = Class;
TJSRTCRtpTransceiverInit = Class;
TJSRTCRtpParameters = Class;
TJSRTCRtpSendParameters = Class;
TJSRTCRtpReceiveParameters = Class;
TJSRTCRtpCodingParameters = Class;
TJSRTCRtpDecodingParameters = Class;
TJSRTCRtpEncodingParameters = Class;
TJSRTCRtcpParameters = Class;
TJSRTCRtpHeaderExtensionParameters = Class;
TJSRTCRtpCodecParameters = Class;
TJSRTCRtpCapabilities = Class;
TJSRTCRtpCodecCapability = Class;
TJSRTCRtpHeaderExtensionCapability = Class;
TJSRTCRtpContributingSource = Class;
TJSRTCRtpSynchronizationSource = Class;
TJSRTCDtlsFingerprint = Class;
TJSRTCIceParameters = Class;
TJSRTCIceCandidatePair = Class;
TJSRTCTrackEventInit = Class;
TJSRTCDataChannelInit = Class;
TJSRTCDataChannelEventInit = Class;
TJSRTCDTMFToneChangeEventInit = Class;
TJSRTCStats = Class;
TJSRTCErrorInit = Class;
TJSRTCErrorEventInit = Class;
RTCIceCredentialType = String;
RTCIceTransportPolicy = String;
RTCBundlePolicy = String;
RTCRtcpMuxPolicy = String;
RTCSignalingState = String;
RTCIceGatheringState = String;
RTCPeerConnectionState = String;
RTCIceConnectionState = String;
RTCSdpType = String;
RTCIceProtocol = String;
RTCIceTcpCandidateType = String;
RTCIceCandidateType = String;
RTCRtpTransceiverDirection = String;
RTCDegradationPreference = String;
RTCDtlsTransportState = String;
RTCIceGathererState = String;
RTCIceTransportState = String;
RTCIceRole = String;
RTCIceComponent = String;
RTCSctpTransportState = String;
RTCDataChannelState = String;
RTCErrorDetailType = String;
RTCPeerConnectionErrorCallback = Procedure (error : TJSError);
RTCSessionDescriptionCallback = Procedure (description : TJSRTCSessionDescriptionInit);
{ --------------------------------------------------------------------
TJSRTCConfiguration
--------------------------------------------------------------------}
TTJSRTCIceServerDynArray = Array of TJSRTCIceServer;
TTJSRTCCertificateDynArray = Array of TJSRTCCertificate;
TJSRTCConfiguration = class(TJSObject)
iceServers : TTJSRTCIceServerDynArray;
iceTransportPolicy : RTCIceTransportPolicy;
bundlePolicy : RTCBundlePolicy;
rtcpMuxPolicy : RTCRtcpMuxPolicy;
peerIdentity : String;
certificates : TTJSRTCCertificateDynArray;
iceCandidatePoolSize : Byte;
end;
{ --------------------------------------------------------------------
TJSRTCIceServer
--------------------------------------------------------------------}
TJSRTCIceServer = class(TJSObject)
urls : JSValue;
username : String;
credentialType : RTCIceCredentialType;
end;
{ --------------------------------------------------------------------
TJSRTCOfferAnswerOptions
--------------------------------------------------------------------}
TJSRTCOfferAnswerOptions = class(TJSObject)
end;
{ --------------------------------------------------------------------
TJSRTCOfferOptions
--------------------------------------------------------------------}
TJSRTCOfferOptions = class(TJSObject)
iceRestart : boolean;
offerToReceiveAudio : boolean;
offerToReceiveVideo : boolean;
end;
{ --------------------------------------------------------------------
TJSRTCAnswerOptions
--------------------------------------------------------------------}
TJSRTCAnswerOptions = class(TJSObject)
end;
{ --------------------------------------------------------------------
TJSRTCSessionDescriptionInit
--------------------------------------------------------------------}
TJSRTCSessionDescriptionInit = class(TJSObject)
type_ : RTCSdpType;external name 'type';
sdp : String;
end;
{ --------------------------------------------------------------------
TJSRTCIceCandidateInit
--------------------------------------------------------------------}
TJSRTCIceCandidateInit = class(TJSObject)
candidate : String;
sdpMid : String;
sdpMLineIndex : Cardinal;
usernameFragment : String;
end;
{ --------------------------------------------------------------------
TJSRTCPeerConnectionIceEventInit
--------------------------------------------------------------------}
TJSRTCPeerConnectionIceEventInit = class(TJSObject)
candidate : TJSRTCIceCandidate;
url : String;
end;
{ --------------------------------------------------------------------
TJSRTCPeerConnectionIceErrorEventInit
--------------------------------------------------------------------}
TJSRTCPeerConnectionIceErrorEventInit = class(TJSObject)
hostCandidate : String;
url : String;
errorCode : Cardinal;
statusText : String;
end;
{ --------------------------------------------------------------------
TJSRTCCertificateExpiration
--------------------------------------------------------------------}
TJSRTCCertificateExpiration = class(TJSObject)
expires : String;
end;
{ --------------------------------------------------------------------
TJSRTCRtpTransceiverInit
--------------------------------------------------------------------}
TTJSHTMLMediaStreamDynArray = Array of TJSHTMLMediaStream;
TTJSRTCRtpEncodingParametersDynArray = Array of TJSRTCRtpEncodingParameters;
TJSRTCRtpTransceiverInit = class(TJSObject)
direction : RTCRtpTransceiverDirection;
streams : TTJSHTMLMediaStreamDynArray;
sendEncodings : TTJSRTCRtpEncodingParametersDynArray;
end;
{ --------------------------------------------------------------------
TJSRTCRtpParameters
--------------------------------------------------------------------}
TTJSRTCRtpHeaderExtensionParametersDynArray = Array of TJSRTCRtpHeaderExtensionParameters;
TTJSRTCRtpCodecParametersDynArray = Array of TJSRTCRtpCodecParameters;
TJSRTCRtpParameters = class(TJSObject)
headerExtensions : TTJSRTCRtpHeaderExtensionParametersDynArray;
rtcp : TJSRTCRtcpParameters;
codecs : TTJSRTCRtpCodecParametersDynArray;
end;
{ --------------------------------------------------------------------
TJSRTCRtpSendParameters
--------------------------------------------------------------------}
TJSRTCRtpSendParameters = class(TJSObject)
transactionId : String;
encodings : TTJSRTCRtpEncodingParametersDynArray;
degradationPreference : RTCDegradationPreference;
end;
{ --------------------------------------------------------------------
TJSRTCRtpReceiveParameters
--------------------------------------------------------------------}
TTJSRTCRtpDecodingParametersDynArray = Array of TJSRTCRtpDecodingParameters;
TJSRTCRtpReceiveParameters = class(TJSObject)
encodings : TTJSRTCRtpDecodingParametersDynArray;
end;
{ --------------------------------------------------------------------
TJSRTCRtpCodingParameters
--------------------------------------------------------------------}
TJSRTCRtpCodingParameters = class(TJSObject)
rid : String;
end;
{ --------------------------------------------------------------------
TJSRTCRtpDecodingParameters
--------------------------------------------------------------------}
TJSRTCRtpDecodingParameters = class(TJSObject)
end;
{ --------------------------------------------------------------------
TJSRTCRtpEncodingParameters
--------------------------------------------------------------------}
TJSRTCRtpEncodingParameters = class(TJSObject)
active : boolean;
maxBitrate : NativeInt;
scaleResolutionDownBy : Double;
end;
{ --------------------------------------------------------------------
TJSRTCRtcpParameters
--------------------------------------------------------------------}
TJSRTCRtcpParameters = class(TJSObject)
cname : String;
reducedSize : boolean;
end;
{ --------------------------------------------------------------------
TJSRTCRtpHeaderExtensionParameters
--------------------------------------------------------------------}
TJSRTCRtpHeaderExtensionParameters = class(TJSObject)
uri : String;
id : Cardinal;
encrypted : boolean;
end;
{ --------------------------------------------------------------------
TJSRTCRtpCodecParameters
--------------------------------------------------------------------}
TJSRTCRtpCodecParameters = class(TJSObject)
payloadType : Byte;
mimeType : String;
clockRate : NativeInt;
channels : Cardinal;
sdpFmtpLine : String;
end;
{ --------------------------------------------------------------------
TJSRTCRtpCapabilities
--------------------------------------------------------------------}
TTJSRTCRtpCodecCapabilityDynArray = Array of TJSRTCRtpCodecCapability;
TTJSRTCRtpHeaderExtensionCapabilityDynArray = Array of TJSRTCRtpHeaderExtensionCapability;
TJSRTCRtpCapabilities = class(TJSObject)
codecs : TTJSRTCRtpCodecCapabilityDynArray;
headerExtensions : TTJSRTCRtpHeaderExtensionCapabilityDynArray;
end;
{ --------------------------------------------------------------------
TJSRTCRtpCodecCapability
--------------------------------------------------------------------}
TJSRTCRtpCodecCapability = class(TJSObject)
mimeType : String;
clockRate : NativeInt;
channels : Cardinal;
sdpFmtpLine : String;
end;
{ --------------------------------------------------------------------
TJSRTCRtpHeaderExtensionCapability
--------------------------------------------------------------------}
TJSRTCRtpHeaderExtensionCapability = class(TJSObject)
uri : String;
end;
{ --------------------------------------------------------------------
TJSRTCRtpContributingSource
--------------------------------------------------------------------}
TJSRTCRtpContributingSource = class(TJSObject)
timestamp : double;
source : NativeInt;
audioLevel : Double;
rtpTimestamp : NativeInt;
end;
{ --------------------------------------------------------------------
TJSRTCRtpSynchronizationSource
--------------------------------------------------------------------}
TJSRTCRtpSynchronizationSource = class(TJSObject)
voiceActivityFlag : boolean;
end;
{ --------------------------------------------------------------------
TJSRTCDtlsFingerprint
--------------------------------------------------------------------}
TJSRTCDtlsFingerprint = class(TJSObject)
algorithm : String;
value : String;
end;
{ --------------------------------------------------------------------
TJSRTCIceParameters
--------------------------------------------------------------------}
TJSRTCIceParameters = class(TJSObject)
usernameFragment : String;
password : String;
end;
{ --------------------------------------------------------------------
TJSRTCIceCandidatePair
--------------------------------------------------------------------}
TJSRTCIceCandidatePair = class(TJSObject)
local : TJSRTCIceCandidate;
remote : TJSRTCIceCandidate;
end;
{ --------------------------------------------------------------------
TJSRTCTrackEventInit
--------------------------------------------------------------------}
TJSRTCTrackEventInit = class(TJSObject)
receiver : TJSRTCRtpReceiver;
track : JSValue;
streams : TTJSHTMLMediaStreamDynArray;
transceiver : TJSRTCRtpTransceiver;
end;
{ --------------------------------------------------------------------
TJSRTCDataChannelInit
--------------------------------------------------------------------}
TJSRTCDataChannelInit = class(TJSObject)
ordered : boolean;
maxPacketLifeTime : Cardinal;
maxRetransmits : Cardinal;
protocol : String;
negotiated : boolean;
id : Cardinal;
end;
{ --------------------------------------------------------------------
TJSRTCDataChannelEventInit
--------------------------------------------------------------------}
TJSRTCDataChannelEventInit = class(TJSObject)
channel : TJSRTCDataChannel;
end;
{ --------------------------------------------------------------------
TJSRTCDTMFToneChangeEventInit
--------------------------------------------------------------------}
TJSRTCDTMFToneChangeEventInit = class(TJSObject)
tone : String;
end;
{ --------------------------------------------------------------------
TJSRTCStats
--------------------------------------------------------------------}
TJSRTCStats = class(TJSObject)
timestamp : double;
type_ : String;external name 'type';
id : String;
end;
{ --------------------------------------------------------------------
TJSRTCErrorInit
--------------------------------------------------------------------}
TJSRTCErrorInit = class(TJSObject)
errorDetail : RTCErrorDetailType;
sdpLineNumber : Integer;
httpRequestStatusCode : Integer;
sctpCauseCode : Integer;
receivedAlert : NativeInt;
sentAlert : NativeInt;
end;
{ --------------------------------------------------------------------
TJSRTCErrorEventInit
--------------------------------------------------------------------}
TJSRTCErrorEventInit = class(TJSObject)
error : TJSRTCError;
end;
{ --------------------------------------------------------------------
TJSRTCPeerConnection
--------------------------------------------------------------------}
TTJSRTCRtpSenderDynArray = Array of TJSRTCRtpSender;
TTJSRTCRtpReceiverDynArray = Array of TJSRTCRtpReceiver;
TTJSRTCRtpTransceiverDynArray = Array of TJSRTCRtpTransceiver;
TJSRTCPeerConnection = class external name 'RTCPeerConnection' (TJSEventTarget)
Private
FlocalDescription : TJSRTCSessionDescription; external name 'localDescription';
FcurrentLocalDescription : TJSRTCSessionDescription; external name 'currentLocalDescription';
FpendingLocalDescription : TJSRTCSessionDescription; external name 'pendingLocalDescription';
FremoteDescription : TJSRTCSessionDescription; external name 'remoteDescription';
FcurrentRemoteDescription : TJSRTCSessionDescription; external name 'currentRemoteDescription';
FpendingRemoteDescription : TJSRTCSessionDescription; external name 'pendingRemoteDescription';
FsignalingState : RTCSignalingState; external name 'signalingState';
FiceGatheringState : RTCIceGatheringState; external name 'iceGatheringState';
FiceConnectionState : RTCIceConnectionState; external name 'iceConnectionState';
FconnectionState : RTCPeerConnectionState; external name 'connectionState';
FcanTrickleIceCandidates : boolean; external name 'canTrickleIceCandidates';
Fsctp : TJSRTCSctpTransport; external name 'sctp';
Public
onnegotiationneeded : TJSEventHandler;
onicecandidate : TJSEventHandler;
onicecandidateerror : TJSEventHandler;
onsignalingstatechange : TJSEventHandler;
oniceconnectionstatechange : TJSEventHandler;
onicegatheringstatechange : TJSEventHandler;
onconnectionstatechange : TJSEventHandler;
ontrack : TJSEventHandler;
ondatachannel : TJSEventHandler;
constructor New(configuration : TJSRTCConfiguration); overload;
constructor New; overload;
function createOffer(options : TJSRTCOfferOptions): TJSPromise; overload;
function createOffer: TJSPromise; overload;
function createAnswer(options : TJSRTCAnswerOptions): TJSPromise; overload;
function createAnswer: TJSPromise; overload;
function setLocalDescription(description : TJSRTCSessionDescriptionInit): TJSPromise; overload;
function setLocalDescription: TJSPromise; overload;
function setRemoteDescription(description : TJSRTCSessionDescriptionInit): TJSPromise; overload;
function setRemoteDescription: TJSPromise; overload;
function addIceCandidate(candidate : TJSRTCIceCandidateInit): TJSPromise; overload;
function addIceCandidate: TJSPromise; overload;
Procedure restartIce;
function getConfiguration: TJSRTCConfiguration;
Procedure setConfiguration(configuration : TJSRTCConfiguration);
Procedure close;
function createOffer(successCallback : RTCSessionDescriptionCallback; failureCallback : RTCPeerConnectionErrorCallback; options : TJSRTCOfferOptions): TJSPromise; overload;
function createOffer(successCallback : RTCSessionDescriptionCallback; failureCallback : RTCPeerConnectionErrorCallback): TJSPromise; overload;
function createAnswer(successCallback : RTCSessionDescriptionCallback; failureCallback : RTCPeerConnectionErrorCallback): TJSPromise;
function addIceCandidate(candidate : TJSRTCIceCandidateInit; successCallback : TProcedure; failureCallback : RTCPeerConnectionErrorCallback): TJSPromise;
function generateCertificate(keygenAlgorithm : AlgorithmIdentifier): TJSPromise;
function getSenders: TTJSRTCRtpSenderDynArray;
function getReceivers: TTJSRTCRtpReceiverDynArray;
function getTransceivers: TTJSRTCRtpTransceiverDynArray;
function addTrack(track : JSValue; streams : TJSHTMLMediaStream): TJSRTCRtpSender; varargs;
Procedure removeTrack(sender : TJSRTCRtpSender);
function addTransceiver(trackOrKind : JSValue; init : TJSRTCRtpTransceiverInit): TJSRTCRtpTransceiver; overload;
function addTransceiver(trackOrKind : JSValue): TJSRTCRtpTransceiver; overload;
function createDataChannel(label_ : String; dataChannelDict : TJSRTCDataChannelInit): TJSRTCDataChannel; overload;
function createDataChannel(label_ : String): TJSRTCDataChannel; overload;
function getStats(selector : JSValue): TJSPromise; overload;
function getStats: TJSPromise; overload;
Property localDescription : TJSRTCSessionDescription Read FlocalDescription;
Property currentLocalDescription : TJSRTCSessionDescription Read FcurrentLocalDescription;
Property pendingLocalDescription : TJSRTCSessionDescription Read FpendingLocalDescription;
Property remoteDescription : TJSRTCSessionDescription Read FremoteDescription;
Property currentRemoteDescription : TJSRTCSessionDescription Read FcurrentRemoteDescription;
Property pendingRemoteDescription : TJSRTCSessionDescription Read FpendingRemoteDescription;
Property signalingState : RTCSignalingState Read FsignalingState;
Property iceGatheringState : RTCIceGatheringState Read FiceGatheringState;
Property iceConnectionState : RTCIceConnectionState Read FiceConnectionState;
Property connectionState : RTCPeerConnectionState Read FconnectionState;
Property canTrickleIceCandidates : boolean Read FcanTrickleIceCandidates;
Property sctp : TJSRTCSctpTransport Read Fsctp;
end;
{ --------------------------------------------------------------------
TJSRTCSessionDescription
--------------------------------------------------------------------}
TJSRTCSessionDescription = class external name 'RTCSessionDescription'
Private
Ftype_ : RTCSdpType; external name 'type';
Fsdp : String; external name 'sdp';
Public
constructor New(descriptionInitDict : TJSRTCSessionDescriptionInit); overload;
constructor New; overload;
function toJSON: TJSObject;
Property type_ : RTCSdpType Read Ftype_;
Property sdp : String Read Fsdp;
end;
{ --------------------------------------------------------------------
TJSRTCIceCandidate
--------------------------------------------------------------------}
TJSRTCIceCandidate = class external name 'RTCIceCandidate'
Private
Fcandidate : String; external name 'candidate';
FsdpMid : String; external name 'sdpMid';
FsdpMLineIndex : Cardinal; external name 'sdpMLineIndex';
Ffoundation : String; external name 'foundation';
Fcomponent : RTCIceComponent; external name 'component';
Fpriority : NativeInt; external name 'priority';
Faddress : String; external name 'address';
Fprotocol : RTCIceProtocol; external name 'protocol';
Fport : Cardinal; external name 'port';
Ftype_ : RTCIceCandidateType; external name 'type';
FtcpType : RTCIceTcpCandidateType; external name 'tcpType';
FrelatedAddress : String; external name 'relatedAddress';
FrelatedPort : Cardinal; external name 'relatedPort';
FusernameFragment : String; external name 'usernameFragment';
Public
constructor New(candidateInitDict : TJSRTCIceCandidateInit); overload;
constructor New; overload;
function toJSON: TJSRTCIceCandidateInit;
Property candidate : String Read Fcandidate;
Property sdpMid : String Read FsdpMid;
Property sdpMLineIndex : Cardinal Read FsdpMLineIndex;
Property foundation : String Read Ffoundation;
Property component : RTCIceComponent Read Fcomponent;
Property priority : NativeInt Read Fpriority;
Property address : String Read Faddress;
Property protocol : RTCIceProtocol Read Fprotocol;
Property port : Cardinal Read Fport;
Property type_ : RTCIceCandidateType Read Ftype_;
Property tcpType : RTCIceTcpCandidateType Read FtcpType;
Property relatedAddress : String Read FrelatedAddress;
Property relatedPort : Cardinal Read FrelatedPort;
Property usernameFragment : String Read FusernameFragment;
end;
{ --------------------------------------------------------------------
TJSRTCPeerConnectionIceEvent
--------------------------------------------------------------------}
TJSRTCPeerConnectionIceEvent = class external name 'RTCPeerConnectionIceEvent' (TJSEvent)
Private
Fcandidate : TJSRTCIceCandidate; external name 'candidate';
Furl : String; external name 'url';
Public
constructor New(type_ : String; eventInitDict : TJSRTCPeerConnectionIceEventInit); overload;
constructor New(type_ : String); overload;
Property candidate : TJSRTCIceCandidate Read Fcandidate;
Property url : String Read Furl;
end;
{ --------------------------------------------------------------------
TJSRTCPeerConnectionIceErrorEvent
--------------------------------------------------------------------}
TJSRTCPeerConnectionIceErrorEvent = class external name 'RTCPeerConnectionIceErrorEvent' (TJSEvent)
Private
Faddress : String; external name 'address';
Fport : Cardinal; external name 'port';
Furl : String; external name 'url';
FerrorCode : Cardinal; external name 'errorCode';
FerrorText : String; external name 'errorText';
Public
constructor New(type_ : String; eventInitDict : TJSRTCPeerConnectionIceErrorEventInit);
Property address : String Read Faddress;
Property port : Cardinal Read Fport;
Property url : String Read Furl;
Property errorCode : Cardinal Read FerrorCode;
Property errorText : String Read FerrorText;
end;
{ --------------------------------------------------------------------
TJSRTCCertificate
--------------------------------------------------------------------}
TTJSRTCDtlsFingerprintDynArray = Array of TJSRTCDtlsFingerprint;
TJSRTCCertificate = class external name 'RTCCertificate'
Private
Fexpires : String; external name 'expires';
Public
function getFingerprints: TTJSRTCDtlsFingerprintDynArray;
Property expires : String Read Fexpires;
end;
{ --------------------------------------------------------------------
TJSRTCRtpSender
--------------------------------------------------------------------}
TJSRTCRtpSender = class external name 'RTCRtpSender'
Private
Ftrack : JSValue; external name 'track';
Ftransport : TJSRTCDtlsTransport; external name 'transport';
Fdtmf : TJSRTCDTMFSender; external name 'dtmf';
Public
function getCapabilities(kind : String): TJSRTCRtpCapabilities;
function setParameters(parameters : TJSRTCRtpSendParameters): TJSPromise;
function getParameters: TJSRTCRtpSendParameters;
function replaceTrack(withTrack : JSValue): TJSPromise;
Procedure setStreams(streams : TJSHTMLMediaStream); varargs;
function getStats: TJSPromise;
Property track : JSValue Read Ftrack;
Property transport : TJSRTCDtlsTransport Read Ftransport;
Property dtmf : TJSRTCDTMFSender Read Fdtmf;
end;
{ --------------------------------------------------------------------
TJSRTCRtpReceiver
--------------------------------------------------------------------}
TTJSRTCRtpContributingSourceDynArray = Array of TJSRTCRtpContributingSource;
TTJSRTCRtpSynchronizationSourceDynArray = Array of TJSRTCRtpSynchronizationSource;
TJSRTCRtpReceiver = class external name 'RTCRtpReceiver'
Private
Ftrack : JSValue; external name 'track';
Ftransport : TJSRTCDtlsTransport; external name 'transport';
Public
function getCapabilities(kind : String): TJSRTCRtpCapabilities;
function getParameters: TJSRTCRtpReceiveParameters;
function getContributingSources: TTJSRTCRtpContributingSourceDynArray;
function getSynchronizationSources: TTJSRTCRtpSynchronizationSourceDynArray;
function getStats: TJSPromise;
Property track : JSValue Read Ftrack;
Property transport : TJSRTCDtlsTransport Read Ftransport;
end;
{ --------------------------------------------------------------------
TJSRTCRtpTransceiver
--------------------------------------------------------------------}
TJSRTCRtpTransceiver = class external name 'RTCRtpTransceiver'
Private
Fmid : String; external name 'mid';
Fsender : TJSRTCRtpSender; external name 'sender';
Freceiver : TJSRTCRtpReceiver; external name 'receiver';
FcurrentDirection : RTCRtpTransceiverDirection; external name 'currentDirection';
Public
direction : RTCRtpTransceiverDirection;
Procedure stop;
Procedure setCodecPreferences(codecs : TTJSRTCRtpCodecCapabilityDynArray);
Property mid : String Read Fmid;
Property sender : TJSRTCRtpSender Read Fsender;
Property receiver : TJSRTCRtpReceiver Read Freceiver;
Property currentDirection : RTCRtpTransceiverDirection Read FcurrentDirection;
end;
{ --------------------------------------------------------------------
TJSRTCDtlsTransport
--------------------------------------------------------------------}
TTJSArrayBufferDynArray = Array of TJSArrayBuffer;
TJSRTCDtlsTransport = class external name 'RTCDtlsTransport' (TJSEventTarget)
Private
FiceTransport : TJSRTCIceTransport; external name 'iceTransport';
Fstate : RTCDtlsTransportState; external name 'state';
Public
onstatechange : TJSEventHandler;
onerror : TJSEventHandler;
function getRemoteCertificates: TTJSArrayBufferDynArray;
Property iceTransport : TJSRTCIceTransport Read FiceTransport;
Property state : RTCDtlsTransportState Read Fstate;
end;
{ --------------------------------------------------------------------
TJSRTCIceTransport
--------------------------------------------------------------------}
TTJSRTCIceCandidateDynArray = Array of TJSRTCIceCandidate;
TJSRTCIceTransport = class external name 'RTCIceTransport' (TJSEventTarget)
Private
Frole : RTCIceRole; external name 'role';
Fcomponent : RTCIceComponent; external name 'component';
Fstate : RTCIceTransportState; external name 'state';
FgatheringState : RTCIceGathererState; external name 'gatheringState';
Public
onstatechange : TJSEventHandler;
ongatheringstatechange : TJSEventHandler;
onselectedcandidatepairchange : TJSEventHandler;
function getLocalCandidates: TTJSRTCIceCandidateDynArray;
function getRemoteCandidates: TTJSRTCIceCandidateDynArray;
function getSelectedCandidatePair: TJSRTCIceCandidatePair;
function getLocalParameters: TJSRTCIceParameters;
function getRemoteParameters: TJSRTCIceParameters;
Property role : RTCIceRole Read Frole;
Property component : RTCIceComponent Read Fcomponent;
Property state : RTCIceTransportState Read Fstate;
Property gatheringState : RTCIceGathererState Read FgatheringState;
end;
{ --------------------------------------------------------------------
TJSRTCTrackEvent
--------------------------------------------------------------------}
TJSRTCTrackEvent = class external name 'RTCTrackEvent' (TJSEvent)
Private
Freceiver : TJSRTCRtpReceiver; external name 'receiver';
Ftrack : JSValue; external name 'track';
Fstreams : TTJSHTMLMediaStreamDynArray; external name 'streams';
Ftransceiver : TJSRTCRtpTransceiver; external name 'transceiver';
Public
constructor New(type_ : String; eventInitDict : TJSRTCTrackEventInit);
Property receiver : TJSRTCRtpReceiver Read Freceiver;
Property track : JSValue Read Ftrack;
Property streams : TTJSHTMLMediaStreamDynArray Read Fstreams;
Property transceiver : TJSRTCRtpTransceiver Read Ftransceiver;
end;
{ --------------------------------------------------------------------
TJSRTCSctpTransport
--------------------------------------------------------------------}
TJSRTCSctpTransport = class external name 'RTCSctpTransport' (TJSEventTarget)
Private
Ftransport : TJSRTCDtlsTransport; external name 'transport';
Fstate : RTCSctpTransportState; external name 'state';
FmaxMessageSize : Double; external name 'maxMessageSize';
FmaxChannels : Cardinal; external name 'maxChannels';
Public
onstatechange : TJSEventHandler;
Property transport : TJSRTCDtlsTransport Read Ftransport;
Property state : RTCSctpTransportState Read Fstate;
Property maxMessageSize : Double Read FmaxMessageSize;
Property maxChannels : Cardinal Read FmaxChannels;
end;
{ --------------------------------------------------------------------
TJSRTCDataChannel
--------------------------------------------------------------------}
TJSRTCDataChannel = class external name 'RTCDataChannel' (TJSEventTarget)
Private
Flabel_ : String; external name 'label';
Fordered : boolean; external name 'ordered';
FmaxPacketLifeTime : Cardinal; external name 'maxPacketLifeTime';
FmaxRetransmits : Cardinal; external name 'maxRetransmits';
Fprotocol : String; external name 'protocol';
Fnegotiated : boolean; external name 'negotiated';
Fid : Cardinal; external name 'id';
FreadyState : RTCDataChannelState; external name 'readyState';
FbufferedAmount : NativeInt; external name 'bufferedAmount';
Public
bufferedAmountLowThreshold : NativeInt;
onopen : TJSEventHandler;
onbufferedamountlow : TJSEventHandler;
onerror : TJSEventHandler;
onclosing : TJSEventHandler;
onclose : TJSEventHandler;
onmessage : TJSEventHandler;
binaryType : String;
Procedure close;
Procedure send(data : String);
Procedure send(data : TJSBlob);
Procedure send(data : TJSArrayBuffer);
Procedure send(data : TJSTypedArray);
Property label_ : String Read Flabel_;
Property ordered : boolean Read Fordered;
Property maxPacketLifeTime : Cardinal Read FmaxPacketLifeTime;
Property maxRetransmits : Cardinal Read FmaxRetransmits;
Property protocol : String Read Fprotocol;
Property negotiated : boolean Read Fnegotiated;
Property id : Cardinal Read Fid;
Property readyState : RTCDataChannelState Read FreadyState;
Property bufferedAmount : NativeInt Read FbufferedAmount;
end;
{ --------------------------------------------------------------------
TJSRTCDataChannelEvent
--------------------------------------------------------------------}
TJSRTCDataChannelEvent = class external name 'RTCDataChannelEvent' (TJSEvent)
Private
Fchannel : TJSRTCDataChannel; external name 'channel';
Public
constructor New(type_ : String; eventInitDict : TJSRTCDataChannelEventInit);
Property channel : TJSRTCDataChannel Read Fchannel;
end;
{ --------------------------------------------------------------------
TJSRTCDTMFSender
--------------------------------------------------------------------}
TJSRTCDTMFSender = class external name 'RTCDTMFSender' (TJSEventTarget)
Private
FcanInsertDTMF : boolean; external name 'canInsertDTMF';
FtoneBuffer : String; external name 'toneBuffer';
Public
ontonechange : TJSEventHandler;
Procedure insertDTMF(tones : String; duration : NativeInt; interToneGap : NativeInt); overload;
Procedure insertDTMF(tones : String); overload;
Procedure insertDTMF(tones : String; duration : NativeInt); overload;
Property canInsertDTMF : boolean Read FcanInsertDTMF;
Property toneBuffer : String Read FtoneBuffer;
end;
{ --------------------------------------------------------------------
TJSRTCDTMFToneChangeEvent
--------------------------------------------------------------------}
TJSRTCDTMFToneChangeEvent = class external name 'RTCDTMFToneChangeEvent' (TJSEvent)
Private
Ftone : String; external name 'tone';
Public
constructor New(type_ : String; eventInitDict : TJSRTCDTMFToneChangeEventInit);
Property tone : String Read Ftone;
end;
{ --------------------------------------------------------------------
TJSRTCStatsReport
--------------------------------------------------------------------}
TJSRTCStatsReport = class external name 'RTCStatsReport'
Private
Public
end;
{ --------------------------------------------------------------------
TJSRTCError
--------------------------------------------------------------------}
TJSRTCError = class external name 'RTCError' (TJSError)
Private
FerrorDetail : RTCErrorDetailType; external name 'errorDetail';
FsdpLineNumber : Integer; external name 'sdpLineNumber';
FhttpRequestStatusCode : Integer; external name 'httpRequestStatusCode';
FsctpCauseCode : Integer; external name 'sctpCauseCode';
FreceivedAlert : NativeInt; external name 'receivedAlert';
FsentAlert : NativeInt; external name 'sentAlert';
Public
constructor New(init : TJSRTCErrorInit; message : String); overload;
constructor New(init : TJSRTCErrorInit); overload;
Property errorDetail : RTCErrorDetailType Read FerrorDetail;
Property sdpLineNumber : Integer Read FsdpLineNumber;
Property httpRequestStatusCode : Integer Read FhttpRequestStatusCode;
Property sctpCauseCode : Integer Read FsctpCauseCode;
Property receivedAlert : NativeInt Read FreceivedAlert;
Property sentAlert : NativeInt Read FsentAlert;
end;
{ --------------------------------------------------------------------
TJSRTCErrorEvent
--------------------------------------------------------------------}
TJSRTCErrorEvent = class external name 'RTCErrorEvent' (TJSEvent)
Private
Ferror : TJSRTCError; external name 'error';
Public
constructor New(type_ : String; eventInitDict : TJSRTCErrorEventInit);
Property error : TJSRTCError Read Ferror;
end;
implementation
end.