Audio and video conferencing enables remote participants who are at different locations to participate in a meeting and other collaborative events. In a typical implementation, each conference participant is equipped with a communication device. For example, in an audio conference, each conference participant may have a public switched telephone network (“PSTN”) capable telephone or a voice over Internet Protocol (“VoIP”) capable device. In a video conference, each conference participant may have a computer-based video conferencing system that includes a video camera, a microphone, a display device, and a speaker.
In a basic implementation, a first video conferencing system of a first conference participant captures the video and audio of the first conference participant using the video camera and microphone, respectively. The first video conferencing system then transmits the video and audio across a network to a second video conferencing system of a second conference participant. Upon receiving the video and audio from the first conference participant, the second video conferencing system presents the video on the display device and outputs the audio to the speaker for the second conference participant. In more sophisticated implementations, the video conferencing system may display multiple video feeds from different conference participants in separate windows. An audio conferencing system is similar to the video conferencing system with the exception that video is not captured by a video capture device.
To conduct a conference, a conferencing system typically routes video and/or audio streams from sources (i.e., the conference participants sending the stream) to sinks (i.e., the conference participants receiving the stream). To this end, a conferencing system may provide a routing table that specifies which sinks are connected to which sources. Upon receiving content from various endpoints (e.g., conference participants), the conferencing system may determine which sinks are to receive media content from which sources based on the routing table. For each combination of sources from which a sink is to receive media content, the conferencing system may mix the media content from that combination of sources. The conferencing system then sends the mixed media content to the relevant sinks.
One issue that can arise with conventional routing tables is their inflexibility. In particular, once a routing table has been established for a given conference containing various sources and sinks, streams between these sources and sinks are routed according the routing table. External entities generally do not have the ability to alter the routing table for specific applications. In some implementations, the routing tables may even be hard-coded and unchangeable.
It is with respect to these considerations and others that the disclosure made herein is presented.
Technologies are described herein for providing customized media routing for a conference. In particular, a generic and efficient mechanism is provided herein that supports customized routing in a single conference between various sources and sinks. Even after a routing table has been established for a given conference, a trusted external application can utilize the mechanism to alter the routing table as needed to achieve specific results. Further, a conference participant may alter her own entries in the routing table to generate customized media streams.
According to one aspect presented herein, a computer program is provided for customizing media routing in a conference. The computer program receives a request to modify a routing table. The routing table specifies connections between a plurality of sources and a plurality of sinks. The computer program determines whether the request to modify the routing table is permitted. In particular, the request to modify the routing table may be permitted if the request is transmitted from a trusted external application. The request to modify the routing table may also be permitted if the request is transmitted from a conference participant to modify her own routing table entries. Upon determining that the request to modify the routing table is permitted, the computer program modifies the routing table according to the request.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended that this Summary be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure.
The following detailed description is directed to technologies for providing customized media (e.g., audio and/or video routing) for a conference. While the subject matter described herein is presented in the general context of program modules that execute in conjunction with the execution of an operating system and application programs on a computer system, those skilled in the art will recognize that other implementations may be performed in combination with other types of program modules. Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the subject matter described herein may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
In the following detailed description, references are made to the accompanying drawings that form a part hereof, and which are shown by way of illustration specific embodiments or examples. Referring now to the drawings, in which like numerals represent like elements through the several figures, aspects of a computing system and methodology for customizing media routing for a conference will be described.
The network architecture 100 includes an announcement service 102, a VoIP device 104, an audio/video multipoint control unit (“AVMCU”) 106, a PSTN gateway 108, a first PSTN device 110A, and a second PSTN device 110B. The first PSTN device 110A and the second PSTN device 110B (collectively referred to as PSTN devices 110) communicate with the PSTN gateway 108 via PSTN links 112A-112B. Examples of the PSTN devices 110 include a PSTN telephone, a cellular phone, and the like. In one embodiment, the PSTN gateway 108 translates outgoing PSTN communications transmitted across the PSTN links 112A-112B into VoIP communications. The PSTN gateway 108 then transmits the translated VoIP communications across a first VoIP link 114A to the AVMCU 106. The PSTN gateway 108 may also translate incoming VoIP communications into PSTN communications, which can then be audibly heard by a first conference participant 116A and a second conference participant 116B through the PSTN devices 110.
The VoIP device 104 communicates with the AVMCU 106 via a second VoIP link 114B, and the announcement service 102 communicates with the AVMCU 106 via a third VoIP link 114C. Examples of the VoIP device 104 include a VoIP telephone and a computer executing a VoIP application program that enables a user to communicate across a suitable network using a microphone and speakers. A third conference participant 116C may operate the VoIP device 104. In one embodiment, the announcement service 102 provides an audible entry/exit announcement 118 (hereinafter referred to as audible announcement 118) as the conference participants 116A-116C (collectively referred to as conference participants 116) enter and exit a given conference. The audible announcement 118 may be a simple tone or a more complex audio message. For example, the audible announcement 118 may announce the name of the conference participant entering the conference.
In one embodiment, the AVMCU 106 is a conferencing server that administers the conference and supports communications between the conference participants, such as the VoIP device 104 and the PSTN devices 110. In particular, the AVMCU 106 may route communications between conference participants 116 according to a routing table 120. The AVMCU 106 may support, among other media types, instant messaging, web conferencing, audio/visual conferencing, and telephony conferencing. According to embodiments, the AVMCU 106 integrates content in these multiple media types into a single conference stream, which is then provided to conference participants in a seamless manner by utilizing appropriate protocols for each media type. According to further embodiments, the AVMCU 106 may also route communications based on the routing table 120 as modified by trusted sources, such as the announcement service 102, or by conference participants, such as the conference participants 116.
An illustrative implementation of the routing table 120 is illustrated in
As illustrated in
Thus, the routing table 120A specifies that input from the microphone on a given device is routed to the speakers of the other devices in the conference. However, the routing table 120A further specifies that input from the microphone on a given device is not routed to the speakers on the same device. For example, the routing table 120A specifies that input into the microphone on the first PSTN device 110A is routed to the speakers on the second PSTN device 110B and the VoIP device 104. The routing table 200 further specifies that input into the microphone on the first PSTN device 110A is not echoed back to the speakers on the first PSTN device 110A.
Additionally, the fourth source 204D is connected to each of the sinks 202 according to entries 208G-208I. Thus, the routing table 120A specifies that output, such as the audible announcement 118, from the announcement service 102 is routed to the VoIP device 104 and the PSTN devices 110. As previously mentioned, the audible announcement 118 may be played each time a new conference participant enters the conference or an existing conference participant exits the conference.
Referring again to
The announcement service 102 may transmit a routing modification request to the AVMCU 106. The AVMCU 106 may be configured to accept routing modification requests only from trusted services. This prevents unauthorized services from successfully implementing malicious routing modification requests at the AVMCU 106. In one embodiment, the routing modification request may include a flag specifying that the service transmitting the routing modification request is a trusted service. For example, the flag may only be set by users with administrative privileges associated with the AVMCU 106.
In one embodiment, the routing modification request to the AVMCU 106 requests that communications from the announcement service 102 be routed to only the PSTN devices 110 and not to the VoIP device 104. Referring now to
Referring again to
In one embodiment, the announcement service 102 may be included in the conference containing the conference participants 116 in response to one of the conference participants 116 requesting notification by way of the audible announcement 118. For example, when the first conference participant 116A transmits a join request to the AVMCU 106 to join a conference, the first conference participant 116A may select an option to receive the audible announcement 118. Upon determining that the user has selected the option to receive the audible announcement 118, the AVMCU 106 may access a services directory 122 to retrieve an address of record (“AOR”) corresponding to a service associated with the selected option. In one embodiment, the services directory 122 is the ACTIVE DIRECTORY directory service from MICROSOFT CORPORATION. In the example of
It should be appreciated that the announcement service 102 described above with respect to
An illustrative implementation of a routing modification request for modifying the routing table 120 is shown below. The routing modification request may be transmitted from the announcement service 102 to the AVMCU 106. The implementation is shown in extensible markup language (“XML”) but may be similarly expressed in other markup and programming languages.
Line one specifies that the above code pertains to a modification routing request. Line three specifies a uniform resource identifier (“URI”) associated with the announcement service 102, which originated the request. Line four specifies the URI associated with the AVMCU 106, which received the request. Line eight specifies the beginning of the modifyEndpointMedia command, which enables the announcement service 102 to customize routing of communications from the announcement service 102.
Customized routing involves specifying a source that transmits a communication and the corresponding sinks that receive the communication from the source. To this end, lines eleven and twelve identify a given source. Lines fourteen and fifteen specify that the media type of the communications from the source is audio. The command “to-mixer” in line sixteen specifies that outgoing communications from the source identified in lines eleven and twelve are routed to sinks identified in lines nineteen and twenty. Line nineteen identifies a first sink, and line twenty identifies a second sink. With respect to lines nineteen and twenty, the command “wire” specifies the sinks to which communications are routed from the source identified at lines eleven and twelve.
An illustrative implementation of a routing modification response indicating whether the routing modification request was accepted by the AVMCU 106 is shown below. In particular, AVMCU 106 may transmit the routing modification response to the announcement service 102. Alternatively, if a conference participant initiated the routing modification request, then the AVMCU 106 may transmit the routing modification response to the conference participant.
Line one specifies that the above code pertains to a routing modification response. Line eight provides an acknowledgement indicating that the request was successfully accepted. If, on the other hand, the request was not accepted, then line eight may show display another indicator, such as “fail” instead of “success”. The remainder of the routing modification response repeats much of the same code included in the routing modification request that was previously described.
An illustrative implementation of another routing modification request transmitted from the announcement service 102 to the AVMCU 106 is shown below. While the previous routing modification request shown above provides adding new relationships between sources and sinks to the routing table 120, this routing modification request provides for removing relationships between sources and sinks from the routing table 120.
Line nineteen identifies a sink that is removed from the modified routing table. With respect to line nineteen, the command “unwire” may remove a sink that was previous added using the “wire” command.
An illustrative implementation of a routing modification request originating from one of the conference participants 116 is shown below. In this routing modification request, a conference participant is requesting to be a sink. That is, a conference participant is requesting that communications from other sources be routed to the conference participant.
Line eight includes the “addEndpointMedia” command, which generates a media streams from other sources. In this case, lines eleven and twelve identify the originator of the routing modification request as a sink to which communications are routed. Line twenty identifies a source from which the communications are routed. Further, lines fourteen and fifteen specify that the media type of the communications is video. In line seventeen, the command “from-mixer”, in contrast with “to-mixer” described above, specifies that incoming communications from the source identified in line twenty are routed to the sink identified in lines eleven and twelve.
Turning now to
Referring to
At operation 306, the AVMCU 106 determines whether the service that transmitted the routing modification request is a trusted service. For example, a flag in the routing modification request may indicate that the service is a trusted service. If the service is a trusted service, then the routine 300 proceeds to operation 310. If the service is not a trusted service, then the routine 300 proceeds to operation 314.
At operation 310, the AVMCU 106 determines whether the conference participant who transmitted the routing modification request is modifying her own entries in the routing table 120. For security reasons, a conference participant may be prohibited from modifying entries in the routing table 120 that are associated with other users. If the conference participant is modifying her own entries in the routing table 120, then the routine 300 proceeds to operation 310. If the conference participant is not modifying her own entries in the routing table 120, then the routine 300 proceeds to operation 314.
At operation 310, the AVMCU 106 accepts and implements the routing modification request by modifying the routing table 120 according to the routing modification request. For example, the request may specify a new connection between a source and a sink, and the routing table 120 may be modified to include the new connection. Upon accepting the routing modification request, the routine 300 proceeds to operation 312, where the AVMCU 106 transmits, to the originator of the routing modification request (i.e., the service or the conference participant), a routing modification response indicating that the routing modification request is accepted.
At operation 314, the AVMCU denies the routing modification request. Upon denying the routing modification request, the routine 300 proceeds to operation 316, where the AVMCU 106 transmits, to the originator of the routing modification request, a routing modification response indicating that the routing modification is denied.
Referring now to
By way of example, and not limitation, computer-readable media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. For example, computer-readable media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, digital versatile disks (“DVD”), HD-DVD, BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer 400.
According to various embodiments, the computer 400 may operate in a networked environment using logical connections to remote computers through a network 418. The computer 400 may connect to the network 418 through a network interface unit 410 connected to the bus 406. It should be appreciated that the network interface unit 410 may also be utilized to connect to other types of networks and remote computer systems. The computer 400 may also include an input/output controller 408 for receiving and processing input from a number of input devices (not shown), including a keyboard, a mouse, a microphone, and a game controller. Similarly, the input/output controller 408 may provide output to a display or other type of output device (not shown).
Based on the foregoing, it should be appreciated that technologies for providing customized media routing in a conference are presented herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological acts, and computer readable media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts and mediums are disclosed as example forms of implementing the claims.
The subject matter described above is provided by way of illustration only and should not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.