The convergence of the television receiver and the personal computer has accelerated with the advent of the set-top computer systems. These systems, sometimes called set-top boxes, use a conventional analog or digital television receiver as a display for computer systems. In some cases, the set-top box sits on top of the television receiver. By combining the capabilities of a computer system and a television, the system may provide advanced television programming features, such as an electronic programming guide, without requiring the user to incur any unnecessary costs for an additional monitor.
Currently, high definition television (HDTV) systems receive both digital and analog television broadcasts. The digital broadcast may include one of the various formats of HDTV.
The taste of television viewers varies across the gamut of ages and personality types. For example, a particular viewer may be a sports fan that often finds himself or herself switching from one channel to another trying to watch several sport programs at the same time. Unfortunately, television programs tend to go to commercials at the same time. Thus, when the viewer switches from one program or channel to another during commericial breaks, he or she often only sees the commercials and not the other program as desired. The result is that a viewer trying to watch more than one program at the same time ends up missing parts of each of the programs. This can be frustrating to say the least.
One possible option to the above is to watch one program while recording the other program to watch at a different time. This option is not desireable for all viewers. For example, in the instance of a sports program, this option may not maintain the feeling of a live broadcast. Here, the viewer may hear the final score prior to watching the recorded program or may never have the opportunity to watch the recorded program at a future time.
The invention may be best understood by referring to the following description and accompanying drawings that are used to illustrate embodiments of the invention. In the drawings:
A method and system for allowing time-shifted access to multiple programs at the same time are described. In the following description, for purposes of explanation, numerous specific details are set forth. It will be apparent, however, to one skilled in the art that embodiments of the invention can be practiced without these specific details.
Embodiments of the present invention may be implemented in software, firmware, hardware or by any combination of various techniques. For example, in some embodiments, the present invention may be provided as a computer program product or software which may include a machine or computer-readable medium having stored thereon instructions which may be used to program a computer (or other electronic devices) to perform a process according to the present invention. In other embodiments, steps of the present invention might be performed by specific hardware components that contain hardwired logic for performing the steps, or by any combination of programmed computer components and custom hardware components.
Thus, a machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). These mechanisms include, but are not limited to, floppy diskettes, optical disks, Compact Disc, Read-Only Memory (CD-ROMs), magneto-optical disks, Read-Only Memory (ROMs), Random Access Memory (RAM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetic or optical cards, flash memory, a transmission over the Internet, electrical, optical, acoustical or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.) or the like.
Some portions of the detailed descriptions that follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer system's registers or memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to convey the substance of their work to others skilled in the art most effectively. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, although not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or the like, may refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
In the following detailed description of the embodiments, reference is made to the accompanying drawings that show, by way of illustration, specific embodiments in which the invention may be practiced. In the drawings, like numerals describe substantially similar components throughout the several views. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. Other embodiments may be utilized and structural, logical, and electrical changes may be made without departing from the scope of the present invention. Moreover, it is to be understood that the various embodiments of the invention, although different, are not necessarily mutually exclusive. For example, a particular feature, structure, or characteristic described in one embodiment may be included within other embodiments.
Referring to
Media center set-top box 102 provides the functionality to allow a user time-shifted access to multiple programs at the same time. The specific components of media center set-top box 102 utilized by embodiments of the invention are described below with reference to
In one embodiment of the present invention, media center set-top box 102 includes multiple personal video recorder engines (PVR engines). PVR is a generic term for a device that is similar to a video cassette recorder (VCR) but records television data in digital format as opposed to the VCR's analog format. VCRs utilize analog tapes to record and play programs broadcast over television, but PVRs encode video data in MPEG-1 or MPEG-2 formats and store the data in a hard drive. PVRs may encode other types of data and other types of data may be added or substituted for those described as new types of data are developed and according to the particular application for the PVR. PVRs have all of the same functionality of VCRs (recording, playback, fast forwarding, rewinding, pausing, etc.) plus the ability to instantly jump to any part of the program without having to rewind or fast forward the data stream.
A typical PVR is made up of two elements, a device that stores its hardware elements (such as the hard disk drive, power supply and buses) and the software in the form of a subscription service that provides programming information and the ability to encode the data or media streams. A PVR is also referred to as a hard disk recorder (HDR), digital video recorder (DVR), personal video station (PVS), or a personal TV receiver (PTR). An embodiment of the specific components utilized to provide the functionality of media center set-top box 102 to allow time-shifted access to multiple programs at the same time is described in more detail below with reference to
As mentioned previously, media center set-top box 102 includes multiple PVR engines and thus can handle multiple input media streams 108, 110, 112 and 114 (each representing a different channel). Although four media streams are shown in
Media streams 108, 110, 112 and 114 have several different possible input embodiments, including a television cable, a broadcast antenna, a satellite receiver, a video player, such as a tape or disk player, an audio player, such as a tape, disk or memory player, a digital device connected for example by an IEEE 1394 connection, and so forth. These inputs, after processing, selection and control (by media center set-top box 102), may be used to generate different outputs for a user. These different outputs represent the different channels the user is watching at the same time. The outputs are received by display 106.
Display 106 may be a monitor, projector, a conventional analog television receiver, or any other kind of perceivable video display. The audio portion of the output may be routed through an amplifier, such as an A/V receiver or a sound processing engine, to headphones, speakers or any other type of sound generation device. The outputs may also be sent to an external recorder, such as a VTR, PVR, CD or DVD recorder, memory card, etc.
Media center set-top box 102 may also provide connectivity to external devices through, for example, telephone port 116 and network port 118. The user interface is provided through, for example, keyboard 120 or remote control 122. Media center set-top box 102 may communicate with other devices through its own infrared port 124. Removable storage device 126 may allow for MP3 compressed audio to be stored and played later on a portable device or for camera images to be displayed on display 106.
There are many different equipment configurations for the entertainment center using media center set-top box 102 of
It is to be appreciated that a lesser or more equipped entertainment system than the example described above may be preferred for certain implementations. Therefore, the configuration of the entertainment system will vary from implementation to implementation depending upon numerous factors, such as price constraints, performance requirements, technological improvements, or other circumstances. Embodiments of the invention may also be applied to other types of software-driven systems that use different hardware architectures than that shown in
As described above, multiple PVRs allow embodiments of the invention to provide time-shifted access to multiple programs at the same time. Resource manager 202 is responsible for managing the allocation of a tuner to a media stream and a circular buffer to a PVR engine as the user switches from one channel to another.
Tuners 204, 206, 208 and 210 can be any type of tuner capable of receiving one of media streams 108, 110, 112 and 114. Each tuner 204, 206, 208 and 210 is assigned one of PVR engines 212, 214, 216 and 218. A PVR engine typically is an application module that coordinates activity of its assigned tuner and circular buffer in order to provide PVR functionality. The PVR engine is responsible for trick mode functionality, such as pause, fast forward, rewind, etc. The PVR engine is also responsible for recording programs, for managing use of hard disk space, and so forth.
Each of circular buffers 220, 222, 224 and 226 is an area of memory used to store a continuous stream of data by starting again at the beginning of the buffer after reaching the end. A circular buffer is usually written by one process and read by another. Separate read and write pointers (or positions) are maintained for each of the circular buffers 220, 222, 224 and 226. The read and write pointers are not allowed to pass or overlap each other.
Circular buffers are usually used for communication between two sequential processes. One process, called the producer, places information into the circular buffer and the other, called the consumer, takes it out. In an embodiment of the invention, each of tuners 204, 206, 208 and 210 acts as the producer and playback engine 228 acts as the consumer to provide the user with time-shifted access to multiple programs at the same time. Note that the present invention is not limited to circular buffers. For example, a series of linear buffers could be used to provide similar functionality as a circular buffer.
The read and write pointers for each of circular buffers 220, 222, 224 and 226 are maintained as the user switches from one channel to another. For example, assume that the user is watching an NFL football game on a first channel represented by media stream 108 and assigned to tuner 204, PVR engine 212 and circular buffer 220. As the user is watching the first channel, PVR engine 212 is writing data at the write pointer of circular buffer 220 and playback engine 228 is reading data from the read pointer of circular buffer 220 and then displaying the data on display 106. When the user switches from the first channel to a second channel to watch a professional tennis match, PVR engine 212 continues to write data from media stream 108 to circular buffer 220 but playback engine 228 stops reading from circular buffer 220. Here, the read pointer of circular buffer 220 is stopped or stored until the user switches back to the first channel.
Assume that the second channel is represented by media stream 110 and assigned to tuner 206, PVR engine 214 and circular buffer 222. As the user is watching the second channel, PVR engine 214 is writing data at the write pointer of circular buffer 222 and playback engine 228 is reading data from the read pointer of circular buffer 222 and then displaying the data on display 106.
Assume now that the user decides to switch back to the first channel. When the user switches from the second channel to the first channel, PVR engine 214 continues to write data from media stream 110 to circular buffer 222 but playback engine 228 stops reading from circular buffer 222. The read pointer of circular buffer 222 is stopped or stored until the user switches back to the second channel.
At this time, playback engine 228 proceeds again with reading data from the stored read pointer of circular buffer 220 and displaying the data on display 106. This allows the user to proceed with watching the NFL football game on the first channel from the place that he or she stopped watching the game to switch to the professional tennis match on the second channel. This allows the user to not miss any part of the NFL football game. Thus, in an embodiment of the invention, the user is given time-shifted access to both the NFL football game and the professional tennis match at the same time. Embodiments of the operation of the present invention are described next in more detail with reference to the flow diagrams of
At processing block 306, the assigned tuner sends the channel's media stream to its PVR engine for processing. At processing block 308, the PVR engine stores the media stream to its circular buffer starting from the position of the write pointer. At processing block 310, playback engine 228 reads from the circular buffer starting from the position of the read pointer. Processing block 310 will be described in more detail below with reference to
Alternatively, if at decision block 402 it is determined that a tuner has not already been assigned to the channel's media stream, then the process flows to decision block 406. At decision block 406, it is determined whether a tuner is available to assign to the channel's media stream. If so, then processing continues at processing block 410 where an available tuner is assigned to the channel's media stream. Otherwise, the processing continues at processing block 408 to make a tuner available before it can be assigned to the channel's media stream. Here, in the embodiment illustrated in
Once an available tuner has been assigned to the channel's media stream, the tuner's circular buffer is reset at processing block 412. Processing block 412 is described in more detail below with reference to
At processing block 504, the least recently used tuner is made available to the channel's media stream. The process of
If in decision block 702 it is determined that playback engine 228 is currently reading from another circular buffer (the user was watching a channel prior to turning to the new channel), the process flows to processing block 704 where playback engine 228 stops the read pointer of the circular buffer it is currently reading. The position of the read pointer is stored in the event that the user tunes back to this channel. At processing block 706, playback engine 228 starts reading from the new channel's tuner's circular buffer starting from the position of its read pointer. The process of
A method and system for allowing time-shifted access to multiple programs at the same time via a media center set-top box have been described. It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.