123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777 |
- {
- This file is part of the Pas2JS run time library.
- Copyright (c) 2020 by Michael Van Canneyt
- OpenTok.js import classes.
- Actual Opentok API is copyright Tokbox/Nexmo/Vonage
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- unit libopentok;
- {$mode objfpc}
- {$modeswitch externalclass}
- interface
- uses
- JS, web;
- Type
- TJSMediaStreamTrack = class external name 'MediaStreamTrack' (TJSObject);
- { ---------------------------------------------------------------------
- Forward declarations
- ---------------------------------------------------------------------}
- TOT = Class;
- TOTArchiveEvent = Class;
- TOTAudioLevelUpdatedEvent = Class;
- TOTCapabilities = Class;
- TOTConnection = Class;
- TOTConnectionEvent = Class;
- TOTDevice = Class;
- TOTError = Class;
- TOTEvent = Class;
- TOTEventDispatcher = Class;
- TOTExceptionEvent = Class;
- TOTGetDevicesResponse = Class;
- TOTGetUserMediaOptions = Class;
- TOTInitPublisherOptions = Class;
- TOTInitSessionOptions = Class;
- TOTMediaStoppedEvent = Class;
- TOTPublisher = Class;
- TOTPublisherStats = Class;
- TOTPublisherStyleOptions = Class;
- TOTScreenSharingCapabilities = Class;
- TOTSession = Class;
- TOTSessionConnectEvent = Class;
- TOTSessionDisonnectEvent = Class;
- TOTSignalEvent = Class;
- TOTStream = Class;
- TOTStreamEvent = Class;
- TOTStreamPropertyChangedEvent = Class;
- TOTSubscriber = Class;
- TOTSubscriberStats = Class;
- TOTSubscriberStyleOptions = Class;
- TOTSupportedCodecsResponse = Class;
- TOTUIStyle = Class;
- TOTVideoElementCreatedEvent = Class;
- TOTVideoEnabledChangedEvent = Class;
- TOTConnectionDynArray = Array of TOTConnection;
- TOTStreamDynArray = Array of TOTStream;
- { ---------------------------------------------------------------------
- Events
- ---------------------------------------------------------------------}
- TOTEvent = Class external name 'ArchiveEvent' (TJSEvent)
- Public
- Function isDefaultPrevented : Boolean;
- end;
- { TOTStreamEvent }
- TOTBaseStreamEvent = Class external name 'StreamEvent' (TOTEvent)
- private
- FStream: TOTStream; external name 'stream';
- public
- Property Stream : TOTStream read FStream;
- end;
- { TOTStreamEvent }
- TOTStreamEvent = Class external name 'StreamEvent' (TOTBaseStreamEvent)
- private
- Fcancelable: Boolean; external name 'cancelable';
- FReason: string; external name 'reason';
- Public
- Property Cancelable : Boolean Read Fcancelable;
- Property Reason : string read FReason;
- end;
- { TOTStreamPropertyChangedEvent }
- TOTStreamPropertyChangedEvent = Class external name 'StreamPropertyChangedEvent' (TOTBaseStreamEvent)
- Private
- FChangedProperty: string; external name 'changedProperty';
- FNewValue: TJSObject; external name 'newValue';
- FOldValue: TJSObject; external name 'oldValue';
- Public
- Property ChangedProperty : string read FChangedProperty;
- Property NewValue : TJSObject Read FNewValue;
- Property OldValue : TJSObject Read FOldValue;
- end;
- { TOTSessionConnectEvent }
- TOTSessionConnectEvent = Class external name 'SessionConnect' (TOTEvent)
- private
- FReason: string; external name 'reason';
- Public
- Property Reason : string read FReason;
- end;
- { TOTSessionDisonnectEvent }
- TOTSessionDisonnectEvent = Class external name 'SessionDisconnect' (TOTEvent)
- private
- FConnections: TOTConnectionDynArray; external name 'connections';
- FStreams: TOTStreamDynArray; external name 'streams';
- Public
- Property Connections : TOTConnectionDynArray Read FConnections;
- Property Streams : TOTStreamDynArray Read FStreams;
- end;
- { TOTSignalEvent }
- TOTSignalEvent = Class external name 'SignalEvent' (TOTEvent)
- private
- FData: string; external name 'data';
- FFrom: TOTConnection; external name 'from';
- Ftype: string; external name 'type';
- Public
- Property Data : string read FData;
- Property From : TOTConnection Read FFrom;
- Property Type_ : string read Ftype;
- end;
- { TOTAudioLevelUpdatedEvent }
- TOTAudioLevelUpdatedEvent = Class external name 'AudioLevelUpdatedEvent' (TOTEvent)
- private
- faudiolevel: Double; external name 'audioLevel';
- Public
- Property AudioLevel : Double read faudiolevel;
- end;
- { TOTConnectionEvent }
- TOTConnectionEvent = Class external name 'ConnectionEvent' (TOTEvent)
- private
- fconnection: TOTConnection;external name 'connection';
- freason: string;external name 'reason';
- Public
- Property Connection : TOTConnection read fconnection;
- Property Reason : string read freason;
- end;
- { TOTExceptionEvent }
- TOTExceptionEvent = Class external name 'ExceptionEvent' (TOTEvent)
- private
- FCode: nativeint;external name 'code';
- FMessage: string;external name 'message';
- FTitle: string;external name 'title';
- Public
- Property Code : nativeint read FCode;
- Property Message : string read FMessage;
- Property Title : string read FTitle;
- end;
- { TOTMediaStoppedEvent }
- TOTMediaStoppedEvent = Class external name 'MediaStoppedEvent' (TOTEvent)
- private
- FMessage: string; external name 'message';
- FTitle: string; external name 'title';
- FTrack: TJSMediaStreamTrack; external name 'track';
- Public
- Property Message : string read FMessage;
- Property Title : string Read FTitle;
- Property Track : TJSMediaStreamTrack Read FTrack;
- end;
- { TOTArchiveEvent }
- TOTArchiveEvent = Class external name 'ArchiveEvent' (TOTEvent)
- private
- FID: string; external name 'id';
- FName: string; external name 'name';
- Public
- Property ID : string read FID;
- Property Name : string read FName;
- end;
- { TOTVideoElementCreatedEvent }
- TOTVideoElementCreatedEvent = Class external name 'VideoElementCreatedEvent' (TOTEvent)
- private
- Felement: TJSHTMLElement; external name 'element';
- Public
- Property Element : TJSHTMLElement Read Felement;
- end;
- { TOTVideoEnabledChangedEvent }
- TOTVideoEnabledChangedEvent = Class external name 'VideoEnabledChangedEvent' (TOTEvent)
- private
- FCancelable: Boolean; external name 'cancelable';
- FReason: string; external name 'reason';
- FTarget: TJSObject; external name 'target';
- FType: string; external name 'type';
- Public
- Property Cancelable : Boolean Read FCancelable;
- Property Reason : string Read FReason;
- Property Target : TJSObject Read FTarget;
- Property Type_ : string read FType;
- end;
- { ---------------------------------------------------------------------
- Real classes
- ---------------------------------------------------------------------}
- { TOTError }
- TOTError = class external name 'Error' (TJSError)
- Private
- FCode: nativeint; external name 'code';
- FName: string; external name 'name';
- Public
- Property Code : nativeint read FCode Write FCode;
- Property name : string read FName Write FName;
- end;
- TOTErrorHandler = reference to procedure(aErr : TOTError);
- { TOTEventDispatcher }
- TOTEventDispatcher = Class external name 'EventDispatcher' (TJSObject)
- Public
- Procedure off(aType : string; aHandler : TJSEventHandler); overload;
- Procedure off(aType : string); overload;
- Procedure off(aTypes : TJSObject; aContext : JSValue); overload;
- Procedure off(aTypes : TJSObject); overload;
- Function on_(aType : string; aHandler : TJSEventHandler) : TOTEventDispatcher; overload; external name 'on';
- Function on_(aType : string; aHandler : TJSEventHandler; aContext : JSValue): TOTEventDispatcher; overload; external name 'on';
- Function on_(aType : string; aHandler : TJSRawEventHandler) : TOTEventDispatcher; overload; external name 'on';
- Function on_(aType : string; aHandler : TJSRawEventHandler; aContext : JSValue): TOTEventDispatcher; overload; external name 'on';
- Function once(aType : string; aHandler : TJSRawEventHandler) : TJSObject; overload;
- Function once(aType : string; aHandler : TJSRawEventHandler; aContext : JSValue) : TJSObject; overload;
- Function once(aType : string; aHandler : TJSEventHandler) : TJSObject; overload;
- Function once(aType : string; aHandler : TJSEventHandler; aContext : JSValue) : TJSObject; overload;
- end;
- TOTConnection = Class external name 'Connection' (TJSObject)
- Private
- FconnectionId : string; external name 'connectionId';
- FcreationTime : NativeInt; external name 'creationTime';
- Fdata : string; external name 'data';
- Public
- Property connectionId : string Read FconnectionId Write FconnectionId;
- Property creationTime : NativeInt Read FcreationTime Write FcreationTime;
- Property data : string Read Fdata Write Fdata;
- end;
- TOTMediaResolution = Record
- height : nativeint;
- width : nativeint;
- end;
- { TOTStream }
- TOTStream = Class external name 'Stream' (TJSObject)
- private
- FConnection: TOTConnection; external name 'connection';
- FCreationTime: NativeInt; external name 'creationTime';
- FFrameRate: NativeInt; external name 'frameRate';
- FHasAudio: Boolean; external name 'hasAudio';
- FHasVideo: Boolean; external name 'hasVideo';
- FName: string; external name 'name';
- FStreamID: string; external name 'streamId';
- FvideoDimensions: TOTMediaResolution; external name 'videoDimensions';
- FVideoType: string; external name 'videoType';
- Public
- Property Connection : TOTConnection Read FConnection;
- Property CreationTime : NativeInt Read FCreationTime;
- Property FrameRate : NativeInt Read FFrameRate;
- Property HasAudio : Boolean Read FHasAudio;
- Property HasVideo : Boolean Read FHasVideo;
- Property Name : string Read FName;
- Property StreamId : string Read FStreamID;
- Property VideoDimensions : TOTMediaResolution Read FvideoDimensions;
- Property VideoType : string Read FVideoType;
- end;
- TOTCapabilities = Class external name 'Capabilities' (TJSObject)
- Private
- FforceDisconnect : byte; external name 'forceDisconnect';
- FforceUnpublish : byte; external name 'forceUnpublish';
- Fpublish : byte; external name 'publish';
- Fsubscribe : byte; external name 'subscribe';
- Public
- Property forceDisconnect : byte Read FforceDisconnect Write FforceDisconnect;
- Property forceUnpublish : byte Read FforceUnpublish Write FforceUnpublish;
- Property publish : byte Read Fpublish Write Fpublish;
- Property subscribe : byte Read Fsubscribe Write Fsubscribe;
- end;
- { TOTScreenSharingCapabilities }
- TOTScreenSharingCapabilities = Class external name 'Object' (TJSOBject)
- private
- FextensionRegistered: Boolean; external name 'extensionRegistered';
- FextensionInstalled: boolean; external name 'extensionInstalled';
- FextensionRequired: string; external name 'extensionRequired';
- FSupported: boolean;external name 'supported';
- FsupportedSources: TJSObject;external name 'supportedSources';
- Public
- Property extensionInstalled : boolean Read FextensionInstalled;
- Property supported : boolean read FSupported;
- Property supportedSources : TJSObject read FsupportedSources ; deprecated;
- Property extensionRequired : string read FextensionRequired;
- Property extensionRegistered : Boolean read FextensionRegistered;
- end;
- TOTScreenSharingCapabilityCallback = reference to Procedure (aResponse : TOTScreenSharingCapabilities);
- { TOTDevice }
- TOTDevice = class external name 'Object' (TJSOBject)
- private
- FDeviceID: string; external name 'deviceId';
- FKind: string; external name 'kind';
- FLabel: String; external name 'label';
- Public
- Property DeviceId : string read FDeviceID;
- Property Kind : string read FKind;
- Property Label_ : String read FLabel;
- end;
- TOTDeviceDynArray = Array of TOTDevice;
- { TOTGetDevicesResponse }
- TOTGetDevicesResponse = Class external name 'Object' (TJSOBject)
- private
- FDevices: TOTDeviceDynArray; external name 'devices';
- FError: TOTError; external name 'devices';
- Public
- Property Devices : TOTDeviceDynArray read FDevices;
- Property Error : TOTError read FError;
- end;
- TOTGetDevicesCallback = reference to Procedure (aResponse : TOTGetDevicesResponse);
- { TOTSupportedCodecsResponse }
- TOTSupportedCodecsResponse = class external name 'Object' (TJSObject)
- private
- FvideoDecoders: TStringDynArray; external name 'videoDecoders';
- FVideoEncoders: TStringDynArray; external name 'videoEncoders';
- public
- Property VideoDecoders : TStringDynArray Read FvideoDecoders;
- Property VideoEncoders : TStringDynArray read FVideoEncoders;
- end;
- TOTGetUserMediaOptions = class external name 'Object' (TJSObject)
- Private
- FaudioSource : JSValue; external name 'audioSource';
- FaudioSourceString : String; external name 'audioSource';
- FaudioSourceBoolean : boolean; external name 'audioSource';
- FaudioSourceTrack : TJSMediaStreamTrack; external name 'audioSource';
- FenableStereo : Boolean; external name 'enableStereo';
- FdisableAudioProcessing : Boolean; external name 'disableAudioProcessing';
- FfacingMode : string; external name 'facingMode';
- FframeRate : Byte;external name 'frameRate';
- FmaxResolution : TOTMediaResolution; external name 'maxResolution';
- Fresolution : string; external name 'resolution';
- FvideoSource : JSValue; external name 'videoSource';
- FvideoSourceString : String; external name 'videoSource';
- FvideoSourceBoolean : boolean; external name 'videoSource';
- FvideoSourceTrack : TJSMediaStreamTrack; external name 'videoSource';
- Public
- Property AudioSource : JSValue Read FaudioSource Write FaudioSource;
- Property AudioSourceString : String Read FaudioSourceString Write FaudioSourceString;
- Property AudioSourceBoolean : boolean Read FaudioSourceBoolean Write FaudioSourceBoolean;
- Property AudioSourceTrack : TJSMediaStreamTrack Read FaudioSourceTrack Write FaudioSourceTrack;
- Property DisableAudioProcessing : Boolean Read FdisableAudioProcessing Write FdisableAudioProcessing;
- Property EnableStereo : Boolean Read FenableStereo Write FenableStereo;
- Property FacingMode : string Read FfacingMode Write FfacingMode;
- Property FrameRate : Byte Read FframeRate Write FframeRate;
- Property MaxResolution : TOTMediaResolution Read FmaxResolution Write FmaxResolution;
- Property Resolution : string Read Fresolution Write Fresolution;
- Property VideoSource : JSValue Read FvideoSource Write FvideoSource;
- Property VideoSourceString : String Read FvideoSourceString Write FvideoSourceString;
- Property VideoSourceBoolean : boolean Read FvideoSourceBoolean Write FvideoSourceBoolean;
- Property VideoSourceTrack : TJSMediaStreamTrack Read FvideoSourceTrack Write FvideoSourceTrack;
- end;
- TOTUIStyle = Class external name 'Object' (TJSObject)
- Public
- FarchiveStatusDisplayMode : string; external name 'archiveStatusDisplayMode';
- FaudioLevelDisplayMode : string; external name 'audioLevelDisplayMode';
- FbackgroundImageURI : String; external name 'backgroundImageURI';
- FbuttonDisplayMode : String; external name 'buttonDisplayMode';
- FnameDisplayMode : string; external name 'nameDisplayMode';
- Public
- Property ArchiveStatusDisplayMode : string Read FarchiveStatusDisplayMode Write FarchiveStatusDisplayMode;
- Property AudioLevelDisplayMode : string Read FaudioLevelDisplayMode Write FaudioLevelDisplayMode;
- Property BackgroundImageURI : String Read FbackgroundImageURI Write FbackgroundImageURI;
- Property ButtonDisplayMode : String Read FbuttonDisplayMode Write FbuttonDisplayMode;
- Property NameDisplayMode : string Read FnameDisplayMode Write FnameDisplayMode;
- end;
- TOTInitPublisherOptions = Class external name 'Object' (TOTGetUserMediaOptions)
- Private
- FaudioBitrate : Nativeint; external name 'audioBitrate';
- FaudioFallbackEnabled : Boolean; external name 'audioFallbackEnabled';
- FfitMode: string; external name 'fitMode';
- Fheight : NativeInt; external name 'height';
- FheightString : String; external name 'height'; // Same as height but as string;
- FinsertDefaultUI : Boolean; external name 'insertDefaultUI';
- FinsertMode : string; external name 'insertMode';
- Fmirror : boolean; external name 'mirror';
- Fname : string;external name 'name';
- FpublishAudio : Boolean; external name 'publishAudio';
- FpublishVideo : Boolean; external name 'publishVideo';
- FshowControls : Boolean; external name 'showControls';
- Fstyle : TOTUIStyle; external name 'style';
- FusePreviousDeviceSelection : Boolean; external name 'usePreviousDeviceSelection';
- Fwidth : NativeInt; external name 'width';
- FwidthString : String; external name 'width'; // Same as width but as string;
- Public
- Property AudioBitrate : Nativeint Read FaudioBitrate Write FaudioBitrate ;
- Property AudioFallbackEnabled : Boolean Read FaudioFallbackEnabled Write FaudioFallbackEnabled ;
- Property FitMode: string Read FfitMode Write FfitMode ;
- Property Height : NativeInt Read Fheight Write Fheight ;
- Property HeightString : String Read FheightString Write FheightString ;
- Property InsertDefaultUI : Boolean Read FinsertDefaultUI Write FinsertDefaultUI ;
- Property InsertMode : string Read FinsertMode Write FinsertMode ;
- Property Mirror : boolean Read Fmirror Write Fmirror ;
- Property Name : string Read Fname Write Fname ;
- Property PublishAudio : Boolean Read FpublishAudio Write FpublishAudio ;
- Property PublishVideo : Boolean Read FpublishVideo Write FpublishVideo ;
- Property ShowControls : Boolean Read FshowControls Write FshowControls ;
- Property Style : TOTUIStyle Read Fstyle Write Fstyle ;
- Property UsePreviousDeviceSelection : Boolean Read FusePreviousDeviceSelection Write FusePreviousDeviceSelection ;
- Property Width : NativeInt Read Fwidth Write Fwidth ;
- Property WidthString : String Read FwidthString Write FwidthString ;
- end;
- TOTInitPublisherCallback = TOTErrorHandler;
- TOTInitSessionOptions = Class external name 'Object' (TJSObject)
- Protected
- FconnectionEventsSuppressed : Boolean; external name 'connectionEventsSuppressed';
- FipWhitelist : boolean; external name 'ipWhitelist';
- FiceConfig : TJSObject; external name 'iceConfig';
- Public
- Property ConnectionEventsSuppressed : Boolean Read FconnectionEventsSuppressed Write FconnectionEventsSuppressed ;
- Property IPWhitelist : boolean Read FipWhitelist Write FipWhitelist ;
- Property IceConfig : TJSObject Read FiceConfig Write FiceConfig ;
- end;
- TOTSubscriberAudioStats = record
- bytesReceived : NativeInt;
- packetsLost : NativeInt;
- packetsReceived : NativeInt;
- end;
- TOTSubscriberVideoStats = record
- bytesReceived : NativeInt;
- frameRate : NativeInt;
- packetsLost : NativeInt;
- packetsReceived : NativeInt;
- end;
- { TOTSubscriberStats }
- TOTSubscriberStats = Class external name 'Object' (TJSObject)
- private
- Faudio: TOTSubscriberAudioStats; external name 'audio';
- FTimeStamp: NativeInt; external name 'timestamp';
- Fvideo: TOTSubscriberVideoStats; external name 'video';
- Public
- Property audio : TOTSubscriberAudioStats Read Faudio;
- Property timestamp : NativeInt Read FTimeStamp;
- Property video : TOTSubscriberVideoStats Read Fvideo;
- end;
- TOTSubscriberStatsCallBack = Reference to Procedure (Error : TOTError; Stats : TOTSubscriberStats);
- TOTSubscriberStyleOptions = class external name 'Object' (TJSObject)
- Private
- FaudioBlockedDisplayMode : string; external name 'audioBlockedDisplayMode';
- FaudioLevelDisplayMode : string; external name 'audioLevelDisplayMode';
- FarchiveStatusDisplayMode : string; external name 'archiveStatusDisplayMode';
- FbackgroundImageURI : String; external name 'backgroundImageURI';
- FbuttonDisplayMode : string; external name 'buttonDisplayMode';
- FnameDisplayMode : string; external name 'nameDisplayMode';
- FvideoDisabledDisplayMode : string; external name 'videoDisabledDisplayMode';
- Public
- Property AudioBlockedDisplayMode : string Read FaudioBlockedDisplayMode Write FaudioBlockedDisplayMode ;
- Property AudioLevelDisplayMode : string Read FaudioLevelDisplayMode Write FaudioLevelDisplayMode ;
- Property ArchiveStatusDisplayMode : string Read FarchiveStatusDisplayMode Write FarchiveStatusDisplayMode ;
- Property BackgroundImageURI : String Read FbackgroundImageURI Write FbackgroundImageURI ;
- Property ButtonDisplayMode : string Read FbuttonDisplayMode Write FbuttonDisplayMode ;
- Property NameDisplayMode : string Read FnameDisplayMode Write FnameDisplayMode ;
- Property VideoDisabledDisplayMode : string Read FvideoDisabledDisplayMode Write FvideoDisabledDisplayMode ;
- end;
- { TOTSubscriber }
- TOTSubscriber = Class external name 'Subscriber' (TOTEventDispatcher)
- private
- FElement: TJSHTMLElement; external name 'element';
- FID: String; external name 'id';
- FStream: TOTStream; external name 'stream';
- Public
- Function getAudioVolume : NativeInt;
- Function getImgData : String;
- Procedure getStats(CallBack : TOTSubscriberStatsCallBack);
- Function getStyle : TJSObject;
- Function isAudioBlocked : boolean;
- Function restrictFrameRate(aValue : Boolean) : TOTSubscriber;
- Function setAudioVolume(aValue : NativeInt) : TOTSubscriber;
- Procedure setPreferredFrameRate(aFrameRate : NativeInt);
- Procedure setPreferredResolution(aResolution : TOTMediaResolution);
- Function setStyle(aStyle : TOTSubscriberStyleOptions) : TOTSubscriber; overload;
- Function setStyle(aProp,aValue : String): TOTSubscriber; overload;
- Function subscribeToAudio(aValue : Boolean) : TOTSubscriber;
- Function subscribeToVideo(aValue : Boolean) : TOTSubscriber;
- Function videoHeight : NativeInt;
- Function videoWidth : NativeInt;
- Public
- Property Element : TJSHTMLElement Read FElement;
- Property ID : String Read FID;
- Property Stream : TOTStream Read FStream;
- end;
- TOTSubscriberArray = Array of TOTSubscriber;
- { TOTSession }
- TOTConnectCallBack = TOTErrorHandler;
- TOTSignalData = Class external name 'Object' (TJSObject)
- Private
- Fdata : string; external name 'data';
- FretryAfterReconnect : Boolean; external name 'retryAfterReconnect';
- Fto : TOTConnection; external name 'to';
- FType : string; external name 'type';
- Public
- Property Data : string Read FData Write FData;
- Property RetryAfterReconnect : Boolean Read FretryAfterReconnect Write FretryAfterReconnect;
- Property To_ : TOTConnection Read FTo Write FTo;
- Property Type_ : string Read FType Write FType;
- end;
- { TJSSubscribeStyle }
- TJSSubscribeStyle = class external name 'Object' (TJSObject)
- Private
- FaudioBlockedDisplayMode : string; external name 'audioBlockedDisplayMode';
- FaudioLeveldDisplayMode : string; external name 'audioLeveldDisplayMode';
- FbackgroundImageURI : String; external name 'backgroundImageURI';
- FbuttonDisplayMode : string; external name 'buttonDisplayMode';
- FnameDisplayMode : string; external name 'nameDisplayMode';
- FvideoDisabledDisplayMode : String; external name 'videoDisabledDisplayMode';
- Public
- Property AudioBlockedDisplayMode : string Read FaudioBlockedDisplayMode Write FaudioBlockedDisplayMode;
- Property AudioLeveldDisplayMode : string Read FaudioLeveldDisplayMode Write FaudioLeveldDisplayMode;
- Property BackgroundImageURI : String Read FbackgroundImageURI Write FbackgroundImageURI;
- Property ButtonDisplayMode : string Read FbuttonDisplayMode Write FbuttonDisplayMode;
- Property NameDisplayMode : string Read FnameDisplayMode Write FnameDisplayMode;
- Property VideoDisabledDisplayMode : String Read FvideoDisabledDisplayMode Write FvideoDisabledDisplayMode;
- end;
- { TOTInitSubscriberOptions }
- TOTInitSubscriberOptions = class external name 'Object' (TJSObject)
- Private
- FaudioVolume : Byte; external name 'audioVolume';
- Ffitmode : string; external name 'fitmode';
- Fheight : NativeInt; external name 'height';
- FheightString : String; external name 'height';
- FinsertDefaultUI : Boolean; external name 'insertDefaultUI';
- FinsertMode : string; external name 'insertMode';
- FpreferredFrameRate : NativeInt; external name 'preferredFrameRate';
- FpreferredResolution : TOTMediaResolution; external name 'preferredResolution';
- FshowControls : Boolean; external name 'showControls';
- Fstyle : TJSSubscribeStyle; external name 'style';
- FsubscribeToAudio : Boolean; external name 'subscribeToAudio';
- FsubscribeToVideo : Boolean; external name 'subscribeToVideo';
- FtestNetwork : Boolean; external name 'testNetwork';
- Fwidth : NativeInt; external name 'width';
- FwidthString : String; external name 'width';
- Public
- Property AudioVolume : Byte read FaudioVolume Write FaudioVolume;
- Property Fitmode : string read Ffitmode Write Ffitmode;
- Property Height : NativeInt read Fheight Write Fheight;
- Property HeightString : String read FheightString Write FheightString; // height as string;
- Property InsertDefaultUI : Boolean read FinsertDefaultUI Write FinsertDefaultUI;
- Property InsertMode : string read FinsertMode Write FinsertMode;
- Property PreferredFrameRate : NativeInt read FpreferredFrameRate Write FpreferredFrameRate;
- Property PreferredResolution : TOTMediaResolution read FpreferredResolution Write FpreferredResolution;
- Property ShowControls : Boolean read FshowControls Write FshowControls;
- Property Style : TJSSubscribeStyle read Fstyle Write Fstyle;
- Property SubscribeToAudio : Boolean read FsubscribeToAudio Write FsubscribeToAudio;
- Property SubscribeToVideo : Boolean read FsubscribeToVideo Write FsubscribeToVideo;
- Property TestNetwork : Boolean read FtestNetwork Write FtestNetwork;
- Property Width : NativeInt read Fwidth Write Fwidth;
- Property WidthString : String read FwidthString Write FwidthString; // width as string;
- end;
- TOTSession = Class external name 'Session' (TOTEventDispatcher)
- private
- FCapabilities: TOTCapabilities; external name 'capabilities';
- FConnection: TOTConnection; external name 'connection';
- FSessionID: string; external name 'sessionId';
- public
- Procedure connect(aToken : String; callback : TOTConnectCallBack);
- Procedure disconnect;
- Procedure forceDisconnect(aConnection : TOTConnection; callBack : TOTConnectCallBack);
- Procedure forceUnpublish(aStream : TOTStream; callBack : TOTConnectCallBack);
- Function getPublisherForStream(aStream : TOTStream) : TOTPublisher;
- Function getSubscribersForStream(aStream : TOTStream) : TOTSubscriberArray;
- Function publish(aPublisher : TOTPublisher; callBack : TOTErrorHandler) : TOTPublisher; overload;
- Function publish(aPublisher : TOTPublisher) : TOTPublisher; overload;
- Procedure signal(aSignal : TJSObject; callBack :TOTErrorHandler);
- Procedure signal(aSignal : TOTSignalData; callBack :TOTErrorHandler);
- Function subscribe(stream : TOTStream; target : TJSHTMLElement; aProperties : TOTInitSubscriberOptions; callBack : TOTErrorHandler) : TOTSubscriber; overload;
- Function subscribe(stream : TOTStream; targetID : String; aProperties : TOTInitSubscriberOptions; callBack : TOTErrorHandler) : TOTSubscriber; overload;
- Procedure unpublish(aPublisher : TOTPublisher);
- Procedure unsubscribe(aSubscriber : TOTSubscriber);
- Public
- Property Capabilities : TOTCapabilities Read FCapabilities;
- Property Connnection : TOTConnection Read FConnection;
- Property SessionId : string Read FSessionID;
- end;
- TOTPublisherAudioStats = record
- bytesSent : NativeInt;
- packetsLost : NativeInt;
- packetsSent : NativeInt;
- end;
- TOTPublisherVideoStats = record
- bytesSent : NativeInt;
- frameRate : NativeInt;
- packetsLost : NativeInt;
- packetsSent : NativeInt;
- end;
- TOTPublisherStatsRecord = record
- audio : TOTPublisherAudioStats;
- timestamp : NativeInt;
- video : TOTPublisherVideoStats;
- end;
- { TOTPublisherStats }
- TOTPublisherStats = class external name 'Object' (TJSObject)
- private
- FConnectionID: String; external name 'connectionId';
- FStats: TOTPublisherStatsRecord; external name 'stats';
- FSubscriberID: String; external name 'subscriberId';
- Public
- Property ConnectionId : String read FConnectionID;
- Property Stats : TOTPublisherStatsRecord read FStats;
- Property SubscriberId : String Read FSubscriberID;
- end;
- TOTPublisherStatsArray = Array of TOTPublisherStats;
- TOTPublisherStatsCallback = Reference to Procedure (error : TOTError; StatsArray : TOTPublisherStatsArray);
- { TOTPublisherStyleOptions }
- TOTPublisherStyleOptions = class external name 'Object' (TJSObject)
- Private
- FarchiveStatusDisplayMode : string; external name 'archiveStatusDisplayMode';
- FaudioLevelDisplayMode : string; external name 'audioLevelDisplayMode';
- FbackgroundImageURI : String; external name 'backgroundImageURI';
- FbuttonDisplayMode : string; external name 'buttonDisplayMode';
- FnameDisplayMode : string; external name 'nameDisplayMode';
- Public
- Property ArchiveStatusDisplayMode : string Read FArchiveStatusDisplayMode Write FArchiveStatusDisplayMode;
- Property AudioLevelDisplayMode : string Read FaudioLevelDisplayMode Write FaudioLevelDisplayMode;
- Property BackgroundImageURI : String Read FbackgroundImageURI Write FbackgroundImageURI;
- Property ButtonDisplayMode : string Read FbuttonDisplayMode Write FbuttonDisplayMode;
- Property NameDisplayMode : string Read FnameDisplayMode Write FnameDisplayMode;
- end;
- { TOTPublisher }
- TOTPublisher = Class external name 'Publisher' (TOTEventDispatcher)
- private
- FaccessAllowed: Boolean; external name 'accessAllowed';
- Felement: TJSHTMLElement; external name 'element';
- FID: string;external name 'id';
- FSession: TOTSession;external name 'session';
- FStream: TOTStream;external name 'stream';
- public
- Function cycleVideo : TJSPromise;
- Function destroy : TOTPublisher;
- Function getAudioSource : TJSMediaStreamTrack;
- Function getImgData : String;
- Procedure getStats (callback : TOTPublisherStatsCallback);
- Function getStyle : TJSObject;
- Procedure publishAudio(value : Boolean);
- Procedure publishVideo(value : Boolean);
- Function setAudioSource(aID : String) : TJSPromise; overload;
- Function setAudioSource(aStream : TJSMediaStreamTrack) : TJSPromise; overload;
- Function setStyle(aStyle : TOTPublisherStyleOptions) : TOTPublisher; overload;
- Function setStyle(aProp,aValue : String): TOTPublisher; overload;
- Function videoHeight : NativeInt;
- Function videoWidth : NativeInt;
- Public
- Property AccessAllowed : Boolean read FaccessAllowed;
- Property Element : TJSHTMLElement read Felement;
- Property ID : string read FID;
- Property Stream : TOTStream Read FStream;
- Property Session : TOTSession read FSession;
- end;
- { ---------------------------------------------------------------------
- Main class, serves as namespace.
- ---------------------------------------------------------------------}
- { TOT }
- TOTReportIssueCallBack = reference to Procedure (err : TOTError; reportID : string);
- TOT = Class external name 'OT' (TOTEventDispatcher)
- Public
- const NONE : Integer;
- const ERROR : Integer;
- const WARN : Integer;
- const INFO : Integer;
- const LOG_ : Integer; // Cannot use external name :(
- const DEBUG : Integer;
- Public
- class Procedure checkScreenSharingCapability(callBack : TOTScreenSharingCapabilityCallback);
- class Function checkSystemRequirements : NativeInt;
- class Procedure getDevices(callBack : TOTGetDevicesCallback);
- class Function getSupportedCodecs : TJSPromise;
- class Function getUserMedia : TJSPromise;
- class Function getUserMedia(options : TOTGetUserMediaOptions) : TJSPromise;
- class Function initPublisher(aElement : TJSHTMLElement; properties : TOTInitPublisherOptions; CompletionHandler : TOTInitPublisherCallback) : TOTPublisher;
- class Function initPublisher(aElementId : String; properties : TOTInitPublisherOptions; CompletionHandler : TOTInitPublisherCallback) : TOTPublisher;
- class Function initSession(APIKey,SessionID : String) : TOTSession; overload;
- class Function initSession(APIKey,SessionID : String; Options : TOTInitSessionOptions) : TOTSession; overload;
- class Procedure log(msg : string);
- class Procedure registerScreenSharingExtension(kind : String; id : string; version : Integer);
- class Procedure reportIssue(aCallBack : TOTReportIssueCallBack);
- class Procedure setLogLevel(Number : String);
- class Procedure unblockAudio;
- class Procedure upgradeSystemRequirements;
- end;
- TOTClass = Class of TOT;
- var
- OpenTok : TOTClass; external name 'OT';
- implementation
- end.
|