METHOD AND APPARATUS FOR REDUCING CHANNEL CHANGE TIMES
The present invention generally relates to a method for reducing channel change times in apparatuses such as digital television signal receivers. Apparatuses such as digital television signal receivers may experience an undesirable time delay when changing channels. This time delay may be attributable to various factors including the time required to tune and obtain a demodulation lock on a selected channel. With digital video systems, this time delay may also include the processing time required to produce a first full video l-frame available for decoding, the actual decoding time for the video I- frame, and the time required for outputting the first video l-frame. In systems with conditional access, the time delay associated with obtaining decryption information may further delay the process. For certain digital video systems, the combined time delays from the aforementioned processing functions may total over a second. This is greater than time delays associated with traditional analog television services, and may be particularly annoying for individuals that frequently select different channels (e.g., "channel surf").
The present invention described herein addresses the foregoing problems by providing a method and apparatus capable of reducing channel change times. The present invention also provides other advantages including enabling individual users to select desired channel change algorithms.
In accordance with an aspect of the present invention, a method for changing channels is disclosed. According to an exemplary embodiment, the method comprises steps of enabling a user to select an algorithm from a plurality of algorithms, pre-tuning at least one channel based on the selection, receiving an input requesting a channel, determining whether the requested channel is pre-tuned responsive to the input, enabling output of the requested channel, and wherein the requested channel is output more rapidly if the requested channel is pre-tuned than if the requested channel is not pre-tuned.
In accordance with another aspect of the present invention, an apparatus for changing channels is disclosed. According to an exemplary embodiment, the apparatus comprises first means for enabling a user to select an algorithm from a plurality of algorithms, and second means for pre-tuning at least one channel based on the selection. The first means determines whether a requested channel is pre-  tuned by the second means responsive to an input, and enables output of the requested channel. The requested channel is output more rapidly if the requested channel is pre-tuned than if the requested channel is not pre-tuned.
In accordance with another aspect of the present invention, an apparatus for changing channels is disclosed. According to an exemplary embodiment, the apparatus comprises a processor operative to enable a user to select an algorithm from a plurality of algorithms, and at least one tuner operative to pre-tune at least one channel based on the selection. The processor determines whether a requested channel is pre-tuned by the at least one tuner responsive to an input, and enables output of the requested channel. The requested channel is output more rapidly if the requested channel is pre-tuned than if the requested channel is not pre-tuned.
The above-mentioned and other features and advantages of this invention, and the manner of attaining them, will become more apparent and the invention will be better understood by reference to the following description of embodiments of the invention taken in conjunction with the accompanying drawings, wherein:
FIG. 1 is a block diagram of an apparatus according to an exemplary embodiment of the present invention;
FIG. 2 is a flowchart illustrating steps for facilitating user selection of channel change algorithms according to an exemplary embodiment of the present invention; and
FIG. 3 is a flowchart illustrating steps for providing rapid channel changes according to an exemplary embodiment of the present invention.
The exemplifications set out herein illustrate preferred embodiments of the invention, and such exemplifications are not to be construed as limiting the scope of the invention in any manner.
Referring now to the drawings, and more particularly to FIG. 1 , a block diagram of an apparatus 100 according to an exemplary embodiment of the present invention is shown. According to an exemplary embodiment, apparatus 100 is embodied as a multi-channel digital television signal receiver comprising front-end processing means such as front-end processor 10, demultiplexing means such as demultiplexer 20, first-in, first-out (FIFO) means such as FIFO 30, decoding means such as decoder 40, picture display memory means such as picture display memory 50, and processing and memory means such as processor and memory 60. The  foregoing elements of apparatus 100 may be implemented using one or more integrated circuits (ICs). For clarity of description, certain conventional elements associated with apparatus 100 such as power signals, certain control signals, and audio and video output elements may not be expressly shown in FIG. 1. Front-end processor 10 is operative to perform various front-end processing functions. According to an exemplary embodiment, front-end processor 10 is operative to receive and process a signal including a plurality of channels of audio and/or video content provided from one or more signal sources. Front-end processor 10 performs processing functions including channel tuning, analog-to-digital (A/D) conversion, demodulation and forward error correction (FEC) functions to thereby generate n digital output streams that each correspond to a given channel (where n is an integer value greater than one). The channel tuning function of front-end processor 10 is controlled by a control signal provided from processor 60 responsive to a channel change input from a user (e.g., via remote control device, etc.). According to an exemplary embodiment, the channel tuning function of front-end processor 10 may convert received signals from a relatively high frequency band to baseband or near baseband signals. The tuned baseband signals are converted to digital signals which are demodulated to generate demodulated digital signals. According to an exemplary embodiment, front-end processor 10 may be operative to demodulate various types of signals such as Quadrature Amplitude Modulated (QAM) signals, Phase Shift Keyed (PSK, e.g., QPSK) signals, and/or signals having other types of modulation. The FEC decoding function is applied to the demodulated digital signals to thereby generate error corrected digital signals. According to an exemplary embodiment, the FEC decoding function of front-end processor 10 may include Reed-Solomon (R-S) FEC, de-interleaving, Viterbi and/or other functions. Although front-end processor 10 is shown in FIG. 1 as a single block, it may for example be comprised of various individual elements including n tuners, n A/D converters, n demodulators and n FEC units. According to another exemplary embodiment, front- end processor 10 may include one A/D converter, n tuners, n demodulators and n FEC units and be implemented using digital signal processing techniques. As will be described later herein, the n tuners of front-end processor 10 may be used to pre- tune certain channels, and thereby provide reduced channel change times when those pre-tuned channels are selected by a user. In addition to this pre-tuning  function, one or more of the n tuners may also be used for other functions, such as a personal video recording (PVR) function, a picture-in-picture (PIP) display function and/or a re-transmission function. However, any of the n tuners that are not used for these latter functions is available for pre-tuning channels. Demultiplexer 20 is operative to perform a demultiplexing function. According to an exemplary embodiment, demultiplexer 20 de-multiplexes the error corrected digital signals output from front-end processor 10 into n digital output streams. FIFO 30 is operative to perform a buffering function on a FIFO basis. According to an exemplary embodiment, FIFO 30 buffers the n digital output streams provided from demultiplexer 20 and outputs the same on a FIFO basis.
Decoder 40 is operative to perform a decoding function. According to an exemplary embodiment, decoder 40 decodes (e.g., using Moving Picture Expert Group (MPEG) decoding, etc.) the n digital output streams provided from FIFO 30 to thereby generate n decoded digital output streams. Picture display memory 50 is operative to store the n decoded digital output streams provided from decoder 40, and output the same for ultimate presentation to a user (e.g., display, etc.).
Processor and memory 60 are operative to perform processing and data storage functions, respectively. According to an exemplary embodiment, processor 60 enables and controls a channel changing function of apparatus 100 that is capable of reducing channel change times. According to this exemplary embodiment, processor 60 enables a user to select a desired channel change algorithm from a plurality of different channel change algorithms. The selected channel change algorithm is used by apparatus 100 whenever that particular user is registered as the current active user of apparatus 100. In general, each of the selectable channel change algorithms causes apparatus 100 to pre-tune and pre-process (e.g., demodulate, decode, etc.) one or more channels based on different criteria. These pre-tuned and pre-processed channels are included in a channel list for the particular user and are available for immediate output from picture display memory 50 upon selection. By pre-tuning and pre-processing certain channels, the time lags associated with conventional channel changes may be significantly reduced when these pre-tuned and pre-processed channels are selected by a user. Processor 60 is also operative to output control signals that control the functions of the other elements of FIG. 1. Memory 60 is operative to store data including data related to the  various user selectable channel change algorithms and channel list data for one or more users. Further details regarding processor 60 and memory 60 will be provided later herein.
Referring now to FIG. 2, a flowchart 200 illustrating steps for facilitating user selection of channel change algorithms according to an exemplary embodiment of the present invention is shown. For purposes of example and explanation, the steps of FIG. 2 will be described with reference to apparatus 100 of FIG. 1 described above. The steps of FIG. 2 are exemplary only, and are not intended to limit the present invention in any manner. At step 210, a user enters a setup process of apparatus 20. According to an exemplary embodiment, the user enters the setup process at step 210 by providing one or more predetermined inputs to apparatus 100 (e.g., via a remote control device or other input element not shown in FIGS.). In general, the setup process enables a user to select various user settings relating to the operation of apparatus 100, including a desired channel change algorithm which will be described later herein. For clarity of description, the selection of user settings other than channel change algorithms will not be described herein.
At step 220, apparatus 100 provides one or more on-screen menus listing various channel change algorithms that may be selected by the user. According to an exemplary embodiment, processor 60 enables the display of the on-screen menu(s) at step 220 using data stored in memory 60. In addition to a listing of the selectable channel change algorithms, the on-screen menu(s) provided at step 220 may also include a descriptive explanation of each of the channel change algorithms to assist the user in his/her selection. The user may for example toggle through multiple on-screen pages to read the descriptive explanations of the various channel change algorithms before actually selecting one. One of the algorithms may be highlighted as an initial pre-set or default algorithm. The actual number of channel change algorithms offered for selection at step 220 may be a matter of design choice.
In general, each of the channel change algorithms offered for selection at step 220 causes apparatus 100 to pre-tune and pre-process (e.g., demodulate, decode, etc.) one or more channels based on different criteria. As will be described later herein, these pre-tuned and pre-processed channels are included in a channel list for the corresponding user. By pre-tuning and pre-processing these certain channels,  the time lags associated with conventional channel changes may be significantly reduced when these pre-tuned and pre-processed channels are selected by a user. The channel change algorithms offered for selection at step 220 may predict future channel changes based on the past channel selection habits of the user, or may be based on specific channel or information selections by the user. According to an exemplary embodiment, at least the following different channel change algorithms may be offered for user selection at step 220:
A. Pattern Based Algorithm - This algorithm causes one or more channels to be pre-tuned and pre-processed based on a detected pattern in user channel selection habits. For example, a user may select channels in a pattern such that channel A is selected first, channel B is selected second, and channel C is selected third. In this example, processor 60 may cause apparatus 100 to pre-tune and pre- process channel B and/or channel C in response to the user selecting channel A.
B. Time Based Algorithm - This algorithm causes one or more channels to be pre-tuned and pre-processed based on the time of day. In particular, this algorithm detects that a user may select certain channels at approximately the same time of day. For example, if a user selects channel A just before or after 4 PM each day, processor 60 may cause apparatus 100 to pre-tune and pre-process channel A at 4 PM each day. Thereafter, if the user selects channel B at approximately 5 PM each day, processor 60 may cause apparatus 100 to pre-tune and pre-process channel B at 5 PM each day.
C. First-ln. First-Out (FIFO) Based Algorithm - This algorithm causes one or more channels to be pre-tuned and pre-processed based on FIFO principles. According to this algorithm, if apparatus 100 has n tuners, these n tuners are used to tune the previous n channels. This algorithm is based on the notion that a user may frequently navigate (e.g., "channel surf") on a small, but fixed number of favorite channels (e.g., a sports fan monitoring several sporting events simultaneously, etc.). Each time a channel is selected and tuned (or re-selected and re-tuned), a time- stamp is recorded in memory 60 with the channel number. After the first n different channels have been selected, tuned and placed in a channel list of memory 60, the channel list becomes full. As a new channel is selected and tuned, the oldest (i.e., earliest tuned) channel is dropped from the channel list and replaced with the most recently selected channel and the process continues. According to this algorithm,  only channels included in the channel list are pre-tuned and pre-processed for rapid output upon selection. A possible user interface could be a BACK or FORWARD key on a remote control device or other input element.
D. Channel Up/Channel Down Based Algorithm - This algorithm causes one or more channels to be pre-tuned and pre-processed based on the use of a channel up key and/or a channel down key on an input element (e.g., remote control device, etc.) of apparatus 100. According to this algorithm, if apparatus 100 has n tuners, then some subset of those tuners, say f, where f < n, can be used for forward prediction (i.e., perhaps they tune the next f channels in sequential order). For example, if a user changes the channel from channel 4 to channel 5, apparatus 100 may respond by pre-tuning and pre-processing channels 6 and 7. Apparatus 100 may also have already pre-tuned and pre-processed channel 3 so that at the time the user is watching and/or listening to channel 5, apparatus 100 may be pre-tuning and pre-processing channels 3, 4, 6 and 7. User input of the channel up key would cause channel 6 (which is already pre-tuned and pre-processed) to be output, and further cause apparatus 100 to pre-tune and pre-process channel 8 using its processing resources previously allocated to channel 3 (i.e., channel 3 is dropped from channel list and is no longer pre-tuned and pre-processed). If the user then inputs the channel down key to select channel 5, apparatus 100 may re-tune and re-process channel 3, while dropping channel 8 from the channel list (i.e., channel 8 is no longer pre-tuned and pre-processed). According to this algorithm, the currently selected channel represents a sort of "centroid" or median with at least one channel above and/or below the currently selected channel being pre-tuned and pre-processed in anticipation of the user inputting the channel up key and/or a channel down key. E. Point Based Algorithm - This algorithm causes one or more channels to be pre-tuned and pre-processed based on assigned points, and may be based on long- term historical information related to a user's channel selection habits. According to an exemplary embodiment of this algorithm, apparatus 100 stores assigned point data in memory 60 to keep track of each time a channel is selected, where "selected" might mean that the channel is output for longer than some specified time period. A long-term histogram may be created by processor 60 incrementing a point counter representing each time a channel is selected. Over time, some channels may be selected by a user much more frequently than other channels. For example, assume  channels 6, 8, 13, 20 and 70 have 70, 95, 45, 66 and 120 points, respectively, and all other channels have fewer points. Apparatus 100 may then tune the currently selected channel plus pre-tune and pre-process additional channels according to the highest number of assigned points. In this manner, apparatus 100 pre-tunes and pre- processes channels based on frequency of selection. According to this exemplary embodiment, an input element (e.g., remote control device) of apparatus 100 may include a designated key that causes apparatus 100 to automatically cycle through the channels having the highest number of assigned points each time the key is pressed. Over time, the most frequently selected channels may change and some channels may be replaced by new channels based on the assigned number of points. This algorithm may also be modified to include the element of time, such that a new "weighted" point count is determined by factoring in the age of the point count. For example, if two channels each have 50 points, the channel that was weighted higher by being selected more recently would out-rank the channel that had been selected less recently.
F. Specific Channel Based Algorithm - This algorithm causes one or more channels to be pre-tuned and pre-processed based on specific channel selections by the user. For example, a user may use this algorithm to define a list of "fast" or "favorite" channels. A user may directly program his/her favorite channels into a channel list in memory 60 and n-1 of the tuners of apparatus 100 can pre-tune these favorite channels with the nth tuner used for the channel currently being output. An input element (e.g., remote control device) of apparatus 100 may also include a designated key that causes apparatus 100 to cycle through the list of favorite channels when pressed. A user may edit this list as desired. G. Specific Information Based Algorithm - This algorithm causes one or more channels to be pre-tuned and pre-processed based on specific information selections by the user. According to an exemplary embodiment of this algorithm, a user may input specific information to apparatus 100 defining his/her favorite programs, genres, or actors, or any combination thereof. Data corresponding to these specific information selections may be stored in one or more channel lists in memory 60. Processor 60 may then periodically scan program guide information in memory 60, and cause apparatus 100 to pre-tune and pre-process channels that may have desirable programming in accordance with the user's specific information selections.  For example, processor 60 may cause apparatus 100 to pre-tune and pre-process channels that provide a user's favorite selected programs, and/or programs having user defined genres and/or actors. A user interface for this algorithm may include a single key to cycle through a suggestions list, or perhaps a micro-guide that can be viewed containing information on suggested fast-tune channels and how to tune them.
At step 230, a user selects one of the channel change algorithms offered for selection at step 220. According to an exemplary embodiment, the user may select a particular channel change algorithm at step 230 by providing one or more predetermined inputs to apparatus 100. The initial pre-set or default algorithm (if any) may be automatically selected if the user fails to provide an input at step 230. In such a case, the user is deemed to have selected the initial pre-set or default algorithm. After a particular channel change algorithm is selected at step 230, data corresponding to the selection is stored in memory 60 under the control of processor 60 and the selected channel change algorithm will be used by apparatus 100 whenever that particular user is registered as the current active user of apparatus 100. According to an exemplary embodiment, a user may register himself/herself as the current active user of apparatus 100 by providing one or more predetermined inputs to apparatus 100, such as by inputting his/her name and/or a password. At step 240, a determination is made as to whether another user wants to select a channel change algorithm. If the determination at step 240 is positive, process flow loops back to step 230 where another user may select a desired channel change algorithm in the previously described manner. Steps 230 and 240 may be repeatedly performed for as many users as apparatus 100 can accommodate. Once the determination at step 240 is negative, process flow advances to step 250 where the setup process is exited.
When multiple users select a channel change algorithm in FIG. 2, the selected channel change algorithm will be used by apparatus 100 whenever those particular users are registered as the current active user of apparatus 100. In this manner, apparatus 100 may adaptively change the channel change algorithms it uses on a user-by-user basis. For example, apparatus 100 may use algorithm A for user A, algorithm B for user B, algorithm C for user, and so on. Also, different users may select the same algorithm. As will be described hereinafter, each algorithm causes  apparatus 100 to create and maintain a channel list of pre-tuned and pre-processed channels for each user.
Referring now to FIG. 3, a flowchart 300 illustrating steps for providing rapid channel changes according to exemplary embodiments of the present invention is shown. For purposes of example and explanation, the steps of FIG. 3 will also be described with reference to apparatus 100 of FIG. 1 described above. It is noted that the steps of FIG. 3 correspond to a single user and may be repeatedly performed on a user-by-user basis. Accordingly, it is assumed that a particular user has first registered himself/herself as the current active user of apparatus 100 before the steps of FIG. 3 are performed. The steps of FIG. 3 are exemplary only, and are not intended to limit the present invention in any manner.
At step 310, a user provides a channel change input to apparatus 100. According to an exemplary embodiment, the channel change input may be provided at step 310 by the user pressing one or more keys on an input element (e.g., remote control device, etc.) of apparatus 100, such as a channel up key, a channel down key, one or more numeric keys, etc. In any event, the input at step 310 represents a user request for apparatus 100 to change the channel it is currently outputting by switching to another channel (i.e., a requested channel).
At step 320, apparatus 100 checks a channel list corresponding to the particular user via processor 60. According to an exemplary embodiment, each user that has selected a channel change algorithm at step 230 of FIG. 2 has an associated channel list stored in memory 60 representing any channels that apparatus 100 has pre-tuned and pre-processed for rapid output upon selection. The contents of this channel list may vary depending on the particular channel change algorithm selected by the user. As previously described herein, certain channel change algorithms, such as algorithms A through E, are based on past channel selections by the user and may therefore require multiple user inputs before a corresponding channel list can be completely populated. Conversely, certain channel change algorithms, such as algorithms F and G, are based on specific channel or information selections by the user and may therefore produce a completely populated channel list through a onetime user selection process.  At step 330, a determination is made as to whether the channel requested at step 310 is included in the channel list. According to an exemplary embodiment, processor 60 examines channel list data in memory 60 to make the determination at step 330. If the determination at step 330 is positive, process flow advances to step 340 where apparatus 100 switches to the requested channel from the channel list (i.e., without re-tuning and re-processing the channel). According to an exemplary embodiment, processor 60 enables step 340 by outputting one or more control signals that cause the requested channel to be switched to without having to re-tune and re-process the channel. This switching operation involves selecting one or more digital output streams corresponding to the requested channel that is already being tuned and processed by apparatus 100. It is noted that a given channel may be comprised of multiple digital output streams (e.g., one for audio content and one for video content).
If the determination at step 330 is negative, process flow advances to step 350 where apparatus 100 tunes the requested channel as a new channel. According to an exemplary embodiment, processor 60 enables the requested channel to be tuned as a new channel by outputting one or more control signals that cause front-end processor 10 to tune and process the requested channel. From steps 340 and 350, process flow advances to step 360 where apparatus 100 outputs the requested channel. It is important to note that the requested channel is output more rapidly at step 360 if the requested channel is included in the channel list (and is therefore pre- tuned and pre-processed), than if the requested channel is not included in the channel list (and is not pre-tuned and pre-processed).
From step 360, process flow advances to step 370 where apparatus 100 updates the channel list for the user, if necessary. According to an exemplary embodiment, apparatus 100 updates the channel list for the particular user, when necessary, according to the user's selected channel change algorithm. Updating the channel list at step 370 is performed by processor 60 updating channel list data stored in memory 60. Some algorithms may not require the user's channel list to be updated at step 370, while others may require an update. Updating the channel list at step 370 may for example cause a channel to be added to the channel list and/or a channel to be dropped from the channel list.  At step 380, a non-channel change input to apparatus 100 may occur. According to an exemplary embodiment, the non-channel change input may include inputs provided for channel change algorithms F and G described above. For example, a user may provide specific channel or information selections which facilitate his/her selected channel change algorithm. From step 380, process flow advances to step 370 where apparatus 100 updates its channel list for the user if necessary. From step 370, process flow loops back to step 310 where the foregoing steps may be repeated for the same user or for a different user.
As described herein, the present invention provides a method for reducing channel change times in apparatuses such as digital television signal receivers. The present invention may be applicable to various apparatuses, either with or without an integrated display device. Accordingly, the term "apparatus" as used herein may refer to systems or apparatuses including, but not limited to, television sets, computers, radios, or monitors that include an integrated display device, and systems or apparatuses such as set-top boxes, video cassette recorders (VCRs), digital versatile disk (DVD) players, video game boxes, personal video recorders (PVRs), computers, radios or other apparatuses that may not include an integrated display device.
While this invention has been described as having a preferred design, the present invention can be further modified within the spirit and scope of this disclosure. This application is therefore intended to cover any variations, uses, or adaptations of the invention using its general principles. Further, this application is intended to cover such departures from the present disclosure as come within known or customary practice in the art to which this invention pertains and which fall within the limits of the appended claims.