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.