US20130070759A1 - INSTANT INTERNET BROWSER BASED VoIP SYSTEM - Google Patents
INSTANT INTERNET BROWSER BASED VoIP SYSTEM Download PDFInfo
- Publication number
- US20130070759A1 US20130070759A1 US13/674,842 US201213674842A US2013070759A1 US 20130070759 A1 US20130070759 A1 US 20130070759A1 US 201213674842 A US201213674842 A US 201213674842A US 2013070759 A1 US2013070759 A1 US 2013070759A1
- Authority
- US
- United States
- Prior art keywords
- voip
- applet
- audio
- java
- peer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
- H04L65/402—Support for services or applications wherein the services involve a main real-time session and one or more additional parallel non-real time sessions, e.g. downloading a file in a parallel FTP session, initiating an email or combinational services
- H04L65/4025—Support for services or applications wherein the services involve a main real-time session and one or more additional parallel non-real time sessions, e.g. downloading a file in a parallel FTP session, initiating an email or combinational services where none of the additional parallel sessions is real time or time sensitive, e.g. downloading a file in a parallel FTP session, initiating an email or combinational services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/029—Firewall traversal, e.g. tunnelling or, creating pinholes
Definitions
- VoIP Voice over Internet protocol technology
- PSTN public switch telephony network technology
- PCs personal computers
- VoIP systems require the installation and configuration of proprietary hardware or software or both. The hardware and software are operating system dependent and require operating system knowledge to install.
- Current systems require the caller and called party to register with the same VoIP service first and then to authorize each other to be contacted online through the VoIP service before they can even place a VoIP call.
- Instant browser-based VoIP is a desirable feature and there have been previous attempts to create various systems and methods of use.
- One approach is to provide the user with a web user interface where a user can key in two phone numbers. These numbers are then sent via the Internet to the call server and the call server calls these two numbers using a least cost routing technology.
- This approach is therefore not a browser based VoIP method but is rather web activated calling and comes with several disadvantages. Users must have an Internet connection and access to two phones and two PSTN lines for one call. Each conversation requires two PSTN connections from the call server to the VoIP/PSTN gateways and a VoIP connection between the gateways. That not only adds up the noise, latency and distortion but it simply requires two paid PSTN calls. Free calling that is often associated with VoIP is not possible with this approach.
- VoIP clients Another approach is to use various technology, such as Abobe Air and Flex technology, to build temporary VoIP clients. These involve a click-to-call (C2Call) user experience, since it can start in a browser window, provided the very latest flash live video (FLV) player software, such as Adobe Flash Player version 9, is installed and the user can access Active-X controls.
- FLV flash live video
- These VoIP clients can be created with a development kit, such as an Adobe CS3 Development Kit, and use the audio track of a FLV or flash video format and transmission control protocol (TCP) streaming that works only with a proprietary and not an open source codec, such as the Nellymoser Asao codec, so there is no choice of a license-free codec.
- TCP transmission control protocol
- a second problem is that any voice communication must be streamed through a flash media server, where it is then not possible to establish a peer-to-peer connection. All voice traffic must go through the flash media player server, which demands huge Internet bandwidth and a server farm for a larger deployment. Not having peer-to-peer capabilities further reduces the voice quality and does not provide the best possible Internet connection between the two peers, since both parties must connect to the media server for the call. This forced routing through defined servers also adds latency and reduces connection quality.
- the present invention generally relates to an instant Internet browser based VoIP system. More specifically, the invention is a system and method that can establish spontaneous, instant and entirely browser-based peer-to-peer VoIP on all operating systems, Web browsers and devices in the form of a temporary VoIP client.
- the present invention is directed to an instant Internet browser based VoIP system with a VoIP client in the form of temporary VoIP applets that can start in a Web browser and can establish an instant peer-to-peer connection with another web-based or hardware embedded/installed VoIP client using session initiation protocol (SIP) and real-time transport protocol (RTP) audio streaming.
- SIP session initiation protocol
- RTP real-time transport protocol
- the applet is a small file that is easily loaded onto a user's browser and uses application program interfaces (APIs) that require no additional libraries.
- APIs application program interfaces
- the applet is written in JAVA, although other programming languages may also be used to write the applet.
- Another aspect of the invention is the integration of several speech codecs in the VoIP applet audio core such as GSM 610, Speex, G 723.1 and iLBC directly addressing the operating system's audio engine.
- Another aspect of the invention is the implementation of a RTP streaming protocol in the temporary VoIP applet using circular buffers in the user datagram protocol (UDP) environment and the implementation of a firewall strategy that works in any operating system and standard cable modem and Internet router environment with firewalls and network address translation (NAT) support.
- UDP user datagram protocol
- NAT network address translation
- VoIP applet auto senses the hardware and software environment of the device it's deployed on and automatically configures the device's audio settings to support the VoIP connection, thus eliminating the need for the user to manually configure the device he is using.
- Another aspect of the invention is an Ajax based widget that supports all popular browsers and has full access to the VoIP applet functions.
- Another aspect of the invention is the integration of the VoIP applet in a SIP server environment.
- Another aspect of the invention is that the user can log-in to free VoIP websites, such as FriendCaller, to start the VoIP applet and get instant access to the user interface in the form of a web-phone. Once the user has started the applet, he is able to see the online status of his contacts. He then can instantly call any of the contacts that are online.
- free VoIP websites such as FriendCaller
- HTTP URLs can be used to notify a communication request from one user to another user.
- a user can start the VoIP applet by clicking on a link in the form of a HTTP URL or a graphical element like a web banner attached with a HTTP URL. Links and banners can then bee-mailed, posted in an instant message (IM), sent via a short message service (SMS) text or integrated into various websites.
- IM instant message
- SMS short message service
- Another aspect of the invention is to add contacts to the user's contact list by sending “invitation” e-mails with embedded links to a recipient from a free VoIP website.
- the recipients can then start the VoIP applet by opening the link in their browser. Through the opening of the link, the recipient declares his acceptance to be added to the sender contact list.
- the recipient of a link does not have to register with the free VoIP website and does not have to install any software before using the VoIP applet.
- the link provides the system with the required information to display the name of the sender and recipient in each web-phone user interface, thus providing caller-10 functionality.
- Another aspect of the invention is that a user can register with a free VoIP website and generate personalized links that can be emailed, placed on websites, blogs or a social networking site. Any recipient of the link or visitor of a website can start the VoIP applet by opening the link and calling the sender or owner anonymously.
- a useful feature of the invention is that a call generated through any such link can be terminated into the PSTN network.
- Another aspect of the invention is that it can easily be integrated in any website that requires a login and has a contact list. It allows such websites to offer its users the instant voice feature through a single log-in to the website without additional registration on a free VoIP website or to install any needed software. Examples of such websites are social networking sites that very recently have started to integrate browser based text-chat and instant messaging (1M).
- the method can be transferred to other platforms like those in smart cell phones, such as an iPhone, that do not supporting the JAVA programming of the VoIP applet.
- Such an embodiment is demonstrated but not limited to the FriendCaller free VoIP for the iPhone and the iPod touch pad application that can be installed on the iPhone and iPod touch pad.
- VoIP applet can operate in several browser windows on the same device.
- FIG. 1 illustrates a block diagram of an instant Internet browser based VoIP system with a VoIP client embedded in a Web browser environment, in accordance with one embodiment of the present invention.
- FIG. 2 illustrates a block diagram of a VoIP client and its components, in accordance with one embodiment of the present invention.
- FIG. 3 illustrates a flow chart of a client-server architecture of a Web-based VoIP service, in accordance with one embodiment of the present invention.
- FIG. 4 illustrates a flow chart for a caller to callee VoIP call firewall strategy, in accordance with one embodiment of the present invention.
- FIG. 5 illustrates a flow chart for RTP streaming using circular buffers, in accordance with one embodiment of the present invention.
- FIG. 6 illustrates a flow chart for method of RTP streaming using circular buffers for a VoIP client embedded in a Web browser to implement a peer to peer VoIP call based on a SIP environment, in accordance with one embodiment of the present invention.
- FIG. 1 illustrates a block diagram of an instant Internet browser based
- the Web browser 30 can be any Web browser known to those schooled in the art that can support the VoIP client 20 .
- the VoIP client 20 can also be written in any programming language that can perform the functions of the VoIP client 20 , although JAVA is the programming language that best performs the functions of the VoIP client 20 .
- the plug-in 40 used with the instant Internet browser based VoIP system 10 is a JAVA Virtual Machine or JAVA VM plug-in, although other plug-ins that are well known in the art can also be used that can support the functions of instant Internet browser based VoIP system 10 .
- FIG. 2 illustrates a block diagram of a VoIP client 20 of the instant Internet browser based VoIP system 10 and its components, in accordance with one embodiment of the present invention.
- the main component of the VoIP client 20 is a C2Call applet 50 , which is written in JAVA script or any other programming script language that is well known in the art that can perform the functions of the VoIP client 20 .
- the VoIP client 20 uses only low level APIs to implement the VoIP service and therefore, all required components have to be implemented as part of the VoIP client 20 .
- the required environment on the Internet device is a JAVA enabled Web browser 30 based on a JAVA runtime environment of 1.5 or later version with audio hardware that includes a speaker and a microphone (not shown), although other environments that are well known in the art can also be used that can perform the functions of the VoIP client 20 .
- the VoIP client 20 has to fulfill several criteria. First the C2Call applet 50 must be as small as possible to reduce the required loading time and a codec with excellent voice quality directly addressing the operating system's audio engine (not shown) should also be implemented.
- a rich text format (RTF) streaming protocol must also be defined that can work in the user datagram protocol (UDP) environment 60 where voice data packets may arrive out of order, be duplicated or go missing without notice.
- Auto sensing is also required to detect the system's audio settings and correct them to allow a convincing user experience even for an inexperienced user.
- Creating an asynchronous JAVA script XML (Ajax) based widget (not shown) that supports all popular browsers and the implementation of the VoIP applet 50 in a carrier class SIP server environment 70 is also an important criteria.
- the VoIP client 20 provides the following functionality and components to implement the VoIP service.
- the C2Call client API 80 handles contact lists, call history and client authentication involved with the VoIP client 20 .
- the register/presence handler 90 and the VoIP client 20 connect to the SIP proxy ( FIG. 3 , 190 ) based on a regular register request, submits its presence information and retrieves presence information from any related contacts.
- the VoIP command API 100 is an API that provides an easy to use interface to initiate, take and terminate calls.
- the VoIP command API 100 can be accessed via JavaScript from the HTML page.
- the VoIP notifier 110 is a notifier service that informs the Web browser/HTML page 30 on call and during presence events. It notifies incoming calls, online status information and any change of presence status of related contacts.
- the audio handler 120 detects audio hardware, provides audio setting dialogs and manages the initialization of the audio hardware for the call.
- the audio handler 120 also sends audio data to the network and retrieves audio data from the network.
- the audio handler 120 uses JAVA sound to implement the audio playback and recording functions.
- the encoder and decoder 130 manage the audio encoding and decoding process by using different built-in codecs (not shown). Implementation of a codec (not shown) with excellent voice quality directly addressing the operating system's JAVA audio engine is also required.
- the SIP protocol stack and the implementation of the SIP 70 are based on a Jain SIP implementation, although other SIP implementations that are well known in the art that can carry out the functions of the VoIP client 20 can also be used.
- the RTP session handler 140 implements the RTP audio output stream 150 , the RTP audio input stream 160 and also implements any firewall strategies.
- the firewall strategies must be put in place that works on any operating system and in standard cable modem and Internet router environments with firewalls and network address translation (NAT).
- An additional plurality of codecs 170 which include the GSM 610, Speex, G 723.1, iLBC, G 7.11 ulaw and alaw codecs are also incorporated into the VoIP client 20 .
- FIG. 3 illustrates a diagram of a client-server architecture of a Web-based VoIP service, in accordance with one embodiment of the present invention.
- the VoIP applet 50 plugged into the Web browser 30 is connected to the VoIP service components on the server side.
- the main Web server 175 components are mainly divided into the application server 180 , which manages contacts and relationships between users of the services, provides all Web forms and the call link management.
- the SIP proxy 190 implements a session initiation protocol proxy and handles presence information.
- the RTP relay 200 has a media server and serves as a gateway into any PSTN networks and is used when peer-to-peer communication cannot be achieved.
- the postfix mail transfer agent (MTA) 210 handles the email transfer for call links, invite emails and registration “call me link” 212 confirmations to a plurality of Web browsers, such as Internet Explorer, Firefox, Safari, Opera and Crome and can include an iPhone and an iPod Touch Pad 215 .
- the VoIP client 20 is embedded in a Web browser 30 to implement a peer-to-peer VoIP, based on a SIP protocol 70 and RTP audio streaming.
- the VoIP applet 50 is a temporary JAVA applet that can be plugged into a website as a soft phone to make phone calls based on the SIP protocol 70 .
- the VoIP applet 50 has a very small footprint and is a small file that uses only JAVA APIs that are included in standard JAVA Virtual Machine 1 . 5 . No additional libraries like a JAVA media framework (JMF) or any other framework known to those schooled in the art are required for the VoIP applet 50 to work.
- JMF JAVA media framework
- the VoIP applet 50 implements the SIP protocol based on a Jain SIP API V1.2, although other SIP APIs that are capable of performing the functions of the VoIP client 20 that are well known in the art can also be used.
- the JAVA VoIP applet 50 achieves excellent audio quality, reliable call set-up behind firewalls and is small in applet size through running multiple VoIP JAVA applet instances in multiple browser windows.
- the VoIP applet 50 also records and plays back high quality voice in JAVA sound, implements advanced firewall strategies, integrates low bandwidth speech codecs and utilizes a method of RTP streaming using circular buffers, further described in the FIG. 5 description.
- While running multiple VoIP applet instances in multiple browser windows is an important aspect of running a VoIP client 20 , a user can also open the same website in multiple browser windows. Therefore, unlike installed native VoIP clients, the browser based VoIP client 20 can be started multiple times. This additional complexity must be handled correctly in order to avoid conflicts in call signaling or audio handling and to avoid multiple registrations from the same host.
- Starting a JAVA applet in a Web browser will launch a separate JAVA Virtual Machine specifically for that JAVA applet. In case the same JAVA applet will be launched in multiple browser windows from the same site (URL), a new instance of the JAVA applet will be launched in the same JAVA Virtual Machine instance.
- VoIP JAVA applet 50 This specific behavior has been used to ensure, that only one VoIP JAVA applet 50 is active at the same time if multiple instances have been launched.
- the actual VoIP core (not shown) will be launched only once per JAVA Virtual Machine instance.
- the VoIP core is encapsulated in a VoIP core object (not shown), which is available as a static variable within the JAVA Virtual Machine.
- a VoIP core object (not shown), which is available as a static variable within the JAVA Virtual Machine.
- the activity status between the multiple applet browser windows is handled according to standard JAVA applet behavior. If a browser window gets the focus, the applet “start” function will be called and the formerly active JAVA applet will receive a “stop” function. In case of a stop, the VoIP applet 50 removes it's activity status from the VoIP core, while in case of a “start”, the VoIP applet 50 will set its activity status within the VoIP core. Only the last active VoIP applet 50 will receive any notifications like an incoming call, from the VoIP core. Therefore, only the active VoIP applet 50 will take over the managing role. This method ensures, that in case of multiple open pages of the VoIP website, only the last active page has control over the VoIP connection.
- the JAVA VoIP applet 50 records and plays back voice in JAVA sound with high audio quality with any VoIP applications transmitting voice data over the Internet, which have been recorded by a microphone.
- the voice data will be separated into packets and streamed to the destination via RTP.
- the voice data needs to be encoded into 8000 Hz voice data, using an uncompressing or compressing speech codec.
- JAVA sound allows to directly retrieve the audio data in the required sample rate from the capture device.
- the audio quality is poor, therefore, for implementation of high quality audio streaming, the audio data will be retrieved in a sample rate of 44100 Hz and will be transcoded into 8000 Hz, by a sample rate converter, before streaming the audio data to the remote client.
- FIG. 4 illustrates a diagram of a caller 240 to callee 250 VoIP call firewall strategy, in accordance with one embodiment of the present invention.
- the call initialization is a critical part, as the calling parties' systems are usually operating behind firewalls and routers 230 using NAT. That makes it challenging to establish an audio connection between the caller 240 and the callee 250 , since they cannot be directly addressed because their public “official” IP address and their local network IP address behind the firewall/routers 230 are not identical. Ensuring VoIP connectivity often proves challenging because of the number and variety of NAT firewalls 230 that might exist between the users.
- This firewall strategy solves this conflict by using the controlled relay 200 only during a short call set-up period to establish a reliable peer-to-peer connection.
- the IP addresses and NAT characteristic of the relay router 200 are known and can be used to apply the firewall strategy 300 to determine what type of NAT firewalls 230 exist between VoIP clients 20 and to determine a set of IP addresses by which VoIP clients 20 can establish contact.
- the network topology in which the VoIP clients 20 operate and the various sets of network addresses by which these devices can communicate is determined. Once both VoIP clients 20 confirm a possible peer-to-peer connection, they will drop the relay connection and continue to communicate peer-to-peer. All this happens unnoticed by the callers, since there are no delays or dropouts.
- G 7.11 ulaw and alaw speech codecs 260 in addition to the JAVA sound system requires a bandwidth of 64 kBiVs in each direction. This bandwidth requirement is too high for low bandwidth conditions typical for Internet connections available to consumers and therefore the JAVA VoIP applet 50 needs to integrate additional compressing codecs to support voice communication in low bandwidth environments. Therefore additional GSM 610, Speex, G 723.1 and iLBC codecs 270 have been ported to JAVA and have been integrated into the VoIP core to perform the compression.
- FIG. 5 illustrates a diagram of RTP streaming using circular buffers, in accordance with one embodiment of the present invention.
- Sending and receiving voice packets in a 20 ms interval will create a significant load in a VoIP applet 50 .
- a VoIP applet 50 is a relatively small component embedded within a website, which shouldn't take the majority of CPU resources. Therefore a VoIP applet 50 will run at low priority when embedded in a website.
- One of the time consuming tasks of the VoIP applet 50 is buffering the incoming data packets and reordering and forwarding the data to the audio hardware (not shown). In order to manage this task usage with a minimal amount of CPU resources, a specific circular buffer 370 has been developed.
- the design of the circular buffer 370 minimizes the numbers of memory copy operations, reduces or eliminates efforts for reordering packets and reduces or eliminates the need for synchronization and locks.
- the RTP streaming using the specific circular buffers 370 has several advantages. Incoming RTP packets 380 from the network will be placed in the buffer 370 , while the playback audio entity (not shown) is reading the audio packets 382 from the buffer 370 at the same time. Usually if two independent threads are accessing a given buffer, synchronization and a locking mechanism are required in order to avoid conflicts.
- Each bucket 400 holds 1 RTP audio packet 382 , with each incoming RTP packet 380 being assigned to a bucket 400 based on its sequence number 410 , according to the following formula:
- bucket_number sequence_number modulo number_of_buckets 410
- the incoming packets 380 will be assigned to their bucket 400 according to the formula above and will be automatically ordered at no costs.
- a bucket 400 is not empty, the incoming packet 380 will be dropped.
- the playback or reading thread 390 will read the incoming RTP packets 380 , bucket 400 by bucket 400 , starting with the bucket 400 of the first packet 380 received. If an incoming packet 380 has an older time stamp then the latest read audio packet 382 , then the incoming packet 380 will be dropped.
- the network thread 420 will write audio packets 382 into the buckets 400 and will add the packet size to the total buffer size.
- the playback thread 390 will read audio packets 382 bucket 400 by bucket 400 , by incrementing a read index (not shown) based on the following formula:
- read index read index modulo number of buckets
- the read index will be incremented and the next bucket 400 will be read.
- the total buffer size will be reduced by the packet size and the bucket 400 will be set to null. If the total buffer size is 0, the playback thread 390 will wait until data is available. Based on this, no synchronization is required as simple integer operations don't need to be synchronized. Due to the mapping of bucket numbers (not shown) to RTP sequence numbers 410 , the packet 380 will be automatically arranged in the correct order. If packets 380 are coming in late, they'll be simply dropped. Since only references to RTP packets 380 are handed over from the network interface to the audio handler, the amount of memory copy gets minimized.
- call-links or standard HTTP URLs sent from a caller 240 to a callee 250 , in order to notify a communication request to allow for implementing the VoIP client 20 in a web page, bring a new user experience to the interactive voice communication.
- a call link will be sent via email to the targeted user. This user receives the email with an embedded unique call link. When the user clicks on the link, the VoIP page opens and establishes the call to the originator of the email.
- a user can also add contacts to their contact list by sending “invitation” emails with embedded links to a recipient from a free VoIP website.
- the recipients can then start the VoIP applet 50 by opening the link in their browser. Through the opening of the link, the recipient declares his acceptance to be added to the sender contact list.
- the recipient of a link does not have to register with the free VoIP website and does not have to install any software before using the VoIP applet 50 .
- the link provides the system with the required information to display the name of the sender and recipient in each web-phone user interface, thus providing Caller-1 D functionality.
- a user can also register with a free VoIP website and generate personalized links that can be emailed, placed on websites, blogs or a social networking site. Any recipient of the link or visitor of a website can start the VoIP applet 50 by opening the link and calling the sender or owner anonymously.
- a useful feature of the VoIP client 20 is that a call generated through any such link can be terminated into the PSTN network.
- the instant Internet browser based VoIP system 10 can also easily be integrated in any website that requires a login and has a contact list. It allows such websites to offer its users the instant voice feature through a single log-in to the website without additional registration on a free VoIP website or to install software. Examples of such websites are social networking sites that very recently have started to integrate browser based text-chat and instant messaging (1M). FIG. 5 .
- FIG. 6 illustrates a flow chart for method 600 of RTP streaming using circular buffers for a VoIP client embedded in a Web browser to implement a peer to peer VoIP call based on a SIP environment, in accordance with one embodiment of the present invention.
- the method 600 includes the steps of placing a plurality of incoming packets from said RTP streaming in said buffer while a plurality of audio packets are read concurrently while in a plurality of buckets in said buffer 610 , holding one said audio packet in one said bucket from said RTP streaming, while each said incoming packet is assigned to a said bucket 620 , having a playback thread reading said incoming packets said bucket by said bucket by incrementing a read index to arrange said incoming packets into said buckets in a correct sequential order 630 and having a network thread writing said audio packets into said buckets in said correct sequential order 640 .
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
The present invention is an instant Internet browser based VoIP system with a VoIP client in the form of temporary VoIP applets that can start in a Web browser and can establish an instant peer-to-peer connection with another web-based or hardware embedded/installed VoIP client using session initiation protocol (SIP) and real-time transport protocol (RTP) audio streaming. The applet is a small file that is easily loaded onto a user's browser and uses application program interfaces (APIs) that require no additional libraries. The applet is written in JAVA, although other programming languages may also be used to write the applet.
Description
- This application claims priority to U.S. Provisional Application 61/164,548 filed on Mar. 30, 2009, the entire disclosure of which is incorporated by reference. The present application is a divisional application of U.S. Non-Provisional patent application Ser. No. 12/750,204 filed on Mar. 30, 2010, the entire disclosure of which is incorporated by reference.
- Voice over Internet protocol technology (VoIP) provides a more cost effective way for communication than traditional public switch telephony network technology (PSTN). Current VoIP systems for personal computers (PCs) and other devices require the installation and configuration of proprietary hardware or software or both. The hardware and software are operating system dependent and require operating system knowledge to install. Current systems require the caller and called party to register with the same VoIP service first and then to authorize each other to be contacted online through the VoIP service before they can even place a VoIP call.
- Installation, configuration, registration and authorization requirements, combined with the lacking interoperability between the existing VoIP services make a spontaneous, instant VoIP connection between two or more persons all but impossible. This provides a significant barrier for VoIP penetration in the market.
- Instant browser-based VoIP is a desirable feature and there have been previous attempts to create various systems and methods of use. Currently there are two different approaches to the instant browser based VoIP used in the market.
- One approach is to provide the user with a web user interface where a user can key in two phone numbers. These numbers are then sent via the Internet to the call server and the call server calls these two numbers using a least cost routing technology. This approach is therefore not a browser based VoIP method but is rather web activated calling and comes with several disadvantages. Users must have an Internet connection and access to two phones and two PSTN lines for one call. Each conversation requires two PSTN connections from the call server to the VoIP/PSTN gateways and a VoIP connection between the gateways. That not only adds up the noise, latency and distortion but it simply requires two paid PSTN calls. Free calling that is often associated with VoIP is not possible with this approach.
- Another approach is to use various technology, such as Abobe Air and Flex technology, to build temporary VoIP clients. These involve a click-to-call (C2Call) user experience, since it can start in a browser window, provided the very latest flash live video (FLV) player software, such as Adobe Flash Player version 9, is installed and the user can access Active-X controls. These VoIP clients can be created with a development kit, such as an Adobe CS3 Development Kit, and use the audio track of a FLV or flash video format and transmission control protocol (TCP) streaming that works only with a proprietary and not an open source codec, such as the Nellymoser Asao codec, so there is no choice of a license-free codec. A second problem is that any voice communication must be streamed through a flash media server, where it is then not possible to establish a peer-to-peer connection. All voice traffic must go through the flash media player server, which demands huge Internet bandwidth and a server farm for a larger deployment. Not having peer-to-peer capabilities further reduces the voice quality and does not provide the best possible Internet connection between the two peers, since both parties must connect to the media server for the call. This forced routing through defined servers also adds latency and reduces connection quality.
- Software solutions, such as Adobe solutions, also work only on supported systems and with the latest flash player software, such as Adobe Flash Player version 9, installed. Adobe Flash also requires different drivers, plug-ins and software for the various operating systems. At this time, recent programming languages, such as JAVA, is part of more users' Internet experiences, since almost all recent websites use JAVA and JAVA script and are included not only with the latest PC and browser generations but with several previous generations of PCs as well.
- The present invention generally relates to an instant Internet browser based VoIP system. More specifically, the invention is a system and method that can establish spontaneous, instant and entirely browser-based peer-to-peer VoIP on all operating systems, Web browsers and devices in the form of a temporary VoIP client.
- It is also an object of the invention to provide a C2Call functionality and user experience, allowing the user to experience VoIP as an entirely web-based application.
- What is really needed is a system and method that aims to remove the current existing barriers that prevent convenient VoIP usage and to enable all Internet users to use VoIP as a communications method without the requirements of the users to install and configure software before using VoIP.
- The present invention is directed to an instant Internet browser based VoIP system with a VoIP client in the form of temporary VoIP applets that can start in a Web browser and can establish an instant peer-to-peer connection with another web-based or hardware embedded/installed VoIP client using session initiation protocol (SIP) and real-time transport protocol (RTP) audio streaming. The applet is a small file that is easily loaded onto a user's browser and uses application program interfaces (APIs) that require no additional libraries. The applet is written in JAVA, although other programming languages may also be used to write the applet.
- Another aspect of the invention is the integration of several speech codecs in the VoIP applet audio core such as
GSM 610, Speex, G 723.1 and iLBC directly addressing the operating system's audio engine. - Another aspect of the invention is the implementation of a RTP streaming protocol in the temporary VoIP applet using circular buffers in the user datagram protocol (UDP) environment and the implementation of a firewall strategy that works in any operating system and standard cable modem and Internet router environment with firewalls and network address translation (NAT) support.
- Another aspect of the invention is that the VoIP applet auto senses the hardware and software environment of the device it's deployed on and automatically configures the device's audio settings to support the VoIP connection, thus eliminating the need for the user to manually configure the device he is using.
- Another aspect of the invention is an Ajax based widget that supports all popular browsers and has full access to the VoIP applet functions.
- Another aspect of the invention is the integration of the VoIP applet in a SIP server environment.
- Another aspect of the invention is that the user can log-in to free VoIP websites, such as FriendCaller, to start the VoIP applet and get instant access to the user interface in the form of a web-phone. Once the user has started the applet, he is able to see the online status of his contacts. He then can instantly call any of the contacts that are online.
- Another aspect of the invention is that standard HTTP URLs can be used to notify a communication request from one user to another user. A user can start the VoIP applet by clicking on a link in the form of a HTTP URL or a graphical element like a web banner attached with a HTTP URL. Links and banners can then bee-mailed, posted in an instant message (IM), sent via a short message service (SMS) text or integrated into various websites.
- Another aspect of the invention is to add contacts to the user's contact list by sending “invitation” e-mails with embedded links to a recipient from a free VoIP website. The recipients can then start the VoIP applet by opening the link in their browser. Through the opening of the link, the recipient declares his acceptance to be added to the sender contact list. The recipient of a link does not have to register with the free VoIP website and does not have to install any software before using the VoIP applet. The link provides the system with the required information to display the name of the sender and recipient in each web-phone user interface, thus providing caller-10 functionality.
- Another aspect of the invention is that a user can register with a free VoIP website and generate personalized links that can be emailed, placed on websites, blogs or a social networking site. Any recipient of the link or visitor of a website can start the VoIP applet by opening the link and calling the sender or owner anonymously. A useful feature of the invention is that a call generated through any such link can be terminated into the PSTN network.
- Another aspect of the invention is that it can easily be integrated in any website that requires a login and has a contact list. It allows such websites to offer its users the instant voice feature through a single log-in to the website without additional registration on a free VoIP website or to install any needed software. Examples of such websites are social networking sites that very recently have started to integrate browser based text-chat and instant messaging (1M).
- Another aspect of the invention is that the method can be transferred to other platforms like those in smart cell phones, such as an iPhone, that do not supporting the JAVA programming of the VoIP applet. Such an embodiment is demonstrated but not limited to the FriendCaller free VoIP for the iPhone and the iPod touch pad application that can be installed on the iPhone and iPod touch pad.
- Another aspect of the invention is that the VoIP applet can operate in several browser windows on the same device.
- The present invention will be described by way of exemplary embodiments, but not limitations, illustrated in the accompanying drawings in which like references denote similar elements, and in which:
-
FIG. 1 illustrates a block diagram of an instant Internet browser based VoIP system with a VoIP client embedded in a Web browser environment, in accordance with one embodiment of the present invention. -
FIG. 2 illustrates a block diagram of a VoIP client and its components, in accordance with one embodiment of the present invention. -
FIG. 3 illustrates a flow chart of a client-server architecture of a Web-based VoIP service, in accordance with one embodiment of the present invention. -
FIG. 4 illustrates a flow chart for a caller to callee VoIP call firewall strategy, in accordance with one embodiment of the present invention. -
FIG. 5 illustrates a flow chart for RTP streaming using circular buffers, in accordance with one embodiment of the present invention. -
FIG. 6 illustrates a flow chart for method of RTP streaming using circular buffers for a VoIP client embedded in a Web browser to implement a peer to peer VoIP call based on a SIP environment, in accordance with one embodiment of the present invention. - Various aspects of the illustrative embodiments will be described using terms commonly employed by those skilled in the art to convey the substance of their work to others skilled in the art. However, it will be apparent to those skilled in the art that the present invention may be practiced with only some of the described aspects. For purposes of explanation, specific numbers, materials and configurations are set forth in order to provide a thorough understanding of the illustrative embodiments. However, it will be apparent to one skilled in the art that the present invention may be practiced without the specific details. In other instances, well-known features are omitted or simplified in order not to obscure the illustrative embodiments.
- Various operations will be described as multiple discrete operations, in turn, in a manner that is most helpful in understanding the present invention, however, the order of description should not be construed as to imply that these operations are necessarily order dependent. In particular, these operations need not be performed in the order of presentation.
- The phrase “in one embodiment” is used repeatedly. The phrase generally does not refer to the same embodiment, however, it may. The terms “comprising”, “having” and “including” are synonymous, unless the context dictates otherwise.
-
FIG. 1 illustrates a block diagram of an instant Internet browser based -
VoIP system 10 with aVoIP client 20 in a Web browser environment, in accordance with one embodiment of the present invention. TheWeb browser 30 can be any Web browser known to those schooled in the art that can support theVoIP client 20. TheVoIP client 20 can also be written in any programming language that can perform the functions of theVoIP client 20, although JAVA is the programming language that best performs the functions of theVoIP client 20. - The plug-in 40 used with the instant Internet browser based
VoIP system 10 is a JAVA Virtual Machine or JAVA VM plug-in, although other plug-ins that are well known in the art can also be used that can support the functions of instant Internet browser basedVoIP system 10. -
FIG. 2 illustrates a block diagram of aVoIP client 20 of the instant Internet browser basedVoIP system 10 and its components, in accordance with one embodiment of the present invention. The main component of theVoIP client 20 is aC2Call applet 50, which is written in JAVA script or any other programming script language that is well known in the art that can perform the functions of theVoIP client 20. TheVoIP client 20 uses only low level APIs to implement the VoIP service and therefore, all required components have to be implemented as part of theVoIP client 20. The required environment on the Internet device is a JAVA enabledWeb browser 30 based on a JAVA runtime environment of 1.5 or later version with audio hardware that includes a speaker and a microphone (not shown), although other environments that are well known in the art can also be used that can perform the functions of theVoIP client 20. TheVoIP client 20 has to fulfill several criteria. First theC2Call applet 50 must be as small as possible to reduce the required loading time and a codec with excellent voice quality directly addressing the operating system's audio engine (not shown) should also be implemented. A rich text format (RTF) streaming protocol must also be defined that can work in the user datagram protocol (UDP)environment 60 where voice data packets may arrive out of order, be duplicated or go missing without notice. Auto sensing is also required to detect the system's audio settings and correct them to allow a convincing user experience even for an inexperienced user. Creating an asynchronous JAVA script XML (Ajax) based widget (not shown) that supports all popular browsers and the implementation of theVoIP applet 50 in a carrier classSIP server environment 70 is also an important criteria. - The
VoIP client 20 provides the following functionality and components to implement the VoIP service. TheC2Call client API 80 handles contact lists, call history and client authentication involved with theVoIP client 20. The register/presence handler 90 and theVoIP client 20 connect to the SIP proxy (FIG. 3 , 190) based on a regular register request, submits its presence information and retrieves presence information from any related contacts. TheVoIP command API 100, is an API that provides an easy to use interface to initiate, take and terminate calls. TheVoIP command API 100 can be accessed via JavaScript from the HTML page. TheVoIP notifier 110 is a notifier service that informs the Web browser/HTML page 30 on call and during presence events. It notifies incoming calls, online status information and any change of presence status of related contacts. Theaudio handler 120 detects audio hardware, provides audio setting dialogs and manages the initialization of the audio hardware for the call. Theaudio handler 120 also sends audio data to the network and retrieves audio data from the network. Theaudio handler 120 uses JAVA sound to implement the audio playback and recording functions. The encoder anddecoder 130 manage the audio encoding and decoding process by using different built-in codecs (not shown). Implementation of a codec (not shown) with excellent voice quality directly addressing the operating system's JAVA audio engine is also required. The SIP protocol stack and the implementation of theSIP 70 are based on a Jain SIP implementation, although other SIP implementations that are well known in the art that can carry out the functions of theVoIP client 20 can also be used. TheRTP session handler 140 implements the RTPaudio output stream 150, the RTPaudio input stream 160 and also implements any firewall strategies. The firewall strategies must be put in place that works on any operating system and in standard cable modem and Internet router environments with firewalls and network address translation (NAT). An additional plurality of codecs 170, which include theGSM 610, Speex, G 723.1, iLBC, G 7.11 ulaw and alaw codecs are also incorporated into theVoIP client 20. -
FIG. 3 illustrates a diagram of a client-server architecture of a Web-based VoIP service, in accordance with one embodiment of the present invention. TheVoIP applet 50 plugged into theWeb browser 30 is connected to the VoIP service components on the server side. Themain Web server 175 components are mainly divided into theapplication server 180, which manages contacts and relationships between users of the services, provides all Web forms and the call link management. TheSIP proxy 190 implements a session initiation protocol proxy and handles presence information. TheRTP relay 200 has a media server and serves as a gateway into any PSTN networks and is used when peer-to-peer communication cannot be achieved. The postfix mail transfer agent (MTA) 210 handles the email transfer for call links, invite emails and registration “call me link” 212 confirmations to a plurality of Web browsers, such as Internet Explorer, Firefox, Safari, Opera and Crome and can include an iPhone and aniPod Touch Pad 215. TheVoIP client 20 is embedded in aWeb browser 30 to implement a peer-to-peer VoIP, based on aSIP protocol 70 and RTP audio streaming. TheVoIP applet 50 is a temporary JAVA applet that can be plugged into a website as a soft phone to make phone calls based on theSIP protocol 70. TheVoIP applet 50 has a very small footprint and is a small file that uses only JAVA APIs that are included in standard JAVA Virtual Machine 1.5. No additional libraries like a JAVA media framework (JMF) or any other framework known to those schooled in the art are required for theVoIP applet 50 to work. - The
VoIP applet 50 implements the SIP protocol based on a Jain SIP API V1.2, although other SIP APIs that are capable of performing the functions of theVoIP client 20 that are well known in the art can also be used. TheJAVA VoIP applet 50 achieves excellent audio quality, reliable call set-up behind firewalls and is small in applet size through running multiple VoIP JAVA applet instances in multiple browser windows. TheVoIP applet 50 also records and plays back high quality voice in JAVA sound, implements advanced firewall strategies, integrates low bandwidth speech codecs and utilizes a method of RTP streaming using circular buffers, further described in theFIG. 5 description. While running multiple VoIP applet instances in multiple browser windows is an important aspect of running aVoIP client 20, a user can also open the same website in multiple browser windows. Therefore, unlike installed native VoIP clients, the browser basedVoIP client 20 can be started multiple times. This additional complexity must be handled correctly in order to avoid conflicts in call signaling or audio handling and to avoid multiple registrations from the same host. Starting a JAVA applet in a Web browser will launch a separate JAVA Virtual Machine specifically for that JAVA applet. In case the same JAVA applet will be launched in multiple browser windows from the same site (URL), a new instance of the JAVA applet will be launched in the same JAVA Virtual Machine instance. This specific behavior has been used to ensure, that only oneVoIP JAVA applet 50 is active at the same time if multiple instances have been launched. The actual VoIP core (not shown) will be launched only once per JAVA Virtual Machine instance. The VoIP core is encapsulated in a VoIP core object (not shown), which is available as a static variable within the JAVA Virtual Machine. When anew VoIP applet 50 will be launched from a website, during the applet initialization it will be checked whether a VoIP core is already available inside the JAVA VM. If so, theVoIP Applet 50 will use the VoIP core object, set itself a current active applet and increase a reference counter. In case no VoIP core is available, a new VoIP core will be initialized and stored as a static reference in the JAVA VM. - The activity status between the multiple applet browser windows is handled according to standard JAVA applet behavior. If a browser window gets the focus, the applet “start” function will be called and the formerly active JAVA applet will receive a “stop” function. In case of a stop, the
VoIP applet 50 removes it's activity status from the VoIP core, while in case of a “start”, theVoIP applet 50 will set its activity status within the VoIP core. Only the lastactive VoIP applet 50 will receive any notifications like an incoming call, from the VoIP core. Therefore, only theactive VoIP applet 50 will take over the managing role. This method ensures, that in case of multiple open pages of the VoIP website, only the last active page has control over the VoIP connection. TheJAVA VoIP applet 50 records and plays back voice in JAVA sound with high audio quality with any VoIP applications transmitting voice data over the Internet, which have been recorded by a microphone. The voice data will be separated into packets and streamed to the destination via RTP. Before the voice can be streamed to the destination, the voice data needs to be encoded into 8000 Hz voice data, using an uncompressing or compressing speech codec. JAVA sound allows to directly retrieve the audio data in the required sample rate from the capture device. However, the audio quality is poor, therefore, for implementation of high quality audio streaming, the audio data will be retrieved in a sample rate of 44100 Hz and will be transcoded into 8000 Hz, by a sample rate converter, before streaming the audio data to the remote client. -
FIG. 4 illustrates a diagram of acaller 240 to callee 250 VoIP call firewall strategy, in accordance with one embodiment of the present invention. In a firewall strategy for a VoIP application, the call initialization is a critical part, as the calling parties' systems are usually operating behind firewalls androuters 230 using NAT. That makes it challenging to establish an audio connection between thecaller 240 and the callee 250, since they cannot be directly addressed because their public “official” IP address and their local network IP address behind the firewall/routers 230 are not identical. Ensuring VoIP connectivity often proves challenging because of the number and variety ofNAT firewalls 230 that might exist between the users. A number of solutions have been proposed to allow SIP based VoIP calls to crossfirewalls 230, but each class ofNAT firewall 230 requires a different technique. To further complicate matters, the various NAT traversal solutions proposed address only one class of NAT device, such as the simple traversal of UDP through NAT (STUN) technique, which will not work with symmetric NATs. The most reliable way to connect both users would be to use a controlledrelay 200 that could be used to route all voice data traffic through a given call pathway. Unfortunately this solution would create a bandwidth bottleneck by directing all data traffic through the server's relay, which would create a direct conflict with the target to establish a peer-to-peer connection. - This firewall strategy solves this conflict by using the controlled
relay 200 only during a short call set-up period to establish a reliable peer-to-peer connection. The IP addresses and NAT characteristic of therelay router 200 are known and can be used to apply the firewall strategy 300 to determine what type ofNAT firewalls 230 exist betweenVoIP clients 20 and to determine a set of IP addresses by whichVoIP clients 20 can establish contact. Using a number of protocols and network connectivity mechanisms, the network topology in which theVoIP clients 20 operate and the various sets of network addresses by which these devices can communicate is determined. Once bothVoIP clients 20 confirm a possible peer-to-peer connection, they will drop the relay connection and continue to communicate peer-to-peer. All this happens unnoticed by the callers, since there are no delays or dropouts. The integration of G 7.11 ulaw and alaw speech codecs 260 in addition to the JAVA sound system requires a bandwidth of 64 kBiVs in each direction. This bandwidth requirement is too high for low bandwidth conditions typical for Internet connections available to consumers and therefore theJAVA VoIP applet 50 needs to integrate additional compressing codecs to support voice communication in low bandwidth environments. Thereforeadditional GSM 610, Speex, G 723.1 and iLBC codecs 270 have been ported to JAVA and have been integrated into the VoIP core to perform the compression. -
FIG. 5 illustrates a diagram of RTP streaming using circular buffers, in accordance with one embodiment of the present invention. Sending and receiving voice packets in a 20 ms interval will create a significant load in aVoIP applet 50. AVoIP applet 50 is a relatively small component embedded within a website, which shouldn't take the majority of CPU resources. Therefore aVoIP applet 50 will run at low priority when embedded in a website. One of the time consuming tasks of theVoIP applet 50 is buffering the incoming data packets and reordering and forwarding the data to the audio hardware (not shown). In order to manage this task usage with a minimal amount of CPU resources, a specificcircular buffer 370 has been developed. The design of thecircular buffer 370 minimizes the numbers of memory copy operations, reduces or eliminates efforts for reordering packets and reduces or eliminates the need for synchronization and locks. The RTP streaming using the specificcircular buffers 370 has several advantages.Incoming RTP packets 380 from the network will be placed in thebuffer 370, while the playback audio entity (not shown) is reading theaudio packets 382 from thebuffer 370 at the same time. Usually if two independent threads are accessing a given buffer, synchronization and a locking mechanism are required in order to avoid conflicts. - The
circular buffer 370 is organized in O−(n−1) buckets, where n=number ofbuckets 400. Eachbucket 400 holds 1RTP audio packet 382, with eachincoming RTP packet 380 being assigned to abucket 400 based on itssequence number 410, according to the following formula: -
bucket_number=sequence_number modulo number_of_buckets 410 - Therefore, even in the case that
incoming RTP packets 380 are out of order, theincoming packets 380 will be assigned to theirbucket 400 according to the formula above and will be automatically ordered at no costs. In case abucket 400 is not empty, theincoming packet 380 will be dropped. The playback or readingthread 390 will read theincoming RTP packets 380,bucket 400 bybucket 400, starting with thebucket 400 of thefirst packet 380 received. If anincoming packet 380 has an older time stamp then the latestread audio packet 382, then theincoming packet 380 will be dropped. Thenetwork thread 420 will writeaudio packets 382 into thebuckets 400 and will add the packet size to the total buffer size. Theplayback thread 390 will readaudio packets 382bucket 400 bybucket 400, by incrementing a read index (not shown) based on the following formula: -
read_index=read_index+1 -
read index=read index modulo number of buckets - If a
bucket 400 is empty (missed packet), the read index will be incremented and thenext bucket 400 will be read. When anaudio packet 382 has been read, the total buffer size will be reduced by the packet size and thebucket 400 will be set to null. If the total buffer size is 0, theplayback thread 390 will wait until data is available. Based on this, no synchronization is required as simple integer operations don't need to be synchronized. Due to the mapping of bucket numbers (not shown) toRTP sequence numbers 410, thepacket 380 will be automatically arranged in the correct order. Ifpackets 380 are coming in late, they'll be simply dropped. Since only references toRTP packets 380 are handed over from the network interface to the audio handler, the amount of memory copy gets minimized. - Using call-links or standard HTTP URLs (not shown), sent from a
caller 240 to acallee 250, in order to notify a communication request to allow for implementing theVoIP client 20 in a web page, bring a new user experience to the interactive voice communication. This means a Voice over IP user can be addressed by a simple URL. Opening that URL, launches the webpage to allow instant voice calls without installation or set-up from any PC or JAVA enabled Internet device. In order to establish a communication to a user who is new to the VoIP service, a call link will be sent via email to the targeted user. This user receives the email with an embedded unique call link. When the user clicks on the link, the VoIP page opens and establishes the call to the originator of the email. - A user can also add contacts to their contact list by sending “invitation” emails with embedded links to a recipient from a free VoIP website. The recipients can then start the
VoIP applet 50 by opening the link in their browser. Through the opening of the link, the recipient declares his acceptance to be added to the sender contact list. The recipient of a link does not have to register with the free VoIP website and does not have to install any software before using theVoIP applet 50. The link provides the system with the required information to display the name of the sender and recipient in each web-phone user interface, thus providing Caller-1 D functionality. - A user can also register with a free VoIP website and generate personalized links that can be emailed, placed on websites, blogs or a social networking site. Any recipient of the link or visitor of a website can start the
VoIP applet 50 by opening the link and calling the sender or owner anonymously. A useful feature of theVoIP client 20 is that a call generated through any such link can be terminated into the PSTN network. - The instant Internet browser based
VoIP system 10 can also easily be integrated in any website that requires a login and has a contact list. It allows such websites to offer its users the instant voice feature through a single log-in to the website without additional registration on a free VoIP website or to install software. Examples of such websites are social networking sites that very recently have started to integrate browser based text-chat and instant messaging (1M).FIG. 5 . -
FIG. 6 illustrates a flow chart formethod 600 of RTP streaming using circular buffers for a VoIP client embedded in a Web browser to implement a peer to peer VoIP call based on a SIP environment, in accordance with one embodiment of the present invention. - The
method 600 includes the steps of placing a plurality of incoming packets from said RTP streaming in said buffer while a plurality of audio packets are read concurrently while in a plurality of buckets in saidbuffer 610, holding one said audio packet in one said bucket from said RTP streaming, while each said incoming packet is assigned to a saidbucket 620, having a playback thread reading said incoming packets said bucket by said bucket by incrementing a read index to arrange said incoming packets into said buckets in a correctsequential order 630 and having a network thread writing said audio packets into said buckets in said correctsequential order 640. - While the present invention has been related in terms of the foregoing embodiments, those skilled in the art will recognize that the invention is not limited to the embodiments described. The present invention can be practiced with modification and alteration within the spirit and scope of the appended claims. Thus, the description is to be regarded as illustrative instead of restrictive on the present invention.
Claims (1)
1. A method of RTP streaming using circular buffers for a VoIP client embedded in a Web browser to implement a peer to peer VoIP call based on a SIP environment, comprising:
placing a plurality of incoming packets from said RTP streaming in said buffer while a plurality of audio packets are read concurrently while in a plurality of buckets in said buffer;
holding one said audio packet in one said bucket from said RTP streaming, while each said incoming packet is assigned to a said bucket;
having a playback thread reading said incoming packets said bucket by said bucket by incrementing a read index to arrange said incoming packets into said buckets in a correct sequential order; and
having a network thread writing said audio packets into said buckets in said correct sequential order.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/674,842 US20130070759A1 (en) | 2009-03-30 | 2012-11-12 | INSTANT INTERNET BROWSER BASED VoIP SYSTEM |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16454809P | 2009-03-30 | 2009-03-30 | |
US12/750,204 US8311038B2 (en) | 2009-03-30 | 2010-03-30 | Instant internet browser based VoIP system |
US13/674,842 US20130070759A1 (en) | 2009-03-30 | 2012-11-12 | INSTANT INTERNET BROWSER BASED VoIP SYSTEM |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/750,204 Division US8311038B2 (en) | 2009-03-30 | 2010-03-30 | Instant internet browser based VoIP system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20130070759A1 true US20130070759A1 (en) | 2013-03-21 |
Family
ID=42826138
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/750,204 Expired - Fee Related US8311038B2 (en) | 2009-03-30 | 2010-03-30 | Instant internet browser based VoIP system |
US13/674,831 Abandoned US20130067559A1 (en) | 2009-03-30 | 2012-11-12 | INSTANT INTERNET BROWSER BASED VoIP SYSTEM |
US13/674,842 Abandoned US20130070759A1 (en) | 2009-03-30 | 2012-11-12 | INSTANT INTERNET BROWSER BASED VoIP SYSTEM |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/750,204 Expired - Fee Related US8311038B2 (en) | 2009-03-30 | 2010-03-30 | Instant internet browser based VoIP system |
US13/674,831 Abandoned US20130067559A1 (en) | 2009-03-30 | 2012-11-12 | INSTANT INTERNET BROWSER BASED VoIP SYSTEM |
Country Status (1)
Country | Link |
---|---|
US (3) | US8311038B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107807989A (en) * | 2017-11-03 | 2018-03-16 | 小草数语(北京)科技有限公司 | Small documents processing method and processing device |
US10200668B2 (en) * | 2012-04-09 | 2019-02-05 | Intel Corporation | Quality of experience reporting for combined unicast-multicast/broadcast streaming of media content |
US11115537B1 (en) * | 2016-06-23 | 2021-09-07 | 8X8, Inc. | Template-based management of telecommunications services |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2346173B1 (en) * | 2009-03-31 | 2011-07-29 | Media Patents, S.L. | PROCEDURE TO ESTABLISH SIP COMMUNICATIONS FROM LINKS OF AFFILIATED WEB SITES AND NETWORK EQUIPMENT USING THIS PROCEDURE. |
CN101635729B (en) * | 2009-08-26 | 2012-09-19 | 中兴通讯股份有限公司 | Background service progress unit, seat system and calling control method thereof |
US8351325B2 (en) * | 2010-08-18 | 2013-01-08 | Yr20 | Method and system for layer-2 pseudo-wire rapid-deployment service over unknown internet protocol networks |
JP5023210B2 (en) * | 2010-12-27 | 2012-09-12 | 株式会社東芝 | Telephone system, call control server device, and communication connection method |
WO2012118917A2 (en) | 2011-03-03 | 2012-09-07 | Social Communications Company | Realtime communications and network browsing client |
WO2013065056A1 (en) | 2011-10-31 | 2013-05-10 | Hewlett-Packard Development Company, L.P. | Rendering permissions for rendering content |
CN102523295B (en) * | 2011-12-20 | 2014-07-09 | 深圳市茁壮网络股份有限公司 | Plug-in registration method and system thereof |
US9462080B2 (en) * | 2012-04-27 | 2016-10-04 | Hewlett-Packard Development Company, L.P. | Management service to manage a file |
US9681278B2 (en) | 2012-07-27 | 2017-06-13 | Crexendo, Inc. | VOIP service with streamlined conferencing options |
US9609457B2 (en) * | 2012-07-27 | 2017-03-28 | Crexendo, Inc. | Mobile application procurement and configuration options for VOIP service |
US9553901B2 (en) | 2012-07-27 | 2017-01-24 | Crexendo, Inc. | VOIP service with streamlined call transfer options |
US10530742B2 (en) | 2013-11-11 | 2020-01-07 | Amazon Technologies Inc. | Managed directory service |
US10908937B2 (en) * | 2013-11-11 | 2021-02-02 | Amazon Technologies, Inc. | Automatic directory join for virtual machine instances |
US9407615B2 (en) | 2013-11-11 | 2016-08-02 | Amazon Technologies, Inc. | Single set of credentials for accessing multiple computing resource services |
US9736159B2 (en) | 2013-11-11 | 2017-08-15 | Amazon Technologies, Inc. | Identity pool bridging for managed directory services |
US10257184B1 (en) | 2014-09-29 | 2019-04-09 | Amazon Technologies, Inc. | Assigning policies for accessing multiple computing resource services |
US10509663B1 (en) | 2015-02-04 | 2019-12-17 | Amazon Technologies, Inc. | Automatic domain join for virtual machine instances |
CN106411827A (en) * | 2015-08-04 | 2017-02-15 | 刘志超 | User contact information protection method of mobile application field |
CN105871930A (en) * | 2016-06-21 | 2016-08-17 | 上海携程商务有限公司 | Self-adaptive firewall security policy configuration method and system based on applications |
CN108243054B (en) * | 2016-12-27 | 2020-07-07 | 中国移动通信有限公司研究院 | Application programming interface calling control method and device of gateway |
CN107395738A (en) * | 2017-08-07 | 2017-11-24 | 北京移数通电讯有限公司 | A kind of integrated call center and the system and method for wechat public number customer service |
CN107846311A (en) * | 2017-10-27 | 2018-03-27 | 杭州迪普科技股份有限公司 | A kind of server info collocation method and device |
CN111176574B (en) * | 2019-12-27 | 2022-03-22 | 浪潮电子信息产业股份有限公司 | Small file storage method, device, equipment and medium |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289012B1 (en) * | 1998-08-03 | 2001-09-11 | Instanton Corporation | High concurrency data download apparatus and method |
US20020031126A1 (en) * | 2000-09-12 | 2002-03-14 | Crichton James Conrad | Bit synchronizer and internetworking system and method |
US20040218680A1 (en) * | 1999-12-14 | 2004-11-04 | Rodriguez Arturo A. | System and method for adaptive video processing with coordinated resource allocation |
US20090240561A1 (en) * | 2007-07-06 | 2009-09-24 | Utbk, Inc. | Systems and Methods to Generate Leads to Connect People for Real Time Communications |
US8125988B1 (en) * | 2007-06-04 | 2012-02-28 | Rangecast Technologies Llc | Network audio terminal and method |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7145898B1 (en) * | 1996-11-18 | 2006-12-05 | Mci Communications Corporation | System, method and article of manufacture for selecting a gateway of a hybrid communication system architecture |
EP1451679A2 (en) * | 2001-03-30 | 2004-09-01 | BRITISH TELECOMMUNICATIONS public limited company | Multi-modal interface |
US6704396B2 (en) * | 2002-02-27 | 2004-03-09 | Sbc Technology Resources, Inc. | Multi-modal communications method |
US7023821B2 (en) * | 2002-04-12 | 2006-04-04 | Symnbol Technologies, Inc. | Voice over IP portable transreceiver |
US20050041642A1 (en) * | 2003-08-18 | 2005-02-24 | Robinson Jeffrey I. | Method, apparatus and system providing improved voice routing capabilities |
US9202220B2 (en) * | 2003-10-06 | 2015-12-01 | Yellowpages.Com Llc | Methods and apparatuses to provide application programming interface for retrieving pay per call advertisements |
US20070008884A1 (en) * | 2003-10-08 | 2007-01-11 | Bob Tang | Immediate ready implementation of virtually congestion free guarantedd service capable network |
US8015292B2 (en) * | 2004-08-03 | 2011-09-06 | Gopesh Kumar | System and method for connecting consumers with a diverse set of consultants and experts |
US7706373B2 (en) * | 2006-11-01 | 2010-04-27 | Nuvoiz, Inc. | Session initiation and maintenance while roaming |
-
2010
- 2010-03-30 US US12/750,204 patent/US8311038B2/en not_active Expired - Fee Related
-
2012
- 2012-11-12 US US13/674,831 patent/US20130067559A1/en not_active Abandoned
- 2012-11-12 US US13/674,842 patent/US20130070759A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289012B1 (en) * | 1998-08-03 | 2001-09-11 | Instanton Corporation | High concurrency data download apparatus and method |
US20040218680A1 (en) * | 1999-12-14 | 2004-11-04 | Rodriguez Arturo A. | System and method for adaptive video processing with coordinated resource allocation |
US20020031126A1 (en) * | 2000-09-12 | 2002-03-14 | Crichton James Conrad | Bit synchronizer and internetworking system and method |
US8125988B1 (en) * | 2007-06-04 | 2012-02-28 | Rangecast Technologies Llc | Network audio terminal and method |
US20090240561A1 (en) * | 2007-07-06 | 2009-09-24 | Utbk, Inc. | Systems and Methods to Generate Leads to Connect People for Real Time Communications |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10200668B2 (en) * | 2012-04-09 | 2019-02-05 | Intel Corporation | Quality of experience reporting for combined unicast-multicast/broadcast streaming of media content |
US11115537B1 (en) * | 2016-06-23 | 2021-09-07 | 8X8, Inc. | Template-based management of telecommunications services |
US11516345B1 (en) * | 2016-06-23 | 2022-11-29 | 8X8, Inc. | Template-based management of telecommunications services |
US20230088554A1 (en) * | 2016-06-23 | 2023-03-23 | 8X8, Inc. | Template-based management of telecommunications services |
US11849071B2 (en) * | 2016-06-23 | 2023-12-19 | 8X8, Inc. | Template-based management of telecommunications services |
CN107807989A (en) * | 2017-11-03 | 2018-03-16 | 小草数语(北京)科技有限公司 | Small documents processing method and processing device |
Also Published As
Publication number | Publication date |
---|---|
US8311038B2 (en) | 2012-11-13 |
US20130067559A1 (en) | 2013-03-14 |
US20100254375A1 (en) | 2010-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8311038B2 (en) | Instant internet browser based VoIP system | |
US7934000B2 (en) | Real-time communication using inter-process communications | |
US8638781B2 (en) | Method and system for preserving telephony session state | |
US7313134B2 (en) | Proxy server for relaying VOIP messages | |
US7751316B2 (en) | Relay Server for SIP/RTP messages with buffer management | |
US7734705B1 (en) | System and method for flexibly managing heterogeneous message delivery | |
TWI360338B (en) | ||
US20120124227A1 (en) | Browser-based voip service method and system | |
US20080144604A1 (en) | Interface-neutral communication architecture | |
WO2014019497A1 (en) | Real time communication method, terminal device, real time communication server and system | |
EP2460342B1 (en) | Telephonic communications with intelligent protocol switching | |
EP2997714B1 (en) | Method for real-time communication between web browsers | |
KR20090024132A (en) | Enhanced network communication | |
EP2144398A1 (en) | Method and apparatus for monitoring and logging communication sessions in a home network | |
US20220311812A1 (en) | Method and system for integrating video content in a video conference session | |
EP1974534B1 (en) | Method and device for managing personal communications of at least one user | |
Liu et al. | An approach to integrating SIP in converged multimodal/multimedia communication services | |
TWI811644B (en) | Method for dynamically connecting a communication channel and software system using the same | |
Adeyeye et al. | Emerging research areas in SIP-based converged services for extended Web clients | |
WO2001091433A2 (en) | Processing of call session information | |
Anand et al. | WebRTC Applications and Uses in the Tech Industry | |
Raesi | See, What I See (SWIS); Design and Implementation of a Virtual Living Room in Cyberspace | |
Sedrati | Skype integration into Aastra BluStar client | |
FR2895862A1 (en) | Call managing device for proxy server, has middleware selecting local terminal and redirecting call to interface for communicating with selected terminal for establishing communication link between sending terminal and selected terminal | |
FR2895863A1 (en) | Call managing device for proxy server, has middleware selecting local terminal and redirecting call to interface for communicating with selected terminal for establishing communication link between sending terminal and selected terminal |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |