Abstract:
Methods and apparatus for use in a network including a local server coupled to a central server, the local server being coupled to a plurality of network devices, for interactively controlling from one of the plurality of network devices a flow of audio visual data from the central server to the network device, comprising obtaining a control command at the network device, the control command indicating a desired modification to the flow of the audio visual data from the central server to the network device. The control command is sent from the network device to the central server via the local server. A modified flow of the audio visual data is then received from the central server at the network device in response to the control command.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
   This application claims priority of U.S. Provisional Application No. 60/216,797, entitled “INTERACTIVE DATA TRANSMISSION SYSTEM,” filed on Jul. 7, 2000, which is hereby incorporated by reference for all purposes. 
   This application is related to U.S. application Ser. No. 09/698,701 filed on the same day, and entitled “INTERACTIVE DATA TRANSMISSION SYSTEM.” 

   BACKGROUND OF THE INVENTION 
   1. Field of the Invention 
   The present invention relates generally to real-time data transmission across a network. More particularly, the present invention relates to real-time transmission of data and interactive modification of the data transmitted across a network in response to a request received from a network device over the network. 
   2. Description of Related Art 
   A popular pasttime in today&#39;s entertainment-oriented society is watching movies. In fact, many movie fanatics have acquired elaborate home entertainment systems solely for this purpose. However, for those individuals who decide to spend their Saturday night at home with a movie, there a limited number of options available to them. 
   Traditionally, movie goers who prefer to watch movies in the privacy of their own homes rent videos from a local video rental store. However, the video rental process is a time-consuming one, requiring the movie viewer to travel from his or her home merely to obtain the desired video. Of course, even with the obvious disadvantages associated with the video rental process, many still find this desirable since they can watch the movie as many times as they want, and they may pause, rewind, fast forward, and re-start the movie at their own convenience. 
   In view of the disadvantages associated with the conventional video rental process, pay-per-view is a viable option, particularly in hotels which often do not offer video rental services to its guests. Through the pay-per-view option, it is possible to select a video as well as view the video from the privacy of home or a hotel room. However, the movie choices typically offered to movie viewers by such cable providers are limited. Moreover, the pay-per-view option does not offer the advantages of a standard VCR. More particularly, the pay-per-view option does not allow a user to pause, rewind, fast forward, or re-start a movie once it has started. In addition, the available viewing times are typically set and therefore cannot be selected by a user. 
   Physical tapes are also used for a variety of purposes other than viewing movies. For instance, in Asian countries, karaoke is a popular pastime. A traditional karaoke business is commonly run with a central control room connected to multiple listening stations. The control room contains a machine associated with each listening station to enable a desired tape to be played and routed to the listening station (e.g., via a coaxial cable). When a karaoke participant in one of the listening stations requests a particular karaoke song, the appropriate tape is physically inserted into the machine connected to the listening station. The karaoke tape is then played and routed to the listening station connected to this machine. 
   The existing karaoke model is undesirable in a variety of ways. Since a machine capable of playing karaoke tapes is required for each listening station, the existing karaoke system often requires numerous machines. Since these machines are not automated, it is necessary to employ personnel that will be available to operate the machines. Due to the expense associated with acquiring and maintaining numerous karaoke machines and associated personnel, a traditional karaoke business is far from inexpensive to operate. In addition, it is typically necessary to maintain multiple copies of songs that are popularly requested in order to be able to fulfill the same song request when it is received from more than one listening station. Moreover, since multiple copies are often retained for these popular selections, the cost of maintaining an adequate inventory as well as storage space to store these copies increases the cost of such a karaoke business. In addition, the quality of a physical medium such as a video tape deteriorates over time. Moreover, since the karaoke tapes must be loaded and unloaded by humans, this type of system is susceptible to human error. As a result, the incorrect tape may be loaded or there may be a substantial delay between songs while the personnel are locating or changing the tapes. Thus, it is impossible for a karaoke participant to predict the time that a selected song will start. Similarly, it is impossible to predict the delay between songs that are loaded consecutively into the karaoke machine. It is also important to note that the karaoke singers in the listening stations do not have access do the machine associated with their private listening station. Thus, once a karaoke tape has been inserted, karaoke participants cannot interactively control their individual karaoke experience. 
   In view of the above, it would be desirable if a system could offer the interactive nature of a VCR without the limitations and conveniences associated with a VCR. In addition, it would be beneficial if a user were provided a wide range of choices previously unavailable to a VCR or pay-per-view user. 
   SUMMARY 
   The present invention enables data to be transmitted over a network from a server to a client device such as a set-top box. This may be accomplished via a single local server as well as via multiple staged servers, such as from a central server via the local server. For instance, the central server may be associated with a web site on the Internet. In addition, once initiated, data flow may be modified and controlled interactively by the user. Moreover, a file may be loaded from the central server to a memory associated with the local server. This loading process may be performed in combination with data transmission upon initiation by a user (e.g., via a web browser) or by the local server when a requested file is not accessible to the local server. Alternatively, it may be desirable to load a file independently from the data transmission process. 
   In accordance with one aspect of the invention, a first network device such as a set-top box may interactively control data flow from a second network device such as a server to the first network device. A control command indicating a desired modification to the flow of data from the second network device to the first network device is received at the first network device. The first network device sends a control command to the second network device. When the second network device receives the control command, the second network device modifies the flow of data from the second network device to the first network device in response to the control command. The first network device then receives a modified flow of data from the second network device to the first network. This process may similarly be performed across multiple staged servers rather than by a single local server. 
   Modification to the flow of data may be accomplished by modifying a data stream in a variety of ways. For instance, modification may include initiating transmission of a data stream, pausing transmission of a data stream, advancing transmission by a single frame, modifying the speed of transmission of data, and modifying the source of the data being transmitted (e.g., file and/or file location). Such a modification to the flow of data between network devices may be initiated by a user via an input device such as a mouse, keyboard, or remote control device. 
   In accordance with another aspect of the invention, a user may select one or more files from which data is to be transmitted over a network from a network device such as a server to another device such as a set-top box. Each of the files may include video data and audio data as well as other digital data. For instance, each file may include a movie or a karaoke video. The user may select via the set-top box one or more of a plurality of files associated with the server. In addition, the user may specify an order of transmission of the selected files. Information identifying the selected files as well as the specified order of transmission may then be sent from the set-top box to the server. Data stored in these files may then be transmitted from the server to the set-top box in the order of transmission. 
   In accordance with another aspect of the invention, the present invention enables transmission of data to be billed within a multiple site system such as a hotel. More particularly, it is possible to bill a guest each time a movie or karaoke song is played (i.e., transmitted from the local server). Moreover, the hotel may wish to bill the guest an additional amount when the requested selection is transmitted from the central server over the Internet to the guest&#39;s hotel room (e.g., when the user accesses the central server via a web browser). Of course, it may be desirable to bill a guest once (e.g., when the associated file is loaded from the central server to the local server), allowing the guest to view the selection multiple times. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The invention, together with further advantages thereof, may best be understood by reference to the following description taken in conjunction with the accompanying drawings in which: 
       FIG. 1  is a block diagram illustrating an exemplary system in which the present invention may be implemented in accordance with an embodiment of the invention. 
       FIG. 2  is a block diagram illustrating an exemplary set-top box board layout that may be used to implement the present invention. 
       FIG. 3A  is an exemplary screen shot that may be presented to a user upon start-up. 
       FIG. 3B  is an exemplary screen shot illustrating the selection of karaoke songs and/or movies to be transmitted in accordance with the present invention. 
       FIG. 4  is an exemplary layout of a remote control that may be used to implement the present invention. 
       FIG. 5  is a process flow diagram illustrating a method of playing a movie or karaoke selection in accordance with an embodiment of the invention. 
       FIG. 6  is a process flow diagram illustrating a method of processing a user&#39;s voice input in accordance with an embodiment of the invention. 
       FIG. 7  is a process flow diagram illustrating a method of pausing a movie or karaoke selection in accordance with an embodiment of the invention. 
       FIG. 8  is a process flow diagram illustrating one method of stepping transmission of data in accordance with an embodiment of the invention. 
       FIG. 9  is a process flow diagram illustrating one method of reducing the speed of data transmission to the set-top box in accordance with one embodiment of the invention. 
       FIG. 10  is a process flow diagram illustrating a method of initiating or resuming the transmission of data in accordance with one embodiment of the invention. 
       FIG. 11  is a process flow diagram illustrating a method of selecting data files to be transmitted via a menu in accordance with one embodiment of the invention. 
       FIG. 12  is a process flow diagram illustrating one method of initiating the transmission of data associated with a next selected video in accordance with one embodiment of the invention. 
       FIG. 13  is a process flow diagram illustrating a method of performing a seek in accordance with an embodiment of the invention. 
       FIG. 14  is a process flow diagram illustrating one method of processing data received by the set-top box in accordance with one embodiment of the invention. 
   

   DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
   In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without some or all of these specific details. In other instances, well known process steps have not been described in detail in order not to unnecessarily obscure the present invention. 
   With the recent advancement of digital technology, the way information flows and data are exchanged have taken a new direction. With the aid of video compression and decompression technology, digitized audio and video data can now be transmitted live across cities, states, and countries. Moreover, network bandwidth continues to increase through the introduction of fast Ethernet, cable modem, Digital Subscriber Line (DSL), variations of DSL (xDSL), and Gigabit Ethernet. DSL service enables the transmission of data at rates up to 6.1 megabits (millions of bits) per second, enabling continuous transmission of motion video, audio, and even 3-D effects. Accordingly, real-time video transmission which requires high bandwidth is now feasible. 
   Through the use of the present invention, files such as movies and karaoke videos may be downloaded to a local server and streamed to one or more client devices (e.g., set-top boxes). In addition, interactive control of the streamed data is made available through the set-top boxes. Accordingly, the present invention provides the traditional advantages of a conventional video recorder without the restrictions or limitations of a video recorder. 
     FIG. 1  is a block diagram illustrating an exemplary system in which the present invention may be implemented in accordance with an embodiment of the invention. The present invention is implemented in a network such as a local area network (LAN), which may be further coupled to a wide area network (WAN) such as the Internet. Within the network, one or more local servers  102  are used as the video-streaming server. Moreover, the local server(s)  102  may also be used as the content storage server that is capable of storing a plurality of files. One or more associated file servers  104  are used for user account management, content management, billing information, web server, firewall, and all other non-streaming related services. In addition, an equivalent central file server may be established at the central site which monitors and communicates with all the remote file servers. In order to decrease the costs associated with the local server  102  and limit the number of files available for transmission to each client, it may be preferable to use a suitable memory for storing approximately twenty files (e.g., karaoke files or movie files). However, this configuration is merely exemplary and a memory with a greater capacity may be implemented. These files may be supplied initially as well as downloaded from another server on the network, as well as from the Internet. The local server  102  is adapted for being coupled (e.g., via an Ethernet switch  106 ) to a plurality of devices  108  (e.g., set-top boxes) that are each configured to transmit a control command to the local server  102  to control the initiation and flow of data associated with a particular file to the requesting device  108 . In addition, each of the devices  108  is capable of providing video and audio signals to associated monitors or televisions  110  when they are received from the local server  102 . 
   Through each device  108 , a client may initiate the transmission of data associated with a specified file via the local server  102 . In addition, once transmission of data is initiated, it may be desirable to interactively control the transmission of data from the local server  102 . When the requested file is not available to the local server  102 , the local server may access a central server  112  over the Internet via an Internet Service Provider (ISP)  114 . The central server  112  preferably has a vast data store of files in an associated memory. Alternatively, the client may independently download a requested file from the central server  112  via a web browser independently of transmission of the associated data to the client. For instance, when the user wants to watch a video that is not available on the local server, the user may access the central server and select one of a plurality of listed videos by clicking on the desired title(s). The central server  112  may then send the file to the local server  102  for storage in the file server  104  and/or transmission to a requesting client. It is important to note that each client device  108  and the local server  102  preferably perform authentication prior to establishing a communication link. 
   When a file is transmitted from the central server  112  to a client via the local server  102 , the transmission and interactive control of the transmitted data may be performed in a manner to enable real-time streaming and therefore instantaneous access to the data by a requesting client. Alternatively, there may be a small or considerable delay, depending upon the transmission medium that is used. For instance, the transmission medium used to transmit data from the central server  112  to the local server  102 , and from the local server  102  to each device  108  may include a traditional transmission medium such as a cable modem connection. In a WAN setting, bandwidth cannot be guaranteed at a sustainable rate to support real-time broad-band video streaming. Thus, it is important to note that the benefit of a the local server  102  in a LAN setting is to provide sustainable bandwidth to guarantee uninterrupted real-time video streaming. 
   Traditional phone service transmits an analog signal which is converted into digital information by a modem. However, the maximum amount of data that may be received using an ordinary modem is currently approximately 56 Kbps. In contrast, with various xDSL technologies, it is possible to receive data at rates of well over one million bits per second (Mbps), enabling continuous transmission of motion video, audio, and 3-D effects. For example, current ADSL standards contemplate data receive rates on the order of 6 Mbps. VDSL proposals contemplate data receive rates on the order of 25 or 50 Mbps. Thus, the delay involved in transmission of the requested data may be minimized through the use of a Digital Subscriber Line (DSL) or variations of DSL (xDSL). As a result, video quality is improved. Moreover, since multiple devices  108  may be coupled to the central server  112  through a single Digital Subscriber Line via the local server  102 , each client need not individually obtain DSL service. In this manner, the cost to the consumer is considerably reduced while enabling the consumer to interactively control data transmission via the central server  112  with approximately instantaneous access. 
   The present invention may be used by a business such as a hotel to enable multiple rooms to access a local server maintained by the hotel. Since the local server is maintained by the hotel, the hotel may wish to bill a guest each time a movie or karaoke song is played (i.e., transmitted from the local server  102  to a client device  108 ). Moreover, the hotel may wish to bill the guest an additional amount when the requested selection is transmitted from the central server over the Internet to the guest&#39;s hotel room (e.g., when the user accesses the central server via a web browser). Of course, it may be desirable to bill a guest once (e.g., when the associated file is loaded from the central server to the local server) while allowing the guest to view the selection multiple times. 
   Billing information may be obtained in a variety of ways. For instance, billing information associated with the hotel room may be automatically obtained. As another example, billing information such as credit card information may be obtained from the user upon selection of a video. As yet another example, a smart card reader may be provided to enable the user to charge room services to his or her smart card. 
   As described above with reference to  FIG. 1 , multiple client devices  108  may be coupled to a single local server  102 . In accordance with one embodiment of the invention, a client device  108  may be implemented in the form of a set-top box. A set-top box is a device that enables a television set to become a user interface to the Internet and also enables a television set to receive and decode digital television broadcasts. More particularly, a set-top box is used by television viewers to receive digital broadcasts via an analog television set. A set-top box typically includes a Web browser stored in a memory in the set-top box, enabling a television user to access the Internet. In addition, a typical digital set-top box contains one or more microprocessors for running the operating system and for parsing an MPEG transport stream. A set-top box also includes RAM, an MPEG decoder chip as well as other chips for audio decoding and processing. In addition, a set-top box may contain a hard drive for storing recorded television broadcasts, for downloaded software, and for other applications. Similarly, a DVD drive may be used to enable the set-top box to access a variety of files. 
     FIG. 2  is a block diagram illustrating an exemplary set-top box board layout that may be used to implement the present invention. In one embodiment, the set-top box board implements a standard Ethernet implementation and therefore includes a 10BaseT Interface  202 , an Ethernet controller  204 , an EEPROM  206  for storing an IP address associated with the set-top box board, and SRAMs  208 ,  210  for storing data obtained from the network (e.g., Internet). In addition, the set-top box includes a CPU  212  for running the operating system and for parsing an MPEG data stream. In addition, a flash EPROM  214  may store software for drivers and other instructions necessary to implement the present invention. Moreover, this client software that is programmed into the flash EPROM  214  may be updated through the local server at any time for feature enhancement. System memory  216  (e.g., DRAM) is available for use by the CPU. In addition, EPLD  218  is adapted for routing signals among components, thereby providing the appropriate combinational logic for the set-top box. MPEG decoder  220  is provided for decompressing video and audio data received in the compressed data received by the set-top box. DRAM chips  222 ,  224 ,  226 ,  228 , and  230  are provided for storing video data for the MPEG decoder  220 . 
   After the video and audio data is decompressed by the MPEG decoder  220 , the decompressed audio and video signals are processed separately. The decompressed video signal is then sent from the MPEG decoder  220  to a video encoder  242  to convert the digital video signal to an analog signal. The analog video signal is then output at a video input/output  244 . The decompressed audio signal is sent from the MPEG decoder  220  to digital-to-analog converter  236  and output via stereo output  238  and therefore through an amplifier (not shown). 
   In accordance with one embodiment, the set-top box includes karaoke capabilities. Thus, in addition to the data (e.g., karaoke file) received from the network, one or more microphone inputs  231  and  232  are provided to enable users to sing along with a karaoke selection. In the embodiment shown, two microphone inputs are supported, although it should be appreciated that any desired number of microphones may be provided. When a karaoke singer sings into a microphone, the audio signal is processed by an analog to digital converter  233 . The digital audio signal is then sent to a karaoke audio processor  234 . For instance, the karaoke audio processor  234  may be a digital karaoke audio processor such as model MED25102 available from Medianix Semiconductor, Inc., located at 100 View Street, Mountain View, Calif. 94041. The digital audio signal processed by the karaoke processor  234  is then sent to digital-to-analog converter  236  and output via stereo output  238 . In addition, a DRAM chip  240  is available for storing audio data for the karaoke processor  234 . A standard audio input  246  is also provided. In addition, an infra-red interface controller (not shown) may be provided to enable communication with a remote control device. 
   In accordance with one embodiment, the set-top box is capable of switching between NTSC and PAL signals for world-wide adoption and compatibility. In addition, to implement a karaoke system, user interfaces in different languages may be provided by the set-top box. Similarly, files encoded with sound tracks in multiple languages may be provided at the local server to enable a sound track in a particular language to be selected at the set-top box. 
     FIG. 3A  is an exemplary screen shot that may be presented to a user upon start-up. As shown, an initial screen  302  may be displayed which indicates one or more selections which may be input by a user. For instance, at start-up, a default selection type  304  may be presented to the user. More particularly, the selection type  304  of a file to be transmitted may be, for example, “karaoke” or “movie”. Thus, the default selection type  304  may be “karaoke”, as shown. In addition, the user may indicate a particular selection  306  associated with the selection type  304 . As shown, a number, title, or other mechanism may be used to identify each selection. 
     FIG. 3B  is an exemplary screen shot illustrating the selection of karaoke songs and/or movies to be transmitted in accordance with the present invention. Once the user has entered one or more selections, a TV screen or monitor  308  after all selections are entered is displayed. Thus, the selection type  310  may be “movie” or “karaoke”, as shown. In addition, each selection  312  is identified numerically in accordance with a pre-selected set of selections available to the user. For instance, a manual may be provided to the user identifying the selections available to the user. 
   As described above, the user sends control commands to the set-top box indicating desired modifications to the flow of data to the set-top box. In accordance with one embodiment, these control commands are sent to the set-top box via an infra-red remote control.  FIG. 4  is an exemplary layout of a remote control that may be used to implement the present invention. A TV/VIDEO key  402  enables a user to toggle between a television and video mode. In addition, a NEXT key  404  stops the current video (e.g., movie or karaoke) and starts the next video selected. An ENTER key  406  enables a user to enter a number of key strokes. In addition, an NTSC/PAL key  408  enables a user to switch between NTSC and PAL mode, as described above. A RESET key  410  reboots the set-top box. A VIEW/MENU key  412  enables a user to view a video after all karaoke or movie selections are entered. During video play, when the VIEW/MENU key  412  is toggled, a menu screen is displayed to enable the user to add or edit the video selections. The user may then toggle the VIEW/MENU key  412  an additional time to start playing the current video selection. Number keys  0 – 9   413 – 430  may be used to identify video titles. Arrow keys  432 – 438  move the cursor up, down, right or left to enable a user to enter or modify selections. 
   Various control keys are provided to initiate or modify the flow of data to the set-top box. When a PLAY key  440  is pressed, a selected video (e.g., movie or karaoke selection) is played at normal speed from either a PAUSE, STEP, or SLOW mode, each of which will be described in further detail below. In addition, in accordance with one embodiment, a percent video played indicator is displayed on the screen to indicate the amount of the video that remains to be transmitted. When a SLOW key  442  is pressed, the video speed is slowed (e.g., to one-half normal speed). The PLAY key  440  may then be pressed to resume to normal speed. Similarly, when a PAUSE key  444  is pressed, the video is paused until the PLAY key  440 , the SLOW key  442 , or a STEP key  446  is pressed. Once the STEP key  446  is pressed, the video is advanced by one frame at a time. 
   Rather than viewing the entire video, the user may wish to view only specific portions of the video. When a SEEK key  448  is pressed during video play, the user may select a percentage of the video file to jump to. The video then jumps to that location and begins to play starting from that location. The seek location may be any location in the video file. Accordingly, the seek function may operate in forward or reverse. 
   In addition to video control keys described above, karaoke control keys are provided to enable the user to modify the audio signal associated with the karaoke music and/or the user&#39;s voice. The key functions may be implemented through the use of a conventional karaoke audio processor such as karaoke audio processor MED25102 available from Medianix. Various keys are provided on the remote control to implement various functions available in a karaoke processor. For instance, KEY− 450  decreases the key of the music, KEY+ 452  increases the key of the music, KEY N  454  returns the key of the music to neutral, VOL+ 456  increases the microphone volume, VOL− 458  decreases the microphone volume, ECHO+ 460  increases microphone echo, and ECHO− 462  decreases microphone echo. When FADER  464  key is pressed, the vocal portion of the music is silenced. PITCH  466  changes the pitch of the karaoke singer&#39;s voice that is received through the microphone by shifting the pitch one semi-note with each depression. HARMONY  468  adds a pitch-shifted and a non pitch-shifted microphone signal to create the sound of two vocalists. MUTE  470  mutes the associated microphone. 
   As described above with reference to  FIG. 4 , a remote control may enable a user to modify the flow of data to a set-top box. However, other input devices may be used. For instance, such input devices include, but are not limited to, a keyboard or a mouse. 
   Through the use of the present invention, data may be transmitted from a particular network device to a requesting network device. In accordance with one embodiment, data is transmitted to a set-top box from a local server. Of course, when a particular file is not directly accessible by the local server, the file may be downloaded from a central server (e.g., to a file server associated with the local server). In addition, data may be transmitted from the central server via the local server. The downloading and/or transmission from the central server to the local server may be initiated by the user (e.g., via a web browser) or by the local server when the file cannot be directly accessed by the local server. Once data flow associated with a file is initiated, the data flow may be modified through the sending of various control commands by the user (e.g., via an infra-red remote control). In accordance with one embodiment, data flow from the local server may be modified by the user. The flow of data and modification of the data flow from the local server will be described in further detail below with reference to  FIG. 5  through  FIG. 14 . However, it will be understood that the flow of data and modification of the data flow may also be performed via the central server. 
     FIG. 5  is a process flow diagram illustrating a method of playing a movie or karaoke selection in accordance with an embodiment of the invention. When the set-top box is turned on at block  502 , a menu is displayed at block  504 . For instance, a screen such as that illustrated in  FIG. 3A  may be displayed to enable a user to enter one or more karaoke or movie selections as shown in  FIG. 3B . The user enters one or more selections at block  506  to indicate those movies, karaoke selections or other video files to be transmitted to the set-top box. The user then selects a control command at block  508  to initiate, terminate or otherwise modify the flow of data to the set-top box. Thus, the control command generally indicates a desired modification of the flow of data to the set-top box. More particularly, this may be accomplished by pressing a key on a remote control such as that described above with reference to  FIG. 4 . For instance, the user may select the VIEW command in order to view a selected video. 
   When the control command (e.g., view command) is received by the set-top box at block  510 , the set-top box deciphers the infra red control signal and sends the control command to a CPU of the set-top box at block  512 . The set-top box then sends the control command to the local server at block  514 . The local server receives the control command at block  516 . In addition, the local server may receive a signal indicating a current video selection. The local server then sends a compressed data stream over a network to the set-top box at block  518 . More particularly, the compressed data stream may include audio, video and other digital data. The set-top box then processes the data received from the local server at block  520 . One method of processing the data by the set-top box is described in further detail below with reference to  FIG. 14 . 
   In accordance with one embodiment, the user may initiate and modify the transmission of karaoke data from a server to the set-top box. Thus, a first audio signal is received by the set-top box from a server and processed, as will be described below with reference to  FIG. 14 . In addition, the user may sing along with the karaoke selection through a microphone, creating a second audio signal.  FIG. 6  is a process flow diagram illustrating a method of processing a user&#39;s voice input in accordance with an embodiment of the invention. More particularly, when a user sings through a microphone connected to the set-top box at block  600 , the audio signal is processed by an analog to digital converter at block  602 . In addition, the user may select an audio control command as shown at block  604  via a karaoke control key as described above with reference to  FIG. 4  to modify the audio signal that is ultimately produced by the set-top box. For instance, the user may wish to adjust the volume or pitch. The singer&#39;s voice is then processed by the karaoke processor at block  606  to modify the second audio signal. This modified second audio signal is then sent to a digital to analog converter at block  608 . The resulting analog audio signal is then sent to an amplifier at block  610 . 
   The flow of data to the set-top box may be modified in a variety of ways. As described above with reference to  FIG. 4 , the flow of data may be modified in a variety of ways. For instance, the user may wish to pause a video, or press a remote control key such as STEP, SLOW, PLAY, MENU, NEXT, or SEEK. Exemplary process flow diagrams illustrating such possible modifications to the flow of data to a set-top box will be described in further detail below with reference to  FIG. 7  through  FIG. 13 . 
   When a user wishes to pause the transmission of data to the set-top box, the user may press the PAUSE button on the remote control.  FIG. 7  is a process flow diagram illustrating a method of pausing a movie or karaoke selection in accordance with an embodiment of the invention. As shown, when a user selects a pause control command at block  702 , the set-top box deciphers the infra-red control at block  704 . The pause control command is then sent to a CPU of the set-top box at block  706 . The set-top box sends the pause control command to the local server at block  708 . In response, as shown at block  710 , the local server stops sending data to the set-top box until further instruction. 
   A user may press the STEP key when he or she wishes to step the transmission of data (e.g., by a single frame).  FIG. 8  is a process flow diagram illustrating one method of stepping transmission of data in accordance with an embodiment of the invention. As shown at block  802 , a user may select the step control command through pressing the STEP key on a remote control. When the infra red signal is received by the set-top box, the set-top box deciphers the infra red signal at block  804  and sends a step control command to a CPU of the set-top box at block  806 . The set-top box (e.g., CPU) then transmits this step control command to the local server at block  808 . In response, the local server advances the appropriate video by a frame by sending data associated with that frame to the set-top box at block  810 . The set-top box then processes the data received from the local server at block  812 , as will be described in further detail below with reference to  FIG. 14 . 
   A user may similarly wish to modify the speed of transmission of data to the set-top box over the network. For instance, the user may wish to reduce as well as increase the speed of data transmission.  FIG. 9  is a process flow diagram illustrating one method of reducing the speed of data transmission to the set-top box in accordance with one embodiment of the invention. When a user wishes to slow the speed of data transmission, the user may press a SLOW key on a remote control as shown at block  902 , as described above with reference to  FIG. 4 . The set-top box deciphers the infra red control at block  904  and a slow control command indicating that the data transmission is to be slowed is sent to a CPU of the set-top box at block  906 . The set-top box then sends the slow control command to the local server at block  908 . In response to the control command, the local server reduces the speed with which data (e.g., frames) are sent to the set-top box at block  910 . The local server then continues to send compressed data over the network to the set-top box at block  912 . The set-top box then processes the data received from the local server at block  914 , which will be described in further detail below with reference to  FIG. 14 . 
   The user may also wish to initiate the transmission of data over the network to the set-top box (e.g., from a pause mode). Alternatively, the user may wish to resume transmission of data to a normal speed from a step or slow mode.  FIG. 10  is a process flow diagram illustrating a method of initiating or resuming the transmission of data in accordance with one embodiment of the invention. As shown at block  1002 , the user may select the play control command at block  1002 . This may be accomplished through pressing the PLAY key on a remote control such as that illustrated in  FIG. 4 . For instance, the PLAY key may be pressed from the pause, step, or slow mode. The set-top box then deciphers the infra red control at block  1004  and a play control command indicating that initiation of the transmission of data is requested is sent to a CPU of the set-top box at block  1006 . The set-top box then sends the play control command to the local server at block  1008 . The local server then initiates the transmission of data at block  1010 . More particularly, the local server may initiate the transmission of data or simply return to normal speed with which data is sent to the set-top box. The local server continues to send compressed data over the network to the set-top box at block  1012 . In addition, in accordance with one embodiment, the local server sends a percentage value indicating a percent of the file that has been transmitted (e.g., percent of a movie that has been played over the network). The set-top box processes the data it receives from the local server at block  1014 , as will be described in further detail below with reference to  FIG. 14 . The set-top box further displays the percent of the selection that has been transmitted to the set-top box and therefore played for the user at block  1016 . As described above, the data may be associated with any file, such as a movie or karaoke selection. 
   The user may wish to edit his or her selections that have been previously entered via a screen such as that illustrated in  FIG. 3A  and  FIG. 3B . In this manner, the user may specify via the set-top box an order of transmission of one or more files. The files may be of varying types, such as those storing movies or karaoke videos. It is important to note that the files being selected are not stored locally at the set-top box, but identify files stored in association with a remotely located server on the network. 
     FIG. 11  is a process flow diagram illustrating a method of selecting data files to be transmitted via a menu in accordance with one embodiment of the invention. As shown, the user may select a menu control command at block  1102  which sends an infra red signal to the set-top box. The set-top box deciphers the infra red control at block  1104  and sends this menu control command to a CPU of the set-top box at block  1106 . The set-top box sends this menu control command over the network to the local server at block  1108 . The local server then stops sending compressed data over the network to the set-top box at block  1110 . For instance, the local server may stop sending data until a VIEW/MENU key on a remote control such as that illustrated in  FIG. 4  is toggled by the user. 
   The set-top box then displays a menu of selections at block  1112 . As one example, the menu may present the user with a number of possible files (e.g., movie or karaoke) to be transmitted to the set-top box. As another example, the menu may simply be a screen such as that presented in  FIG. 3A  which may enable a user to enter as well as modify his or her selections as illustrated in  FIG. 3B . When presented with this menu, the user may add as well as edit the menu selections that are displayed at block  1114 . As one example, the user may have be presented with a screen illustrating a single previously entered selection. The user may then enter or select additional selections up to a maximum number of permissible selections. As another example, the menu may present the user with a number of selections previously selected by the user. The user may then modify one or more of these selections. 
   When the user decides to view one or more of his selections, the view control command may be selected by again toggling the VIEW/MENU key at block  1116 . The set-top box deciphers the infra-red control at block  1118  and a view control command is sent to a CPU of the set-top box at block  1120 . The set-top box sends the view control command over the network to the local server at block  1122 . For instance, the view control command may identify one or more files to be transmitted over the network. In addition, the view control command may also indicate the order of transmission of those files. Of course, the view control command may also designate a starting point from which compressed data is to be transmitted. The starting point may indicate a specific file as well as a location (e.g., percentage) within that file. The local server then resumes sending compressed data over the network to the set-top box at block  1124 . The set-top box then processes the data it receives at block  1126 , which will be described in further detail below with reference to  FIG. 14 . 
   Rather than allowing all selections to play consecutively, the user may wish to terminate a current video and start the next selected video.  FIG. 12  is a process flow diagram illustrating one method of initiating the transmission of data associated with a next selected video in accordance with one embodiment of the invention. When the user wishes to stop the transmission of data associated with a first video and start the transmission of data associated with a second video, the user may select the next control command at block  1202  by pressing the NEXT key on a remote control such as that illustrated in  FIG. 4 . The set-top box deciphers the infra red control at block  1204 . A next control command indicating that a next video is selected is then sent to a CPU of the set-top box at block  1206 . The set-top box sends the next control command to the local server indicating that the next video is selected as shown at block  1208 . For instance, the next control command may directly or indirectly identify a currently selected video. At block  1210  the local server stops sending compressed data associated with the previous selection over the network to the set-top box. The local server then sends compressed data associated with the current selection over the network to the set-top box at block  1212 . The set-top box then processes the data it receives from the local server at block  1214 . One method of processing the compressed data will be described in further detail below with reference to  FIG. 14 . 
   When a user wishes to initiate transmission of data from a particular location in a file, the user may press the SEEK key of a remote control such as that illustrated in  FIG. 4 .  FIG. 13  is a process flow diagram illustrating a method of performing a seek in accordance with an embodiment of the invention. As shown at block  1302  the user may select the seek control command by pressing the SEEK key of a remote control at block  1302 . In addition, the user indicates a location in the video file from which data transmission is desired at block  1304 . In accordance with one embodiment, the user selects a percentage of a video file that has been transmitted. The set-top box deciphers the infra red control at block  1306  and the corresponding seek control command indicating the desired percentage is sent to a CPU of the set-top box at block  1308 . 
   In accordance with one embodiment, the starting point in the file from which data is to be transmitted is calculated by the set-top box. More particularly, when the file is initially selected, the local server sends information associated with the file such as the size of the file to the set-top box. For instance, when an MPEG file is transmitted, file information is transmitted in the initial packets that are transmitted. The set-top box uses the size of the file and the percentage to determine a starting point in the file at block  1310 . The set-top box then sends an indicator of the desired file location to the local server at block  1312 . 
   Alternatively, the calculation of the starting point may be performed by the local server. In accordance with this embodiment, the set-top box sends the seek control command indicating the desired percentage over the network to the local server at block  1310 . When the local server receives the seek control command, the local server uses the size of the file and the percentage to determine a starting point in the file at block  1312 . 
   The local server then “jumps” to this starting point in the file at block  1314  and initiates the transmission of compressed data from the starting point over the network to the set-top box at block  1316 . The set-top box then processes the data it receives from the local server at block  1318 , which will be described in further detail below with reference to  FIG. 14 . 
   As described above, when the set-top box receives compressed data sent over the network, the set-top box processes this data.  FIG. 14  is a process flow diagram illustrating one method of processing data received by the set-top box in accordance with one embodiment of the invention. A variety of commands sent by the set-top box result in compressed video data being sent to a requesting client (e.g., set-top box). When the client sends a request to a server asking the server to send compressed video data to the client, the server splits the associated compressed video data file (or portion thereof) into multiple packets and sends the packets to the client. As shown at block  1402  the set-top box receives the compressed video data from the local server. An MPEG decoder chip then decompresses video and audio data in the compressed data at block  1404 . The decompressed video signal is then sent to a video encoder to convert the digital signal to an analog signal at block  1406 . The resulting analog signal is then output to a television or monitor at block  1408 . The data received by the set-top box may be stored for future use. However, it may be desirable to delete the data once it is provided by the set-top box to the user. In this manner, a video may be displayed in real-time onto a television screen. 
   In addition to the decompressed video data, the decompressed audio data is also processed by the set-top box. More particularly, in accordance with the karaoke embodiment, the decompressed audio signal is sent to the karaoke processor at block  1410 . The processed audio signal is then sent to a digital to analog converter at block  1412 . The resulting analog audio signal is then sent to an amplifier at block  1414 . 
   When data is transmitted from the central server to the set-top box via a local server, the local server may store a copy of this data (e.g., in an associated file server). Alternatively, it may be desirable to erase this copy once the data is transmitted to a requesting set-top box. 
   The present invention may be used in a variety of environments. For instance, the above-described system may be configured as a networked karaoke system to enable a plurality of rooms to access karaoke songs concurrently without the intervention of a human operator. The present invention may also be used to provide hotels a cost-effective solution to deliver movies to hotel guests. Moreover, it may also be useful in hospitals to enable bed-ridden patients to watch movies or surf the Internet. Schools may also implement the present invention within a campus local area network to transmit video-taped lectures or other presentations. Additionally, long trips in a confined seat takes a toll on passengers in a common carrier such as an airplane, cruise ship, train or bus. Thus, the present invention may allow each passenger to watch and control a movie he or she is interested in throughout the entire trip. It may also be desirable to implement the present invention within an apartment complex to enable the system as well as system costs to be shared by each residential unit. Additionally, the present invention may be deployed as a video kiosk in airports, train stations, hotel lobbies, department stores, conventions, or museums for information, catalog or advertisement purposes. 
   The emergence of the Internet has created a world-wide data network. As Internet traffic grows steadily, the data highway&#39;s bandwidth increases accordingly. This presents a major opportunity for a new class of dedicated communication devices that will allow users to conduct communication (e.g., via voice and video data) through the data network. This information exchange has evolved from text-based to graphics-based to content-rich, video-based communications capable of providing a multitude of services. Accordingly, the present invention may be implemented in a device or web browser to provide interactive, real-time, high-bandwidth services to a user using the Internet. 
   As described above, the present invention enables a client device such as a set-top box to receive data streams such as video streams that are transported over a network from a video server. In addition, the set-top box might output information to the network in the course of performing the above-described method steps. Such information may be received from and outputted to the network, for example, in the form of a computer data signal embodied in a carrier wave. The network may also be a wireless network. 
   Through the use of the present invention, video, audio, and karaoke functionality are integrated in a single system capable of interfacing to a standard television. Since the present invention is implemented in a set-top box, it is compact and portable. Moreover, since a computer system is not required, the present invention may be manufactured at a relatively low cost to the consumer. 
   Although illustrative embodiments and applications of this invention are shown and described herein, many variations and modifications are possible which remain within the concept, scope, and spirit of the invention, and these variations would become clear to those of ordinary skill in the art after perusal of this application. For instance, the present invention is described as transmitting data from a local server within the context of a digital television receiver. However, the present invention may be used in other contexts, such as through transmitting data from another server (e.g., central server) via the local server. For instance, the present invention may permit access to a central server on the Internet. Similarly, the present invention may be implemented across a plurality of staged servers, enabling information to be transmitted across the Internet. Moreover, the above described process blocks are illustrative only. Therefore, the present invention may be performed using alternate process blocks as well as alternate data structures. Accordingly, the present embodiments are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.