Patent Description:
<CIT> discloses a data casting through a third -party aggregator. The third party aggregator aggregates the data from different devices and transmits it to the user device. The user device does not directly communicate with the casting device rather communicates with the aggregator.

<CIT> discloses transmitting data on various devices, such as a television, a home theater, etc., which are present in the same network. In other words, the <CIT> discloses an invention where a device is disclosed which acts as many to many hub for receiving and transmitting data.

Second type of casting, called screen mirroring, may be where a media being played on a first computing device is sent to a second display device or a computing device for being displayed on that device. In such cases, a source of the media is the first computing device.

According to the present subject matter, a cast request is received at a rendering system from a user device over a home network. The cast request is request for casting data from a ca st device communicatively coupled to a first network and a third network, onto a display device communicatively coupled to the home network. Thereafter, the rendering system transmits the cast request to a casting system over a second network. In response transmitting the rendering system receives, from the casting system to the requested data. The data is provided to the casting system by the cast device and the data is obtained by the cast device over the first network. The available cast system is automatically discovered by the user device and no configuration or specific software is needed on the user device.

In modern world, due to omnipresence of networks around, there have been considerable development in the way a media is distributed and displayed. Content casting is such a service in which a user device may send an instruction to a cast device which may instruct the cast device to retrieve a content from a source and thereafter display the content on a display device. For example, the user device may send an instruction to the cast device to play a video from YouTube. The cast device may access the video from the YouTube server via a network and may thereafter provide the video to a display device for display. In an example, the user device may be a mobile phone and the cast device may be a casting device, such as Chromecast.

The limitation of the above casting operation is that the casting operation cannot work when the cast device and the user device is in two separated networks. Discovery of cast device by the user device is based on multicast protocol like MDSN which , by construction, cannot work if the two devices are in separated network (cf RFC <NUM> A host sending Multicast DNS queries to a link-local destination address (including the <NUM>. <NUM> and FF02::FB link-local multicast addresses) MUST only accept responses to that query that originate from the local link, and silently discard any other response packets. Further, for the above system to work the display device and cast device must remain in close vicinity as they may be coupled by a HDMI cable or others means.

The present subject matter discloses a casting environment where casting is possible even when the display device and the cast device are not in close vicinity. The casting environment comprises a casting system , a cast device, and a rendering system. The casting system retrieves a data while the rendering system renders the data on a display device. The cast device is present in a first network and is coupled with a display device via a second network. Further, the casting system is coupled with the cast device via a third network. When a user desires to cast a content on a display device which is not in the first network, the user couples the rendering system to the display device. The user further sends a cast request to the rendering system , over a home network and the rendering system transfers the cast request to the casting system over a second network. The casting system receives the cast request and transfers the cast request to the cast device o ver a third network. The cast device retrieves a data, corresponding to the content requested in the cast request, over the first network and provides the data to casting router. The casting router may further transmit the data to the rendering system. In another example, the cast device may provide the data to an encoder of the casting system. The encoder may encode the data and may provide the data to a casting router of the casting system. A casting router further transfers the data to a rendering router of the rendering system. The rendering router may provide the data to a decoder of the rendering system. The decoder may decode the data and may provide the data to a display device for display. Thus, the content is casted on the display device even if th e display device is not in vicinity of the casting system. The user may permanently couple the casting system with the first network and may cast the content at some other place (at places where the first network is not available) using the rendering syste m. The casting system is coupled with the cast device without any modification of the cast device.

The above techniques are further described with reference to <FIG> It should be noted that the description and the Figures merely illustrate the principles of the present subject matter along with examples described herein and should not be construed as a limitation to the present subject matter. It is thus understood that various arrangements may be devised that, although not explicitly describ ed or shown herein, embody the principles of the present subject matter. Moreover, all statements herein reciting principles, aspects, and implementations of the present subject matter, as well as specific examples thereof, are intended to encompass equiva lents thereof. It should be understood that all networks mentioned in the current invention are compatible with any Internet Protocol (IP) as IPv4 or IPv6.

<FIG> shows a casting environment for casting of data on a display device <NUM>. The network environment comprises a rendering system <NUM>, the display device <NUM>, a user device <NUM>, a casting system <NUM>, and a cast device <NUM>. In an example, the display device <NUM> may be, a television, a light emitting display (LED), a liquid crystal display (LCD) , a tablet. The display device <NUM> has been shown separately in <FIG>, however, in an example, the display device <NUM> may be integrated with the rendering system <NUM> or the user device <NUM>. Further, in an example, the user device <NUM> may be a mobile device, a laptop, a desktop or any other device which has casting capabilities.

The rendering system <NUM> is composed of a rendering router <NUM> and a decoder <NUM>. For the sake of simplicity, the decoder <NUM> is represented in <FIG> as a separate entity, but it must be understood that the decoder <NUM> can be physically integrated in the rendering router, in the user device or in the display device. Moreover, the decoder <NUM> and the re ndering router <NUM> can be located in separated network in the vessel. The decoder transmits the video to the display device by high-definition multimedia interface HDMI, video graphics array (VGA), universal serial bus (USB), internet protocol (IP) or any other means.

The cast device <NUM> of the present subject matter is coupled to a first network <NUM>. In an example, the first network <NUM> may include, but are not limited to, Global System for Mobile Communication (GSM) network, Universal Mobile Telecommunications System (UMTS) network, Personal Communications Service (PCS) network, Time Di vision Multiple Access (TDMA) network, Code Division Multiple Access (CDMA) network, Next Generation Network (NON), satellite network, and Public Switched Telephone Network (PSTN). Depending on the technology, the first network <NUM> includes various network entities, such as gateways, routers; however, such details have been omitted for the sake of brevity of the present description.

In an example, the display device <NUM> is in a home network <NUM>. In an example, the home network may be present in user's home, a ship, a vessel, an airplane. The user wishes to cast data on the display device <NUM>. In accordance with the example implementation of the present subject matter, the user couples the rendering system <NUM> with the display device <NUM>. The rendering system <NUM> may be coupled to the display device <NUM> via connectors, such as HDMI, VGA, USB.

The user device <NUM> is coupled with the home network <NUM>. The user device may automatically retrieve information about casting systems present the network environment (explained later with reference to <FIG>). In an example, the user devices may use native functionality to retrieve information about cast device <NUM> present in the network environment. Thus, in an example, no additional application changes or hardware changes are necessary in the user device <NUM>.

In another example, the cast device <NUM> may be automatically available in the home network <NUM>. The casting system <NUM> may send the details, such as connections specifications to the rendering system <NUM> and the rendering system <NUM> may evaluate the casting system <NUM>. In such cases, the rendering system <NUM> may send connection information about the home network <NUM> to the casting system <NUM>. The casting system <NUM> may then allocate an IP to the cast device <NUM> th at matches the one of the rendering routers <NUM>. In other words, the rendering router <NUM> and the cast device <NUM> will have the same IP address. The IP address of the cast device may be dynamically change d in case of new IP address on the rendering router. This way, when user device <NUM> will retrieve the connection specification of the cast device <NUM>, the latter will appear to be located in the home network <NUM>. Communication from the user device <NUM> to the cast device <NUM> will be send to the rendering router <NUM>. The rendering may thereafter transfer the data to the casting router <NUM>. The casting router may forward the data to the cast device <NUM>. Thus, the user device and the cast device will be able to communicate with one another as if they were in the same network. The user device <NUM> may be thereafter used by the user to select the casting system which he indents to use for casting data. The user device <NUM> sends the data to the casting system <NUM> via the rendering system <NUM>. In an example, the user device <NUM> may scan the home network <NUM> to detect the rendering system <NUM> present in the home network <NUM>. The user may, via his user device <NUM>, authorize the rendering system <NUM> to communicate with the user device <NUM>. Thereafter, the user, using the user device <NUM> sends a cast request to the rendering system <NUM> over the home network <NUM>. In an example, the cast request may be understood as a request for casting a content on the display device <NUM>. The cast request may comprise details, such as unifo rm resource locator of the content and identification (ID) of the casting system to which the cast request is directed to. The home network <NUM> is a network in which the user is currently present. The home network <NUM> may have similar configuration as of the first network <NUM>.

After receiving the cast request from the user device <NUM>, a rendering router <NUM> of the rendering system <NUM> transmits the cast request to the casting system <NUM> over a second network <NUM>. The second network <NUM> may be a satellite network, internet network, intranet network, GPRS network etc. The first network <NUM> and the second network <NUM> are two distinct networks. In an example, the first network <NUM> and second network may be provided by two different service providers.

The casting system <NUM> comprises a casting router <NUM> and an encoder <NUM>. The casting system <NUM> is further coupled to the cast device <NUM>. In an example, the cast device <NUM> is coupled with the encoder <NUM> of the casting system <NUM> via a connection, such as HDMI, VGA etc. and the casting router <NUM> of the casting system <NUM> is coupled to the cast device <NUM> via a third network <NUM>. The cast device <NUM> is further coupled with the first network <NUM>. The cast request sent by the rendering system <NUM> , over the second network <NUM>, is received by the casting router <NUM>. The casting router <NUM> further transmits the cast request to the cast device <NUM>, over the third network <NUM>. In an example, there may be more than one cast device and the casting router <NUM>, based on an identification formation received with the cast request , may determine a cast device to which the cast request should be directed to. In an example, the third network <NUM>, may be similar have similar configuration as of the first network <NUM>. In another example, there may not be a third network <NUM> and the casting system <NUM> may transfer the cast request to the cast device over the first network <NUM>.

Upon, receiving the cast request, the cast device <NUM> analyzes the cast request and determines data to be ret rieved. The cast device <NUM> determines the data to be retrieved based on the cast request. In an example, the cast request may comprise a uniform resource locator (URL) of the data to be retrieved and the cast device <NUM> may retrieve the data by accessing the URL. The cast device <NUM> may access a source <NUM>, over the first network <NUM>, to retrieve the data. In an example, the source <NUM> may be a database.

After the data is retrieved from the source <NUM>, the cast device <NUM> may thereafter forward the retrie ved data to the encoder <NUM> via the HDMI/VGA protocol/connection. The encoder <NUM> encodes the data and provides the data to the casting router <NUM>. The casting router <NUM> transmits the encoded data to the rendering system <NUM>. In an example, the casting ro uter <NUM> may transmits data at a variable transfer rate. In an example, the casting system <NUM> may determine a transfer rate for the data based on various parameter, such as connection specifications, bandwidth of the network, format of data supported by the rendering system <NUM>.

The rendering router <NUM> of the rendering system <NUM> receives the encoded data from the casting system <NUM> over the second network <NUM>. The rendering router may thereafter provide the data to a decoder <NUM>. The decoder <NUM> may decode the data and may thereafter forward the data to the display device <NUM>. The display device <NUM> may display the data. In an example the data may be an audio stream, a video stream, or a combination of audio stream and audio stream , including additional information like subtitles, logo, additional audio streams etc. Further, as explained above the casting router <NUM> may send the data at a variable bit rate and thus, accordingly the rendering router <NUM> may receive data at a variable bit rate, in an exampl e.

Consider an example, where a user travelling in a ship wishes to cast the data on a display device available on the ship. The network available on the ship may be referred to as home network.

The user wishes to cast the data from a cast device available in the user's home and which is coupled to a first network available in the user's home. The cast device at the user's home is also coupled with a casting system, such as the casting system <NUM>. The user couples a rendering system (such as the rendering system <NUM>) to the display device available in the ship. The user device will natively and automatically detect the cast device, and an icon will appear on the user device when a cast compatible application is used. By selecting the icon, the user sends a cast request to the rendering system. The rendering system transmits the cast request to the casting system over a satellite network which may be accessible from the ship. The casting system sends the cast request to the cast device. The cast device retrieves the data, over the first network, from a source and provides the data to the rendering system. The casting system thereafter transmits the data to the rendering system via the satellite network. The rendering system receives the data and forwards the data to the display device. Thus, the casting of the data is possible even when the cast device and the display device are in two different networks.

<FIG> illustrates the rendering router <NUM>, in accordance with an example of the present subject mat ter.

The rendering router <NUM>, among other things, includes and a memory <NUM>, interface(s) <NUM>, and engine(s) <NUM>. The memory <NUM> may include any computer-readable medium including, for example, volatile memory (e.g., RAM), and/or non -volatile memory (e.g., EPROM, flash memory, etc.). The interface(s) <NUM> may include a variety of software and hardware interfaces that allow the rendering router <NUM> to interact with other devices or other input/output (I/O) devices.

The engine(s) <NUM> may be implemented as a combination of hardware and programming (for example, programmable instructions) to implement certain functionalities of the engine(s) <NUM>, routing of the cast request. In examples described herein, such combinations of hardware and programming may be implemented in several different ways. For example, the programming for the engine(s) <NUM> may be processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engine(s) <NUM> may include a processing resourc e (for example, implemented as either a single processor or a combination of multiple processors), to execute such instructions. In the present examples, the machine-readable storage medium may store instructions that, when executed by the processing resource, implement engine(s) <NUM>.

In such examples, the rendering router <NUM> may include the machine-readable storage medium storing the instructions and the processing resource to execute the instructions, or the machine -readable storage medium may be separate but accessible to the rendering router <NUM> and the processing resource. In other examples, engine(s) <NUM> may be implemented by electronic circuitry. The engine(s) <NUM> may include a routing engine <NUM> and a proxy engine <NUM>. In an example, the engine(s) <NUM> may also comprise other engine(s) <NUM> that supplement functions of the rendering router <NUM>.

Data <NUM> serves, amongst other things, as a repository for storing data that may be fetched, processed, received, or generated by the engine(s) <NUM>. The data <NUM> comprises other data <NUM> corresponding to the other engine(s) <NUM>. In the illustrated example, the data <NUM> of also comprises routing data <NUM>. In an example, the casting router <NUM> have a similar physical configuration as of the rendering router <NUM>.

In operation, the cast request is received by the routing engine <NUM>. The routing engine <NUM> may thereafter may retrieve a required address from the routing data <NUM> and may transmit the cast request to a casting system, such as the casting system <NUM>. The routing engine <NUM> also receives the encoded data from the casting system <NUM>. In an example, the routing engine <NUM> may use a proxy engine <NUM> to send the cast request and receive the encoded data. The proxy engine <NUM> acts an intermediary between the routing engine <NUM> and the casting system <NUM>. Using the proxy engine <NUM> improves the response time of sending the cast request. The proxy engine <NUM> may store a cache of previously connected casting systems and may help in faster connection of the casting system <NUM> and the routing engine <NUM>. The proxy engine <NUM> may also help in increasing the security of the data transmitted and received.

<FIG> illustrates a flow diagram for discovering casting system <NUM> by a user device <NUM> and receiving connection specifications of the cast device. The casting system <NUM> is similar to the casting system <NUM> and the user device <NUM> is similar to the user device <NUM>.

The user device <NUM> uses its native functionality to discover the casting system <NUM> present in the network and no change in application or hardware of the user device <NUM> is required. When a cast compatible application, such as Netflix, Prime video is running on the user device, the user device will request the user to allow for searching of the casti ng systems present in the network. The discovery of the casting systems is based on the multicast protocol, such as mDSN, SSDP etc. First of all, the user device <NUM> sends a multicast discovery packet <NUM> on a home network. The rendering system <NUM> will receive the discovery packet <NUM> and will forward the discovery packet <NUM> to the casting system <NUM> via a second network, such as the second network <NUM>. The casting system <NUM> then forwards the discovery packet page <NUM><NUM> to the cast device <NUM> over the third network. The cast device <NUM> in return would provide its connections details <NUM> to the casting system <NUM>.

The casting system will receive the connection details <NUM> of the cast device. The casting system will thereafter forward its connection specifications <NUM>, along with the connection details <NUM> of the cast device, to the rendering system <NUM> and the rendering system <NUM> will finally forward the connections specification s to the user device. It should be understood that, for simplicity, the flow diagram has been explained with reference to a single casting system <NUM> and there can be more than one casting systems and the discovery and receiving the connection specifications from each of such casting systems may follow a similar procedure, as described above.

After the user device <NUM> has discovered the casting system <NUM> and the cast device <NUM>, the user device <NUM> may send a cast request <NUM> to the cast device <NUM>. In response, the cast device <NUM> may request a source (not shown) to provide the requested data. The source may thereafter provide a data <NUM> to the cast device <NUM> and the cast device <NUM> may then forward the data <NUM> to the casting system <NUM>. The casting system <NUM> encodes the data <NUM> and transmits the data <NUM> to the rendering system <NUM>. The rendering system <NUM> decodes the data <NUM> and provide the data <NUM> to the user device <NUM>.

<FIG> illustrates a method <NUM> for determining a list of casting systems in a network, in accordance with an example of the present subject matter. Although the method <NUM> may be implemented in a variety of routers, but for the ease of explanation, the present description of the example method <NUM> to provide suggestions is provided in reference to the above -described rendering router <NUM>.

The order in which the method <NUM> is described is not intended to be construed as a limitation, and any number of the described method blocks may be combined in any order to implement the method <NUM>, or an alternative method.

At block <NUM>, the rendering router <NUM> receives a list of all casting systems coupled with a network, such as the second network <NUM>. In an example, the rendering router <NUM> receive the list of casting systems form the casting router <NUM> which has automatically discovered the list of casting systems present in the network environment.

At block <NUM> the rendering router <NUM> receives connection specifications of each of the casting systems. The connection specification may indicate the protocols used by the casting systems for connecting to a network. In an example, the rendering router <NUM> may receive the connection specifications form the casting router <NUM>.

At block <NUM>, the rendering router <NUM> provides the list of casting systems along with their connection specifications to a user devi ce, such as the user device <NUM> which may then use the casting system for casting a data on the display device <NUM>.

<FIG> illustrates a method <NUM> for casting data, in accordance with an example of the present subject matter. Although the method <NUM> may be implemented in a variety of casting system , but for the ease of explanation, the present description of the example method <NUM> to provide suggestions is provided in reference to the above -described casting system <NUM>.

At block <NUM>, a cast request is received by the casting system <NUM> over a second network, such as the second network <NUM>. In an example, the cast request is received by a casting router, such as the casting router <NUM>, of the casting system <NUM>. In an example, the cast request may be initiated in a home network, such as the home network <NUM>. The cast request may be initiated by a user device, such as the user device <NUM>.

At block <NUM>, the casting system <NUM> analyzes the cast request to determine a data to be retrieved. The cast request comprises details about the data to retrieved. In an example, the cast request may comprise a URL of the data to be retrieved.

At block <NUM>, the casting system forwards the cast request to a cast device. In response to forwarding the cast request, the casting system <NUM> receives a required data from the cast device at block <NUM>.

At block <NUM>, the casting system <NUM> encode s the retrieved data based. At block <NUM>, the casting system <NUM> sends the encoded data to the rendering system <NUM>.

Claim 1:
A method comprising:
automatically discovering, by a user device (<NUM>) using a native cast discovery functionality of the user device (<NUM>), and based on a multicast protocol, a cast device (<NUM>) for establishing a communication between the user device (<NUM>) and the cast device (<NUM>), wherein a casting system (<NUM>) is coupled to the cast device (<NUM>) through a third network (<NUM>), the user device (<NUM>) is coupled to a rendering system (<NUM>) through a home network (<NUM>), and the rendering system (<NUM>) is coupled to the casting system (<NUM>) through a second network (<NUM>), wherein the second network (<NUM>) is a satellite network and wherein the user device sends a multicast discovery packet (<NUM>) on the home network, the rendering system receives the discovery packet (<NUM>) and forwards the discovery packet (<NUM>) to the casting system via the second network, the casting system then forwards the discovery packet to the cast device over the third network, the cast device in return provides its connections details (<NUM>) to the casting system, the casting system receives the connection details (<NUM>) of the cast device, the casting system thereafter forwards its connections specifications (<NUM>) along with the connections details (<NUM>) of the cast device to the rendering system and the rendering system finally forwards the connections specifications (<NUM>) to the user device to discover the casting system and the cast device,
receiving, by a rendering router (<NUM>) of the rendering system (<NUM>), the cast request over the home network (<NUM>) from the user device (<NUM>), wherein the cast request is for casting data from the cast device (<NUM>), which is communicatively coupled to a first network (<NUM>) and the third network (<NUM>), onto a display device (<NUM>) communicatively coupled to the home network (<NUM>);
transmitting the cast request over the second network (<NUM>) to the casting system (<NUM>) ; receiving, at the rendering system (<NUM>), the requested casting data from the casting system (<NUM>), wherein the requested casting data is provided to the casting system (<NUM>) by the cast device (<NUM>) and the requested casting data is obtained by the cast device (<NUM>) over the first network (<NUM>).