Application execution on a server for a television device

In at least one example embodiment, a system may include a television device configured to: transmit a request to execute an application; and a server configured to: execute the application that uses at least one function of the television device to generate an image; transmit the generated image to the television device; and transmit a request to execute the at least one function of the television device, and wherein the television device is further configured to: execute the requested function of the television device and transmit a result of the execution to the server.

TECHNICAL FIELD

The embodiments described herein pertain generally to a server that hosts or executes applications on behalf of a television device.

BACKGROUND

A television device may enable a user to not only watch television content or video on demand (VOD) but may also host plural applications.

SUMMARY

In one example embodiment, a system may include a television device configured to: transmit a request to execute an application; and a server configured to: execute the application that uses at least one function of the television device to generate an image; transmit the generated image to the television device; and transmit a request to execute the at least one function of the television device. The television device may be further configured to execute the requested function of the television device and transmit a result of the execution to the server.

In another example embodiment, a server may include a transceiver configured to receive a request to execute an application that uses at least one function of a television device; and middleware configured to: execute the application to generate an image of the application, and generate a request to execute the at least one function of the television device. The transceiver may be further configured to transmit, to the television device, the generated image and the request to execute the at least one function.

In yet another example embodiment, a television device may include a user input receiver configured to receive a user input to execute an application that utilizes at least one function of the television device; a transceiver configured to: transmit a request, to a server, to execute the application, receive, from the server, an image generated by execution of the application and a request to execute the at least one function of the television device, and a display unit configured to display the received image.

DETAILED DESCRIPTION

FIG. 1shows an example system configuration100in which a server110hosts and/or executes an application on behalf of a television device120, in accordance with various embodiments described herein. As depicted inFIG. 1, system configuration100may include, at least, server110; television device120; a session server130; a web server132that may be representative of one or more servers providing web pages; and a content provider134that may be representative of one or more servers operated by a content provider. At least two or more of server110, television device120, session server130, web server132, and content provider134may be communicatively connected to each other via a network140.

Server110, operated by a virtualization/cloud service provider, may be configured to execute an application to generate an image112; and to transmit, to television device120, generated image112for display thereof. Thus, server110may provide a user of television device120with an executed output of application on television device120.

For example, server110may execute the application upon receiving a request to execute the application from television device120, via session server130which may select server110from among a plurality of servers. In some embodiments, server110may directly receive the request to execute the application from television device120without going through session server130.

As referenced herein, the application may be configured to use at least one function of television device120because the application cannot be executed without using the at least one function of television device120. For example, if the application is designed or configured to capture a picture by using the camera coupled to television device120, server110may transmit, to television device120, a controlling signal for the camera to capture the picture. In this case, controlling of the camera or capturing the picture may be the function of television device120.

The at least one function of television device120utilized by the application may be associated with broadcast content or video on demand (VOD) content to be played on television device120. Further, the at least one function of television device120utilized by the application may be associated with a peripheral device, such as an external data storage device, a USB(Universal Serial Bus) flash drive, or a camera, etc., coupled to television device120.

Server110may be further configured to communicatively interact with at least one of web server132, and content provider134, each of which may be operated by other service provider(s) from the virtualization/cloud service provider, to execute the application. For example, when server110receives, from television device120via session server130, the request to execute the application, server110may interact with web server132to execute and/or host the application on a web-browser of server110. Thus, server110may generate image112by executing and/or hosting the application. That is, television device120may not be configured to execute an application. Such shortcoming may pertain to hardware, software, or firmware. Regardless, the request is for server110to serve as an execution proxy on behalf of television device120.

As a non-limiting example, if the executed or executing application includes any media content, such as broadcasting content, video on demand (VOD) content, image content, music content, various other media content, etc., server110may interact with content provider134to execute the application. That is, server110may transmit, to content provider134, a request for at least some of the media content, and receive at least some of the requested media content from content provider134.

Server110may be configured to receive a user input from television device120. The received user input may be applied to execution of the application at or by server110to generate and transmit, to television device120, a subsequent image. In some embodiments, server110may generate a plurality of successive images over a period of time, and combine the plurality of successive images to generate a video, and transmit the generate video to television device120by using a live streaming method.

Server110may be configured to transmit, to television device120, a request to execute a function of television device120. As referenced herein, execution of the at least one function may be required at or by server110to execute the application. For example, if the application is designed or configured to capture a picture by using the camera coupled to television device120, server110transmit, television device120, a request to instruct the camera coupled to television device120to display a preview image and capture the picture.

Server110may be further configured to encode at least a portion of image112so that television device120, which may be a low-performance device, may display an encoded image114, and transmit, to television device120, encoded image114. Thus, server110may enable television device120to display encoded image114without regard to hardware specifications of television device120.

Television device120may refer to a display apparatus configured to play various types of media content, such as broadcasting content, video on demand (VOD) content, various other media content, etc. Television device120may further refer to at least one of an IPTV (internet protocol television), a DTV (digital television), a smart TV, a connected TV or a STB (set-top box), a mobile phone, a smart phone, a tablet computing device, a notebook computer, a personal computer or a personal communication terminal. Non-limiting examples of such display apparatuses may include PCS (Personal Communication System), GMS (Global System for Mobile communications), PDC (Personal Digital Cellular), PDA (Personal Digital Assistant), IMT (International Mobile Telecommunication)-2000, CDMA (Code Division Multiple Access)-2000, W-CDMA (W-Code Division Multiple Access) and Wibro (Wireless Broadband Internet) terminals.

Further, in accordance with various embodiments described herein, television device120may be unable to host a web browser engine, thus television device120may be configured to receive, from server110, encoded image114, and to display encoded image114. Examples of television device120may refer to a low-performance device including the IPTV or the STB. In some embodiments, if server110does not encode image112, television device120may receive non-encoded image112and display non-encoded image112.

Television device120may be further configured to receive, via a remote control device or a keyboard or a mouse (not illustrated), a user input representing a click or selection or other form of activation of an icon or a button displayed on image114. Alternatively, or additionally, the received user input may represent an instruction to enter text: to search content or information regarding the text; or for a instant message service. Then, television device120may transmit the received user input to server110, and receive a subsequent image corresponding to the user input from server110.

If television device120receives a user input regarding a function of television device120, television device120may transmit the user input regarding the function to server110. Then, server110may transmit a request to execute the function to television device120. The function of television device120may include play, stop, volume up and volume down functions for the broadcast content, or play, pause, stop, rewind, fast forward, volume up and volume down functions for the VOD content.

Non-limiting examples of the function of television device120may include capturing images using the camera coupled to television device120, or browsing and accessing data included in the external data storage device or the USB flash drive coupled to television device120.

Session server130may be configured to receive the request to execute the application from television device120. Then, session server130may check status, such as unused computing resource, for each of a plurality of servers, and select server110from among the plurality of servers. Then, session server130may generate a session connecting television device120to selected server110, and transmit the request to execute the application to selected server110. After the session has been generated, server110may communicate to television device120via the generated session.

Web server132, hosted by one or more web site providers, such as Naver™ Google™, or Bing™, etc., may refer to either hardware or software that helps to deliver, to server110, web content that may be accessed through the Internet on server110. For example, web server132may receive a request for a web page from server110. Upon receiving the request, web server132may transmit, to server110, the web content including, i.e., an “html” file corresponding to the requested web page. Further, web server132, for example YouTube™, may transmit video content to server110in response to a corresponding request.

Content provider134may refer to one or more servers, operated by one or more content providers, which may be configured to receive, from server110, a request for broadcasting content, video on demand (VOD) content, image content, music content, etc. The requested media content, which may be included in the web page, may be further transmitted the requested media content to server110.

Network140, which may be configured to communicatively couple server110, television device120and external devices130, may be implemented in accordance with any wireless network protocol, such as a mobile radio communication network including at least one of a 3rd generation (3G) mobile telecommunications network, a 4th generation (4G) mobile telecommunications network, any other mobile telecommunications networks, WiBro (Wireless Broadband Internet), Mobile WiMAX, HSDPA (High Speed Downlink Packet Access) or the like. Alternatively, network140may include at least one of a near field communication (NFC), radio-frequency identification (RFID) or peer to peer (P2P) communication protocol.

Thus,FIG. 1shows an example system configuration100in which server110hosts and/or executes the application on behalf of television device120, in accordance with various embodiments described herein.

FIG. 2shows an illustrative example of a generated image200, in accordance with various embodiments described herein. As depicted inFIG. 2, the generated image may include a first area210, a second area220, and a third area230.

As referenced herein, the application may be configured or designed to display broadcast content with additional information on the broadcast content, such as instant messages between users on a plurality of television devices.

In the non-limiting depicted example, first area210may be configured to display broadcast content regarding a baseball game, and second area220may be configured to display additional information on the baseball game or a player of the baseball game.

When a user of television device120inputs, to the application, a user input to increase the volume for the broadcast content via a remote control device for television device120, television device120may transmit the transmitted user input to server110. Then, server110may receive the user input from server110, and transmit a request to turn up the volume to television device120.

In the non-limiting depicted example, third area230may be configured to display an instant message between the users for a plurality of television devices. When the user enters a text message via a keyboard of television device120or via a voice-recognition component (not shown), television device120may transmit the text message to server110. Then, server110may apply the received words to the application to display the words on third area230.

In some embodiments, server110may be configured to encode at least a portion of the generated image200. For example, server110may encode first area210that includes portions of the broadcast content for which frames per second (fps) exceed a predetermined threshold fps value. Further, server110does not encode second area220and third area230that include portions of the broadcast content for which frames per second (fps) does not exceed a predetermined threshold fps value.

Thus,FIG. 2shows an illustrative example of generated image200, in accordance with various embodiments described herein.

FIG. 3shows another illustrative example of a generated image300, in accordance with various embodiments described herein.

As referenced herein, server110may generate image300of the application, which is a virtual room custom-designed by a user. A first area310included in image300may play broadcast content (or video on demand (VOD) content).

Upon receiving a user input to turn on television device120via a remote control device, television device120may transmit the user input to server110, and server110may transmit a request to play the broadcast content to television device120. Then, television device120may play the broadcast content on first area310.

To play the broadcast content on first area310, server110may generate image300excluding first area310by blanking or cropping first area310, and transmit the generated image300to television device120. Television device120may display image300excluding first area310and display the broadcast content on first area310by resizing the broadcast content suitably to first area310and overlaying the resized broadcast content on first area310.

In some embodiments, server110may receive an internet (http) address of the broadcast content from television device120, and transmit a request for the broadcast content to content provider134. Server110may receive the broadcast content from content provider134, and resize the received broadcast content suitably to first area310because a size of the received broadcast content is larger than first area310, and generate image300including first area310. Then, television device120may receive image300from server110, and display image300on television device120.

When the user inputs a user input that changes the channel for the broadcast content via the remote control device to watch different broadcasting content, television device120may transmit the user input that changes the channel to server110. Server110may receive the user input that changes the channel from television device120, and transmit a request to change the channel to television device120.

Thus,FIG. 3shows another illustrative example of generated image300, in accordance with various embodiments described herein.

FIG. 4shows an example configuration400of server110on which an application may be executed, in accordance with embodiments described herein. As depicted inFIG. 4, server110, first described above with regard toFIG. 1, may include a communication unit410, a transceiver420, middleware430, an analyzer440, an encoder450, a virtual machine460and a database470.

Although illustrated as discrete components, various components may be divided into additional components, combined into fewer components, or eliminated altogether while being contemplated within the scope of the disclosed subject matter. Each function and/or operation of the components may be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or any combination thereof. In that regard, one or more of communication unit410, transceiver420, middleware430, analyzer440, encoder450, virtual machine460and database470may be included in an instance of an application hosted by server110.

Communication unit410may be a component or module that is programmed and/or configured to communicatively connect server110to television device120. Communication unit410may generate a session connecting television device120to server110. In some embodiments, the session may be generated by session server130.

Transceiver420may be a component or module that is programmed and/or configured to receive a request to execute an application that uses at least one function of television device120from session server130via the generated session.

As referenced herein, the at least one function of television device120utilized by the application may be associated with broadcast content or video on demand (VOD) content to be played on television device120. For example, the at least one function of television device120may include play, stop, volume up and volume down functions for the broadcast content, and play, pause, stop, rewind, fast forward, volume up and volume down functions for the VOD content.

Further, the at least one function of television device120utilized by the application may be associated with a peripheral device, such as an external data storage device, a USB(Universal Serial Bus) flash drive, or a camera, etc., coupled to television device120.

In some embodiments, transceiver420may be further configured to transmit, to web server132, a request for an “html” file associated with the application. Then, transceiver420may receive the “html” file from web server132.

Middleware430may be a component or module that is programmed and/or configured to execute the application in response to the received request to execute the application, and to generate an image of the application. In some embodiments, middleware430may generate the image of the application by using a web engine, e.g., a web browser to render an HTML page corresponding to the received “html” file. Then, transceiver420may transmit the generated image.

That is, television device120may not be configured to execute an application. Such shortcoming may pertain to hardware, software, or firmware. Regardless, the request is for server110to serve as an execution proxy on behalf of television device120.

In some embodiments, at least a portion of the generated image may be encoded. Analyzer440may be a component or module that is programmed and/or configured to divide the generated image to a plurality of sub-areas and classify each of the plurality of sub-areas into an invariable area or a variable area that includes the broadcast content or the VOD content for which frames per second (fps) exceed a predetermined fps value. Then, encoder450may be a component or module that is programmed and/or configured to encode the variable area appropriately to television device120. In this case, transceiver420may transmit, to television device120, the generated image by transmitting the encoded variable area and the non-encoded invariable area to television device120.

Middleware430may be further configured to generate a request to execute the at least one function of television device120, and transceiver420may transmit, to television device120, the generated request to execute the at least one function of television device120.

Middleware430may be further configured to apply a user input to the executed application when transceiver420receives the user input from television device120. That is, the received user input may be applied to execution of the application at or by middleware430to generate and transmit, to television device120, a subsequent image. As referenced herein, the user input may be associated with the execution of the application. Further, the user input may be associated with the at least one function of television device120.

Virtual machine460may be a component or module that is programmed and/or configured to operate transceiver420and middleware430. In some embodiments, virtual machine460may operate at least one of communication unit410, transceiver420, middleware430, analyzer440, and encoder450.

Database470may be a component or module that is programmed and/or configured to store data, including data input to or output from the components of server110. Non-limiting examples of such data may include the image which is generated by middleware430.

Further, by way of example, database470may be embodied by at least one of a hard disc drive, a ROM (Read Only Memory), a RAM (Random Access Memory), a flash memory, or a memory card as an internal memory or a detachable memory of server110.

In summary, television device120which is old-fashioned or low-performanced may be unable to host the web engine e.g., the web browser. Thus, television device120may not render, for itself, the HTML page by executing web content including the “html” file that is received from web server132, so that server110may render the HTML page on behalf of television device120to generated the image.

Thus,FIG. 4shows example configuration400of server110on which the application may be hosted and executed, in accordance with embodiments described herein.

FIG. 5shows an example processing flow500of operations to transmit an image generated as a result of an executed application, in accordance with various embodiments described herein.

The operations of processing flow500may be implemented in system configuration100including server110, television device120, session server130, web server132and content provider134as illustrated inFIG. 1. Processing flow500may include one or more operations, actions, or functions as illustrated by one or more blocks510,520,530,540,550,560,570,580and/or590. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation. Processing may begin at block510.

Block510(Receive Request to Execute Application) may refer to server110receiving a request to execute an application that uses at least one function of television device120. Processing may proceed from block510to block520.

Block520(Transmit Request for HTML File) may refer to server110transmitting a request an “html” file corresponding to the application to web server132. Processing may proceed from block520to block530.

Block530(Receive HTML File) may refer to server110receiving the requested “html” file from web server132. Processing may proceed from block530to block540.

Block540(Execute Application to Generate Image of Executed Application) may refer to server110executing the application to generate an image of the executed application. Further, server110may render the HTML page corresponding to the received “html” file to generate the image of the executed application. Processing may proceed from block540to block550.

In some embodiments, if the application needs a function of television device120, server110may transmit, to television device120, a request to execute the function of television device120, and receive, from television device120, a result of the execution the function. Then, server110may generate the image of the execution application. As referenced herein, execution of the function by television device120may be required at or by server110to execute the application.

Block550(Encode Generated Image) may refer to server110encoding at least a portion of the generated image. For example, server110may divide the generated image to a plurality of sub-areas and classify each of the plurality of sub-areas into an invariable area or a variable area that includes broadcast content or VOD content for which frames per second (fps) exceed a predetermined fps value. Further, server110may encode the variable area, and does not encode the invariable area. Processing may proceed from block550to block560.

Block560(Transmit Encoded Image) may refer to server110transmitting the encoded image to television device120. Processing may proceed from block560to block570.

Block570(Receive User Input) may refer to server110receiving a user input to the executed application from television device120. Processing may proceed from block570to block580.

Block580(Apply User Input to Generate Subsequent Image) may refer to server110applying the received user input to the executed application to generate subsequent image. Processing may proceed from block580to block590.

Block590(Transmit Generated Subsequent Image) may refer to server110transmitting the generated subsequent image to television device120.

In summary, television device120may not be configured to execute an application. Such shortcoming may pertain to hardware, software, or firmware. Regardless, the request is for server110to serve as an execution proxy on behalf of television device120.

Thus,FIG. 5shows example processing flow500of operations to transmit the image generated as a result of the executed application, in accordance with various embodiments described herein.

FIG. 6shows an example configuration600of television device120on which an application may be executed, in accordance with embodiments described herein. As depicted inFIG. 6, television device120, first described above with regard toFIG. 1, may include a user input receiver610, a transceiver620, a middleware630, a display unit640and a database650.

Although illustrated as discrete components, various components may be divided into additional components, combined into fewer components, or eliminated altogether while being contemplated within the scope of the disclosed subject matter. Each function and/or operation of the components may be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or any combination thereof. In that regard, one or more of user input receiver610, transceiver620, middleware630, display unit640and database650may be included in an instance of an application hosted by television device120.

User input receiver610may be a component or module that is programmed and/or configured to receive a user input to execute an application that utilizes at least one function of the television device via a remote control device or a mouse or a keyboard coupled to television device120.

As referenced herein, the at least one function of television device120utilized by the application may be associated with broadcast content or video on demand (VOD) content to be played on television device120. For example, the at least one function of television device120utilized by the application may include play, stop, volume up and volume down functions for the broadcast content, and play, pause, stop, rewind, fast forward, volume up and volume down functions for the VOD content.

Further, the at least one function of television device120utilized by the application may be associated with a peripheral device, such as an external data storage device, a USB(Universal Serial Bus) flash drive, or a camera, etc., coupled to television device120.

Transceiver620may be a component or module that is programmed and/or configured to transmit, to server110via session server130, a request to execute the application. In some embodiments, transceiver620may directly transmit the request to execute the application to server110without going through session server130.

Transceiver620may be further configured to receive, from server110, a request to execute the at least one function of television device120. As referenced herein, execution of the at least one function by middleware630may be required at or by server110to execute the application.

Middleware630may be a component or module that is programmed and/or configured to execute the at least one function of television device120. Then, transceiver620may transmit a result of the execution by middleware630to server110.

Display unit640may be a component or module that is programmed and/or configured to display an image when transceiver620receives, from server110, the image generated by execution of the application at server110.

In some embodiments, the received image may include at least one encoded variable area and at least one non-encoded invariable area, display unit640may be further configured to display the received image by combining the encoded broadcast content or VOD content included in the variable area and non-encoded invariable area.

In some embodiments, transceiver620may transmit, to server110, a user input to the application when user input receiver610receives the user input to the application via the remote control device or the mouse or the keyboard. Then, transceiver620may receive, from server110, a subsequent image to which the user input is applied, and display unit640may be further configured to display the received subsequent image on television device120.

Database650may be a component or module that is programmed and/or configured to store data, including data input to or output from the components of server110. Non-limiting examples of such data may include the image which is received by transceiver620.

Further, by way of example, database650may be embodied by at least one of a hard disc drive, a ROM (Read Only Memory), a RAM (Random Access Memory), a flash memory, or a memory card as an internal memory or a detachable memory of television device120.

Thus,FIG. 6shows example configuration600of television device120on which the application may be hosted and executed, in accordance with embodiments described herein.

FIG. 7shows an example processing flow700of operations to receive an image generated as a result of an application, in accordance with various embodiments described herein.

The operations of processing flow700may be implemented in system configuration100including server110, television device120, session server130, web server132and content provider134as illustrated inFIG. 1. Processing flow700may include one or more operations, actions, or functions as illustrated by one or more blocks710,720,730,740,750,760,770, and/or780. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation. Processing may begin at block710.

Block710(Receive User Input) may refer to television device120receiving a user input that executes an application that uses at least one function of television device120via a remote control device or a mouse or a keyboard. Processing may proceed from block710to block720.

Block720(Transmit Request to Execute Application) may refer to television device120transmitting a request to execute the application to server110. Because television device120may not be configured to execute the application. Processing may proceed from block720to block730.

Block730(Receive Request to Execute Function) may refer to television device120receiving a request to execute the at least one function of television device120. Processing may proceed from block730to block740. As referenced herein, execution of the at least one function by television device120may be required at or by server110to execute the application.

Block740(Execute Function and Transmit Result) may refer to television device120executing the at least one requested function of television device120. Further, television device120may transmit a result of the execution to server110. Processing may proceed from block740to block750.

Block750(Receive Image and Display Image) may refer to television device120receiving an image of the application from server110and display the received image. Processing may proceed from block750to block760.

Block760(Receive User Input) may refer to television device120receiving a user input to the executed application via the remote control device or the mouse or the keyboard. Processing may proceed from block760to block770.

Block770(Transmit User Input) may refer to television device120transmitting the user input to the executed application to server110. Processing may proceed from block770to block780.

Block780(Receive Subsequent Image and Display Subsequent Image) may refer to television device120receiving a subsequent image from server110, and display the received subsequent image. As referenced herein, the user input to the executed application may be applied to the subsequent image.

Thus,FIG. 7shows example processing flow700of operations to receive the image generated as a result of the application, in accordance with various embodiments described herein.

FIG. 8shows an illustrative computing embodiment, in which any of the processes and sub-processes of hosting and executing an application may be implemented as computer-readable instructions stored on a computer-readable medium, in accordance with embodiments described herein. The computer-readable instructions may, for example, be executed by a processor of a device, as referenced herein, having a network element and/or any other device corresponding thereto, particularly as applicable to the applications and/or programs described above corresponding to the example system configuration100for transactional permissions.

In a very basic configuration, a computing device800may typically include, at least, one or more processors810, a system memory820, one or more input components830, one or more output components840, a display component850, a computer-readable medium860, and a transceiver870.

Processor810may refer to, e.g., a microprocessor, a microcontroller, a digital signal processor, or any combination thereof.

Memory820may refer to, e.g., a volatile memory, non-volatile memory, or any combination thereof. Memory820may store, therein, an operating system, an application, and/or program data. That is, memory820may store executable instructions to implement any of the functions or operations described above and, therefore, memory820may be regarded as a computer-readable medium.

Input component830may refer to a built-in or communicatively coupled keyboard, touch screen, or telecommunication device. Alternatively, input component830may include a microphone that is configured, in cooperation with a voice-recognition program that may be stored in memory830, to receive voice commands from a user of computing device800. Further, input component820, if not built-in to computing device800, may be communicatively coupled thereto via short-range communication protocols including, but not limitation, radio frequency or Bluetooth.

Output component840may refer to a component or module, built-in or removable from computing device800, that is configured to output commands and data to an external device.

Display component850may refer to, e.g., a solid state display that may have touch input capabilities. That is, display component850may include capabilities that may be shared with or replace those of input component830.

Computer-readable medium860may refer to a separable machine readable medium that is configured to store one or more programs that embody any of the functions or operations described above. That is, computer-readable medium860, which may be received into or otherwise connected to a drive component of computing device800, may store executable instructions to implement any of the functions or operations described above. These instructions may be complimentary or otherwise independent of those stored by memory820.

Transceiver870may refer to a network communication link for computing device800, configured as a wired network or direct-wired connection. Alternatively, transceiver870may be configured as a wireless connection, e.g., radio frequency (RF), infrared, Bluetooth, and other wireless protocols.