SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Eyeball AnyBandwidth™ v8.0
Developer's Guide
Last Modified: November 2014
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
1. ABE Introduction
Introduction
The Eyeball AnyBandwidth™ Engine (ABE) enables audio-video communications among multiple clients
and/or servers having heterogeneous processor capacities and network connections, and/or network
connections with dynamically changing properties.
AnyBandwidth provides optimized video quality (such as frame rate, picture resolution, and sharpness) to
each user based on the available network bandwidth and processing power.
AnyBandwidth Engine contains Eyeball’s patented AnyBandwidth Technology, and is found in several
Eyeball products including Eyeball Messenger and Eyeball Messenger SDK. Messenger SDK utilizes the
SIP signaling protocol, but this does not preclude AnyBandwidth Engine from utilizing other signaling
protocols based on application demand.
Eyeball AnyBandwidth Engine offers the following features:
 Guaranteed voice and video quality
 Packet loss concealment
 Flexible voice processing (AEC, AGC, CNG, NS, VAD) for hands-free handsets and tablets
 Plug-and-play voice codecs including G.711, G.729, GSM, iLBC, Siren, Speex
 Plug-and-play video codecs including EyeStream, H.263, H.264
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Figure 1: AnyBandwidth Engine block diagram.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
2. ABE Supported Platforms
Supported Platforms
 2.1. ABE: Microsoft Windows
 2.2. ABE: Android
 2.3. ABE: iOS
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
2.1. ABE: Microsoft Windows
Microsoft Windows
System Requirements
Operating System:
XP, Vista, Win7
Hardware requirements:
Audio device, camera for video enabled calls
Developer Platforms
Programming Languages:
C/C++, C#, HTML and Javascript
Developer tools:
Visual Studio 2005 or later
Other software:
DirectX 8.1 and .Net Framework 1.1 or later versions
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Programming Conventions
In this document, the phrase current user refers to the local user, as opposed to the remote user.
SIP references (including class or object names) don’t infer exclusive use of the SIP protocol.
We use the following conventions to define a variable’s data type:
 Variable name starting with ‘n’ such as nLine refers to an Integer data type
 Variable name starting with ‘s’ such as sUserID refers to a String data type
 Variable name starting with ‘b’ such as bOutgoingCall refers to a Boolean data type
 Variable name starting with ‘a’ such as aResponseInfo refers to a VB array data type. This is a
one-dimensional array. Storing two-dimensional information is simply done by concatenating rows
to each other, forming a one-dimensional array.
All strings are case-sensitive unless specified otherwise.
The calling convention for properties follows this format:
// Select a line
SipCommCtl.SelectedLine = 1;
// Retrieve the currently selected line
int nSelectedLine = SipCommCtl.SelectedLine;
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
2.2. ABE: Android
Android
System Requirements
Operating System:
Android 2.3 or later
Hardware requirements:
Android tablet or Android phone
Developer Platforms
Programming Languages:
Java
Developer tools:
Android SDK 2.3.3 or later
Programming Conventions
Please see Programming Conventions section for Microsoft Windows.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
The methods and properties are static and implemented in the JNIWrapper.
Unless otherwise specified, the calling convention for properties follows this format:
// Select a line
JNIWrapper.SipCommPutSelectedLine(1);
// Retrieve the currently selected line
int nSelectedLine = JNIWrapper.SipCommGetSelectedLine();
For methods which return a VB array on Windows, return a string array to Android using this format:
String[] stats = JNIWrapper.SipCommGetAudioReceiverStat();
For notification events which provide elements in a VB array on Windows, the elements are provided as
arguments on Android using this format:
OnVideoSizeChange(long hWnd, int iWidth, int iHeight){}
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
2.3. ABE: iOS
iOS
System Requirements
Operating System:
iOS 5.0 or later
Hardware requirements:
Phone or iPad
Developer Platforms
Programming Languages:
C/C++, Objective C/C++
Developer tools:
Xcode
Programming Conventions
Please see Programming Conventions section for Microsoft Windows.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
The methods and properties are defined in class CSipComm in file MediSession.h. To access these
methods, an object of CSipComm needs to be created. Please see Section 3.1. Creating SIPComm
objects.
Unless otherwise specified, the calling convention for properties follows this format:
// Select a line
commCtrl->sipComm->put_SelectedLine(1);
// Retrieve the currently selected line
int nSelectedLine;
commCtrl->sipComm->get_SelectedLine(&nSelectedLine);
For methods which return a string on Windows, the string must be passed by reference to iOS using this
format:
string sDisplayName;
commCtrl->sipComm->GetDisplayName(&sDisplayName);
For methods which return a VB array on Windows, a vector must be passed by reference to iOS using
this format:
vector<string> stats;
commCtrl->sipComm->GetAudioReceiverStat(&stats);
For notification events which provide elements in a VB array on Windows, the elements are provided as
arguments on iOS using this format:
OnVideoSizeChange(long hWnd, int iWidth, int iHeight){}
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
3. Using AnyBandwidth Engine SDK
Using AnyBandwidth Engine SDK
AnyBandwidth Engine SDK consists of libraries of ActiveX controls (Windows)/Java (Android)/C++ (iOS)
that provide programmers with a high-level interface to the main features and functions of the
AnyBandwidth Engine.
There are controls available to display and handle video windows (for video calls, used together with the
SIP Communicator control), and audio device detection.
In this section, we present AnyBandwidth Engine SDK from a web-programmer’s point of view. However,
programmers using other languages such as C++ and Visual Basic will also get a clear understanding of
the supported features and functionalities.
 3.1. ABE: Creating SIPComm Objects
 3.2. ABE: Features and Functions
 3.3. ABE: Handling Event Notifications
 3.4. ABE: Properties
 3.5. ABE: Methods
 3.6. ABE: Notification Events
 3.7. ABE: Error Handling
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
3.1. ABE: Creating SIPComm Objects
Creating SIPComm Objects
Windows:
The following HTML code shows how to embed the ActiveX control objects into a web page:
<OBJECT
id="SipCommCtl"
classid="CLSID: 968E1865-05A8-41dd-95B5-7D45B9701A57">
</OBJECT>
<OBJECT
id="VideoWindowCtl"
classid="CLSID: 0504639F-FBD4-4272-B232-AB9B21305618">
<param name=”IsWndless” value=true>
</OBJECT>
Android:
public class Messenger extends Activity implements SipEventHandler{
public void onCreate(Bundle savedInstanceState){
JNIWrapper.AudioInit((Activity)this);
JNIWrapper.SetSipEventHandler(this);
JNIWrapper.SipCommInit();
}
}
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
iOS:
iOS:
class CommCtrl : public CSipCommEventHandler {
public:
CSipComm *sipComm;
CommCtrl(){
sipComm = new CSipComm(this);
}
CommCtrl *commCtrl = new CommCtrl();
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
3.2. ABE: Features and Functions
Features and Functions
Some of the main features and functions of AnyBandwidth Engine SDK are described in the following
pages:
 3.2.1. ABE: SIP Communicator Control
 3.2.2. ABE: Call User
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
3.2.1. ABE: SIP Communicator Control
SIP Communicator Control
This control supports peer-to-peer audio/video data-transport. AnyBandwidth Engine SDK supports
multiple-lines (similar to multi-line PBX phones), enabling the following features:
 Identifying each call using a separate line while in multiple concurrent calls
 Choosing a specific available line to make the next call
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
3.2.2. ABE: Call User
Call User
How to make a video call
Caller
// Get the AnyFirewallEngine instance from the SIP component
CAnyFirewallEngine *pAFEngine;
GetAFEngine((void **)&pAFEngine);
// Create audio, video RTP/RTCP channels and the session
int iAudioRTPChannel = pAFEngine->Create(AF_CHANNEL_RTP);
int iAudioRTCPChannel = pAFEngine->Create(AF_CHANNEL_RTCP);
int iVideoRTPChannel = pAFEngine->Create(AF_CHANNEL_RTP);
int iVideoRTCPChannel = pAFEngine->Create(AF_CHANNEL_RTCP);
int iSession = pAFEngine->CreateSession(sMediaStream);
// Create offer SDP
string sSDP = pAFEngine->MakeOffer(iSession);
// Create the call message
// Send the call message
pAFEngine->SendTo(iServerChannel, sCallMessage, iCallMessageLength, …);
Callee
// Upon receiption of call request and accept the call
// Create audio, video RTP/RTCP channels and the session
// Create answer SDP
string sSDP = pAFEngine->MakeAnswer(iSession);
// Create the call response message
// Send the call response message
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Caller
// Upon receiption of call accept message from callee
// Negotiate audio video payload
// Grab a line
int iLine = GrabLine(-1);
// Open the session
OpenSession(iLine, chAudioPayload, chVideoPayload, iAudioRTPChannel,
iAudioRTCPChannel, iVideoRTPChannel, iVideoRTCPChannel, true);
// Send an acknowledgement message to the callee
Callee
// Upon receiption of the acknowledgement message from caller
// Grab a line
// Open the session
End call
// Send end call message
// Close the session
CloseSession(iLine, chAudioPayload, chVideoPayload);
// Release the line
ReleaseLine(iLine);
How to make an audio call
Caller
// Get the AnyFirewallEngine instance from the SIP component
CAnyFirewallEngine *pAFEngine;
GetAFEngine((void **)&pAFEngine);
// Create audio RTP/RTCP channels and the session
int iAudioRTPChannel = pAFEngine->Create(AF_CHANNEL_RTP);
int iAudioRTCPChannel = pAFEngine->Create(AF_CHANNEL_RTCP);
int iSession = pAFEngine->CreateSession(sMediaStream);
// Create offer SDP
string sSDP = pAFEngine->MakeOffer(iSession);
// Create the call message
// Send the call message
pAFEngine->SendTo(iServerChannel, sCallMessage, iCallMessageLength, …);
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Callee
// Upon receiption of call request and accept the call
// Create audio RTP/RTCP channels and the session
// Create answer SDP
string sSDP = pAFEngine->MakeAnswer(iSession);
// Create the call response message
// Send the call response message
Caller
// Upon receiption of call accept message from callee
// Negotiate audio payload
// Grab a line
int iLine = GrabLine(-1);
// Open the session
OpenSession(iLine, chAudioPayload, 127, iAudioRTPChannel, iAudioRTCPChannel, -1, -1,
true);
// Send an acknowledgement message to the callee
Callee
// Upon receiption of the acknowledgement message from caller
// Grab a line
// Open the session
End call
// Send end call message
// Close the session
CloseSession(iLine, chAudioPayload, 127);
// Release the line
ReleaseLine(iLine);
How to add video to an audio call
Caller
// Create video RTP/RTCP channels and the session
int iVideoRTPChannel = pAFEngine->Create(AF_CHANNEL_RTP);
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
int iVideoRTCPChannel = pAFEngine->Create(AF_CHANNEL_RTCP);
// Modify the existing session
int iSession = pAFEngine->CreateSession(sMediaStream);
// Create offer SDP
pAFEngine->ModifySession(iSession, sMediaStream);
// Create the call message
// Send the call message
pAFEngine->SendTo(iServerChannel, sCallMessage, iCallMessageLength, …);
Callee
// Upon receiption of call request and accept the call
// Create video RTP/RTCP channels and modify the session
// Create answer SDP
string sSDP = pAFEngine->MakeAnswer(iSession);
// Create the call response message
// Send the call response message
Caller
// Upon receiption of call accept message from callee
// Negotiate audio payload
// Grab a line
int iLine = GrabLine(-1);
// Open the session
OpenSession(iLine, chAudioPayload, chVideoPayload, iAudioRTPChannel,
iAudioRTCPChannel, iVideoRTPChannel, iVideoRTCPChannel, true);
// Send an acknowledgement message to the callee
Callee
// Upon receiption of the acknowledgement message from caller
// Grab a line
// Open the session
End call
// Send end call message
// Close the session
CloseSession(iLine, chAudioPayload, chVideoPayload);
// Release the line
ReleaseLine(iLine);
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Send DTMF
Sending DTMF tones is required for PBX calls and Touch Tone services. AnyBandwidth Engine SDK
implements RFC 2833 with RTP payload type 101. In addition, DTMF using SIP INFO or in-band can be
used (please see DTMFMode in Properties section for additional details).
To send DTMF tones:
Windows:
SipCommCtl.SendDTMF(5);
Android:
JNIWrapper.SipCommSendDTMF(5);
iOS:
commCtrl->sipComm->SendDTMF(“5”);
The digit “5” is sent as a DTMF signal.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
3.3. ABE: Handling Event Notifications
Handling Event Notifications
The applications send several event notifications to the application running on AnyBandwidth Engine
SDK. The application needs to handle these events as necessary. For example, SIP control will send
event notifications such as:
Video size change at the remote end
Windows:
<SCRIPT language=JScript for= SipCommCtl event= OnVideoSizeChange(v)>
return SipCommCtl_OnVideoSizeChange(v)
</SCRIPT>
function SipCommCtl_ OnVideoSizeChange(v)
{
var aInfo = v.toArray();
var nWidth = aInfo[1];
var nHeight = aInfo[2];
}
Android:
void OnVideoSizeChange(long hWnd, int iWidth, int iHeight)
{
//Handle event
}
iOS:
void OnVideoSizeChange(long hWnd, int iWidth, int iHeight)
{
//Handle event
}
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
3.4. ABE: Properties
Properties
AudioCodecs
This sets or retrieves preferred audio codecs.
Currently, Polycom® Siren™ (G722.1C, 24kHz, 48kHz), GSM, G.711 (A-law, µ-law), G.729 Annex A,
iLBC, and Speex codecs are supported. On Android and iOS G.711, G729 and Speex (wideband) are
supported. Codecs are described with space-delimited strings. This value can be changed during a call.
The following codec strings are supported: “SIREN24”, “SIREN48”, “SPEEX”, “SPEEX-WB”, “ILBC”,
“GSM”, “PCMU”, “PCMA”, and “G729”.
When acting as conference host, it is possible to add conference participants thus supporting different
codecs in a single conference. This is useful when adding participants from PSTN gateways which
usually only support a small selection of codecs.
DTMFMode
This sets or retrieves whether the SendDTMF method sends DTMF using the RTP payload (0), SIP INFO
method (1), or inband DTMF (2). The default value is 0.
In-band DTMF is designed to work only with high bit rate codecs, such as G711 and G722. For low bit
rate codecs such as G729, RTP payload or SIP INFO should be used instead of inband.
EnableAGC
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
This sets or retrieves whether or not Auto Gain Control (AGC) is used for the microphone input signal.
This is a Boolean variable and its default value is false. This value can be changed during a call.
EnableDenoise
This sets or retrieves whether or not noise is removed from the microphone input signal. This is a Boolean
value and its default value is true. This value can be changed during a call.
This property should be enabled for better echo cancellation.
EnableEchoCancellation
This sets or retrieves whether or not echo cancellation is enabled. This is a Boolean property and its
default value is true. This value can be changed during a call.
For better echo cancellation, EnableDenoise property must be set to true.
EnableIceSupport
This sets or retrieves whether or not ICE candidates are used in invite for firewall traversal. ICE stands for
Interactive Connectivity Establishment. This is a Boolean property and its default value is true.
EnableRelaySupport
This sets or retrieves whether or not relayed candidates are used in invite for firewall traversal.
AnyBandwidth Engine SDK will use a TURN server to obtain these candidates. This is a Boolean property
and its default value is true.
EnableSrtp
This enables or disables Secure RTP one-to-one calls. This property does not support conferencing. This
is a Boolean variable and its default value is false. It can only be set before making a call. The caller has
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
to enable SRTP, but the callee must support SRTP as well for the call to be secure, although it does not
need to call this property.
EnableStunSupport
This sets or retrieves whether or not server reflexive candidates are used in invite for firewall traversal.
AnyBandwidth Engine SDK will use a STUN server to obtain these candidates. This is a Boolean property
and its default value is true.
HoldLine
This holds or un-holds SelectedLine, or retrieves whether or not SelectedLine is being held. The default
value of this Boolean property is false.
ImageSize
This sets the image size to be captured, or retrieves the captured image size as an integer. The default
value is 0. This property can be set at any time. OnVideoSizeChange event is fired when the image size
is changed.
The possible values are:
Windows:
0:
Small image size (176 x 144, or 192 x 144, if supported by the device)
1:
Medium image size (352 x 288, or 320 x 240, if supported by the device)
2:
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Large image size (640 x 480 if supported by the device)
3:
720p (HD) image size (1280 x 720 if supported by the device)
Android:
0:
Small image size (176 x 144)
2:
Medium image size (320 x 240)
3:
Large image size (352 x 288)
5:
VGA image size (640 x 480)
iOS:
1:
Small image size (192 x 144)
2:
Medium image size (320 x 240)
5:
VGA image size (352 x 288)
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
LineVolume
This sets or retrieves the volume of a SelectedLine. The value ranges from 1 (silence) to 100 (full
volume). The default value of this property is 100.
MuteReceiver
This mutes or un-mutes inbound audio on SelectedLine, or retrieves whether or not inbound audio on
SelectedLine is muted. The default value of this Boolean property is false.
MuteSender
This mutes or un-mutes outbound audio, or retrieves whether or not outbound audio is muted. The default
value of this Boolean property is false.
PauseReceiver
This pauses or un-pauses inbound video on SelectedLine, or retrieves whether or not inbound video on
SelectedLine is paused. The default value of this Boolean property is false.
PauseSender
This pauses or un-pauses outbound video, or retrieves whether or not outbound video is paused. The
default value of this Boolean property is false.
SelectedLine
This sets a line to be selected or retrieves a line that is currently being selected as an integer. Some
properties and methods perform operations on the line specified by SelectedLine.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
VideoCodecs
This sets or retrieves preferred video codecs. Currently, EyeStream, H.263, and H264 codecs are
supported. On Android and iOS only H264 is supported. Codecs are described with space-delimited
strings. This value can be changed while in a call. The possible parameters are: “Eyestream”, “H263”,
“H263-1998” (H263+), and “H264”. When attempting an audio/video call to a client that does not support
the codecs selected in AnyBandwidth Engine SDK, the call will be completed as an audio only call.
In a conference, only one codec is supported. It is not possible to add participants that do not support the
video codec used by the existing conference participants.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
3.5. ABE: Methods
Methods
AttachVideoWindow(nLine, nWnd)
This attaches a given video window to display video.
nLine:
This is the line indicating a call for video source. If nLine is -1, window is used to display the preview
video for the current user.
nWnd:
This is the window handle of the video window.
iOS:
AttachVideoWindow(int iLine, void *pWnd)
pWnd:
Reference to an UIView for camera preview surface, and to an UIImageView for remote video surface.
This is not applicable to Android environment.
AttachVideoWindowEx(nLine, nIndex, nWnd)
This attaches a given video window to the display video received from the specified line. A separate
instance of VideoWindowCtl is needed to display each video window.
nLine:
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
This is the line indicating a call for video source. If nLine is -1, window is used to display the preview
video for the current user.
nIndex:
This is the user index in the conference. It is 0 if not in a conference.
nWnd:
This is the window handle of the video window. This is returned by the GetVideoWindow method of
VideoWindowCtl.
This is not applicable to Android or iOS environments.
AudioInit(activity)
This initializes the audio manager.
activity:
An object of the Activity class
Please check the sample application code.
This is applicable to the Android environment only.
CloseSession(nLine, chAudioPayload,
chVideoPayload)
Closes audio, video in a session.
nLine:
The line
chAudioPayload:
Audio payload type in character format
chVideoPayload:
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Video payload type in character format
GetAudioReceiverStat()
This returns audio receiver statistics of the currently selected line as a VB array of eight elements on
Windows, array of string on Android, and vector of string on iOS.
Element Description
Element 1 (Codec, String): Audio codec
Element 2 (Bit rate, Float): Audio receiving bit rate
Element 3 (Buffer size, Integer): Audio receive buffer size in ms
Element 4 (Audio resynchronization count,
Integer):
Number of times the audio receive buffer is reset and re-
synchronized
Element 5 (Packets received, Integer): Number of packets received
Element 6 (Packets lost, Integer): Number of packets lost
Element 7 (Packets late, Integer): Number of late packets
Element 8 (Loss rate, Float): Packet loss rate
GetAFEngine(void **pAFEngine)
Get reference of the instance of the AnyFirewallEngine used in the SIP component. This
AnyFirewallEngine instance is created and destroyed in the component itself.
pAFEngine:
Reference to CAnyFirewallEngine.
GetAudioSenderStat()
This returns audio sender statistics of the currently selected line as a VB array of three elements on
windows, array of string on Android and vector of string on iOS.
Element Description
Element 1 (Codec, String): Audio codec
Element 2 (Bit rate, Float): Audio receiving bit rate
Element 3 (Packets sent, Integer): Number of packets sent
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
GetFirewallStatus(nLine)
This returns the status of the firewall traversal on the call line specified by nLine.
Possible values:
“Unknown”:
Firewall traversal status is unknown
“Peer-to-peer”:
Firewall traversal succeeded and call completed peer-to-peer
“UDP Relay”:
Firewall traversal succeeded and call completed using UDP relay
“TCP Relay”:
Firewall traversal succeeded and call completed using TCP relay
“HTTP Relay”:
Firewall traversal succeeded and call completed using HTTP relay
“Fail”:
Firewall traversal failed
nLine:
The line indicating a call
GetVideoReceiverStat()
This returns video receiver statistics of the currently selected line (see SipCommCtl.SelectedLine) as a
VB array of eight elements.
Element Description
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Element 1 (Codec, String): Video codec
Element 2 (Bit rate, Float): Video receiving bit rate
Element 3 (Frame rate, Float): Video receiver frame rate
Element 4 ((Frames received, Integer): Number of frames received
Element 5 (Packets received, Integer): Number of packets received
Element 6 (Packets lost, Integer): Number of packets lost
Element 7 (Loss rate, Float): Packet loss rate
Element 8 (Frames lost, Float): Number of frames lost
GetVideoSenderStat()
This returns the video sender statistics of the currently selected line (see SipCommCtl.SelectedLine) as a
VB array of eight elements.
Element Description
Element 1 (Codec, String): Video codec
Element 2 (Bit rate, Float): Video sending bit bit rate
Element 3 (Frame rate, Float): Video sending bit frame rate
Element 4 ((Frames sent, Integer): Number of frames sent
Element 5 (Frames dropped, Integer): Number of frames dropped
Element 6 (Packets sent, Integer): Number of packets sent
Element 7 (Frames lost, Float): Number of packets not received by remote user
Element 8 (Packets rate, Float): Packet loss rate
GrabLine(nLineToGrab)
This reserves a line to make a call. There can only be one line being reserved at a time. A reserved line
is released once ReleaseLine is called. If there is an error reserving the line, -1 is returned; otherwise, the
line being reserved is returned as an integer.
nLineToGrab:
Specifies a line to be reserved. If this is –1, the control will choose a line that is not in use and return that
line as Integer.
iOS:
GrabLine(nLineToGrab, *nLineGrabbed)
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
OpenSession(nLine, chAudioPayload,
chVideoPayload, nAudioRTPChannel,
nAudioRTCPChannel, nVideoRTPChannel,
nVideoRTCPChannel, bool bCaller)
Open audio video in a session.
nLine:
The line
chAudioPayload:
Audio payload type in character format
chVideoPayload:
Video payload type in character format
nAudioRTPChannel:
Audio RTP channel
nAudioRTCPChannel:
Audio RTCP channel
nVideoRTPChannel:
Video RTP channel
nVideoRTCPChannel:
Video RTCP channel
bCaller:
true if caller, false if callee
chVideoPayload should be set to 127 if there isn’t to be video.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
ReleaseLine(nLine)
This un-reserves the line nLine which was grabbed by the method GrabLine.
nLine:
The line to be released.
ResetAudioReceiverStat()
This resets the audio receiver statistics.
ResetAudioSenderStat()
This resets the audio sender statistics.
ResetVideoReceiverStat()
This resets the video receiver statistics.
ResetVideoSenderStat()
This resets the video sender statistics.
SendDTMF(sKey)
This sends the DTMF message corresponding to a specified key to the current call (specified by current
value of SelectedLine). If no call is established at SelectedLine, nothing is sent.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
The DTMF mode can be selected using the property DTMFMode.
sKey:
A valid key specifying a DTMF to be sent
SetNATTraversalServer(nServerType, bstrAddr, nPort,
bDone)
This function initializes the underlying AnyFirewall Engine by setting the necessary servers for performing
firewall traversal.
nServerType:
An enum indicating the type of server to be set
bstrAddr:
IP address of the server
nPort:
Port of the server
bDone:
This is false if more servers remain to be set, and True if this is the final server to be set. Firewall
detection will start after all servers have been set.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Server Type Description
eServerSRV
The DNS SRV domain name that is used to locate the STUN, TURN and
STUN-Relay/TURN servers. The port parameter for the server type is
ignored.
The following DNS SRV queries will be made:
_stun._udp.<srvdomain>STUN server (UDP)
_stun._tcp.<srvdomain>STUN server (TCP)
_turn._udp.<srvdomain>STUN-Relay/TURN server (UDP)
_turn._tc alive p.<srvdomain>STUN-Relay/TURN server (TCP)
eServerHttpProxy The HTTP Proxy server, for users using a proxy server
eServerStunUdp* The UDP STUN server
eServerStunTcp* The TCP STUN server
eServerStunRelayUdp* The UDP STUN-Relay/TURN server
eServerStunRelayTcp* The TCP STUN-Relay/TURN server
*These parameters will be used if eServerSRV is not set or the DNS SRV lookup fails.
SetSipEventHandler(sipEventHandler)
This sets the event handler for handing events from the SipComm control. This must implement the
SipEventHandler interface. The SipEventHandler is an object which implements SipEventHandler. Please
check the sample application code.
This is applicable to the Android environment only.
SetTURNUsernamePassword (sUsername,
sPassword)
This sets the authentication information for the TURN server.
sUsername:
Username of the TURN server
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
sPassword:
Password of the TURN server
This function should be called before bDone is set to true in SetNATTraversalServer.
SipCommInit
This initializes the SipComm control.
This is applicable to the Android environment only.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
3.6. ABE: Notification Events
Notification Events
OnFirewallStatusChange(aFirewallInfo)
This fires when the firewall status changes.
aFirewallInfo is a VB-array containing following elements:
Element Description
Element 1 (Line, Integer): Line associated with the call
Element 2 (Display Name,
String):
Displays the name of the remote user in the call
Element 3 (Target URI, String): URI of the remote user in the call
Element 4 (Video call flag,
Boolean):
True if it is a video/audio call or false if it is an audio only call
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Element 5 (Status, String):
1. Firewall status is shown as one of the following strings:
"Firewall type: Unknown",
"Firewall type: None",
"Firewall type: NAT",
"Firewall type: TCP only",
"Firewall type: Proxy" or
"Firewall type: Blocked" when SDK detects the firewall type.
The Line will be -1 at that time.
2. The following strings will show the status of a call:
“Trying”: Trying to traverse the firewall.
“Success”: Firewall traversal succeeded
“Fail”: Firewall traversal failed
“ICE check successfully completed”: Firewall traversal succeeded using
ICE.
“Peer-to-peer”: Firewall traversal succeeded and call completed peer-
to-peer.
“UDP Relay”: Firewall traversal succeeded and call completed using
UDP relay.
“TCP Relay”: Firewall traversal succeeded and call completed using
TCP relay.
“HTTP Relay”: Firewall traversal succeeded and call completed using
HTTP relay.
“Relay error”: Firewall traversal failed to use relay.
OnVideoSizeChange(aSizeChangeInfo)
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
This is fired when ImageSize property is set to change the image size to be captured and when capture
video size is changed on the remote end.
aSizeChangeInfo is a VB-array containing the following elements:
Element Description
Element 1 (Window handle,
Integer):
Window handle of the video container that has size changed (N/A on
iOS)
Element 2 (Width, Integer): Width of the video after size change
Element 3 (Height, Integer): Height of the video after size change
Android and iOS: Element 1 is ignored.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
3.7. ABE: Error Handling
Error Handling
Windows
SipCommCtl returns the error code 0x80004005 (in hexadecimal format) as well as error descriptions for
all errors. These errors are thrown as exceptions in JScript. The following sample code shows how to
handle these errors in JScript:
try
{
SipCommCtl.GrabLine(-1);
}
catch(e)
{
alert(“Error description:” + e.description);
}
Android
SipCommOnError(String sError) event is fired.
iOS
OnError(const string &sError) event is fired.
Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
4. ABE: Legal and Contact Information
Legal and Contact Information
Copyright © 2002-2013 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
Confidential Information: This document contains confidential and proprietary information. The document
has been provided to you in your capacity as a customer or evaluator of Eyeball Networks Inc.'s
products. Unauthorized reproduction and distribution is prohibited unless specifically approved by Eyeball
Networks Inc.
Eyeball, Eyeball.com, its logos, AnyBandwidth™ and AnyFirewall™ are trademarks of Eyeball Networks
Inc. All other referenced companies and product names may or may not be trademarks of their respective
owners.
For more information visit Eyeball Networks Inc. at http://www.eyeball.com.
Department E-mail
Sales sales@eyeball.com
Technical Support techsupport@eyeball.com
Corporate Headquarters:
730 - 1201 West Pender Street
Vancouver, BC V6E 2V2
Canada
Tel. +1 604.921.5993
Fax +1 604.921.5909

Weitere ähnliche Inhalte

Was ist angesagt?

Byod and guest access workshop enabling byod carlos gomez gallego_network ser...
Byod and guest access workshop enabling byod carlos gomez gallego_network ser...Byod and guest access workshop enabling byod carlos gomez gallego_network ser...
Byod and guest access workshop enabling byod carlos gomez gallego_network ser...Aruba, a Hewlett Packard Enterprise company
 
Managing an Enterprise WLAN with Cisco Prime NCS & WCS
Managing an Enterprise WLAN with Cisco Prime NCS & WCSManaging an Enterprise WLAN with Cisco Prime NCS & WCS
Managing an Enterprise WLAN with Cisco Prime NCS & WCSCisco Mobility
 
Application Policy Enforcement Using APIC
Application Policy Enforcement Using APIC Application Policy Enforcement Using APIC
Application Policy Enforcement Using APIC Cisco Canada
 
D S A P 4000 U S
D S  A P 4000  U SD S  A P 4000  U S
D S A P 4000 U SAri Zoldan
 

Was ist angesagt? (20)

2012 ah emea top 10 tips from aruba tac
2012 ah emea   top 10 tips from aruba tac 2012 ah emea   top 10 tips from aruba tac
2012 ah emea top 10 tips from aruba tac
 
2012 ah vegas deploying byod
2012 ah vegas   deploying byod2012 ah vegas   deploying byod
2012 ah vegas deploying byod
 
Migrating to the 7200 controller george anderson marcus christensen
Migrating to the 7200 controller george anderson marcus christensenMigrating to the 7200 controller george anderson marcus christensen
Migrating to the 7200 controller george anderson marcus christensen
 
2012 ah apj wlan design fundamentals
2012 ah apj   wlan design fundamentals2012 ah apj   wlan design fundamentals
2012 ah apj wlan design fundamentals
 
Network Rightsizing Best Practices Guide
Network Rightsizing Best Practices GuideNetwork Rightsizing Best Practices Guide
Network Rightsizing Best Practices Guide
 
1 voice and video over wi fi-balajee krishnamurthy
1 voice and video over wi fi-balajee krishnamurthy1 voice and video over wi fi-balajee krishnamurthy
1 voice and video over wi fi-balajee krishnamurthy
 
Byod and guest access workshop enabling byod carlos gomez gallego_network ser...
Byod and guest access workshop enabling byod carlos gomez gallego_network ser...Byod and guest access workshop enabling byod carlos gomez gallego_network ser...
Byod and guest access workshop enabling byod carlos gomez gallego_network ser...
 
2012 ah vegas top10 tips from aruba tac
2012 ah vegas   top10 tips from aruba tac2012 ah vegas   top10 tips from aruba tac
2012 ah vegas top10 tips from aruba tac
 
Managing an Enterprise WLAN with Cisco Prime NCS & WCS
Managing an Enterprise WLAN with Cisco Prime NCS & WCSManaging an Enterprise WLAN with Cisco Prime NCS & WCS
Managing an Enterprise WLAN with Cisco Prime NCS & WCS
 
Apple Captive Network Assistant Bypass with ClearPass Guest
Apple Captive Network Assistant Bypass with ClearPass GuestApple Captive Network Assistant Bypass with ClearPass Guest
Apple Captive Network Assistant Bypass with ClearPass Guest
 
ArubaOS DHCP Fingerprinting
ArubaOS DHCP FingerprintingArubaOS DHCP Fingerprinting
ArubaOS DHCP Fingerprinting
 
Application Policy Enforcement Using APIC
Application Policy Enforcement Using APIC Application Policy Enforcement Using APIC
Application Policy Enforcement Using APIC
 
2012 ah apj keynote - technology update
2012 ah apj   keynote - technology update2012 ah apj   keynote - technology update
2012 ah apj keynote - technology update
 
D S A P 4000 U S
D S  A P 4000  U SD S  A P 4000  U S
D S A P 4000 U S
 
Top 10 tips_aruba_tac_madison lee
Top 10 tips_aruba_tac_madison leeTop 10 tips_aruba_tac_madison lee
Top 10 tips_aruba_tac_madison lee
 
2012 ah apj rf troubleshooting
2012 ah apj   rf troubleshooting2012 ah apj   rf troubleshooting
2012 ah apj rf troubleshooting
 
Air heads rio 2010 aruba pef overview
Air heads rio 2010   aruba pef overviewAir heads rio 2010   aruba pef overview
Air heads rio 2010 aruba pef overview
 
2012 ah vegas wlan design fundamentals
2012 ah vegas   wlan design fundamentals2012 ah vegas   wlan design fundamentals
2012 ah vegas wlan design fundamentals
 
Acmp study guide_d[1]
Acmp study guide_d[1]Acmp study guide_d[1]
Acmp study guide_d[1]
 
Next Generation Wireless Architecture for Multimedia-Grade Residence Halls
Next Generation Wireless Architecture for Multimedia-Grade Residence HallsNext Generation Wireless Architecture for Multimedia-Grade Residence Halls
Next Generation Wireless Architecture for Multimedia-Grade Residence Halls
 

Ähnlich wie Eyeball AnyBandwidth Engine V8.0 Developer’s Guide

Eyeball Messenger SDK V10.0 Developer Reference Guide
Eyeball Messenger SDK V10.0 Developer Reference GuideEyeball Messenger SDK V10.0 Developer Reference Guide
Eyeball Messenger SDK V10.0 Developer Reference GuideEyeball Networks
 
Utf 8'en'ibm sametime 9 - voice and video deployment
Utf 8'en'ibm sametime 9 - voice and video deployment Utf 8'en'ibm sametime 9 - voice and video deployment
Utf 8'en'ibm sametime 9 - voice and video deployment a8us
 
Android Live Streaming Box Technical
Android Live Streaming Box Technical Android Live Streaming Box Technical
Android Live Streaming Box Technical Jimmin Kurichiyil
 
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...INFOGAIN PUBLICATION
 
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...INFOGAIN PUBLICATION
 
Virtual STB / Cloud UI Streaming revisited
Virtual STB / Cloud UI Streaming revisitedVirtual STB / Cloud UI Streaming revisited
Virtual STB / Cloud UI Streaming revisitedDr. Randolph Nikutta
 
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...Christopher Diamantopoulos
 
Android Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинAndroid Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинGDG Saint Petersburg
 
Generic and Automatic Specman Based Verification Environment
Generic and Automatic Specman Based Verification EnvironmentGeneric and Automatic Specman Based Verification Environment
Generic and Automatic Specman Based Verification EnvironmentDVClub
 
CAVE/RC-to-street
CAVE/RC-to-street CAVE/RC-to-street
CAVE/RC-to-street Videoguy
 
LAS16-112: mbed OS Technical Overview
LAS16-112: mbed OS Technical OverviewLAS16-112: mbed OS Technical Overview
LAS16-112: mbed OS Technical OverviewLinaro
 
Chapter 07 - Transport Layer
Chapter 07 - Transport LayerChapter 07 - Transport Layer
Chapter 07 - Transport LayerYaser Rahmati
 
Chapter 7 : Transport layer
Chapter 7 : Transport layerChapter 7 : Transport layer
Chapter 7 : Transport layerteknetir
 
CCNAv5 - S1: Chapter 7 - Transport Layer
CCNAv5 - S1: Chapter 7 - Transport LayerCCNAv5 - S1: Chapter 7 - Transport Layer
CCNAv5 - S1: Chapter 7 - Transport LayerVuz Dở Hơi
 
محمد مشاري
محمد مشاريمحمد مشاري
محمد مشاريmaherrrrz
 

Ähnlich wie Eyeball AnyBandwidth Engine V8.0 Developer’s Guide (20)

Eyeball Messenger SDK V10.0 Developer Reference Guide
Eyeball Messenger SDK V10.0 Developer Reference GuideEyeball Messenger SDK V10.0 Developer Reference Guide
Eyeball Messenger SDK V10.0 Developer Reference Guide
 
Utf 8'en'ibm sametime 9 - voice and video deployment
Utf 8'en'ibm sametime 9 - voice and video deployment Utf 8'en'ibm sametime 9 - voice and video deployment
Utf 8'en'ibm sametime 9 - voice and video deployment
 
Webrtc in Real world
Webrtc in Real world Webrtc in Real world
Webrtc in Real world
 
56_Implementation
56_Implementation56_Implementation
56_Implementation
 
Android Live Streaming Box Technical
Android Live Streaming Box Technical Android Live Streaming Box Technical
Android Live Streaming Box Technical
 
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
 
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
Optimizing the Audio Decoding Based Upon Hardware Capability: An Android NUPl...
 
Virtual STB / Cloud UI Streaming revisited
Virtual STB / Cloud UI Streaming revisitedVirtual STB / Cloud UI Streaming revisited
Virtual STB / Cloud UI Streaming revisited
 
Ramprasad_Darlapudi
Ramprasad_DarlapudiRamprasad_Darlapudi
Ramprasad_Darlapudi
 
Vo ip sip
Vo ip sipVo ip sip
Vo ip sip
 
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
 
Android Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинAndroid Meetup, Илья Лёвин
Android Meetup, Илья Лёвин
 
Generic and Automatic Specman Based Verification Environment
Generic and Automatic Specman Based Verification EnvironmentGeneric and Automatic Specman Based Verification Environment
Generic and Automatic Specman Based Verification Environment
 
CAVE/RC-to-street
CAVE/RC-to-street CAVE/RC-to-street
CAVE/RC-to-street
 
Parimal Resume
Parimal ResumeParimal Resume
Parimal Resume
 
LAS16-112: mbed OS Technical Overview
LAS16-112: mbed OS Technical OverviewLAS16-112: mbed OS Technical Overview
LAS16-112: mbed OS Technical Overview
 
Chapter 07 - Transport Layer
Chapter 07 - Transport LayerChapter 07 - Transport Layer
Chapter 07 - Transport Layer
 
Chapter 7 : Transport layer
Chapter 7 : Transport layerChapter 7 : Transport layer
Chapter 7 : Transport layer
 
CCNAv5 - S1: Chapter 7 - Transport Layer
CCNAv5 - S1: Chapter 7 - Transport LayerCCNAv5 - S1: Chapter 7 - Transport Layer
CCNAv5 - S1: Chapter 7 - Transport Layer
 
محمد مشاري
محمد مشاريمحمد مشاري
محمد مشاري
 

Kürzlich hochgeladen

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 

Kürzlich hochgeladen (20)

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 

Eyeball AnyBandwidth Engine V8.0 Developer’s Guide

  • 1. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Eyeball AnyBandwidth™ v8.0 Developer's Guide Last Modified: November 2014 Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved.
  • 2. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 1. ABE Introduction Introduction The Eyeball AnyBandwidth™ Engine (ABE) enables audio-video communications among multiple clients and/or servers having heterogeneous processor capacities and network connections, and/or network connections with dynamically changing properties. AnyBandwidth provides optimized video quality (such as frame rate, picture resolution, and sharpness) to each user based on the available network bandwidth and processing power. AnyBandwidth Engine contains Eyeball’s patented AnyBandwidth Technology, and is found in several Eyeball products including Eyeball Messenger and Eyeball Messenger SDK. Messenger SDK utilizes the SIP signaling protocol, but this does not preclude AnyBandwidth Engine from utilizing other signaling protocols based on application demand. Eyeball AnyBandwidth Engine offers the following features:  Guaranteed voice and video quality  Packet loss concealment  Flexible voice processing (AEC, AGC, CNG, NS, VAD) for hands-free handsets and tablets  Plug-and-play voice codecs including G.711, G.729, GSM, iLBC, Siren, Speex  Plug-and-play video codecs including EyeStream, H.263, H.264
  • 3. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Figure 1: AnyBandwidth Engine block diagram.
  • 4. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 2. ABE Supported Platforms Supported Platforms  2.1. ABE: Microsoft Windows  2.2. ABE: Android  2.3. ABE: iOS
  • 5. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 2.1. ABE: Microsoft Windows Microsoft Windows System Requirements Operating System: XP, Vista, Win7 Hardware requirements: Audio device, camera for video enabled calls Developer Platforms Programming Languages: C/C++, C#, HTML and Javascript Developer tools: Visual Studio 2005 or later Other software: DirectX 8.1 and .Net Framework 1.1 or later versions
  • 6. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Programming Conventions In this document, the phrase current user refers to the local user, as opposed to the remote user. SIP references (including class or object names) don’t infer exclusive use of the SIP protocol. We use the following conventions to define a variable’s data type:  Variable name starting with ‘n’ such as nLine refers to an Integer data type  Variable name starting with ‘s’ such as sUserID refers to a String data type  Variable name starting with ‘b’ such as bOutgoingCall refers to a Boolean data type  Variable name starting with ‘a’ such as aResponseInfo refers to a VB array data type. This is a one-dimensional array. Storing two-dimensional information is simply done by concatenating rows to each other, forming a one-dimensional array. All strings are case-sensitive unless specified otherwise. The calling convention for properties follows this format: // Select a line SipCommCtl.SelectedLine = 1; // Retrieve the currently selected line int nSelectedLine = SipCommCtl.SelectedLine;
  • 7. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 2.2. ABE: Android Android System Requirements Operating System: Android 2.3 or later Hardware requirements: Android tablet or Android phone Developer Platforms Programming Languages: Java Developer tools: Android SDK 2.3.3 or later Programming Conventions Please see Programming Conventions section for Microsoft Windows.
  • 8. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. The methods and properties are static and implemented in the JNIWrapper. Unless otherwise specified, the calling convention for properties follows this format: // Select a line JNIWrapper.SipCommPutSelectedLine(1); // Retrieve the currently selected line int nSelectedLine = JNIWrapper.SipCommGetSelectedLine(); For methods which return a VB array on Windows, return a string array to Android using this format: String[] stats = JNIWrapper.SipCommGetAudioReceiverStat(); For notification events which provide elements in a VB array on Windows, the elements are provided as arguments on Android using this format: OnVideoSizeChange(long hWnd, int iWidth, int iHeight){}
  • 9. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 2.3. ABE: iOS iOS System Requirements Operating System: iOS 5.0 or later Hardware requirements: Phone or iPad Developer Platforms Programming Languages: C/C++, Objective C/C++ Developer tools: Xcode Programming Conventions Please see Programming Conventions section for Microsoft Windows.
  • 10. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. The methods and properties are defined in class CSipComm in file MediSession.h. To access these methods, an object of CSipComm needs to be created. Please see Section 3.1. Creating SIPComm objects. Unless otherwise specified, the calling convention for properties follows this format: // Select a line commCtrl->sipComm->put_SelectedLine(1); // Retrieve the currently selected line int nSelectedLine; commCtrl->sipComm->get_SelectedLine(&nSelectedLine); For methods which return a string on Windows, the string must be passed by reference to iOS using this format: string sDisplayName; commCtrl->sipComm->GetDisplayName(&sDisplayName); For methods which return a VB array on Windows, a vector must be passed by reference to iOS using this format: vector<string> stats; commCtrl->sipComm->GetAudioReceiverStat(&stats); For notification events which provide elements in a VB array on Windows, the elements are provided as arguments on iOS using this format: OnVideoSizeChange(long hWnd, int iWidth, int iHeight){}
  • 11. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 3. Using AnyBandwidth Engine SDK Using AnyBandwidth Engine SDK AnyBandwidth Engine SDK consists of libraries of ActiveX controls (Windows)/Java (Android)/C++ (iOS) that provide programmers with a high-level interface to the main features and functions of the AnyBandwidth Engine. There are controls available to display and handle video windows (for video calls, used together with the SIP Communicator control), and audio device detection. In this section, we present AnyBandwidth Engine SDK from a web-programmer’s point of view. However, programmers using other languages such as C++ and Visual Basic will also get a clear understanding of the supported features and functionalities.  3.1. ABE: Creating SIPComm Objects  3.2. ABE: Features and Functions  3.3. ABE: Handling Event Notifications  3.4. ABE: Properties  3.5. ABE: Methods  3.6. ABE: Notification Events  3.7. ABE: Error Handling
  • 12. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 3.1. ABE: Creating SIPComm Objects Creating SIPComm Objects Windows: The following HTML code shows how to embed the ActiveX control objects into a web page: <OBJECT id="SipCommCtl" classid="CLSID: 968E1865-05A8-41dd-95B5-7D45B9701A57"> </OBJECT> <OBJECT id="VideoWindowCtl" classid="CLSID: 0504639F-FBD4-4272-B232-AB9B21305618"> <param name=”IsWndless” value=true> </OBJECT> Android: public class Messenger extends Activity implements SipEventHandler{ public void onCreate(Bundle savedInstanceState){ JNIWrapper.AudioInit((Activity)this); JNIWrapper.SetSipEventHandler(this); JNIWrapper.SipCommInit(); } }
  • 13. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. iOS: iOS: class CommCtrl : public CSipCommEventHandler { public: CSipComm *sipComm; CommCtrl(){ sipComm = new CSipComm(this); } CommCtrl *commCtrl = new CommCtrl();
  • 14. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 3.2. ABE: Features and Functions Features and Functions Some of the main features and functions of AnyBandwidth Engine SDK are described in the following pages:  3.2.1. ABE: SIP Communicator Control  3.2.2. ABE: Call User
  • 15. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 3.2.1. ABE: SIP Communicator Control SIP Communicator Control This control supports peer-to-peer audio/video data-transport. AnyBandwidth Engine SDK supports multiple-lines (similar to multi-line PBX phones), enabling the following features:  Identifying each call using a separate line while in multiple concurrent calls  Choosing a specific available line to make the next call
  • 16. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 3.2.2. ABE: Call User Call User How to make a video call Caller // Get the AnyFirewallEngine instance from the SIP component CAnyFirewallEngine *pAFEngine; GetAFEngine((void **)&pAFEngine); // Create audio, video RTP/RTCP channels and the session int iAudioRTPChannel = pAFEngine->Create(AF_CHANNEL_RTP); int iAudioRTCPChannel = pAFEngine->Create(AF_CHANNEL_RTCP); int iVideoRTPChannel = pAFEngine->Create(AF_CHANNEL_RTP); int iVideoRTCPChannel = pAFEngine->Create(AF_CHANNEL_RTCP); int iSession = pAFEngine->CreateSession(sMediaStream); // Create offer SDP string sSDP = pAFEngine->MakeOffer(iSession); // Create the call message // Send the call message pAFEngine->SendTo(iServerChannel, sCallMessage, iCallMessageLength, …); Callee // Upon receiption of call request and accept the call // Create audio, video RTP/RTCP channels and the session // Create answer SDP string sSDP = pAFEngine->MakeAnswer(iSession); // Create the call response message // Send the call response message
  • 17. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Caller // Upon receiption of call accept message from callee // Negotiate audio video payload // Grab a line int iLine = GrabLine(-1); // Open the session OpenSession(iLine, chAudioPayload, chVideoPayload, iAudioRTPChannel, iAudioRTCPChannel, iVideoRTPChannel, iVideoRTCPChannel, true); // Send an acknowledgement message to the callee Callee // Upon receiption of the acknowledgement message from caller // Grab a line // Open the session End call // Send end call message // Close the session CloseSession(iLine, chAudioPayload, chVideoPayload); // Release the line ReleaseLine(iLine); How to make an audio call Caller // Get the AnyFirewallEngine instance from the SIP component CAnyFirewallEngine *pAFEngine; GetAFEngine((void **)&pAFEngine); // Create audio RTP/RTCP channels and the session int iAudioRTPChannel = pAFEngine->Create(AF_CHANNEL_RTP); int iAudioRTCPChannel = pAFEngine->Create(AF_CHANNEL_RTCP); int iSession = pAFEngine->CreateSession(sMediaStream); // Create offer SDP string sSDP = pAFEngine->MakeOffer(iSession); // Create the call message // Send the call message pAFEngine->SendTo(iServerChannel, sCallMessage, iCallMessageLength, …);
  • 18. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Callee // Upon receiption of call request and accept the call // Create audio RTP/RTCP channels and the session // Create answer SDP string sSDP = pAFEngine->MakeAnswer(iSession); // Create the call response message // Send the call response message Caller // Upon receiption of call accept message from callee // Negotiate audio payload // Grab a line int iLine = GrabLine(-1); // Open the session OpenSession(iLine, chAudioPayload, 127, iAudioRTPChannel, iAudioRTCPChannel, -1, -1, true); // Send an acknowledgement message to the callee Callee // Upon receiption of the acknowledgement message from caller // Grab a line // Open the session End call // Send end call message // Close the session CloseSession(iLine, chAudioPayload, 127); // Release the line ReleaseLine(iLine); How to add video to an audio call Caller // Create video RTP/RTCP channels and the session int iVideoRTPChannel = pAFEngine->Create(AF_CHANNEL_RTP);
  • 19. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. int iVideoRTCPChannel = pAFEngine->Create(AF_CHANNEL_RTCP); // Modify the existing session int iSession = pAFEngine->CreateSession(sMediaStream); // Create offer SDP pAFEngine->ModifySession(iSession, sMediaStream); // Create the call message // Send the call message pAFEngine->SendTo(iServerChannel, sCallMessage, iCallMessageLength, …); Callee // Upon receiption of call request and accept the call // Create video RTP/RTCP channels and modify the session // Create answer SDP string sSDP = pAFEngine->MakeAnswer(iSession); // Create the call response message // Send the call response message Caller // Upon receiption of call accept message from callee // Negotiate audio payload // Grab a line int iLine = GrabLine(-1); // Open the session OpenSession(iLine, chAudioPayload, chVideoPayload, iAudioRTPChannel, iAudioRTCPChannel, iVideoRTPChannel, iVideoRTCPChannel, true); // Send an acknowledgement message to the callee Callee // Upon receiption of the acknowledgement message from caller // Grab a line // Open the session End call // Send end call message // Close the session CloseSession(iLine, chAudioPayload, chVideoPayload); // Release the line ReleaseLine(iLine);
  • 20. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Send DTMF Sending DTMF tones is required for PBX calls and Touch Tone services. AnyBandwidth Engine SDK implements RFC 2833 with RTP payload type 101. In addition, DTMF using SIP INFO or in-band can be used (please see DTMFMode in Properties section for additional details). To send DTMF tones: Windows: SipCommCtl.SendDTMF(5); Android: JNIWrapper.SipCommSendDTMF(5); iOS: commCtrl->sipComm->SendDTMF(“5”); The digit “5” is sent as a DTMF signal.
  • 21. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 3.3. ABE: Handling Event Notifications Handling Event Notifications The applications send several event notifications to the application running on AnyBandwidth Engine SDK. The application needs to handle these events as necessary. For example, SIP control will send event notifications such as: Video size change at the remote end Windows: <SCRIPT language=JScript for= SipCommCtl event= OnVideoSizeChange(v)> return SipCommCtl_OnVideoSizeChange(v) </SCRIPT> function SipCommCtl_ OnVideoSizeChange(v) { var aInfo = v.toArray(); var nWidth = aInfo[1]; var nHeight = aInfo[2]; } Android: void OnVideoSizeChange(long hWnd, int iWidth, int iHeight) { //Handle event } iOS: void OnVideoSizeChange(long hWnd, int iWidth, int iHeight) { //Handle event }
  • 22. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 3.4. ABE: Properties Properties AudioCodecs This sets or retrieves preferred audio codecs. Currently, Polycom® Siren™ (G722.1C, 24kHz, 48kHz), GSM, G.711 (A-law, µ-law), G.729 Annex A, iLBC, and Speex codecs are supported. On Android and iOS G.711, G729 and Speex (wideband) are supported. Codecs are described with space-delimited strings. This value can be changed during a call. The following codec strings are supported: “SIREN24”, “SIREN48”, “SPEEX”, “SPEEX-WB”, “ILBC”, “GSM”, “PCMU”, “PCMA”, and “G729”. When acting as conference host, it is possible to add conference participants thus supporting different codecs in a single conference. This is useful when adding participants from PSTN gateways which usually only support a small selection of codecs. DTMFMode This sets or retrieves whether the SendDTMF method sends DTMF using the RTP payload (0), SIP INFO method (1), or inband DTMF (2). The default value is 0. In-band DTMF is designed to work only with high bit rate codecs, such as G711 and G722. For low bit rate codecs such as G729, RTP payload or SIP INFO should be used instead of inband. EnableAGC
  • 23. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. This sets or retrieves whether or not Auto Gain Control (AGC) is used for the microphone input signal. This is a Boolean variable and its default value is false. This value can be changed during a call. EnableDenoise This sets or retrieves whether or not noise is removed from the microphone input signal. This is a Boolean value and its default value is true. This value can be changed during a call. This property should be enabled for better echo cancellation. EnableEchoCancellation This sets or retrieves whether or not echo cancellation is enabled. This is a Boolean property and its default value is true. This value can be changed during a call. For better echo cancellation, EnableDenoise property must be set to true. EnableIceSupport This sets or retrieves whether or not ICE candidates are used in invite for firewall traversal. ICE stands for Interactive Connectivity Establishment. This is a Boolean property and its default value is true. EnableRelaySupport This sets or retrieves whether or not relayed candidates are used in invite for firewall traversal. AnyBandwidth Engine SDK will use a TURN server to obtain these candidates. This is a Boolean property and its default value is true. EnableSrtp This enables or disables Secure RTP one-to-one calls. This property does not support conferencing. This is a Boolean variable and its default value is false. It can only be set before making a call. The caller has
  • 24. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. to enable SRTP, but the callee must support SRTP as well for the call to be secure, although it does not need to call this property. EnableStunSupport This sets or retrieves whether or not server reflexive candidates are used in invite for firewall traversal. AnyBandwidth Engine SDK will use a STUN server to obtain these candidates. This is a Boolean property and its default value is true. HoldLine This holds or un-holds SelectedLine, or retrieves whether or not SelectedLine is being held. The default value of this Boolean property is false. ImageSize This sets the image size to be captured, or retrieves the captured image size as an integer. The default value is 0. This property can be set at any time. OnVideoSizeChange event is fired when the image size is changed. The possible values are: Windows: 0: Small image size (176 x 144, or 192 x 144, if supported by the device) 1: Medium image size (352 x 288, or 320 x 240, if supported by the device) 2:
  • 25. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Large image size (640 x 480 if supported by the device) 3: 720p (HD) image size (1280 x 720 if supported by the device) Android: 0: Small image size (176 x 144) 2: Medium image size (320 x 240) 3: Large image size (352 x 288) 5: VGA image size (640 x 480) iOS: 1: Small image size (192 x 144) 2: Medium image size (320 x 240) 5: VGA image size (352 x 288)
  • 26. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. LineVolume This sets or retrieves the volume of a SelectedLine. The value ranges from 1 (silence) to 100 (full volume). The default value of this property is 100. MuteReceiver This mutes or un-mutes inbound audio on SelectedLine, or retrieves whether or not inbound audio on SelectedLine is muted. The default value of this Boolean property is false. MuteSender This mutes or un-mutes outbound audio, or retrieves whether or not outbound audio is muted. The default value of this Boolean property is false. PauseReceiver This pauses or un-pauses inbound video on SelectedLine, or retrieves whether or not inbound video on SelectedLine is paused. The default value of this Boolean property is false. PauseSender This pauses or un-pauses outbound video, or retrieves whether or not outbound video is paused. The default value of this Boolean property is false. SelectedLine This sets a line to be selected or retrieves a line that is currently being selected as an integer. Some properties and methods perform operations on the line specified by SelectedLine.
  • 27. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. VideoCodecs This sets or retrieves preferred video codecs. Currently, EyeStream, H.263, and H264 codecs are supported. On Android and iOS only H264 is supported. Codecs are described with space-delimited strings. This value can be changed while in a call. The possible parameters are: “Eyestream”, “H263”, “H263-1998” (H263+), and “H264”. When attempting an audio/video call to a client that does not support the codecs selected in AnyBandwidth Engine SDK, the call will be completed as an audio only call. In a conference, only one codec is supported. It is not possible to add participants that do not support the video codec used by the existing conference participants.
  • 28. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 3.5. ABE: Methods Methods AttachVideoWindow(nLine, nWnd) This attaches a given video window to display video. nLine: This is the line indicating a call for video source. If nLine is -1, window is used to display the preview video for the current user. nWnd: This is the window handle of the video window. iOS: AttachVideoWindow(int iLine, void *pWnd) pWnd: Reference to an UIView for camera preview surface, and to an UIImageView for remote video surface. This is not applicable to Android environment. AttachVideoWindowEx(nLine, nIndex, nWnd) This attaches a given video window to the display video received from the specified line. A separate instance of VideoWindowCtl is needed to display each video window. nLine:
  • 29. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. This is the line indicating a call for video source. If nLine is -1, window is used to display the preview video for the current user. nIndex: This is the user index in the conference. It is 0 if not in a conference. nWnd: This is the window handle of the video window. This is returned by the GetVideoWindow method of VideoWindowCtl. This is not applicable to Android or iOS environments. AudioInit(activity) This initializes the audio manager. activity: An object of the Activity class Please check the sample application code. This is applicable to the Android environment only. CloseSession(nLine, chAudioPayload, chVideoPayload) Closes audio, video in a session. nLine: The line chAudioPayload: Audio payload type in character format chVideoPayload:
  • 30. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Video payload type in character format GetAudioReceiverStat() This returns audio receiver statistics of the currently selected line as a VB array of eight elements on Windows, array of string on Android, and vector of string on iOS. Element Description Element 1 (Codec, String): Audio codec Element 2 (Bit rate, Float): Audio receiving bit rate Element 3 (Buffer size, Integer): Audio receive buffer size in ms Element 4 (Audio resynchronization count, Integer): Number of times the audio receive buffer is reset and re- synchronized Element 5 (Packets received, Integer): Number of packets received Element 6 (Packets lost, Integer): Number of packets lost Element 7 (Packets late, Integer): Number of late packets Element 8 (Loss rate, Float): Packet loss rate GetAFEngine(void **pAFEngine) Get reference of the instance of the AnyFirewallEngine used in the SIP component. This AnyFirewallEngine instance is created and destroyed in the component itself. pAFEngine: Reference to CAnyFirewallEngine. GetAudioSenderStat() This returns audio sender statistics of the currently selected line as a VB array of three elements on windows, array of string on Android and vector of string on iOS. Element Description Element 1 (Codec, String): Audio codec Element 2 (Bit rate, Float): Audio receiving bit rate Element 3 (Packets sent, Integer): Number of packets sent
  • 31. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. GetFirewallStatus(nLine) This returns the status of the firewall traversal on the call line specified by nLine. Possible values: “Unknown”: Firewall traversal status is unknown “Peer-to-peer”: Firewall traversal succeeded and call completed peer-to-peer “UDP Relay”: Firewall traversal succeeded and call completed using UDP relay “TCP Relay”: Firewall traversal succeeded and call completed using TCP relay “HTTP Relay”: Firewall traversal succeeded and call completed using HTTP relay “Fail”: Firewall traversal failed nLine: The line indicating a call GetVideoReceiverStat() This returns video receiver statistics of the currently selected line (see SipCommCtl.SelectedLine) as a VB array of eight elements. Element Description
  • 32. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Element 1 (Codec, String): Video codec Element 2 (Bit rate, Float): Video receiving bit rate Element 3 (Frame rate, Float): Video receiver frame rate Element 4 ((Frames received, Integer): Number of frames received Element 5 (Packets received, Integer): Number of packets received Element 6 (Packets lost, Integer): Number of packets lost Element 7 (Loss rate, Float): Packet loss rate Element 8 (Frames lost, Float): Number of frames lost GetVideoSenderStat() This returns the video sender statistics of the currently selected line (see SipCommCtl.SelectedLine) as a VB array of eight elements. Element Description Element 1 (Codec, String): Video codec Element 2 (Bit rate, Float): Video sending bit bit rate Element 3 (Frame rate, Float): Video sending bit frame rate Element 4 ((Frames sent, Integer): Number of frames sent Element 5 (Frames dropped, Integer): Number of frames dropped Element 6 (Packets sent, Integer): Number of packets sent Element 7 (Frames lost, Float): Number of packets not received by remote user Element 8 (Packets rate, Float): Packet loss rate GrabLine(nLineToGrab) This reserves a line to make a call. There can only be one line being reserved at a time. A reserved line is released once ReleaseLine is called. If there is an error reserving the line, -1 is returned; otherwise, the line being reserved is returned as an integer. nLineToGrab: Specifies a line to be reserved. If this is –1, the control will choose a line that is not in use and return that line as Integer. iOS: GrabLine(nLineToGrab, *nLineGrabbed)
  • 33. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. OpenSession(nLine, chAudioPayload, chVideoPayload, nAudioRTPChannel, nAudioRTCPChannel, nVideoRTPChannel, nVideoRTCPChannel, bool bCaller) Open audio video in a session. nLine: The line chAudioPayload: Audio payload type in character format chVideoPayload: Video payload type in character format nAudioRTPChannel: Audio RTP channel nAudioRTCPChannel: Audio RTCP channel nVideoRTPChannel: Video RTP channel nVideoRTCPChannel: Video RTCP channel bCaller: true if caller, false if callee chVideoPayload should be set to 127 if there isn’t to be video.
  • 34. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. ReleaseLine(nLine) This un-reserves the line nLine which was grabbed by the method GrabLine. nLine: The line to be released. ResetAudioReceiverStat() This resets the audio receiver statistics. ResetAudioSenderStat() This resets the audio sender statistics. ResetVideoReceiverStat() This resets the video receiver statistics. ResetVideoSenderStat() This resets the video sender statistics. SendDTMF(sKey) This sends the DTMF message corresponding to a specified key to the current call (specified by current value of SelectedLine). If no call is established at SelectedLine, nothing is sent.
  • 35. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. The DTMF mode can be selected using the property DTMFMode. sKey: A valid key specifying a DTMF to be sent SetNATTraversalServer(nServerType, bstrAddr, nPort, bDone) This function initializes the underlying AnyFirewall Engine by setting the necessary servers for performing firewall traversal. nServerType: An enum indicating the type of server to be set bstrAddr: IP address of the server nPort: Port of the server bDone: This is false if more servers remain to be set, and True if this is the final server to be set. Firewall detection will start after all servers have been set.
  • 36. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Server Type Description eServerSRV The DNS SRV domain name that is used to locate the STUN, TURN and STUN-Relay/TURN servers. The port parameter for the server type is ignored. The following DNS SRV queries will be made: _stun._udp.<srvdomain>STUN server (UDP) _stun._tcp.<srvdomain>STUN server (TCP) _turn._udp.<srvdomain>STUN-Relay/TURN server (UDP) _turn._tc alive p.<srvdomain>STUN-Relay/TURN server (TCP) eServerHttpProxy The HTTP Proxy server, for users using a proxy server eServerStunUdp* The UDP STUN server eServerStunTcp* The TCP STUN server eServerStunRelayUdp* The UDP STUN-Relay/TURN server eServerStunRelayTcp* The TCP STUN-Relay/TURN server *These parameters will be used if eServerSRV is not set or the DNS SRV lookup fails. SetSipEventHandler(sipEventHandler) This sets the event handler for handing events from the SipComm control. This must implement the SipEventHandler interface. The SipEventHandler is an object which implements SipEventHandler. Please check the sample application code. This is applicable to the Android environment only. SetTURNUsernamePassword (sUsername, sPassword) This sets the authentication information for the TURN server. sUsername: Username of the TURN server
  • 37. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. sPassword: Password of the TURN server This function should be called before bDone is set to true in SetNATTraversalServer. SipCommInit This initializes the SipComm control. This is applicable to the Android environment only.
  • 38. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 3.6. ABE: Notification Events Notification Events OnFirewallStatusChange(aFirewallInfo) This fires when the firewall status changes. aFirewallInfo is a VB-array containing following elements: Element Description Element 1 (Line, Integer): Line associated with the call Element 2 (Display Name, String): Displays the name of the remote user in the call Element 3 (Target URI, String): URI of the remote user in the call Element 4 (Video call flag, Boolean): True if it is a video/audio call or false if it is an audio only call
  • 39. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Element 5 (Status, String): 1. Firewall status is shown as one of the following strings: "Firewall type: Unknown", "Firewall type: None", "Firewall type: NAT", "Firewall type: TCP only", "Firewall type: Proxy" or "Firewall type: Blocked" when SDK detects the firewall type. The Line will be -1 at that time. 2. The following strings will show the status of a call: “Trying”: Trying to traverse the firewall. “Success”: Firewall traversal succeeded “Fail”: Firewall traversal failed “ICE check successfully completed”: Firewall traversal succeeded using ICE. “Peer-to-peer”: Firewall traversal succeeded and call completed peer- to-peer. “UDP Relay”: Firewall traversal succeeded and call completed using UDP relay. “TCP Relay”: Firewall traversal succeeded and call completed using TCP relay. “HTTP Relay”: Firewall traversal succeeded and call completed using HTTP relay. “Relay error”: Firewall traversal failed to use relay. OnVideoSizeChange(aSizeChangeInfo)
  • 40. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. This is fired when ImageSize property is set to change the image size to be captured and when capture video size is changed on the remote end. aSizeChangeInfo is a VB-array containing the following elements: Element Description Element 1 (Window handle, Integer): Window handle of the video container that has size changed (N/A on iOS) Element 2 (Width, Integer): Width of the video after size change Element 3 (Height, Integer): Height of the video after size change Android and iOS: Element 1 is ignored.
  • 41. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 3.7. ABE: Error Handling Error Handling Windows SipCommCtl returns the error code 0x80004005 (in hexadecimal format) as well as error descriptions for all errors. These errors are thrown as exceptions in JScript. The following sample code shows how to handle these errors in JScript: try { SipCommCtl.GrabLine(-1); } catch(e) { alert(“Error description:” + e.description); } Android SipCommOnError(String sError) event is fired. iOS OnError(const string &sError) event is fired.
  • 42. Copyright © 2002-2015 Eyeball Networks Inc. Patented and patents pending. All rights reserved. 4. ABE: Legal and Contact Information Legal and Contact Information Copyright © 2002-2013 Eyeball Networks Inc. Patented and patents pending. All rights reserved. Confidential Information: This document contains confidential and proprietary information. The document has been provided to you in your capacity as a customer or evaluator of Eyeball Networks Inc.'s products. Unauthorized reproduction and distribution is prohibited unless specifically approved by Eyeball Networks Inc. Eyeball, Eyeball.com, its logos, AnyBandwidth™ and AnyFirewall™ are trademarks of Eyeball Networks Inc. All other referenced companies and product names may or may not be trademarks of their respective owners. For more information visit Eyeball Networks Inc. at http://www.eyeball.com. Department E-mail Sales sales@eyeball.com Technical Support techsupport@eyeball.com Corporate Headquarters: 730 - 1201 West Pender Street Vancouver, BC V6E 2V2 Canada Tel. +1 604.921.5993 Fax +1 604.921.5909