Routing virtual area based communications
Abstract
In association with a virtual area, a first network connection is established with a first network node present in the virtual area and a second network connection is established with a second network node present in the virtual area. Based on stream routing instructions, a stream router is created between the first network node and the second network node. The stream router includes a directed graph of processing elements operable to receive network data, process the received network data, and output the processed network data. On the first network connection, an input data stream derived from output data generated by the first network node is received in association with the virtual area. The input data stream is processed through the stream router to produce an output data stream. On the second network connection, the output data stream is sent to the second network node.
Claims
exact text as granted — not AI-modified1 . A method, comprising:
in association with a virtual area, an intermediate network node establishing a first network connection with a first network node present in the virtual area and establishing a second network connection with a second network node present in the virtual area; based on stream routing instructions, the intermediate network node creating between the first network node and the second network node a stream router comprising a directed graph of processing elements operable to receive network data, process the received network data, and output the processed network data; on the first network connection, the intermediate network node receiving an input data stream derived from output data generated by the first network node in association with the virtual area; the intermediate network node processing the input data stream through the stream router to produce an output data stream; and on the second network connection, the intermediate network node sending the output data stream to the second network node.
2 . The method of claim 1 , wherein the stream routing instructions specify the processing elements and an arrangement of the processing elements, and the creating comprises the intermediate network node instantiating the specified processing elements and assembling the instantiated processing elements into the directed graph in accordance with the specified arrangement.
3 . The method of claim 1 , wherein the stream routing instructions specify configuration parameter values for the processing elements, and the creating comprises the intermediate network node configuring the processing elements with the specified configuration parameter values.
4 . The method of claim 1 , wherein the directed graph comprises: an input processing element receiving the input data stream on an input socket; and an output processing element for sending the output data stream on an output socket different from the input socket.
5 . The method of claim 1 , wherein the directed graph comprises: a decoder processing element for decoding data derived from the input data stream; and an encoder processing element for encoding data derived from the decoded data.
6 . The method of claim 1 , wherein the directed graph comprises a mixing processing element for mixing data with data derived from the input data stream.
7 . The method of claim 1 , wherein the directed graph comprises a recording processing element for storing data derived from the input data stream in a computer-readable medium.
8 . The method of claim 1 , wherein the input data comprises audio data, and the directed graph comprises an audio processing element for processing audio data derived from the input data stream.
9 . The method of claim 1 , wherein the input data comprises video data, and the directed graph comprises a video processing element for processing video data derived from the input data stream.
10 . The method of claim 1 , further comprising:
based on the stream routing instructions, the intermediate network node creating between the first network node and the second network node a second stream router comprising a second directed graph of processing elements operable to receive network data, process the received network data, and output the processed network data on the first network connection, the intermediate network node receiving a second input data stream derived from output data generated by the first network node in association with the virtual area; the intermediate network node processing the second input data stream through the second stream router to produce a second output stream; and on the second network connection, the intermediate network node sending the second output data stream to the second network node
11 . The method of claim 10 , further comprising by the intermediate network node storing definitions of respective channels that logically divide data transported on first and second connections by data stream content type; wherein the receiving comprises receiving the first and second input data streams on the first connection in respective channels according to content types of the first and second input data streams, and the sending comprises sending the first and second output data streams on the second connection in respective channels according to content types of the first and second output data streams.
12 . The method of claim 11 , wherein each of the channel definitions comprises a respective unique content identifier that identifies a respective data stream content type assigned to the respective channel, the receiving comprises receiving the first and second input data streams on respective channels in packets containing respective ones of the content identifiers corresponding to the content types of the first and second input data streams, and the sending comprises sending the first and second output data streams on respective channels in packets containing respective ones of the content identifiers corresponding to the content types of the first and second output data streams.
13 . The method of claim 12 , wherein the first input data stream and the first output data stream are audio content data streams, and the second input data stream and the second output data stream are video content data streams.
14 . The method of claim 10 , wherein at least one of the processing elements is shared by both the first and second data processing routes.
15 . The method of claim 1 , further comprising
in association with the virtual area, the intermediate network node establishing a third network connection with a third network node present in the virtual area; based on the stream routing instructions, the intermediate network node creating between the third network node and the second network node a second directed graph of processing elements operable to receive network data, process the received network data, and output the processed network data; and on the third network connection, the intermediate network node receiving a second input data stream derived from output data generated by the third network node in association with the virtual area.
16 . The method of claim 15 , further comprising:
the intermediate network node processing the second input data stream through the second directed graph to produce a second output stream; and on the second network connection, the intermediate network node sending the second output data stream to the second network node.
17 . The method of claim 15 , wherein the intermediate network node processes the first and second input data streams through the first and second directed graphs to produce a mixed data stream from the first and second data streams, and sends the mixed data stream to the second network node.
18 . The method of claim 15 , wherein the first directed graph and the second directed graph share at least one of the processing elements.
19 . The method of claim 18 , wherein the first directed graph and the second directed graph share a mixing processing element, and the intermediate network node processes data derived from the first and second input data streams through the mixing processing element to produce a mixed data stream.
20 . The method of claim 19 , wherein the first and second directed graphs share an output processing element, and the intermediate network node processes the mixed data stream through the output processing element to produce the output data stream.
21 . The method of claim 20 , wherein the first directed graph comprises a first input processing element for receiving the first input data stream on a first input socket, and the second directed graph comprises a second input processing element for receiving the second input data stream on a second input socket different from the first input socket.
22 . The method of claim 1 , wherein the establishing of the first network connection and the establishing of the second network connection are performed concurrently with data transmission on a peer-to-peer network connection between the first network node and the second network node.
23 . The method of claim 22 , further comprising:
the intermediate network node reporting establishment of each of the first network connection and the second network connection; and based on the reporting of the establishment of each of the first network connection and the second network connection, tearing down the peer-to-peer network connection between the first network node and the second network node and transmitting data between the first and second network nodes on the first and second connections with the intermediate node.
24 . The method of claim 1 , further comprising a third network node respectively establishing a first control session with the first network node, a second control session with the second network node, and a third control session with the intermediate node, wherein on the first, second, and third control sessions the third network node transmits to the first, second, and intermediate network nodes control messages that administer the establishing of the first and second network connections and the transmission of data on the first and second network connections.
25 . The method of claim 24 , wherein each of the control sessions is assigned a respective unique session identifier that is associated with the virtual area, and the third network node communicates the respective session identifiers with the control messages that are sent to the first, second, and intermediate network nodes on the first, second, and third control sessions.
26 . The method of claim 24 , further comprising the third network node sending the stream routing instructions to the intermediate network node on the third control session.
27 . The method of claim 26 , wherein the stream routing instructions specify the processing elements, an arrangement of the processing elements, and configuration parameter values for the processing elements; and the creating comprises the intermediate network node instantiating the specified processing elements, assembling the instantiated processing elements into the directed graph in accordance with the specified arrangement, and configuring the processing elements with the specified configuration parameter values.
28 . The method of claim 26 , further comprising the third network node determining the stream routing instructions based a specification of the virtual area and locations of presence of the first and second network nodes in the virtual area.
29 . The method of claim 28 , wherein the virtual area specification maps references to generic sub-routes to node-type-specific processing element configurations, and the determining comprises the third network node ascertaining the generic sub-routes associated with the locations of presence of the first and second nodes in the virtual area, ascertaining the node-type-specific element configurations corresponding to node types of the first and second network nodes, and creating the stream routing instructions based on the ascertained node-type-specific element configurations.
30 . The method of claim 26 , further comprising the third network node sending a source stream router specification to the first network node and a sink stream router specification to the second network node; wherein the source stream router specification defines a source stream router comprising a directed graph of processing elements operable to process local data generated by the first network node and output the processed local data to the intermediate network node on the first network connection, and the sink stream router specification defines a sink stream router comprising a directed graph of processing elements operable to receive network data from the intermediate node on the second network connection and process the received network data into local data.
31 . The method of claim 30 , wherein the stream routing instructions and the source and sink stream router specifications reference a common specification of processing element definitions.
32 . The method of claim 24 , wherein the third network node is a server network node.
33 . The method of claim 24 , wherein the third network node is a network switch.
34 . The method of claim 33 , further comprising the network switch forwarding realtime data stream packets between network nodes based at least in part on a routing table comprising network topology information describing routes to network destinations.
35 . The method of claim 1 , wherein the intermediate network node is present in the virtual area.
36 . The method of claim 35 , wherein the intermediate network node is associated with an object that represents a communicant in the virtual area.
37 . The method of claim 1 , further comprising the intermediate network node determining public network addresses and ports of network address translators through which the first and second network nodes respectively operate, and transmitting the public network addresses and ports to the first and second network nodes.
38 . The method of claim 37 , further comprising the first and second network nodes establishing a peer-to-peer network connection with one another based on the transmitted public network addresses and ports.
39 . Apparatus, comprising:
a memory storing processor-readable instructions; and a processor coupled to the memory, operable to execute the instructions, and based at least in part on the execution of the instructions operable to perform operations comprising
in association with a virtual area, establishing a first network connection with a first network node present in the virtual area and establishing a second network connection with a second network node present in the virtual area;
based on stream routing instructions, creating between the first network node and the second network node a stream router comprising a directed graph of processing elements operable to receive network data, process the received network data, and output the processed network data;
on the first network connection, receiving an input data stream derived from output data generated by the first network node in association with the virtual area;
processing the input data stream through the stream router to produce an output data stream; and
on the second network connection, sending the output data stream to the second network node.
40 . At least one non-transitory computer-readable medium comprising processor-readable instructions which, when executed by a processor, causes the processor to perform operations comprising:
in association with a virtual area, establishing a first network connection with a first network node present in the virtual area and establishing a second network connection with a second network node present in the virtual area; based on stream routing instructions, creating between the first network node and the second network node a stream router comprising a directed graph of processing elements operable to receive network data, process the received network data, and output the processed network data; on the first network connection, receiving an input data stream derived from output data generated by the first network node in association with the virtual area; processing the input data stream through the stream router to produce an output data stream; and on the second network connection, sending the output data stream to the second network node.Join the waitlist — get patent alerts
Track US2013212228A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.