Time shifting is the ability to perform various operations on a broadcast stream of data; i.e., a stream of data that is not flow-controlled. Example broadcast streams include digital television broadcasts, digital radio broadcasts, and Internet Protocol (IP) multicasts across a network, such as the Internet. A broadcast stream of data may include video data and/or audio data. Time shifting allows a user to “pause” a live broadcast stream of data without loss of data. Time shifting also allows a user to seek forward and backward through a stream of data, and play back the stream of data forward or backward at any speed. This time shifting is accomplished using a storage device, such as a hard disk drive, to store a received stream of data. The received stream of data is typically saved to a temporary file on the hard disk drive. The available storage space for the temporary file is typically limited such that the old content of the temporary file is discarded periodically (and possibly continuously) to release storage space for new data.
A DVR (digital video recorder or digital VCR) provides for the long term storage of a stream of data, such as a television broadcast. This long term storage of data may be referred to as digital recording. A digital recording creates a permanent archive of the data stream such that the user can view the broadcast at a later time. A DVR also uses a storage device, such as a hard disk drive, to store a received stream of data. A time shifting system and a digital recording system may share a common storage device to store data associated with one or more data streams. Existing digital recording systems require the user to schedule the recording in advance (i.e., before the broadcast begins) or create the recording from the current time onward. These existing systems cannot record content that has already been streamed to them. Attempting to copy data from a temporary file into a permanent long term storage file is time consuming and requires significant processing and storage resources, especially if a broadcast is being time shifted or digitally recorded simultaneously.
FIG. 1 illustrates an exemplary prior art system that stores time shifted data and permanently recorded data on a storage device 110. A time shifting system 102 stores time shifted data in a temporary file 104 on the storage device 110. A digital recording system 106 stores digitally recorded data in one or more recorded files 108 on the storage device 110. As shown in FIG. 1, the temporary file 104 is separate from the recorded files 108, thereby allowing the temporary file to be discarded without affecting the recorded files. Old content in the temporary file may be discarded to provide storage space for newly received content or one or more new recorded files.
The system illustrated in FIG. 1 uses one temporary file 104 to store all time shifted data. A single temporary file is undesirable because the time shifting operations and the digital recording operations are not unified. Instead, the temporary file and the recorded files are processed separately. For example, suppose a use is viewing a live television broadcast and a pre-scheduled digital recording starts at 8:30. If a single temporary file is used for time shifting, the user cannot seek to a time prior to 8:30 once the digital recording has started. Similarly, if the digital recording ends at 9:00, it is not possible for the user to seek to a time prior to 9:00 once the digital recording has ended. The system of FIG. 1 is limited to accessing one file at a time—either the temporary file 104 when time shifting or one of the recorded files 108 when digitally recording.
The systems and methods described herein address the above limitations by providing a system that provides an architecture that supports multiple files and unifies the time shifting and digital recording operations. Moreover, the time shifting and digital recording system allows a user to post-record a previously viewed data stream. These systems and methods also allow for the overlapped recording of a data stream.