# Patent

## Title
Multiple media device infrastructure

## Abstract

Described are techniques for establishing communication between media devices and enabling portions of content to be provided using one or more of the media devices. Data indicative of the transport functionality for the media devices and services available on the media devices may be used to determine one or more media devices suitable for the presentation of content. Control information may be provided to the media device(s) to control presentation of the portions of the content.

## Background
PRIORITY
This application is a continuation of, and claims priority to, pending U.S. patent application Ser. No. 13/732,873 filed on Jan. 2, 2013, entitled “Multiple Media Device Infrastructure.” The entirety of this previously filed application is hereby incorporated by reference.


BACKGROUND
A wide variety of media devices are available for consumers to use for the consumption of an ever growing selection of content. These media devices may include televisions, tablet computers, personal computers, electronic book readers, gaming consoles, set-top boxes, media players, in-vehicle entertainment systems, portable media players, smartphones, and so forth. The content presented by these media devices may include audio, video, electronic books, games, and so forth. The content may be downloaded or streamed from a content provider to the media device.
Users may add or remove different media devices into an environment over time. For example, users may enter a living room with a smartphone or tablet computer, add a Blu-ray or other media player to a home entertainment system, and so forth. Traditional mechanisms for adding or removing media devices to allow for interaction between the media devices may result in an adverse user experience.



BRIEF DESCRIPTION OF DRAWINGS
FIG. 1 is an illustrative system of a multiple media device system in which various services of the media devices may be discovered and shared.
FIG. 2 illustrates a block diagram of a media device configured to support the multiple media device system.
FIG. 3 illustrates a block diagram of a communication module configured to support the multiple media device system.
FIG. 4 illustrates a schematic of a route map which may be used by the communication module to establish communications between the media devices of the system.
FIG. 5 illustrates a scenario of discovering and connecting media devices using the multiple media device system.
FIG. 6 illustrates a scenario of providing content direct sharing between devices in the system.
FIG. 7 illustrates a scenario of initiating presentation of content on another device in the system.
FIG. 8 is a flow diagram of a process of registering a service with a media device in the system.
FIG. 9 is a flow diagram of a process of discovering services available from media devices in the system.
FIG. 10 is a flow diagram of a process of establishing a connection between media devices in the system.



Certain implementations and embodiments will now be described more fully below with reference to the accompanying figures, in which various aspects are shown. However, various aspects may be implemented in many different forms and should not be construed as limited to the implementations set forth herein. Like numbers refer to like elements throughout.
DETAILED DESCRIPTION
Content may be consumed, processed, distributed, and so forth by groups of two or more media devices. These media devices may include televisions, tablet computers, personal computers, electronic book readers, gaming consoles, set-top boxes, media players, in-vehicle entertainment systems, portable media players, tablet computers, smartphones, and so forth. The content may include audio, video, electronic books, games, and so forth. The content may be downloaded or streamed from a content provider for consumption, processing, storage, and so forth on a media device.
A system for the presentation of the content may be made up of more than one media device. For example, the presentation may involve a tablet computer providing an interactive user interface using a touch screen and display while a television provides imagery and an audio video receiver (“AVR”) provides sound output.
Traditionally user intervention has been called for when adding or removing media devices from the system. However, this user intervention may result in an adverse user experience by requiring a series of user actions to establish communication between the media devices.
Described in this disclosure are methods and systems for providing discovery of media devices by one another, and the services supported by those media devices. Once discovered, connections may be established between media devices, allowing for the distribution, presentation, control, and so forth of the content among the media devices.
Each media device may include a communication module. The communication module is configured to discover other media devices and the services they support and provide a framework for establishing and using connections with the other media devices. The connections may be authenticated, encrypted, and so forth.
The communication module may be configured to operate in conjunction with a content direct sharing module which sends a media stream to a receiving media device. For example, the content direct sharing module uses connections maintained by the communication module to send audio and video data from a tablet computer to a television for presentation.
The connections maintained by the communication module may be used to send media presentation data to a receiving media device. The receiving media device uses the media presentation data to retrieve the content for presentation from another location such as a server on a local area network (“LAN”) or a wide area network (“WAN”). The media presentation data may include an address and content identifier, which when processed by the receiving media device, initiates a transfer from a server to the receiving media device.
The connection module may be implemented as a software stack executing on the media devices in the system. The connection module on a first media device may differ from the connection module on a second media device. For example, the first media device may include a transport module configured to provide secure sockets over Internet Protocol while the second media device may not. The media devices may include the content direct sharing module, the device controller module, or both.
By providing the communication module, the content direct sharing module, and the device controller module on media devices, the system enhances the user experience. Media devices entering the environment with their associated services may be readily added or removed, and content may be easily shared among those media devices.
Illustrative System
FIG. 1 is an illustrative system 100 for providing a multiple media device infrastructure in which various services of the media devices may be discovered and shared. As used in this disclosure, services are modules or groups of instructions which, when executed by a processor, provide a particular set of functionalities. For example, a video streaming service may be configured to participate in a streaming session with a content provider and output video suitable for presentation on a display.
A user 102 is depicted with several media devices 104(1), 104(2), . . . , 104(D). While a single user 102 is shown, more than one user 102 may be present. The media devices 104 are configured to present, store, manipulate, or otherwise participate in the consumption of content 106. The media devices 104 may include televisions, tablet computers, personal computers, electronic book readers, gaming consoles, set-top boxes, media players, in-vehicle entertainment systems, portable media players, smartphones, and so forth.
The media devices 104 may execute on one or more services. These services may be configured to interact with the content 106 by receiving and processing the content 106 for presentation, generating a stream of content for presentation, providing various functionality, and so forth. The media devices 104 are discussed below in more detail with regard to FIG. 2. The content 106 may include audio, video, electronic books, games, and so forth.
The media devices 104 include a communication module 108. The communication module 108 is configured to support a framework within which availability of different services on different media devices 104 may be distributed and connections between those media devices 104 may be established. These connections may be used to send, receive, control, or otherwise interact with the content 106. The communication module 108 is discussed in more detail below with regard to FIG. 3.
These connections maintained by the communication module 108 may use one or more local area networks (“LANs”) 110. The LANs 110 may be supported using an access point topology, ad-hoc peer-to-peer topology, and so forth. The LANs may be wired, wireless, or a combination. The LANs 110 may be implemented using Ethernet, Wi-Fi®, Bluetooth®, ZigBee®, and so forth. Within the system 100, several different LANs 110 may coexist. For example, media device 104(1) and 104(6) may be connected to one another using Wi-Fi®, while the media device 104(2) and 104(5) may be interconnected using Bluetooth®. The connections may be between media devices 104 which are on the same or different local area networks 110.
The LAN(s) 110 may connect to one or more wide area networks (“WANs”) 112. The WAN 112 may include one or more public networks such as the Internet, private networks, cellular data networks, or a combination thereof. The WAN 112 may in turn couple to one or more servers 114(1), 114(2), . . . , 114(S). The servers 114 may exchange information with the one or more media devices 104. While the servers 114 are depicted as single servers, in some implementations the servers 114 or the functions attributed to the servers 114 may be provided by a plurality of devices. For example, the server 114 may be implemented as a virtualized server executing across a plurality of physical servers.
In one implementation the server 114 or another device coupled to the WAN 112 may provide a proxy service to transfer information from a media device 104(1) to another media device 104(2) using the WAN 112. These media devices 104 may be on the same or different LANs 110. In another implementation the media devices 104 on different LANs 110 may establish connections with one another over the WAN 112 without using the proxy service.
The media device 104 may include other modules such as a content direct sharing module 116. The content direct sharing module 116 provides a media stream 118 from a first media device 104 to a second media device 104. For example, as illustrated here a tablet computer media device 104(1) may be configured to receive content 106 which is protected using one or more digital rights management (“DRM”) schemes, while the television media device 104(6) is not so configured. A content direct sharing module 116 executes on both the tablet media device 104(1) and the television media device 104(6). The content direct sharing module 116(1) of the media device 104(1) generates a media stream 118 which is sent, using the LAN 110, to the media device 104(6) which presents at least a portion of the media stream 118. The media stream 118 may be transcoded from the content 106 on the source media device 104. For example, where the content 106 as available on the media device 104(1) is incompatible with the receiving media device 104(6), the media stream 118 may comprise a transcoded version of the content 106 which is compatible with the receiving media device 104(6). In implementations where the media stream 118 is compatible, transcoding may be omitted. Continuing the example, in this way the media device 104(6) which is otherwise unequipped to directly retrieve and present the DRM-protected content 106 may be used as a larger display for the media device 104(1) to improve the user's 102 experience of the content 106.
The content direct sharing module 116 may be configured to maintain DRM protections, or provide replacement DRM protections. In some implementations the content direct sharing module 116 which is receiving the media stream 118 may be disallowed from storing the media stream in permanent or semi-permanent memory. For example, the content direct sharing module 116 may be configured to store no more than 300 frames of media stream 118 data at any given time. The content direct sharing module 116 may also be configured to establish a secured pathway to the display of the media device 104 executing the content direct sharing module 116, to minimize or eliminate interception of the media stream 118 by other applications or services executing on the media device 104.
The content direct sharing module 116 may include modules such as a virtual screen module, a virtual audio device module, or both. The virtual screen module may be configured to acquire video data which is designated for presentation on the display of the media device 104. The virtual screen module may also be configured to receive video data, such as the media stream 118 from another media device 104 and present that video data on the display of the media device 104. This communication may be facilitated by the communication module 108. The virtual audio device module may be configured to acquire audio data which is designated for presentation on speakers of the media device 104. Likewise, the virtual audio device module may be configured to receive audio data, such as from the media stream 118 and present that audio data on the speakers of the media device 104.
The content direct sharing module 116 may be configured to send media streams 118 to multiple media devices 104, either as a multicast or as separate streams. For example, the media device 104(1) may provide the media stream 118 to the media devices 104(5) and 104(6) for presentation using a multicast. In another example, the media device 104(1) may provide a first media stream 118(1) to the media device 104(5) and a second media stream 118(2) to the media device 104(6).
The content direct sharing module 116 may be configured to mirror presentation of content 106, or provide different information to different media devices 104. In one implementation first content 106 may be presented on the media device 104 providing content direct sharing while different second content is sent to another media device 104. Continuing the example, the media device 104(1) may present a user interface for controlling presentation of the content 106, while a media stream 118(1) comprising video is sent to the media device 104(6) for presentation on a display and a media stream 118(2) comprising audio is sent to the media device 104(5) for presentation by the speakers.
The media device 104 may also include a device controller module 120. The device controller module 120 is configured to generate media presentation data 122. The media presentation data 122 provides information indicative of one or more pieces of content 106 to be presented. For example, in this illustration the media presentation data 122 includes the uniform resource locator (“URL”) of “http://www.example.com/play?v=39A9GKd”. A first media device 104 may generate and send the media presentation data 122 to a second media device 104. The second media device 104 may then use the media presentation data 122 to generate a presentation request 124. The presentation request 124 may be sent to a content provider, such as executing on the server 114. The server 114, based at least in part on the presentation request 124, may provide content 106. Continuing the example, the content 106 with the identifier of “39A9GKd” available from the domain example.com may be presented. The content 106 may be delivered as a download or stream.
FIG. 2 illustrates a block diagram 200 of the media device 104 configured to support the multiple media device infrastructure. The media device 104 may include one or more processors 202 configured to execute one or more stored instructions. The processors 202 may comprise one or more cores. The media device 104 may include one or more input/output (“I/O”) interface(s) 204 to allow the processor 202 or other portions of the media device 104 to communicate with other devices. The I/O interfaces 204 may comprise inter-integrated circuit (“I2C”), serial peripheral interface bus (“SPI”), Universal Serial Bus (“USB”) as promulgated by the USB Implementers Forum, RS-232, one or more media device interfaces such as High Definition Multimedia Interface (“HDMI”) as promulgated by HDMI Licensing LLC, TOSLINK as promulgated by Toshiba Corp., analog video, analog audio, IEEE 1394 as promulgated by the Institute for Electrical and Electronics Engineers, and so forth.
The I/O interface(s) 204 may couple to one or more I/O devices 206. The I/O devices 206 may include input devices such as one or more of a camera, a microphone, a touch sensor, a button, and so forth. The I/O devices 206 may also include output devices such as one or more of a display, audio speakers, haptic output device and so forth. In some embodiments, the I/O devices 206 may be physically incorporated with the media device 104 or may be externally placed.
The media device 104 may also include one or more communication interfaces 208. The communication interfaces 208 are configured to provide communications between the media device 104 and other devices, such as other media devices 104, routers, access points, the servers 114, and so forth. The communication interfaces 208 may include personal area networks, wired and wireless local area networks 110, wide area networks 112, and so forth. For example, Ethernet, Wi-Fi®, Bluetooth®, ZigBee®, and so forth.
The media device 104 may also include one or more busses or other internal communications hardware or software that allow for the transfer of data between the various modules and components of the media device 104.
As shown in FIG. 2, the media device 104 includes one or more memories 210. The memory 210 comprises one or more computer-readable storage media (“CRSM”). The CRSM may be any one or more of an electronic storage medium, a magnetic storage medium, an optical storage medium, a quantum storage medium, a mechanical computer storage medium and so forth. The memory 210 provides storage of computer readable instructions, data structures, program modules and other data for the operation of the media device 104.
The memory 210 may include at least one operating system (OS) module 212. The OS module 212 is configured to manage hardware resource devices such as the I/O interfaces 204, the I/O devices 206, the communication interfaces 208, and provide various services to applications or modules executing on the processors 202. Also stored in the memory 210 may be one or more of the following modules. These modules may be executed as foreground applications, background tasks, daemons, and so forth.
A user interface module 214 is configured to provide a user interface to the user 102 using the I/O devices 206 and accept inputs received from the I/O devices 206. The user interface may include one or more visual, audible, or haptic elements. For example, the user interface may be configured to provide a graphic user interface, an audible user interface, and so forth.
One or more application modules 216 may be stored in the memory 210. The one or more application modules 216 provide functionality which interacts with the user 102. For example, an application module 216 may be a game which is playable by the user.
One or more service modules 218 may be stored in the memory 210. The service modules 218 provide one or more services comprising one or more data processing functionalities to other service modules 218, application modules 216, or other modules. The one or more functionalities may be associated with presentation of the content 106 on one of the media devices 104. For example, the service modules 218 may be configured to stream audio or video from a server for presentation, transfer and present images, transfer files, and so forth. Other service modules 218 may provide functionality such as authentication to confirm information such as the ownership or affiliation of a particular media device 104.
As described above, the communication module 108 is configured to establish and support communications between the media device 104, other media devices 104, the servers 114, and other devices. The communication module 108 may provide an abstraction to allow the application modules 216, service modules 218, and so forth to readily interact with corresponding modules on other media devices 104. The communication module 108 may access the communication interfaces 208 to exchange information between the devices. The communication module 108 is discussed in more detail below with regard to FIG. 3.
As described above, the content direct sharing module 116 provides a media stream 118 from a first media device 104 to a second media device 104. In one implementation the content direct sharing module 116 may provide for concurrent presentation between the first media device 104 and the second or more media devices 104. In another implementation, the content direct sharing module 116 may suppress or discontinue presentation on the first media device 104 while presentation continues on the second or more media devices 104. For example, a media presentation application module 216 on the tablet media device 104(1) may be receiving a stream of the DRM protected movie “Burnt Sage.” The content direct sharing module 116 may request from the communication module 108 connections to the pair of television media device 104(6) and 104(7). The communication module 108 may establish these connections and presentation may appear simultaneously on the television media devices 104(6) and 104(7), while a user interface allowing for control of the media presentation application module 216 may remain on the tablet media device 104(1) to facilitate the user's 102 control of the presentation.
As also described above, the device controller module 120 allows for the presentation of content 106 on another media device 104. In contrast to the content direct sharing module 116 which provides the media stream 118, the device controller module 120 initiates presentation on the other media device 104. The device controller module 120 generates the media presentation data 122 which provides information indicative of one or more pieces of content 106 to be presented. The media presentation data 122 may include one or more URLs, uniform resource identifiers (“URIs”), identification numbers, serial numbers, database access key values, and so forth.
A service module 218 on one or more receiving media devices 104(5) is configured to process this media presentation data 122 and begin presentation of the one or more pieces of content 106 indicated in the media presentation data 122. Continuing the example above, the receiving media device 104(5) may then begin presentation of the content 106 located at “http://www.example.com/play?v=39A9GKd”. The presentation of the content 106 on the receiving media device 104(5) may involve sending the presentation request 124 to the server 114 of a content provider. The server 114 may respond to this presentation request 124 by streaming the content 106 to the receiving media device 104(5). In this case, the particular content with the identification code “39A9GKd.”
A development module 220 may be stored in the memory 210 of the media device 104. The development module 220 may include various libraries, modules, functions, and so forth such as may be present in a software development kit. The development module 220 may implement functions such as “default service implementation” in which an initial set of basic service housekeeping issues are defined. The development module 220 may also implement a “transport manager” configured to select and manage particular transport modules for use based on parameters such as access level associated with the service, what transport module the service was discovered over, and so forth. The transport modules are discussed in more detail below with regard to FIG. 3.
A digital rights management module 222 may provide support for presenting or processing content 106 which is protected using one or more digital rights management schemes. Other modules 224 may also be present. For example, a speech recognition module may be present and used to accept spoken input from the user 102 as received from a microphone I/O device 206.
The memory 210 may also include a datastore 226 to store information. The datastore 226 may use a flat file, database, linked list, tree, or other data structure to store the information. In some implementations, the datastore 226 or a portion of the datastore 226 may be distributed across one or more other devices including servers, network-attached storage devices and so forth.
The datastore 226 may store content 106, either in its entirety or a portion. One or more route maps 228 may be stored. The route maps 228 provide information about services on other media devices 104 and the routing to access those services. The route map is discussed in more detail below with regard to FIG. 4.
Service description objects (“SDO”) 230 may be stored. The SDO 230 provides information such as service identifiers, access information, encryption information, and so forth, associated with a particular service as provided by a service module 218. The service identifiers may be used to indicate a particular service which is available. The access information may include details on account names, passwords, supported transports, and so forth. The encryption information may include data such as encryption keys, protocols, and so forth.
Device objects (“DOs”) 232 may also be stored in the memory 210. These may include a service description array indicating available services local to a particular media device 104, universally unique identifier (“UUID”) associated with the particular media device 104, friendly name for the particular media device 104, transport information, and so forth. Transport modules and the associated information are discussed below with regard to FIG. 3.
Other data 234 may also be stored. For example, the other data 234 may include user preferences, configuration files, and so forth.
FIG. 3 illustrates a block diagram 300 of the communication module 108 configured to support the multiple media device infrastructure. In some implementations, the communication module 108 and the subordinate modules may be implemented as a daemon. The communication module 108 may include modules including one or more transport modules 302, a discovery manager 304, one or more device explorers 306, an authentication manager 308, a security manager 310, a service router 312, a connection manager 314, and so forth.
The transport modules 302 are configured to provide functionality at a transport layer and establish and maintain communication channels that transfer bits from one media device 104 to another device. In one implementation the transport modules 302 may operate at layer 4 of the Open Systems Interconnection (“OSI”) model. The media device 104 may have multiple transport modules 302 available contemporaneously.
The communication module 108 provides a simplified abstraction to the application modules 216, service modules 218, and other modules. A module requiring communication services may use this simplified abstraction to readily initiate communication without the module knowing the details of the particular transport module and type of connection involved. For example, a requesting service module 218(1) on the media device 104(1) may initiate a request to communicate with the corresponding service module 218(2) on the media device 104(5). This communication may use one or more of several different transport modules 302, but this complexity is hidden from the requesting service module 218(1) and from the receiving service module 218(2).
Due to the modular nature of the communication module 108, additional transport modules 302 may be easily added without requiring re-engineering of the communication module 108. For example, a transport module 302 supporting an infrared optical transport mechanism may be added without disrupting other existing transport modules 302 or other operational aspects of the communication module 108.
The transport modules 302 may include a secured Wi-Fi® Display server 302(1) and an unsecured Wi-Fi® Display server 302(2). These transport modules 302(1)-(2) may be compliant with the Miracast standard promulgated by the Wi-Fi Alliance, the Intel Wireless Display (“WiDi”) standard developed by Intel Corporation, or both. The Wi-Fi® Display transport module allows for peer-to-peer exchange of media information. This exchange may be encrypted in the case of the secured transport, or unencrypted in the case of the unsecured transport.
Transport modules 302 which are based on Internet Protocol (“IP”) server sockets may be provided, such as a secure server socket 302(3) and an unsecured server socket 302(4). These transport modules 302(3)-(4) may support wired or wireless communication.
Transport modules 302 may also support the Bluetooth® standard as promulgated by the Bluetooth Special Interest Group. A Bluetooth® server which is secured 302(5) may be provided, as well as a Bluetooth® server 302(6) which is unsecured.
Other transport modules 302 may also be provided. For example, a transport module may provide transport functionality over a wireless WAN, such as LTE®, 3G, 4G, and so forth. The transport modules 302 may implement a portion of the standard, specification, or protocol. For example, the transport modules associated with Bluetooth® may omit application level functions in the Bluetooth® specification, such as profiles.
A discovery manager 304 manages the device explorers 306. The discovery manager 304 provides an interface which abstracts the mechanism provided by the device explorers 306 to search for media devices 104 and discover the services associated with those media devices. The discovery manager 304 provides to other modules the results of the discovery, while concealing from other modules consuming these results the complexity of the search and discovery processes which may differ from transport module 302 to transport module 302.
The device explorers 306 are modules which are configured to gather device object 232 data using one or more of the transport modules 302. The device explorers 306 may process the device objects 232 to generate one or more route maps 228. The device explorers 306 may also be configured to respond to the device explorers 306 on other devices to distribute device objects 232, route maps 228, or other information.
The device explorers 306 may operate in “active” or “passive” modes. The active mode requires some interaction, such as user 102 approval, before a service is advertised as being available. The active mode may be time limited, such that the associated service is only discoverable for a particular period, so long as the user 102 is activating a particular command or button, and so forth. For example, the service module 218 providing output for the tablet media device 104(1) may be placed in active mode, such that the display and speakers of that media device 104(1) are only discoverable when the user 102 explicitly makes them so.
In comparison, the device explorers 306 may operate in a passive mode. In the passive mode, the service modules 218 are available without user interaction. For example, the AVR media device 104(5) and the television media device 104(6) may be configured to operate in passive mode such that any of the media devices 104 in the system 100 may see the resources they have available to share.
Depicted here are device explorers 306 including for simple service discovery protocol (“SSDP”) 306(1), Wi-Fi® Display 306(2), Bluetooth® 306(3), Avahi 306(4), and so forth. The SSDP 306(1) allows for advertisement and discovery of services over an IP-based network using user datagram protocol (“UDP”) packets for transfer using one or more of the transport modules 302. The Avahi explorer 306(4) may implement a version of Avahi as developed by Lennart Poettering and others. Avahi provides a zero configuration protocol using at least a portion of the multicast domain name service (“DNS”), DNS-based service discovery (“DNS-SD”), or both to discover and configure an IP-based network without user intervention.
The authentication manager 308 is configured to authenticate the media devices 104 in the system 100 and authorize communications with one or more of those media devices 104. This authentication may be accomplished within the LAN 110, or may involve external resources such as the servers 114. In one implementation, the authentication may involve parsing a device identifier received from another media device 104 to determine a manufacturer or model number. Previously determined devices 104 may then be allowed to communicate. In another implementation, a first media device 104 may interrogate the server 114 to authenticate a second media device 104. For example, the tablet media device 104(1) may discover the presence of the television media device 104(6). Continuing the example, the tablet media device 104(1) may send data about the television media device 104(6) to the server 114, to confirm that connectivity is permitted. The authentication manager 308 may manage this exchange.
In some implementations the authentication manager 308, or another module, may be configured to authenticate the identity of the user 102. In one implementation, access levels to services available on the LAN 110 may be based at least in part on user identity. For example, the user 102(1) who lives in a home environment where the system 100 is implemented may have “family” access when using the device of another user 102(1) in that environment.
A security manager 310 is configured to manage use of encryption and other techniques to prevent unauthorized use of the media device 104. For example, the security manager 310 may be configured to require a predetermined encryption for administrative access to the communication module 108. The security manager 310 may work in conjunction with the authentication manager 308 to manage authentication tokens granted to other media devices 104. The security manager 310 may permit different access levels. These different access levels permit connectivity and operation with different restrictions.
In one implementation, the access levels may include levels such as “family,” “friend,” “first party devices,” and “guest.” The family level allows connections only from another media device 104 which is registered or otherwise associated with a common account. The friend level allows access to a specifically “trusted” media device 104. The first party device level indicates that the media device 104 shares a common manufacturer, distributor, or other attributes. The guest level is similar to friend level access, but has a limited duration in time. For example, the media device 104 may be considered a friend device when on the same LAN 110. Particular service modules 218 may define the access levels they will operate with.
The service router 312 is configured to process incoming connections. The service router 312 may route the connection to the authentication manager 308 for processing. Once authenticated and authorized, the service router 312 may direct the traffic to the appropriate service module 218.
The connection manager 314 manages the active connections in the media device 104. The user interface module 214 may be configured to present to the user 102 various prompts or information, such as whether to permit a particular connection, whether to seek out a particular connection, and so forth.
In some implementations the communication module 108 may utilize a communication protocol such as Thrift as available through the Apache Software Foundation. Thrift provides an interface definition language and compiler which is configured to compile an interface into code which is configured to work with remote procedure calls. Thrift can be used to generate client-side and server-side transport modules 302 and other modules.
FIG. 4 illustrates a schematic 400 of the route map 228 which may be used by the communication module 108 to establish communications between the media devices 104 of the infrastructure. The route maps 228 provide information about services which are available on other media devices 104, and how the transport modules 302 may route traffic to access those services. The route map 228 is depicted here as a table, however it is understood that this information may be expressed using other data structures. The route map 228 may be based at least in part on information obtained from one or more of the device objects 232.
A device identifier 402 may comprise a universally unique identifier (“UUID”) associated with the particular media device 104. A device type 404 may be included which contains information about whether the media device 104 or the services available from that media device 104 is acting as a source for content, a sink for content, or both. Information about services supported 406 by particular media devices 104 may be included in the route map 228. For example, a particular media device 104 may provide for audio output, video output, presentation of still images, haptic input/output, and so forth. Addresses 408 may be stored which allow the transport modules 302 to contact the associated service modules 218. These addresses 408 may include media access control addresses, Internet Protocol addresses, Bluetooth® addresses, and so forth. The route map 228 may also specify designated transport modules 410 associated with particular services. The route map 228 may include other information including a “friendly name” associated with a particular media device 104. For example, the friendly name may be “Earl's TV” associated with the television media device 104(6).
In some implementations the route map 228 or a portion thereof may be exchanged or relayed between different media devices 104. For example, the media device 104(4) depicted here has transport modules for IP and Bluetooth®, while the media device 104(5) is depicted with only a Bluetooth® transport. The media device 104(4) may relay the route map 228 to the media device 104(5), such that the media device 104(5) is able to see services which are available using transport modules otherwise unavailable to the media device 104(5). In some implementations the media devices 104 may also relay data. For example, the media 104(4) may relay data between the media device 104(1) and the media device 104(4).
Illustrative Scenarios and Processes
FIG. 5 illustrates a scenario 500 of discovering and connecting media devices using the multiple media device infrastructure supported by the described system 100. At 502, one or more media devices 104 acquire data descriptive of one or more other available media devices 104 which are available for communication. For example, media device 104(1) may acquire data from media devices 104(2)-(D). This data may include capabilities, services available, current state, and so forth of the media devices 104. For example, the data may indicate that the television media device 104(6) is currently presenting video while the digital video recorder (“DVR”) media device 104(4) is currently recording a cable television show.
As described above, the data may be acquired using the communication module 108 and the associated device explorers 306. For example, information may be acquired using SSDP 306(1) or Avahi 306(4) device explorers. The media devices 104 may be deemed available when they are responsive to requests made using the LANs 110. In some implementations services and devices may be accessible using the WAN 112. For example, a media device 104 at a remote location may be accessible using the WAN 112. In other implementations networking devices such as a router, firewall, and so forth which bridge the LAN 110 to the WAN 112 may be configured to announce services which are available on the server 114. To the media devices 104 on the LAN 110, these services may appear to be local.
As described above, the acquisition of data may occur without intervention by the user 102. For example, the communication module 108 may work unobtrusively as a background process executing on the media device 104 to gather the information. As also described above, this acquisition of information may be active or passive.
Block 504 builds the route map 228. As described above with respect to FIG. 4, the route map 228 is descriptive of services available from the one or more media devices 104(1)-(D) and transport details on how to access those services. The route map 228 may be built using information obtained from device objects 232.
Block 506 establishes a connection with the one or more available media devices 104. As described above, the establishment of the connection may include authenticating the media device 104, authenticating the user 102, implementing security protocols such as encryption, and so forth. This connection is established using the one or more transport modules 302. The service modules 218 exchanging information may not be aware of the actual transport 302 being used, as the communication module 108 is configured to maintain an abstraction of these details. As illustrated here, using the various transport modules 302 and the LANs 110, different services may be provided using many protocols and standards, such as Wi-Fi Direct®, Bluetooth®, ZigBee®, Internet Protocol, and so forth.
As described above, establishment of the connection with the one or more available media devices 104 may include authenticating the one or more available media devices 104. This authentication may be performed at least in part by the authentication module 308.
As also described above, the establishment of the connection with the one or more available media devices 104 may include configuring encryption between the computerized system and the one or more available media devices 104. The encryption may be implemented at least in part by the security manager 310.
The connection may be established with various permutations of some or no authentication or encryption. For example, some connections may be authenticated but not encrypted, while others may be encrypted but not authenticated. The authentication may involve consulting with the one or more servers 114.
Block 508 presents content 106 on the one or more connected media devices 104. As described above, the content 106 may be presented using the content direct sharing module 116, the device controller module 120, or another module. The content direct sharing module 116 sends a media stream 118 to the connected one or more media devices 104. The media stream 118 is configured for presentation and uses a corresponding service executing on the connected one or more media devices 104. Content direct sharing is discussed below with regard to FIG. 6.
The device controller module 120 is configured to send media presentation data 122 to the connected one or more media devices 104. As described above, the media presentation data 122 is configured to, when processed by the one or more media devices 104, generate the presentation request 124. The presentation of content 106 using the device controller module 120 is discussed below with regard to FIG. 7.
In other implementations block 508 may perform operations other than presentation. For example, the media device 104(1) may send data to a media device 104(4) which stores, processes, or otherwise manipulates the data.
FIG. 6 illustrates a scenario 600 of providing content direct sharing between media devices 104 in the system 100. As described above, the content direct sharing modules 116 on a sending media device 104 may send a media stream 118 to a corresponding module on a receiving media device 104. This screencast allows for images, video, audio, and other multimedia data to be actively shared between media devices 104.
At 602, a connection is established between a sending media device 104 and one or more receiving media devices 104. This connection may be facilitated and maintained by the communication module 108. For example, the communication module 108 on the media device 104(1) may receive a command from the user 102 via the user interface module 214 to present the content 106 on the television media device 104(6).
At 604, the media stream 118 is sent to the one or more receiving media devices 104. As shown in this example, the tablet media device 104(1) sends the media stream 118 using the Wi-Fi® direct transport to the television media device 104(6), using the connection established by the communication module 108 on each of the respective media devices 104.
In one implementation the stream may be provided as the real-time protocol (“RTP”) as promulgated by the Audio-Video Transport Working Group of the Internet Engineering Task Force (“IETF”) and currently embodied in RFC 3550. Real-Time Stream Protocol (“RTSP”) may be used to exchange control information such as a “pause” command to temporarily halt presentation. Other protocols and formats may be used such as High-bandwidth Digital Content Protection (“HDCP”) as promulgated by Intel® Corporation, the Motion Picture Experts Group transport stream (“MPEG-TS”), and so forth.
At 606 the receiving media device 104 presents the media stream 118. Continuing the example, the communication module 108 of the television media device 104(6) receives the media stream where the service router 312 directs the media stream 118 to the appropriate service module 218 for processing and rendering to a display. In the implementation depicted, the same content is shown mirrored on both displays of the media device 104(1) and 104(6). However, in some implementations, different information may be presented on the different media devices 104. For example, the media device 104(1) may provide the media stream 118 to the media device 104(6) as shown here, while presenting a different piece of content 106, user interface, internet browser, and so forth.
At 608, the sending media device 104 discontinues sending the media stream 118. For example, the communication module 108 on the media device 104(1) may receive a command from the user 102 via the user interface module 214 to stop presentation altogether, discontinue the content direct sharing, or both.
At 610 the connection between the sending media device 104 and the receiving media device 104 may be discontinued. For example, the communication module 108 on the tablet media device 104(1) may drop the Wi-Fi® direct connection now that the presentation has been discontinued.
The content direct sharing allows presentation of the content 106 on the media devices 104 which may be unable to present the content 106 directly. For example, the television media device 104(6) may lack the services to directly contact the server 114 of the content provider and present the content, but the tablet media device 104(1) may.
In another implementation, the content direct sharing may be used to present content 106 on other media devices 104 without transferring the entire content 106 or relinquishing control over the content 106. For example, a presenter at a technical conference may use the content direct sharing to present video on an auditorium's projector display without having to provide a copy of the video to the conference sponsors.
FIG. 7 illustrates a scenario 700 of initiating presentation of content on another device in the system. As described above, device controller modules 120 may be used to pass media presentation data 122 from one media device 104 to another. The media device 104 receiving the media presentation data 122 may then initiate presentation of the content 106.
At 702, a connection is established between a first media device 104 and one or more other media devices 104. This connection may be facilitated and maintained by the communication module 108. For example, the communication module 108 on the media device 104(2) may receive a command from the user 102 via the user interface module 214 to present the content 106 on the AVR media device 104(5).
At 704, the first media device 104 sends media presentation data 122 to the one or more other media devices 104 using the established connection. As described above, the media presentation data 122 provides information indicative of one or more pieces of content 106 to be presented, such as a URL, URI, content identifier, and so forth. Continuing the example, the media device 104(2) sends the media presentation data 122 for the URL “http://www.example.com/play?v=39A9GKd” to the media device 104(5).
At 706, the one or more media devices 104 receiving the media presentation data 122 may process the data 122 and generate presentation requests 124. The presentation request 124 may be based at least in part on the media presentation data 122. The presentation request 124 comprises data indicative of a particular piece of content 106 and may indicate details about the presentation requested, such as specifying a resolution, audio only, and so forth. For example, as illustrated here the presentation request 124 includes tags indicating the content 106 is to be provided as audio-only.
The presentation request 124 may be configured to be processed by a particular service executing on a server 114. For example, the presentation request 124 for content 106 from content provider A may have a different format than that used for content provider B, even when requesting otherwise identical content 106.
At 708, the presentation request 124 may be sent to a content provider, such as executing on the server 114. At 710, based at least in part on the presentation request 124, at least a portion of the content 106 is received from the server 114. For example, the audio only version of the content may be received from the server 114.
At 712, the media device 104 presents the received content 106. Continuing the example, the receive content 106 may be rendered as audio through the speakers of the AVR media device 104(5).
FIG. 8 is a flow diagram 800 of a process of registering a service with the media device 104 in the system 100. In some implementations this process may be provided at least in part by the communication module 108.
Block 802 activates a service module 218 configured to interact with content 106. This interaction includes providing one or more functions associated with presentation of the content on the media device 104. As described above, the service module 218 is configured to interact with the content 106 by receiving and processing the content 106 for presentation, generating a stream of content for presentation, or both. For example, the service module 218 may be configured to present streamed video content 106 on a display.
Block 804 provides, to a discovery manager 304, a service description object 230 indicative of the activated service module 218. As described above, the service description object 230 provides information such as service identifiers, access information, encryption information, and so forth, associated with a particular service as provided by a service module 218.
Based at least in part on the service description object 230, block 806 activates one or more device explorers 306. The device explorer module 306 is configured to send or receive device object data to or from the media device 104. For example, the service description object 230 may include information indicating the active service uses Bluetooth®, resulting in the use of the Bluetooth® 306(3) device explorer.
Block 808 activates one or more transport modules 302 associated with the one or more device explorers 306. As described above, the transport modules 302 comprise devices and protocols configured to establish and maintain a communication channel between media devices 104 and other devices. With the channel established, data associated with the service module 218 may be exchanged with another media device 104 using the transport module 302. For example, the server socket 302(4) transport module may be used to exchange information over an IP-based network.
As described above, the distribution of information about services available on the media device 104 may be passively or actively distributed. Block 810 determines whether active distribution has been selected or otherwise initiated. When passive distribution has been selected, the process proceeds to block 812.
Block 812 receives a discovery request from another media device 104. For example, the communication module 108 of the media device 104(1) may receive a discovery request from the media device 104(2).
Based at least in part on the discovery request, block 814 provides service description data which may be based at least in part on the service description object 230. In this way, the passive distribution mode waits for a request before providing information about services available on the media device 104. Continuing the example, the media device 104(1), responsive to the discovery request, provides information about the service modules 218 available on the media device 104(1).
Returning to block 810, when active distribution is initiated, the process proceeds to block 816. Block 816 sends a service advertisement using the transport 302. The service advertisement may be based at least in part on the service description object 230 and includes information about the functions provided by the service module 218. The information may include service identifiers, access information, encryption information, address information, and so forth. In some implementations, the service advertisement comprises a broadcast on the one or more LANs 110 coupled to the transport 302 of the communication module 108.
FIG. 9 is a flow diagram 900 of a process of discovering services available from media devices 104 in the system. As described above, the media device 104 may seek out service modules 218 which are available on other media devices 104.
Block 902 activates one or more device explorers 306. As described above, the device explorers 306 are configured to determine service modules 218 available on the media devices 104 in the system 100.
Block 904 activates one or more transport modules 302 associated with the one or more active device explorer(s) 306. For example, where the Wi-Fi® Display 306(2) and the Bluetooth® 306(3) device explorers are active, the secure Wi-Fi® Display server 302(1), the non-secure Wi-Fi® Display server 302(2), the Bluetooth® secure 302(5), and the non-secure 302(6) transports may be activated.
Block 906 determines whether active discovery has been selected or otherwise initiated. When passive discovery has been selected, the process proceeds to block 908.
Block 908 receives a service advertisement from a media device 104. This service advertisement may be a packet broadcast across the LAN 110, or data specifically addressed to the media device 104.
Based at least in part on the service advertisement, block 910 generates the route map 228. As described above, the route map 228 comprises address information associated with communication by the media device 104 using the transport module 302. The route map 228 may then be used by the communication module 108 to provide access to the services on the other media devices 104 in the system 100.
Returning to block 906, when active discovery has been selected, the process proceeds to 912. Block 912 sends a discovery request using the transport 302. For example, a Bluetooth® discovery request may be sent using the Bluetooth® 302(6) transport.
Block 914 receives data responsive to the discovery request using the transport. For example, the transport 306 may receive service description data from the other media device 104.
Based at least in part on the received data, block 916 generates the route map 228. As described above, the route map 228 comprises address information associated with communication with the media device 104 using the transport module 302.
FIG. 10 is a flow diagram 1000 of a process of establishing a connection between media devices 104 in the system 100. This process may be implemented by the communication module 108. Once a connection is established, data may be exchanged between the two or more media devices 104. For example, the connection may be used to transfer the media stream 118, media presentation data 122, or other data.
Block 1002 receives a service description object 230 and a media device identifier indicative of a media device 104. The media device identifier may comprise a device identifier 402. The service description object 230 may provide information about what the connection will be used for, while the device identifier 402 indicates which media device 104 to connect to. As described above, the service description object 230 may include one or more of data identifying a service configured to interact with content 106, access credentials associated with utilizing the service, or encryption associated with communicating with the service.
Block 1004 determines the route map 228 associated with the media device 104. For example, the route map 228 as illustrated in FIG. 4 may be associated with the media device 104 and may be retrieved from the memory 210. As described above, the route map 228 may include one or more of a unique device identifier, data indicative of one or more services supported by the media device, a specified transport, or a network address.
Based at least in part on the route map 228, block 1006 determines transport data associated with the media device identifier. As described above, the transport data may include information indicative of routing information associated with a particular media device 104. In some implementations, the device identifier 402 may be used as a key to retrieve the address(es) 408, designated transport module 410, and so forth which is associated with the particular transport 306.
Block 1008 establishes a connection with the media device 104 based at least in part on the transport data. For example, the IP address for the media device 104(4) may be used along with the server socket (secure) 302(3) transport to establish communication between the media devices 104, or other media devices.
Those having ordinary skill in the art will readily recognize that certain steps or operations illustrated in the figures above can be eliminated or taken in an alternate order. Moreover, the methods described above may be implemented as one or more software programs for a computer system and are encoded in a computer readable storage medium as instructions executable on one or more processors.
The computer readable storage medium can be any one of an electronic storage medium, a magnetic storage medium, an optical storage medium, a quantum storage medium and so forth. Separate instances of these programs can be executed on or distributed across separate computer systems. Thus, although certain steps have been described as being performed by certain devices, software programs, processes, or entities, this need not be the case and a variety of alternative implementations will be understood by those having ordinary skill in the art.
Additionally, those having ordinary skill in the art readily recognize that the techniques described above can be utilized in a variety of devices, environments and situations.
Although the present disclosure is written with respect to specific embodiments and implementations, various changes and modifications may be suggested to one skilled in the art and it is intended that the present disclosure encompass such changes and modifications that fall within the scope of the appended claims.

## Claims

1. A method comprising:
accessing content for presentation on one or more media devices;
determining transport data associated with a first media device of the one or more media devices;
determining at least one transport capability of the first media device;
sending data to the first media device based at least in part on the at least one transport capability;
determining a service available by the first media device; and
initiating presentation of at least a first portion of the content on the first media device.

2. The method of claim 1, wherein the at least one transport capability is determined based on one or more of:
the transport data;
device objects indicating transport information associated with the first media device; or
one or more route maps indicative of the transport data.

3. The method of claim 1, further comprising:
sending a first portion of a multicast including the at least a first portion of the content to the first media device; and
sending a second portion of the multicast including at least a second portion of the content to a second media device.

4. The method of claim 1, further comprising:
sending media presentation data to the first media device, the media presentation data including a presentation indicating the at least a first portion of the content.

5. The method of claim 1, further comprising:
presenting concurrently the at least a first portion of the content on the first media device and at least a second portion of the content on a second media device, wherein the first media device and the second media device include display devices and the content includes video data.

6. The method of claim 1, further comprising:
activating a device explorer to determine the service available by the first media device, wherein the at least one transport capability is determined based on the transport data and is associated with the device explorer;
determining, using the at least one transport capability, one or more service advertisements associated with the first media device; and
determining, responsive to the one or more service advertisements, the service available from the first media device using the at least one transport capability.

7. The method of claim 1, wherein the at least one transport capability corresponds to the transport data, the method further comprising:
providing, using the at least one transport capability, a discovery request to the first media device; and
receiving, using the at least one transport capability, an indication of the service available from the first media device responsive to the discovery request.

8. The method of claim 1, wherein the at least one transport capability includes one or more of a Wi-Fi display server, an internet protocol server socket, a Bluetooth server, a wide area network server, or an infrared optical transport mechanism.

9. A method comprising:
receiving a first discovery request from a first media device;
sending, responsive to the first discovery request, service description data to the first media device, the service description data indicating one or more services available to present content;
receiving at least a first portion of the content;
receiving control information associated with presentation of the at least a first portion of the content; and
presenting the at least a first portion of the content based at least in part on the control information, wherein the presenting occurs concurrent with presentation of at least a second portion of the content on one or more of: the first media device or one or more devices in communication with the first media device.

10. The method of claim 9, further comprising:
sending one or more second discovery requests to a second media device;
receiving second service description data from the second media device, the second service description data indicating services available on the second media device; and
sending, responsive to the first discovery request, the second service description data to the first media device.

11. The method of claim 9, further comprising:
activating a device explorer configured to determine second service description data from a second media device;
activating a transport module associated with the device explorer, the transport module corresponding to one or more transport modules supported by the second media device;
determining one or more service advertisements associated with the second media device;
determining the second service description data from the second media device using the transport module; and
sending, responsive to the first discovery request, the second service description data to the first media device.

12. The method of claim 9, further comprising:
determining transport data associated with a second media device, the transport data indicating transport functionality to access the second media device;
generating a route map based at least in part on the transport data; and
sending, responsive to the first discovery request, the route map to the first media device.

13. A system comprising:
one or more memories storing computer-executable instructions; and
one or more hardware processors configured to execute the computer-executable instructions to:
access content for presentation;
determine services available on a plurality of media devices;
determine based at least in part on the services, a first media device and a second media device configured to present one or more portions of the content;
send data associated with presentation of at least a first portion of the content to the first media device;
send data associated with presentation of at least a second portion of the content to the second media device; and
send control information associated with the presentation of the at least a first portion and the presentation of the at least a second portion of the content, the control information configured for at least partly concurrent presentation of the at least a first portion and the at least a second portion of the content by the first media device and the second media device.

14. The system of claim 13, further comprising computer-executable instructions to:
determine a route map indicative of transport functionality for accessing at least a subset of the plurality of media devices;
activate, based at least in part on the route map, one or more transport modules for accessing the first media device and the second media device; and
provide a discovery request to the first media device and the second media device, the discovery request indicating the services.

15. The system of claim 13, further comprising computer-executable instructions to:
determine transport data associated with at least a subset of the plurality of media devices; and
determine one or more service advertisements associated with the at least a subset of the plurality of media devices, the one or more service advertisements indicating the services.

16. The system of claim 13, further comprising computer-executable instructions to:
send a first portion of a multicast including the at least a first portion of the content to the first media device; and
send a second portion of the multicast including the at least a second portion of the content to the second media device.

17. The system of claim 13, wherein the first media device and the second media device include display devices and the content includes video data.

18. The system of claim 13, further comprising computer-executable instructions to:
send a discovery request to at least a subset of the plurality of media devices;
receive, responsive to the discovery request, the services and transport data for accessing the at least a subset of the plurality of media devices; and
generate a route map including at least a portion of the services and the transport data.

19. The system of claim 13, further comprising computer-executable instructions to:
receive a discovery request from a third media device; and
responsive to the discovery request, send at least a portion of the services to the third media device.

20. The system of claim 13, further comprising computer-executable instructions to:
activate a transport module;
determine a route map indicative of transport functionality for accessing at least a subset of the plurality of media devices, the route map indicating a first subset of media devices that support the transport module and a second subset of media devices that are inaccessible using the transport module;
provide a discovery request to the first subset of media devices; and
receive, from the first subset of media devices, data indicating one or more services associated with at least one media device of the second subset of media devices.