# US 7,613,767 B2 · Resolving a distributed topology to stream data

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,613,767 B2
- Document ID: US7613767B2
- Status: Granted
- Kind: B2
- Application number: 10/618,335
- Filed: 2003-07-11
- Published: 2005-01-27
- Granted: 2009-11-03
- Earliest claimed: 2003-07-11
- Assignees: Microsoft Corporation
- Inventors: Kirt A. Debique; Thomas A. Thornton; Troy D. Batterberry; Nadim Y. Abdo; Alexandre V. Grigorovitch; Dale A. Sather; Roland Y. Ayala; Eduardo P. Oliveira
- Web page: https://patentgrep.com/patent/US7613767B2

## CPC

- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- H04L 65/612: for unicast
- H04L 65/765: {intermediate}
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 69/24: Negotiation of communication capabilities
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A distributed media session is described, which when executed, resolves a distributed topology from a request to stream data from a source device to a client device over a network. The distributed topology references a plurality of software components that, when executed, fulfill the request. At least one of the plurality of software components is executable on each of the source device and the client device.

## Claims

### Claim 1

A method, comprising:
requesting data to be streamed from a source device to a client device over a network;
building, by a parent Distributed Media Session (“DMS”), a distributed software infrastructure from an optimized distributed topology, the built distributed software infrastructure configured to stream data to the client device from the source device without rendering the data by the source device, the parent DMS providing a federated mechanism for control;
resolving, by the parent DMS, a distributed topology from the request, wherein:
the distributed topology references a plurality of software components that, when executed, fulfill the request;
at least one of the plurality of software components is executable on each of:
the source device; and
the client device,
instantiating, by the parent DMS, one or more child DMS; and
delegating control of one or more of the plurality of software components of the distributed software infrastructure to the one or more child DMS.

### Claim 2 (depends on 1)

A method as described in claim 1, wherein the resolving further comprises:
discovering the capabilities of the client device to render a stream of data;
discovering the capabilities of the source device to stream data that is to be rendered, the discovering the capabilities of the client device and the source device by querying a look-up table that specifies a particular capability; and
deriving the distributed topology from both the client device capabilities and the source device capabilities.

### Claim 3 (depends on 1)

A method as described in claim 1, wherein the distributed topology is selected from the group consisting of:
a remote sink distributed topology;
a remote source distributed topology; and
a third party distributed topology.

### Claim 4 (depends on 1)

A method as described in claim 1, further comprising building a distributed software infrastructure from the distributed topology, wherein the distributed software infrastructure includes the plurality of software components.

### Claim 5 (depends on 1)

A method as described in claim 1, wherein:
the request also requests streaming data from an additional source device to the client device; and
the resolving resolves the distributed topology such that the plurality of software components, when executed, fulfills the request to stream data from each of the source device and the additional source device, respectively, to the client device.

### Claim 6 (depends on 1)

A method as described in claim 1, wherein:
the request also requests streaming data from the source device to an additional client device; and
the resolving resolves the distributed topology such that the plurality of software components, when executed, fulfills the request to stream data from the source device to each of the client device and the additional client device.

### Claim 7 (depends on 1)

A method as described in claim 1, wherein the distributed software infrastructure includes the parent DMS, whereby:
the at least one software component that is executable on the source device is controllable by the parent DMS; and
the at least one software component that is executable on the client device is controllable by the parent DMS.

### Claim 8 (depends on 1)

A method as described in claim 1, wherein the resolving is executed without user intervention on a device selected from the group consisting of:
the source device;
the client device; and
a third party device.

### Claim 9 (depends on 1)

One or more computer-readable storage media comprising computer-executable instructions that, when executed, perform the method as recited in claim 1.

### Claim 10

A method, comprising:
receiving a request to stream data from a source device to a client device over a network; and
resolving, by a parent Distributed Media Session (“DMS”), a distributed topology that references software components to fulfill the request, the parent DMS providing a federated mechanism for control, wherein the distributed topology is resolved from:
capabilities of the client device to render a stream of data; and
capabilities of the source device to stream data that is to be rendered;
building, by the parent DMS, a distributed software infrastructure from an optimized distributed topology, the built distributed software infrastructure configured to stream data to the client device from the source device without rendering the data by the source device, and building from the distributed topology a distributed software infrastructure that includes the referenced software components, wherein at least one of the software components is executable on each of:
the source device; and
the client device, and
instantiating, by the parent DMS, one or more child DMS; and
delegating control of the referenced software components included within the distributed software infrastructure to the one or more child DMS.

### Claim 11 (depends on 10)

A method as described in claim 10, wherein the distributed topology is selected from the group consisting of:
a remote sink distributed topology;
a remote source distributed topology; and
a third party distributed topology.

### Claim 12 (depends on 10)

A method as described in claim 10, wherein the resolving further comprises:
discovering the capabilities of the client device to render a stream of data;
discovering the capabilities of the source device to stream data that is to be rendered, the discovering the capabilities of the client device and the source device by querying a look-up table that specifies a particular capability; and
deriving a distributed topology from the capabilities of the client device and the capabilities of the source device, wherein the distributed topology references the software components.

### Claim 13 (depends on 10)

A method as described in claim 10, wherein the distributed topology references the parent DMS such that:
the at least one software component that is executable on the source device is controllable by the parent DMS; and
the at least one software component that is executable on the client device is controllable by the parent DMS.

### Claim 14 (depends on 10)

A method as described in claim 10, wherein the receiving and the resolving are executed without user intervention on a device selected from the group consisting of:
the source device;
the client device; and
a third party device.

### Claim 15 (depends on 10)

One or more computer-readable media comprising computer-executable instructions that, when executed, perform the method as recited in claim 10.

### Claim 16

A method, comprising:
discovering the capabilities of a client device to render a stream of data;
discovering the capabilities of a source device to stream data that is to be rendered, the discovering the capabilities of the client device and the source device by querying a look-up table that specifies a particular capability;
building, by a parent Distributed Media Session (“DMS”), a distributed software infrastructure from an optimized distributed topology, the built distributed software infrastructure configured to stream data to the client device from the source device without rendering the data by the source device, the parent DMS providing a federated mechanism for control;
deriving, by the parent DMS, a distributed topology from the capabilities of the client device and the capabilities of the source device, wherein:
the distributed topology references a plurality of software components to fulfill the request; and
at feast one of the software components referenced by the distributed topology is executable on each of:
the source device; and
the client device, and
instantiating, by the parent DMS, one or more child DMS; and
delegating control of one or more of the referenced plurality of software components to the one or more child DMS.

### Claim 17 (depends on 16)

A method as described in claim 16, wherein the distributed topology is selected from the group consisting of:
a remote sink distributed topology;
a remote source distributed topology; and
a third party distributed topology.

### Claim 18 (depends on 16)

A method as described in claim 16, further comprising building from the distributed topology a distributed software infrastructure that includes the software components.

### Claim 19 (depends on 16)

A method as described in claim 16, wherein:
the discovering of the capabilities of the client device further comprises examining the client device to find a software component which renders a stream of data; and
the discovering of the capabilities of the source device further comprises examining the source device to find a software component which streams data.

### Claim 20 (depends on 16)

A method as described in claim 16, wherein the look-up table contains:
the capabilities of the client device to render the stream of data; and
the capabilities of the source device to stream data that is to be rendered.

### Claim 21 (depends on 16)

A method as described in claim 16, wherein the distributed topology references the parent DMS that provides a federated mechanism for control such that:
the at least one software component that is executable on the source device is controllable by the parent DMS; and
the at least one software component that is executable on the client device is controllable by the parent DMS.

### Claim 22 (depends on 16)

A method as described in claim 16, wherein the receiving and the resolving are executed without user intervention on a device selected from the group consisting of:
the source device;
the client device; and
a third party device.

### Claim 23 (depends on 16)

One or more computer-readable media comprising computer-executable instructions that, when executed, perform the method as recited in claim 16.

### Claim 24

A method, comprising:
receiving a request to stream data from a source device to a client device;
discovering the capabilities of the client device to render a stream of data;
discovering the capabilities of the source device to stream data that is to be rendered, the discovering the capabilities of the client device and the source device by querying a look-up table that specifies a particular capability;
deriving, by a parent Distributed Media Session (“DMS”), a distributed topology to fulfill the request from the capabilities of the client device and the capabilities of the source device wherein the distributed topology references a plurality of software components, the parent DMS providing a federated mechanism for control;
building, by the parent DMS, from the distributed topology a distributed software infrastructure, wherein the distributed software infrastructure includes the software components referenced by the distributed topology;
building, by the parent DMS, a distributed software infrastructure from an optimized distributed topology, the built distributed software infrastructure configured to stream data to the client device from the source device to the client device without rendering the data by the source device;
instantiating, by the parent DMS, one or more child DMS;
delegating control of one or more of the plurality of software components referenced by the distributed topology to the one or more child DMS;
streaming the data from the source device to the client device; and
rendering the data by the client device.

### Claim 25

A parent distributed media session (“DMS”), comprising
a software component residing on a storage medium having instructions that when executed, directs acts comprising:
resolving, by the DMS that provides a federated mechanism for control, a distributed topology that references a plurality of software components that, when executed, fulfill a request to stream data from a source device to a client device; wherein the resolving further comprises optimizing the distributed topology such that the distributed software infrastructure which is built from the distributed topology is configured to stream data from the source device to the client device without rendering the data by the source device before the data is streamed;
building, from the distributed topology, a distributed software infrastructure that includes the software components, wherein at least one of the software components is executable on each of:
the source device; and
the client device,
instantiating, by the parent DMS, one or more child DMS; and
delegating control of one or more of the plurality of software components to the one or more child DMS.

### Claim 26 (depends on 25)

The parent DMS as described in claim 25, wherein the resolving further comprises:
discovering the capabilities of the client device to render a stream of data;
discovering the capabilities of the source device to stream data that is to be rendered, the discovering the capabilities of the client device and the source device by querying a look-up table that specifies a particular capability; and
deriving the distributed topology from the capabilities of the client device and the capabilities of the source device.

### Claim 27 (depends on 25)

The parent DMS as described in claim 25, wherein the distributed topology is selected from the group consisting of:
a remote sink distributed topology;
a remote source distributed topology; and
a third party distributed topology.

### Claim 28 (depends on 25)

The parent DMS as described in claim 25, wherein the building further comprises supplying at least one additional software component which is referenced by the distributed topology.

### Claim 29

A computer-readable medium comprising computer-executable instructions residing on a storage medium that, when executed, direct a computing device to perform acts comprising:
resolving, by a parent Distributed Media Session (“DMS”) and without user intervention, a distributed topology that references a plurality of software components that, when executed, stream data from a source device to a client device over a network;
building, by the parent DMS, a distributed software infrastructure from an optimized distributed topology, the built distributed software infrastructure configured to stream data to the client device from the source device to the client device without rendering the data by the source device; wherein at least one of the plurality of software components is executable on each of:
the source device; and
the client device,
instantiating, by the parent DMS, one or more child DMS; and
delegating control of one or more of the plurality of software components to the one or more child DMS.

### Claim 30 (depends on 29)

A computer-readable medium as described in claim 29, wherein the resolving further comprises:
discovering the capabilities of the client device to render a stream of data;
discovering the capabilities of the source device to stream data that is to be rendered, the discovering the capabilities of the client device and the source device by Querying a look-up table that specifies a particular capability; and
deriving the distributed topology from the capabilities of the client device and the capabilities of the source device.

### Claim 31 (depends on 29)

A computer-readable medium as described in claim 29, wherein the distributed topology is selected from the group consisting of:
a remote sink distributed topology;
a remote source distributed topology; and
a third party distributed topology.

### Claim 32 (depends on 29)

A computer-readable medium as described in claim 29, further comprising building a distributed software infrastructure from the distributed topology.

### Claim 33

A computer-readable storage medium comprising computer-executable instructions that, when executed, direct a computing device to perform acts comprising:
discovering the capabilities of a client device to render a stream of data;
discovering the capabilities of a source device to stream data that is to be rendered, the discovering the capabilities of the client device and the source device by querying a look-up table that specifies a particular capability;
deriving, by a parent Distributed Media Session (“DMS”) and without user intervention, a distributed topology from both the capabilities of the client device and the capabilities of the source device, wherein:
the distributed topology references a plurality of software components that, when executed, stream data, without rendering the data, from the source device to the client device; and
at least one of the plurality of software components referenced by the distributed topology is executable on each of:
the source device; and
the client device,
instantiating, by the parent DMS, one or more child DMS; and
delegating control of one or more of the plurality of software components to the one or more child DMS.

### Claim 34 (depends on 33)

A computer-readable medium as described in claim 33, further comprising building from the distributed topology a distributed software infrastructure that includes the plurality of software components.

### Claim 35

A system, comprising:
a source device that is operable to stream data to be rendered;
a client device that is operable to render a stream of data; and
a parent distributed media session (“DMS”) which when executed, causes actions to be performed including:
resolving, by the parent DMS, a distributed topology that references a plurality of software components that, when executed, stream data from the source device to the client device over a network;
building, by the parent DMS, from the distributed topology a distributed software infrastructure that includes the software components, wherein the building further comprises building the distributed software infrastructure from an optimized distributed topology, the built distributed software infrastructure configured to stream data to the client device from the source device without rendering the data by the source device, wherein at least one of the software components is executable on each of:
the source device; and
the client device,
instantiating one or more child DMS; and
delegating control of one or more of the plurality of software components to the one or more child DMS.

### Claim 36 (depends on 35)

A system as described in claim 35, wherein the source device is selected from the group consisting of:
a computing device which is locally connected to a source peripheral device; and
a network-ready device that is operable to stream data that is to be rendered.

### Claim 37 (depends on 35)

A system as described in claim 35, wherein the client device is selected from the group consisting of:
a computing device which is locally connected to a rendering device; and
a network-ready device suitable for rendering data.

### Claim 38 (depends on 35)

A system as described in claim 35, wherein the resolving further comprises:
discovering the capabilities of the client device to render a stream of data;
discovering the capabilities of the source device to stream data that is to be rendered, the discovering the capabilities of the client device and the source device by querying a look-up table that specifies a particular capability; and
deriving the distributed topology from the capabilities of the client device and the capabilities of the source device.

### Claim 39 (depends on 35)

A system as described in claim 35, wherein the distributed topology is selected from the group consisting of:
a remote sink distributed topology;
a remote source distributed topology; and
a third party distributed topology.

### Claim 40 (depends on 35)

A system as described in claim 35, wherein the building further comprises supplying at least one software component that is referenced by the distributed topology.

### Claim 41 (depends on 35)

A system as described in claim 35, wherein the execution of the parent DMS is performed by one of:
the source device;
the client device; and
a third party device.

### Claim 42

A system, comprising:
a source device which includes a software component that, when executed by the source device, streams data that is to be rendered;
a client device which includes a software component that, when executed by the client device, renders a stream of data; and
a parent distributed media session (“DMS”), which when executed by either the source device or the client device, provides a federated mechanism for control of:
the software component that, when executed by the source device, streams data without rendering the data that is to be rendered; and
the software component that, when executed by the client device, renders a stream of data,
the parent DMS instantiating one or more child DMS and delegating control of the software component to the one or more child DMS.

### Claim 43 (depends on 42)

A system as described in claim 42, wherein the source device is selected from the group consisting of:
a computing device which is locally connected to a source peripheral device; and
a network-ready device that is operable to stream data that is to be rendered.

### Claim 44 (depends on 42)

A system as described in claim 42, wherein the client device is selected from the group consisting of:
a computing device which is locally connected to a rendering device; and
a network-ready device suitable for rendering data.
