1. Field of the Invention
The present invention relates to the field of media communications, and, more particularly, to a Real Time Transport Protocol (RTP) processing component that performs one or more audio processing tasks during an RTP-based communication system between two communication endpoints.
2. Description of the Related Art
Real Time Transport Protocol (RTP) is an Internet-standard protocol for the transport of real-time data, including audio and video. RTP is used in virtually all Voice Over Internet Protocol (VOIP) architectures, for videoconferencing, media-on-demand, and other applications. RTP can be used over multicast or unicast network services. RTP is an end-to-end transport protocol that provides services such as payload type identification, sequence numbering, time stamping, lost packet detection, timing reconstruction, and delivery monitoring. When RTP is used to stream video, a video server can maintain session states in order to correlate requests with a stream. Unlike the hypertext transfer protocol (HTTP) that is basically an asymmetric protocol where a client issues requests and a server responds, RTP allows both a video server and client to issue requests to the other.
Conventional implementations of RTP can establish full duplex audio streams between a video server and a caller, where the streams are transmitted over an Internet-protocol (IP) network through a VOIP gateway. During transmission, RTP audio can be compressed, decompressed, packetized, depacketized, and otherwise processed. These processing activities consume CPU cycles, network bandwidth, and utilize Input/Output ports of numerous computing devices of the IP network through which the audio is conveyed. Because RTP is a real-time protocol where packet transfer rates for audio packets of approximately 20 milliseconds between sender and receiver can be necessary, timely delivery and processing of the streamed audio can be essential.
Using conventional techniques, resource scarcity is common at the server and the client endpoints participating in the RTP communication. Intermittent resource shortfalls can result in quality compromises that can be perceived at either end of the transmission. A technique is needed that permits clients and video servers to utilize the RTP in a fashion where resource shortfalls can be gracefully accommodated.
A detachable Real Time Transport Protocol (RTP) audio processor to which an endpoint participating in a RTP communication can offload processing as detailed by embodiments of the inventive arrangements is disclosed herein. The RTP audio processor can operate as a stand-alone entity that can execute and be located anywhere within a network space that is communicatively linked to the communication endpoints. The RTP audio processor can be dynamically utilized at need whenever resources are scarce. The RTP audio processor can be used by a client endpoint, by a server endpoint, or both. In one embodiment, the RTP audio processor can be executed in a network space local to a Voice Over Internet Protocol (VOIP) gateway. Additionally, the RTP audio processor can be implemented in software, hardware, firmware, or a combination thereof.
The RTP audio processor can include a variety of features designed to enhance RTP communication sessions. One feature can handle the streaming of silence packets on behalf of either endpoint. Because a large portion of a typical full duplex audio communication session consists of extended periods of silence, the silence streaming feature of the RTP audio processor can result in huge resource savings for either or both communication endpoints. Other RTP features include, but are not limited to, the playing of predefined audio recordings, playing a sampling of noise, joining additional audio streams from a third source into a stream directed to either endpoint, providing hold music and other audio, and the like.
Silence packets as used herein can include any audio packets not containing audio information that is to be conveyed between endpoints. That is, silence packets can convey a low level of background “noise” so that a communication participant at either end-point is able to discern that the communication circuit is still active. Silence packets can be conveyed whenever endpoint generated audio is below a designated threshold or can be conveyed whenever endpoint generated audio is identified as containing “noise” as opposed to audio content.
The present invention can be implemented in accordance with numerous aspects consistent with material presented herein. For example, one aspect of the present invention can include a communication method where a communication session between two endpoints based upon the RTP can be established. During the communication session, discrete packets containing digitally encoded audio can be exchanged between the two endpoints resulting in a continuous audio flow being established in real-time between the two endpoints. During the communication session, one or more of the two endpoints can convey RTP data to a remotely located RTP audio processor. The RTP data can include information necessary for the RTP audio processor to establish an audio stream with the one of the two endpoints that did not convey the RTP data to the RTP audio processor. The RTP audio processor can establish the audio stream without terminating the communication session between the two endpoints.
Another aspect of the present invention can include an RTP audio processor. The RTP audio processor can be a stand-alone processing component located within a computing processing space external to two communication endpoints that exchange a continuous stream of audio data with each other using the RTP. The stand-alone processing component can be configured to establish an audio stream with at least one of the two endpoints without terminating a pre-existing RTP communication session between the two endpoints. The audio stream can convey digitally encoded audio processed by the stand-alone processing component using a plurality of discrete packets containing the digitally encoded audio in accordance with RTP.
It should be noted that various aspects of the invention can be implemented as a program for controlling computing equipment to implement the functions described herein, or a program for enabling computing equipment to perform This program may be provided by storing the program in a magnetic disk, an optical disk, a semiconductor memory, any other recording non-transitory medium implemented as multiple subprograms, each of which interact within a single computing device or interact in a distributed fashion across a network space.
There are shown in the drawings, embodiments which are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown.
Communication endpoint 105 and 110 can each represent an entity participating within a communication session. Endpoint 105 and 110 can each represent a human or an automated communication system. At each endpoint 105 and 110, communications can occur through customer premise equipment (CPE) such as a telephone or through a computing device such as a voice server or personal computer.
The communication session between endpoint 105 and endpoint 110 can be based upon the Real-Time Transport Protocol (RTP). For example, a communication session between endpoints 105 and 110 can be a Voice Over Internet Protocol (VOIP) communications session. That is, a series of packets each containing digitally encoded information such as audio and video data can be conveyed between endpoints to establish a real-time communication. The real time communication is represented by communication flow 150 from endpoint 105 to endpoint 110 and by communication flow 152 from endpoint 110 to endpoint 105.
In one embodiment, the communication session can be a full duplex telephony communication between two humans, one being represented by endpoint 105 and the other by endpoint 110. In another embodiment, the communication session can be a multicast or unicast broadcast from a media server to one or more media destinations, wherein endpoint 105 can represent one of the media destinations and endpoint 110 can represent the media server.
An RTP audio processor 115 can be communicatively linked to endpoint 105 and/or endpoint 110 via network 135. The RTP audio processor 115 can be implemented within software, hardware, firmware, or a combination thereof, where the RTP audio processor 115 operates in a stand-alone fashion within a computing space external to endpoint 105 and endpoint 110. For example, the RTP audio processor 115 can be a software processor disposed in a network element remotely located from endpoint 105 and/or endpoint 110. In one embodiment, the RTP audio processor 115 can be located within a computing space local to gateway 140, which can be a VOIP gateway.
The RTP audio processor 115 can perform one or more audio processing functions for endpoint 105 and/or endpoint 110 using RTP. The RTP audio processor 115 can be dynamically utilized during a pre-existing communication session, without terminating a previously established, RTP based communication session between endpoints 105 and 110.
For example, endpoint 110 can convey RTP data 120 to RTP audio processor 115. The RTP data 120 can include information necessary for the RTP audio processor 115 to establish a communication stream 154 with endpoint 105, which is the endpoint that did not convey the RTP data 120. The communication stream 154 can be an RTP based communication flow that conveys audio and/or video information in real-time. The RTP data 120 can include, but is not limited to, an IP address for endpoint 105, a port address that accepts communication flow 152 data, IP header information, RTP header information, RTP payload information, and the like.
Additionally, RTP audio processor 115 can be configured to originate or modify RTP report packets. Report packets such as receiver reception packets, sender packets, and source description packets can be originated by RTP audio processor 115 or intercepted and modified by the RTP audio processor 115 in accordance with audio processing tasks performed by the RTP audio processor 115. The RTP audio processor 115 report packets can, for example, include information such as the number of packets sent, the number of packets lost, inter-arrival jitter, transmission rates, and other data that can be used for joining packets into a real-time communication stream and for diagnosing the same.
In one embodiment, a halting point for communication stream 152 information can be contained within RTP data 120 so that communication stream 152 can be halted at approximately the same time that communication stream 154 is initiated, which can use the same ports and communication session information as communication stream 152. Thus, endpoint 105 can experience an apparent continuous incoming communication flow even though the communication flow has actually been switched from endpoint 110 (communication flow 152) to the RTP audio processor 115 (communication flow 154).
In various configurations, the RTP audio processor 115 can function as a communication intermediary between endpoint 110 and endpoint 105, can function as an alternative communication source dynamically used in place of endpoint 110, and can function as a communication source providing content to endpoint 105 in addition to the content provided by endpoint 110.
Audio source 118 can be connected to RTP audio processor 115 via network 138, where communication stream 154 can include content obtained from the audio source 118. The audio source 118 can be a network streaming source, such as an Internet radio source, that can stream content to the RTP audio processor 115 to be included within communication stream 154. For example, music can be played to endpoint 105 via communication stream 154 obtained from audio source 118, whenever a communication participant at endpoint 105 has been placed on hold. The audio source 118 can include a repository of prerecorded audio clips, video clips, and other media files that can be added to the communication stream 154 upon demand. In such an example, the audio source 118 can be a file repository locally available to the RTP audio processor 115. Pre-recorded media files can include, but are not limited to, digitally encoded background noise, pre-recorded messages such as voice-mail messages, canned voice recordings, commonly utilized video segments, audio help and information files, and the like.
It should be appreciated that the arrangements shown in
Networks 130, 135, and 138 can represent any communication mechanism capable of conveying digitally encoded information. Each of the networks 130, 135, and 138 can include a telephony network like a public switched telephone network (PSTN) or a mobile telephone network, a computer network such as a local area network or a wide area network, a cable network, a satellite network, a broadcast network, and the like. Further, each of the networks 130, 135, and 138 can use wireless as well as line based communication pathways.
The various endpoints, components, and networks of system 100 can be implemented in a distributed or centralized fashion. The functionality attributable to the various components of system 100 can be combined or separated in different manners than those illustrated herein. For instance, the audio source 118 and the RTP audio processor 115 can be implemented as a single integrated component in one embodiment of the present invention.
In system 200, session setup information 210 can be exchanged between the audio server 202 and the caller 204. Audio server 202 can then convey start audio flow A information 212 to caller 204, which initiates an audio flow from the audio server 202 to the caller 204. Start audio flow B data 214 can then be conveyed from the caller 204 to the audio server 202, which initiates an audio flow from the caller 204 to the audio server 202.
RTP data 216 for communicating with caller 204 can then be conveyed from the audio server 202 to the RTP audio processor 206. The audio server 202 can convey stream-switch indicator 218 to RTP audio processor 206. In one embodiment, the stream-switch indicator 218 can be conveyed whenever the audio server 202 is conveying silence so that the silence can instead be conveyed from the RTP audio processor 206. The audio server 202 can then halt audio flow A directed to caller 204, as shown by data flow 220. At approximately the same time that the audio flow A is halted (so that the caller 204 does not perceive an interruption in audio) an audio flow C can be started from RTP audio processor 206 to caller 204, as shown by data flow 222. It should be noted that while flow A was halted and audio flow C was being conveyed from the RTP audio processor 206 to the caller 204, the audio flow B still proceeded in an uninterrupted fashion, permitting audio to be conveyed via audio flow B from the caller 204 to the audio server 202.
After a period of time, such as when the period of silence is over and the audio server 202 has content to convey to the caller 204, the audio server 202 can convey switch-back indicator 224 to the RTP audio processor 206. In response, the RTP audio processor 206 can end audio flow C, as shown by data flow 226. The audio server 202 can resume audio flow A at approximately the same time, as shown by data flow 228.
Video, audio, and other media information can continue to be exchanged between the audio server 202 and the caller 204 via audio flows A and B until the communication session is to be terminated. Then, session tear down data 230 can be exchanged between audio server 202 and caller 204, resulting in the communication session ending.
Method 300 can begin in step 305 where an RTP communication session can be established between two endpoints. In step 310, the first endpoint can establish a continuous audio flow with the second endpoint in real or near-real time. This audio flow can be part of a media flow that also includes video and/or graphical information. Additionally, the audio flow can be a unicast or multicast communication flow, or can represent one direction of a full duplex VOIP communication. Regardless, the established audio flow can permit discrete packets containing digitally encoded audio to be exchanged from the first endpoint to the second endpoint.
In step 315, the first endpoint can convey RTP data to an RTP audio processor. The RTP data can include information necessary for the RTP audio processor to establish an audio stream with the second endpoint. In step 320, the RTP audio processor can establish the audio stream. This audio stream can be established in various ways depending upon the configuration in which the RTP audio processor is being used. Regardless of the configuration, however, the RTP audio processor can perform at least one audio processing task using the RTP specification.
In step 325, for example, a determination can be made as to whether the RTP audio processor is to be used as a communication intermediary between the first endpoint and the second endpoint. If the determination of step 325 is no, the method can skip to step 340. Otherwise, the method can progress to step 330.
In step 330, an audio flow can be routed from the first endpoint to the RTP audio processor to the second endpoint. While being used as a communication intermediary, as shown in step 335, the RTP audio processor can perform one or more audio processing tasks upon the audio flow. Illustrative RTP audio processing tasks can include, but are not limited to, packetization and depacketization tasks, compression and decompression tasks, spectral subtraction tasks, echo cancellation tasks, pitch and volume adjustment tasks, noise reduction or cancellation tasks, voice activity detection tasks, RTP monitoring or reporting tasks, and the like. In this manner, resource consuming tasks that would otherwise be consumed by the first endpoint or second endpoint can be offloaded to the RTP audio processor. In one contemplated embodiment, the offloading can occur in a dynamic fashion, whenever available resources of either endpoint become scarce.
In step 340, it can be determined whether the RTP audio processor is to be used to switch the communication flow that is directed to the second endpoint. That is, is the RTP audio data to be used to transmit an audio flow, for at least a period of time, in place of the audio flow that was being provided by the first endpoint. The switching can occur at approximately the same time so that it is transparent from the perspective of the second endpoint. When the determination of step 340 is to switch the communication flow, the method can progress from step 340 to step 345. Otherwise, the method can jump from step 340 to step 365.
In step 345, the RTP audio processor can receive audio flow stream-switch information from the first endpoint. In step 350, the audio flow to the second endpoint can be switched from the first endpoint to the RTP audio processor. In step 355, a switch-back indicator can be detected. In step 360, the audio flow to the second endpoint can be switched from the RTP audio processor to the first endpoint.
Many reasons exist for temporarily switching the audio flow from the first endpoint to the RTP audio processor. One such reason is to save resources of the first endpoint during periods of relative silence, where the RTP audio processor can transmit the silence instead of the first endpoint. Alternatively, the RTP audio processor can have access to previously recorded media files that can be played directly to the second endpoint from the RTP audio processor, as opposed to routing from the RTP audio processor to the first endpoint then to the second endpoint, which would not be an efficient use of computing resources. Further, the RTP audio processor can be linked to a remotely located audio or media flow, such as an event broadcast or pre-existing telephony conference, which can be routed upon demand to the second endpoint.
Occasionally, especially when an additional audio stream is being conveyed via the RTP audio processor, it can be desirable to utilize the RTP audio processor to add an additional audio flow into a pre-existing communication between the first and second endpoints. This additional audio flow can be unidirectionally added so that it is received by a one of the two endpoints, or can be added to communication streams received by both endpoints. This situation is indicated in step 365, where a decision as to whether to add an additional audio flow can be made. When an audio flow is to be added, the method can progress to step 370.
In step 370, the RTP audio processor can obtain audio or other media information from an audio source. In step 375, content from the audio source can be included within the audio stream directed from the RTP audio processor to the second endpoint.
It should be noted that the various operations performed by the RTP audio processor are not mutually exclusive and can be performed in combinations. For example, the RTP audio processor can be used as a communication switch to transmit silence between either or both of the endpoints and can be simultaneously used to add an additional audio flow from an audio source. In another example, the RTP audio processor can be used to perform noise cancellation tasks within both bi-directional audio flows between communicatively linked endpoints while also being used by a voice server (one of the endpoints) to play prerecorded audio files to a caller (another one of the endpoints). Accordingly, the RTP audio processor is a very flexible resource that can be utilized in many situations to enhance RTP based communications and to conserve resources of communication endpoints during RTP based communication sessions.
The present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software may be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
The present invention also may be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
This invention may be embodied in other forms without departing from the spirit or essential attributes thereof. Accordingly, reference should be made to the following claims, rather than to the foregoing specification, as indicating the scope of the invention.
Number | Name | Date | Kind |
---|---|---|---|
5648760 | Kumar | Jul 1997 | A |
6259691 | Naudus | Jul 2001 | B1 |
6526139 | Rousell et al. | Feb 2003 | B1 |
6819678 | Sylvain | Nov 2004 | B2 |
6996094 | Cave et al. | Feb 2006 | B2 |
7007062 | Serenyi et al. | Feb 2006 | B1 |
7035252 | Cave et al. | Apr 2006 | B2 |
7295547 | Oshima et al. | Nov 2007 | B2 |
20010021186 | Ono et al. | Sep 2001 | A1 |
20030043782 | Laursen et al. | Mar 2003 | A1 |
20030081594 | Lee | May 2003 | A1 |
20030182001 | Radenkovic et al. | Sep 2003 | A1 |
20040172255 | Aoki et al. | Sep 2004 | A1 |
20050094628 | Ngamwongwattana et al. | May 2005 | A1 |
20070299939 | Johnston | Dec 2007 | A1 |
Number | Date | Country | |
---|---|---|---|
20060233163 A1 | Oct 2006 | US |