Detailed Description
Some embodiments of the invention relate to methods and systems for providing a complete network anywhere through partial server processing. In various embodiments of the present invention, a Set Top Box (STB) sends a request to a server communicatively connected to the STB to process portions of a Web page that are not supported by a Web browser running on the STB. The STB receives a data stream from a server, wherein the server generates the data stream by processing portions of the web page that are not supported by the STB. Based on the received data stream, the Web page may be composed in a Web browser. Various embodiments of the invention described herein are used to enable full internet access at home, or at work, or anywhere in the public place, for example, where a user wants to obtain such internet access.
FIG. 1A is a schematic diagram of an exemplary home or office configured to access Internet services through a Set Top Box (STB), according to an embodiment of the present invention. Referring to fig. 1A, there is shown a venue 100 having a television 110, a STB120, a local server 130, and a broadband connection 140 disposed in the venue 100. Also shown in FIG. 1A is a server computing cloud 150 connected to the site 100 through a broadband connection 145.
The venue 100 may be a residence, office, school, library, and/or other similar location where users may need to access the internet and/or review their electronic mail (email). The location or place of the television 110, STB120 and/or local server 130 in the venue 100 depends on the convenience and/or lifestyle of the user. For example, when the venue 100 is a residence (e.g., house, apartment), the television 100 and the STB120 may be located in a bedroom, family room, or entertainment room. In another example, when the venue 100 is an office or public building, the television 110 and the STB120 may be located in a conference room. The local server 130 may be located in the vicinity of the television 110 and the STB120 (e.g., in the same room) or may be located remotely from the television 110 and the STB120 (e.g., in another room or a nearby building). In some embodiments of the present invention, for example, broadband connection 140 may provide a wired connection using coaxial cable for communicative connection to two or more devices in venue 100. In other embodiments of the invention, a portion of broadband connection 140 may provide a wireless connection between two or more devices in venue 100 in addition to a wired connection.
The television 110 may comprise suitable logic, circuitry, code and/or interfaces that may enable receiving signals, displaying images (e.g., moving images), which are typically accompanied by sound. The television 110 may be based on, for example, Cathode Ray Tube (CRT) technology, plasma technology, Liquid Crystal Display (LCD) technology, and/or Light Emitting Diode (LED) backlight LCD technology. Television 110 may support one or more technology standards such as Digital Television (DTV) and High Definition Television (HDTV). The resolution of the screen or display portion of the television 110 depends on the technical standard supported by the television 110. For example, the screen resolution of HDTV may be 720p, 1080i or 1080p, where the number indicates the vertical resolution of the screen, the letter "p" refers to progressive scan format, and the letter "i" refers to interlaced scan format.
The STB120 may comprise suitable logic, circuitry, code, and/or interfaces that may be operable to connect the television 110 to an external signal source and convert the signal into content that may be displayed on a screen of the television 110. STB120 may provide processing related to managing, delivering, and/or storing video content to be displayed on television 110.
The STB120 may also run a Web browser that is displayed on the television 110 for interaction with the user. A Web browser is typically an application that enables a user to retrieve, present, or otherwise view information resources available on, for example, the world wide Web ("the Web"). The information resources may include, for example, web pages, images, videos, documents, pictures, and/or other types of multimedia content. Web browsers can also be used to access information in private networks provided by Web servers and/or files in file systems. Examples of browsers may include an IE browser, a Firefox browser from Mozilla, a Safari browser from apple, a Google browser, an Opera browser, and/or a native or customized browser for the STB 120.
When a user enters a Uniform Resource Identifier (URI) in a Web browser, an information resource is displayed to the user through the Web browser. In this regard, the prefix of the URI is used to decide how to interpret the URI. For example, with "http: "the URI at the beginning may identify the resource retrieved (retrieve) by the Hypertext transfer protocol (HTTP). Other supportable prefixes include, for example, "https: "i.e., based on secure hypertext transfer protocol (HTTPS)," ftp: "File Transfer Protocol (FTP), and" file: "i.e., a local file. Uniform Resource Locators (URLs) are typically a subset of URIs, which specify the location of information resources available for retrieval and/or retrieval mechanisms.
Once the information resource is retrieved, the Web browser can display it. For example, hypertext markup language (HTML) is passed to a layout engine (layout engine) of the Web browser to effect the conversion from markup files to interactive files. In addition to HTML, Web browsers can display different types of content on Web pages. For example, a Web browser may display images, audio, video, and/or extensible markup language (XML) files, typically including and/or supporting certain plug-ins, such as a Flash application and/or Java applet. In one embodiment of the present invention, in some cases, when a file of an unsupported type or set up for download rather than display is encountered, the browser may prompt the user to store the file in fixed and/or removable memory, e.g., memory in the STB 120. In another embodiment of the invention, the Web browser may send one or more requests to the local server 130 or a server located in the server computing cloud 150 to assist in processing at least a portion of the unsupported content.
The local server 130 may comprise suitable logic, circuitry, code, and/or interfaces that may enable or execute certain software applications that may be accessed by the STB120 via the broadband connection 140. In this regard, the local server 130 may be used to provide support for Web browser operations supported by the STB 120. The local server 130 may be implemented by means of computing devices including, for example, personal computers, notebook computers, tablet computers; or by means of a network device including, for example, a router, which may provide the processing power necessary to execute a particular software application. For example, in some cases, when the local server 130 is used to support Web browser operations in the STB120, the processing power of the local server 130 may be sufficient to run or execute software applications that provide such support.
The server computing cloud 150 may provide a plurality of servers and/or computing devices that are associated with providing various services provided by the internet. In this regard, the term 'cloud' generally means the internet, which is based on the internet using a graphical depiction of a cloud in a computer network diagram to represent the infrastructure of the internet. Servers in the server computing cloud 150 may be used to provide reliable services through, for example, personal servers and/or data centers. The server computing cloud 150 may act as a single point of access to services and/or resources provided by the server computing cloud 150 with respect to a user or location (e.g., the site 100). Servers in the server computing cloud 150 may include, for example, application servers dedicated to running certain software applications; and/or a Web server, a client connected to the server sending commands and receiving responses with data content.
A Web server (not shown) in the server computing cloud 150 may comprise suitable logic, circuitry, code, and/or interfaces that may enable, for example, delivery of Web pages (e.g., HTML files) and associated content (e.g., images, style sheets, Java scripts) to clients (e.g., STB 120). When a client requests a specific information resource using HTTP, the Web server may respond by providing content related to the information resource. Full execution of HTTP may cause a Web server to receive content from a client.
A server 150a, such as an application server, in the server computing cloud 150 may be used to support Web browsing operations in the STB 120. In this case, the server 150a in the server computing cloud 150 has processing power sufficient to run or execute the software application that provides this support. The server 150a may also be referred to as a display (render) server or STB120 auxiliary server, for example, meaning that the server 150a may be used to assist the STB120 in displaying web page content. The selection of either the server 150a in the server computing cloud 150 or the local server 130 to support web browsing operations in the STB120 depends, at least in part, on the amount of delay that is acceptable to the user when using web browsing operations in the STB120 (e.g., displaying web pages supported and assisted by another resource). In this regard, the local resources (e.g., local server 130) have a lesser amount of latency as compared to the remote resources (e.g., server 150a in server computing cloud 150). The selection of either the server 150a in the server computing cloud 150 or the local server 130 to support web browsing operations in the STB120 may also depend on, for example, the availability of the local server 130, the available resources of the local server 130, and/or the type of processing power and support provided by the local server 130. The server 150a need not be physically collocated with the Web server. Server 150a may be located in a different location on the Web server.
Server computing cloud 150 may be connected to venue 100 through broadband connection 145. The broadband connection 145 may provide a wired connection between the server computing cloud 150 and the broadband connection 140 in the venue 100 using, for example, coaxial cable. However, other embodiments are not necessarily so limited. For example, the broadband connection 145 may include a combination of wired and wireless portions, where the wired portion may use coaxial cable, optical fiber, and/or other high-broadband transmission media.
In operation, when the user is comfortably seated in the living room, he or she may decide to access the Web page through the Web browser in the STB120 being displayed on the television 110. The user submits a URL to the Web browser, which in turn sends an information resource request associated with the URL to the Web server. The Web server may pass the HTML and/or related content or information associated with the URL to the STB 120. STB120 may perform Web page information pre-fetching operations provided by the Web server to determine the type of content (e.g., supported or unsupported content) contained in the Web page. The STB120 may perform pre-fetching operations, for example as a daemon.
In the event that certain portions of the Web page are not supported by a Web browser in the STB120, the STB120 can send one or more requests to a server that can be used to provide Web page browsing support to the STB 120. In some embodiments, the unsupported portion may include, for example, a plug-in (plug-in). In this regard, the STB120 may send a request to the local server 130 or the server 150a in the server computing cloud 150 over the uplink. The request may include relevant URL information associated with the unsupported content, a size of the unsupported content in the Web browser, and/or an event associated with the unsupported content. The request may be sent to the server, for example, as a background work process. Once this information is received by the server providing Web browsing support to the STB120, the server may then request and obtain the unsupported content from the corresponding Web server, may process the non-received content, and may encode the processed content into a format acceptable to the STB 120. In one embodiment of the invention, the processed content may be encoded using a low-delay encoder protocol such as H.264/advanced Audio coding (ACC). In this regard, a server providing web browsing support to the STB120 may be used to convert the code or provide direct conversion from one code format to another. In some embodiments of the present invention, transcoding may include changing the codestream format of a file to another codestream format without going through a decoding and re-encoding process.
The resulting audio and video (a/V) content generated in the server is then transmitted to the STB120, and the STB120 then decodes the a/V stream and places the decoded information in the appropriate location in the web page to synthesize the complete web page. Some of the Web page content supported by the Web browser in the STB120 may be displayed in advance of, or concurrently with, the information provided by the server. In other words, server-provided data may be sent to the STB120 when a complete web page needs to be synthesized according to a predetermined manner or scheme. For example, the merging of supported and unsupported images and/or related content may be performed using a two-step (two-pass) scheme in which supported content is first displayed by the STB120 and unsupported portions from the server are placed or stacked in the Web browser by the STB120 after the supported content. As another example, the merging of supported and unsupported images and/or related content may be performed using a single-pass scheme in which the display of supported content and the placement of unsupported content from the server by STB120 occur simultaneously. Once the user leaves the particular web page, the server may terminate the work associated with that web page.
In another embodiment of the present invention, the STB120 may obtain all web content that is processed by a server that provides web browsing support to the STB 120. In this embodiment, the server may receive URL information associated with the Web page from the STB120 and may then request the Web page content from the Web server. Thereafter, the server may encode the information in a format that the STB120 may receive and transmit the A/V content to the STB120 to compose a complete web page.
In some cases, the Web browser in the STB120 cannot provide support for certain content (e.g., binary plug-ins) because this content is not native to the processor being used by the STB 120. For example, STBs with microprocessor based (MIPS) processors without internal interlocking pipeline architecture do not support plug-ins developed or coded for execution in x 86-based processor architectures. In this case, changing the STB design and/or providing an x86 processor based simulator (emulator) in the STB is prohibitive.
Although the STB120 with broadband connectivity capability shown in fig. 1A is capable of bringing a full internet experience to the user, the present invention is not so limited. Thus, instead of the STB120, the user is presented with a full Internet experience by the television 110 itself having broadband connectivity capabilities, without departing from the spirit and scope of the present invention.
Fig. 1B is a schematic diagram of another exemplary home or office configured to access internet services through STB120, in accordance with one embodiment of the present invention. Referring to fig. 1B, the venue 100, television 110, STB120, local server 130, broadband connections 140 and 145, and server computing cloud 150 are shown, as previously described in connection with fig. 1A. Also shown in fig. 1B are a ground station 170 communicatively connected to the server computing cloud 150 via a broadband connection 175, a satellite 165, and a satellite receiver 160 connected to the site 100. The satellite receiver 160 may communicate with the STB120 over the broadband connection 140 in the venue 100.
The ground station 175, satellite 165 and satellite receiver 160 are used to enable communication between the STB120 and a server 150a in the server computing cloud 150, the server computing cloud 150 being capable of providing web browsing for the STB 120; and/or to enable communication between the STB120 and a Web server, such as retrieving Web page information from the Web server. The ground stations 170 and/or satellites 165 shown in the venue 100 are merely one example configuration. Other configurations of the site 100 are equally suitable without departing from the scope of the present invention. For example, venue 100 may employ the same or different configurations to deliver television programming and/or broadband internet to off-air channel (off-air) STBs and/or cable STBs, such as Vestigial Sideband Broadcast (VSB).
In operation, a request by STB120 to a remote resource (e.g., server 150a in server computing cloud 150) for processing some or all of a web page may be transmitted over broadband connection 145, and/or over a wireless link associated with ground station 170, satellite 165, satellite receiver 160, broadband connection 175. Similarly, the STB120 may receive the processed a/V content stream from a remote source via the broadband connection 145, and/or via a wireless link associated with the ground station 170, the satellite 165, the satellite receiver 160.
Fig. 1C is a schematic diagram of yet another exemplary home or office configured to access internet services through a STB120 using a Switched Digital Video (SDV) scheme in accordance with an embodiment of the present invention. Referring to FIG. 1C, there is shown the venue 100, television 110, STB120, local server 130, broadband connections 140 and 145, and server computing cloud 150 described in connection with FIG. 1A. In fig. 1C, a headend (headend)180 is communicatively connected to the server computing cloud 150. Also, an optical node 155 is shown having one end communicatively coupled to the headend 180 via a broadband connection 185 (e.g., fiber optic link) and another end communicatively coupled to the site 100 via a broadband connection 145 (e.g., coaxial cable).
The headend 180, broadband connection 185 and optical node 155 may be used to form an SDV scheme. In this scenario, the unviewed channels in a typical cable television system need not be transmitted, resulting in an increase in available bandwidth. Channels not used in the broadband connection 185 may be used for communication between the STB120 and a server 150a in the server computing cloud 150, and the server 150a may provide Web browsing support for the STB 120. Since this channel can be dedicated to communication between the STB120 and the server, the latency of web browsing is reduced. In embodiments of the present invention, in certain specific cases, it may be more appropriate to use a remote resource with high processing power (e.g., server 150a in server computing cloud 150) than to use a local resource with lower processing power (e.g., local server 130).
In operation, the STB120 may use the unused broadcast channel to establish a dedicated channel for communication with a server 150a in the server computing cloud 150 that provides web browsing support to the STB 120. Data may be sent from the server to the STB120 over the dedicated channel. Once the server 150a located in the server computing cloud 150 is no longer needed to provide support, the channel will be immediately released from the headend 180 and available for transmission of, for example, television programming.
Fig. 1D and 1E are schematic diagrams of exemplary web browsing support for an STB by a local server and a remote server, respectively, according to one embodiment of the present invention. Referring to FIG. 1D, the STB120, the local server 130, and the remote server 190 are shown. The remote server 190 may correspond to, for example, the server 150a in the server computing cloud 150. The STB120 is communicatively connected to the local server 130 via a broadband connection 140. The STB120 is communicatively connected to a remote server 190 through broadband connections 140 and 145. In some embodiments of the invention, the broadband connections 140 and 145 may be connected to, for example, a media gateway (not shown).
In some embodiments, the STB120 may be configured to process web browsing support requests from the STB120 using the local server 130. In this embodiment, the STB120 may send one or more requests R0 to the local server 130 for assistance in processing a portion of the web page. Once the local server 130 receives the request or requests, it can process this request and generate a data stream DSO, which is sent to the STB120, synthesizing or displaying the complete web page according to a predetermined way or scheme. The data stream DSO may comprise audio and/or video. Once the user leaves the particular web page, the local server 130 may pause or terminate work related to the web page.
Referring to fig. 1E, in some embodiments of the present invention, the STB120 may be configured to process web browsing support requests from the STB120 using the remote server 190. In this embodiment, the STB120 may send one or more requests R1 to the remote server 190 for assistance in processing a portion of the web page. Once the remote server 190 receives the request or requests, it can process the request and generate a data stream DS1 which is sent to the STB120 to compose or display (render) the complete web page according to a predetermined manner or scheme. The data stream DS1 may include audio and/or video. Once the user leaves the particular web page, remote server 190 may terminate the work associated with the web page.
In some embodiments of the present invention, the STB120 may be configured to send some requests R0 to the local server 130 and other types of requests R1 to the remote server 190. In this embodiment, whether certain types of requests are processed locally or remotely by the server depends, at least in part, on the operational delays provided by the server and/or the ability of the server to process such types of requests.
Fig. 2 is a block diagram of an exemplary server supporting Web page display through a local Web browser in the STB, in accordance with an embodiment of the present invention. Referring to fig. 2, there is shown a server 200 comprising a processor 210, a content encoder 215, a memory 220, a security module 230 and an interface module 240. The content encoder 215 is optional.
In some embodiments of the present invention, the server 200 may correspond to the local server 130 and may be used to provide web browsing support to the STB120, for example, as described previously. In other embodiments, the server 200 may correspond to the server 150a in the server computing cloud 150, and may be used to provide web browsing support to the STB 120.
The processor 210 may comprise suitable logic, circuitry, code, and/or interfaces that may be operable to process a request from the STB120 to process at least a portion of the web page content for subsequent display by the STB 120. In this regard, the processor 210 may be used to convert and/or transcode content from one format to another. For example, the processor 210 may be used to process plug-ins that are not supported by a Web browser in the STB120, and the processed plug-ins may be encoded using a low latency h.264/ACC encoder. The processor 210 may include a number of different encoders for encoding different types of content from a web page into different formats, for example.
The content encoder 215 may comprise suitable logic, circuitry, interfaces and/or code that may be operable to convert data processed by the processor 210 into a format supported by the STB 120.
In some embodiments of the invention, the processor 210 may include an x 86-based framework that may be used to process, for example, certain plug-ins developed or encoded for execution in an x 86-based processor framework. In other embodiments, the server 200 may be used to provide an x 86-based processor simulator to handle certain content that is not supported by the STB 120.
The server 200 may include a plurality of processors 210, as shown by the dashed boxes in FIG. 2. One server 200 may be used to support multiple STBs 120. In this case, the server 200 may be used to provide load balancing and/or load sharing capabilities.
The memory 220 may comprise suitable logic, circuitry, code, and/or interfaces that may be operable to store information related to the operation of the processor 210. The memory 220 may be used to store information (e.g., coefficients, tables) related to the encoding operations supported by the processor 210.
The security module 230 may comprise suitable logic, circuitry, code, and/or interfaces that may be operable to support authentication operations, credential use, and/or encryption operations that may be operable to provide a secure connection between a server and the STB120, for example.
The interface module 240 may comprise suitable logic, circuitry, code, and/or interfaces that may be operable to enable the server 200 to communicate with the STB120 and/or with a Web server (e.g., a Web server from which Web page information may be obtained). The interface module 240 may support a plurality of physical and/or logical connections or interfaces. When the server 200 corresponds to the local server 130 as previously described, the interface module 240 may support communication with the STB120 over the broadband connection 140 (e.g., coaxial cable).
In operation, the server 200 can receive requests from the STB120 and can obtain unsupported and/or supported content from a corresponding Web server, can process the received content, and can encode the processed content into a format accepted by the STB 120. Processing of unsupported content may include, for example, displaying (rendering) unsupported plug-ins and/or other unsupported content. Processing the supported content may include displaying the supported plug-ins and/or other supported content. The resulting A/V content produced by the server 200 may then be transmitted to the STB120, and the STB120 then decodes the A/V data stream and synthesizes the complete web page.
In some embodiments of the present invention, when the content to be processed in the server 200 is secure content, a two-way authentication operation needs to be performed between the server 200 and the STB120 before a secure link is established and a credential shared by the server 200 and the STB120 is obtained.
Fig. 3 is a block diagram of an exemplary STB that supports access to internet services by a user of the STB in accordance with an embodiment of the present invention. Referring to fig. 3, STB300 is shown to include a processor 310, a content decoder 315, a memory 320, a security module 350, an interface module 330, and an a/V output 340. The content decoder 315 is optional. In some embodiments, two or more of the components in STB300 may be integrated into a single chip.
The processor 310 may comprise suitable logic, circuitry, code, and/or interfaces that may be operable to provide processing operations associated with managing, transmitting, and/or storing video content to be displayed on the television 110 as described above. Processor 310 may also be used to run or execute a Web browser, which may be displayed on the screen of television 110 to facilitate user interaction.
Processor 310 may be configured to perform pre-fetching of Web page information provided by a Web server to determine the type of content contained within the Web page. For example, the processor 310 may perform the prefetch operation as a background program.
Processor 310 may be configured to send one or more requests to a server providing web browsing support to STB300 to assist in processing some or all of the web pages. The processor 310 may be used to receive an audio/video (a/V) stream from the server and compose a complete web page on the browser. In this regard, the processor 310 may be configured to display (e.g., within a Web browser) supportable content from a Web page, such as plug-ins, graphics, text, etc., and place the decoded A/V stream from the server on top of the generated or displayed content to compose a complete Web page on the Web browser. In some embodiments of the invention, the processor 310 may also place the decoded A/V stream from the server while displaying the visual portions supported in the web page.
The content decoder 315 may comprise suitable logic, circuitry, interfaces and/or code that may enable conversion of data encoded by the local server 130 or the server computing cloud 150 into a format required for display.
The memory 320 may comprise suitable logic, circuitry, code, and/or interfaces that may enable storage of information associated with the operation of the processor 310.
The security module 350 may comprise suitable logic, circuitry, code, and/or interfaces that may be operable to support authentication operations, credential use, and/or encryption operations that may be operable to provide a secure link between a server providing web browsing support to the STB300 and the STB300, for example.
The interface module 330 may comprise suitable logic, circuitry, code, and/or interfaces that may enable interaction between the STB330 and a number of devices, including a display server and/or a Web server. For example, the interface module 330 provides connection support with cable television services and/or satellite services. The interface module 330 may support a plurality of ports, such as High Definition Multimedia Interface (HDMI), ethernet physical layer (PHY), Universal Serial Bus (USB), RS 232. Other types of connections, protocols, and/or ports may also be supported.
a/V output 340 may comprise suitable logic, circuitry, code, and/or interfaces that may be operable to provide for the display or rendering of audio content and/or video content, such as on television 110 as previously described. In this regard, the a/V output 340 may provide a variety of technical standards such as DTV and HDTV, and/or a variety of screen resolutions.
Although the STB with broadband connectivity capability shown in fig. 3 brings the user a complete internet experience, the present invention is not so limited. Accordingly, other devices, such as televisions themselves, may also provide the user with a full internet experience via a broadband connection without departing from the spirit and scope of the present invention.
In operation, a Web browser may be run in STB300 and may be displayed on a television, such as television 110, via A/V output 340. When a user interacts with a Web browser, such as through a set-top box remote control or keyboard, submitting a URL to the Web browser, STB300 will send a request to the Web server for an information resource associated with the URL through interface module 330. The Web server will communicate the HTML and/or related content or information associated with the URL to STB300 via interface module 330. Processor 310 performs pre-fetch operations on Web page information provided by a Web server to determine the type of content contained by the Web page.
Processor 310 may send one or more requests to a server that provides web browsing support to STB300 through interface module 330. These requests may include information about the URL of the web page. In response, the server may send the A/V stream to STB 300. A processor 310 located in STB300 may decode the a/V stream and display the decoded information to synthesize a complete web page.
Fig. 4 is a schematic diagram of an exemplary multi-content-type Web page to be displayed via a local Web browser in the STB, in accordance with an embodiment of the present invention. Referring to FIG. 4, a Web browser 400 is shown in which a Web page 430 is rendered or displayed. The Web browser 400 can include a number of user interface elements 410 (e.g., back, forward, refresh, stop, home), which interface elements 410 can be used to navigate and/or operate, and an address bar 420 can be used to submit a URI.
The Web page 430 displayed in the Web browser 400 may include different types of content. In the example shown in FIG. 4, the web page 430 may include a text portion 450, a text and graphics portion 460, a graphics portion 470, and an unsupported portion 440 (e.g., a plug-in). When the STB performs a pre-fetch operation to determine the type of content in the web page, it may determine that the unsupported portion 440 is the portion of the web page for which the STB needs to obtain support from the server. In this regard, the STB may indicate to the server that the portion 440 is not supported by sending a request to obtain assistance from the server. The server then processes the unsupported portion 440 and can then provide the processed content associated with the unsupported portion 440 back to the STB in a format that the STB can use to compose the Web page 430 in the Web browser 400.
Fig. 5A and 5B are schematic diagrams of an example of providing partial web browsing support to a STB through server processing according to an embodiment of the present invention. Referring to fig. 5A, a STB500 and a server 550 are shown. The STB500 may correspond to, for example, the STB120 described previously. In this regard, the STB500 may have a structure substantially similar to the exemplary structure of the STB300 described previously. The server 550 may correspond to, for example, the local server 130 and/or the server 150a in the server computing cloud 150 described previously. In this regard, the server 550 may have a structure substantially similar to the exemplary structure of the server 200 described previously.
Also shown in fig. 5A is a Web browser 510 running on the STB 500. The Web browser 510 may be displayed on a television or other display device communicatively connected to the STB500 to enable user interaction. Displayed in Web browser 510 is Web page 520, which is to be composed by STB 500. Web page 520 may include a portion 524 (shown in dotted fashion) supported by Web browser 510, which is thus supported by STB 500. Web page 520 may also include a portion 522 (shown in blank space) that is not supported by Web browser 510 and thus is not supported by STB 500. In the example shown in FIG. 5A, the content not supported in web page 520 may be Adobe's Shockwave Flash (SWF) plug-in.
In operation, STB500 may determine that portion 522 associated with an unsupported plug-in is included in web page 520. The STB500 may send a request to the server 550 seeking assistance in resolving plug-in processing. The request may include one or more of a plug-in URL, the size of the plug-in the web page 520, and other relevant events related to the plug-in. The server 550 may receive the request and obtain an instance (instance) of Adobe's SWF plug-in 560 based on URL information provided by the STB 500. The server 550 may then process the plug-in 560 and may encode the processed output using a low-delay encoding operation, such as h.264/AAC, to generate a/V data 570 (shown in dashed lines).
Referring to FIG. 5B, after the server 550 generates A/V data, it can transmit the A/V data to the STB 500. The STB500 may then decode the a/V data stream and may synthesize or display a complete web page that is composed by combining images displayed in the STB500 that are related to supported content 524 (dotted pattern) and unsupported content 522 (diagonal pattern) processed by the server 550.
The manner or scheme described above in connection with fig. 5A and 5B may correspond to a two-step scheme, which will be explained in detail below. However, other embodiments of the present invention may be performed using a one-step scheme, as also described below.
Fig. 6A is a schematic diagram of a two-step method of providing partial web browsing support to a STB by server processing, according to one embodiment. Referring to fig. 6A, there is shown a Web browser 610 in which a Web page 620 is shown to be composited by the STB. Web page 620 may include a portion 624 (shown in dotted fashion) supported by Web browser 610. Web page 620 also includes a portion 622 (shown blank) that is not supported by Web browser 610.
In the first synthesis step (step 1) shown in fig. 6A, the STB will determine that a portion 622 of the web page 620 needs to be processed by the server, which may send one or more requests to the server for processing the portion 622 of the web page 620. In step 1, the STB will display a portion 624 of the Web page 620 supported by the Web browser 610.
In the second synthesis step (step 2) shown in fig. 6A, the STB may receive and decode the data stream from the server. The decoded data associated with the unsupported portion 622 is placed or overlaid (overlaid) by the Web browser 610 to the appropriate location of the Web page 620, along with the browser-supported and displayed portion 624, to compose the complete Web page 620.
Fig. 6B is a schematic diagram of a one-step method of providing partial web browsing support to a STB by server processing, according to one embodiment. Referring to fig. 6B, there is shown a Web browser 610 in which a Web page 620 is shown to be composited by the STB. As previously mentioned, Web page 620 may include portions 624 supported by Web browser 610 (shown in dotted fashion) and portions 622 not supported by Web browser 610 (shown in blank).
Initially, the STB can determine that a portion 622 of web page 620 needs to be processed by the server, which can send one or more requests to the server for processing of portion 622 of web page 620. At this stage, the STB has not yet displayed the portion 624 of the Web page 620 that is supported by the STB and the Web browser 610.
In the first synthesis step (step 1) shown in fig. 6B, the STB will receive and decode the data stream from the server. The Web browser 610, while displaying the supported portion 624, places the decoded data associated with the unsupported portion 622 into the appropriate location of the Web page 620 to compose the complete Web page 620.
Fig. 7 is a flowchart of exemplary steps performed by a server process to provide partial web browsing support for STBs, according to one embodiment of the present invention. Referring to fig. 7, a flow diagram 700 is shown. At step 710, the STB, such as STB120, can determine whether a portion of the Web page is unsupported by a Web browser running on the STB. That is, the STB may determine the type of content contained in the web page. In the case where the web page does not include an unsupported portion, the flow may proceed to step 740 where the STB may display the web page directly. Where the web page includes one or more unsupported portions (e.g., plug-ins), flow may proceed to step 720.
At step 720, the STB can send a request to a server communicatively connected to the STB (e.g., local server 130, remote server 190) for web browsing operational assistance by processing unsupported portions of the web page with assistance from the server. After the server has processed the unsupported portion(s) of the web page at step 730, the STB can receive a data stream (e.g., an A/V data stream) from the server. Upon receiving the data stream from the server, the STB may compose a complete web page based on the supported portions of the web page displayed by the STB and the unsupported portions received via the data stream from the server, step 740.
At step 750, the STB can provide information related to certain events to the server. For example, the STB may provide information to the server relating to keystrokes or click events, and/or information relating to actual pointer position information. When such an event occurs, the STB may send the event information to the server. The STB may periodically or otherwise send actual pointer location information to the server. The server may use information provided by the STB to achieve synchronization between the server and the STB, for example. Although step 750 is shown at the end of flowchart 700 in FIG. 7, it is not limited thereto and may occur elsewhere in flowchart 700. In some cases, the server may also provide information to the STB that may be used to achieve synchronization. In some embodiments of the invention, the server may use the event and/or actual pointer location information to perform predictive operations on the interactive content.
When a portion of a Web page is not supported by a Web browser, flowchart 700 may correspond to a two-step and one-step approach to compositing Web pages on a Web browser.
Referring again to fig. 5A and 5B, in one embodiment of the invention, the STB500 may send a request to a server 550 communicatively connected to the STB500 to process a portion 522 of the Web page 520, the portion 522 being unsupported by the Web browser 510 running on the STB 500. STB500 may receive a data stream from server 550, where server 550 generates the data stream by processing unsupported portions 522 of web page 520. Further, Web page 520 in Web browser 510 may be composed based on the received data stream. The server 550 may be located in a server computing cloud or be a local server.
STB500 may determine which portions of Web page 520 are unsupported by the Web browser during the pre-fetching process. It may also determine the type of content in web page 520. In some cases, STB500 may perform this determination during execution of the daemon.
A portion 524 of Web page 520 may be supported by Web browser 510. In some cases, during composition, supported portions 524 of web page 520 may be displayed before data streams associated with unsupported portions of web page 520 are overlaid. In other cases, during composition, display of supported portions 524 of web page 520 may be performed simultaneously with the stacking of data streams associated with unsupported portions of web page 520. Unsupported portions 522 in web page 520 may include binary plug-ins. The request sent by STB500 may include a URI associated with the unsupported portion 522 of web page 520 and/or the size of the unsupported portion 522 of web page 520.
Another embodiment of the invention may provide a machine and/or computer readable storage device and/or medium having stored therein a machine code and/or a computer program executable by a machine and/or a computer, the computer program comprising at least one code segment thereby causing the machine and/or computer to perform the steps described herein to provide a complete internet via partial server processing, where appropriate.
Accordingly, the present invention may be realized in hardware, software, or a combination of hardware and software. The present invention can be realized in a centralized fashion in at least one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other suitable apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software could be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
The present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which, when loaded in a computer system is able to carry out these methods. In the present context, a computer program refers to a sequence of instructions in any expression, in any language, code or notation, of a device having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation b) to appear in another form.
While the invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from the spirit and scope of the invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the invention without departing from the essential scope thereof. Therefore, it is intended that the invention not be limited to the particular embodiment disclosed, but that the invention will include all embodiments falling within the scope of the appended claims.