BACKGROUND OF THE INVENTION1. Field of the Invention
The present invention is directed to information storage and display systems utilizing storage devices, and more particularly, to video recording systems that store and playback streaming video data packets.
2. Description of the Related Art
Audiovisual information is advantageously compressed by audiovisual data storage systems, thereby expressing the information by using less data. Compression reduces the amount of storage needed for a given amount of source material, and it reduces the bandwidth needed for the transfer of the data. One standard for audiovisual compression is MPEG (Moving Picture Experts Group) compression which was developed by a joint technical committee of the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC). The MPEG compression standard is outlined in “Information Technology: Generic Coding of Moving Pictures and Associated Audio Information: Systems,” International Standard ISO/IEC13818-1:1996(E), which is incorporated by reference herein.
For the transmission of audiovisual programming, various programs transmitted from the outputs of various MPEG encoders are multiplexed together into a transport stream, the transport stream comprising multiple series of fixed-size data packets, along with metadata which describes the transport stream. Each data packet comprises a header and a payload. The header contains various information regarding the data packet, including the packet identifier code (PID) which identifies the program or data to which the data packet belongs. The metadata includes a program association table (PAT) that lists the various programs comprising the transport stream and points to a program map table (PMT) that lists the corresponding data packets. The metadata can also include conditional access information (i.e., encryption).
The different series of data packets of the transport stream are generally generated by different MPEG encoders, which typically have different compression factors and different system time clocks (STCs). The different system time clocks generally are not synchronized to one another. In changing from one program to the next, an MPEG decoder synchronizes its STC with the STC which was used during the encoding of each program. This synchronization avoids jitter in the decoded data stream, and avoids overrun or underrun of the memory buffers of the MPEG decoder. To provide the synchronization data needed to decode a series of data packets, the data packets are encoded with program clock reference (PCR) information.
During the encoding of audiovisual data, a fixed-frequency (e.g., 27 MHz) STC of an MPEG encoder drives a constantly running binary counter, the value of which is sampled periodically and placed in the data packet headers as PCR information. At the decoder, the PCR value of a data packet is compared with a local PCR value which is driven by a STC with nominally the same frequency. The difference in these PCR values (the PCR phase error) thereby allows the MPEG decoder to properly synchronize its STC to the STC of the MPEG encoder for the selected series of data packets, thereby duplicating the same frame rate used at the MPEG encoder with the frame rate generated at the MPEG decoder. Note that because the timing of the presentation of these PCR values at the MPEG decoder is critical for the MPEG decoder to operate correctly, this PCR method relies on the MPEG decoder receiving the series of data packets for a particular program with the same interpacket time intervals as the series of data packets had when they were transmitted from the MPEG encoder.
U.S. Pat. No. 5,467,137 issued to Zdepski, which is incorporated by reference herein, addresses the problem of varying transmission times among a series of data packets being transmitted across a system such as the Internet. Zdepski discloses an apparatus and method for providing synchronization for a transmitted multilayered compressed video signal by inserting auxiliary transport packets which include modifiable differential time codes or count values. These differential count values are used to account for the incremental delays the transport packets incur during the signal forming/transmission process.
SUMMARY OF THE INVENTIONThe present invention may be regarded as a data stream control system connectable to a storage device, the data stream control system selectively storing a series of selected data packets from an incoming data transport stream. A transport stream input interface receives the incoming data transport stream comprising selected data packets having interpacket time intervals between the selected data packets. A command interface receives at least one packet filter parameter identifying the series of selected data packets. A programmable data packet filter is coupled to the command interface and transport stream input interface and transmits the series of selected data packets in response to the packet filter parameter and the incoming data transport stream. A storage interface is coupled to the programmable data packet filter and is connectable to the storage device. The storage interface transmits the selected data packets to the storage device. A counter provides counter values for the selected data packets. Each counter value represents a time of reception of a respective selected data packet. The counter value is stored in association with the respective selected data packet to preserve information regarding the interpacket time intervals of the series of selected data packets from the incoming data transport stream.
The present invention may also be regarded as a data storage system that selectively stores a series of selected data packets from an incoming data transport stream and that plays back and transmits the stored series of selected data packets to an outgoing data transport stream. A data storage system controller generates at least one packet filter parameter in response to user input. The at least one packet filter parameter identifies the series of selected data packets. A transport stream input interface receives the incoming data transport stream comprising selected data packets having interpacket time intervals between the selected data packets. A command interface receives the at least one packet filter parameter from the data storage system controller. A programmable data packet filter is coupled to the command interface and transport stream input interface and transmits the series of selected data packets in response to the packet filter parameter and the incoming data transport stream. A storage device stores the selected data packets. A storage interface is coupled to the programmable data packet filter and to the storage device and transmits the selected data packets to the storage device and receives stored selected data packets from the storage device. A counter provides counter values for the selected data packets. Each counter value represents a time of reception of a respective selected data packet. The counter value is stored in association with the respective selected data packet to preserve information regarding the interpacket time intervals of the series of selected data packets from the incoming data transport stream. A timing restorer receives the stored selected data packets from the storage interface and receives the counter values stored in association with the respective selected data packets. The timing restorer transmits the stored selected data packet at a time of transmission responsive to the respective counter value. A transport stream output interface is coupled to the timing restorer and the outgoing data transport stream. The transport stream output interface receives the stored series of selected data packets from the timing restorer. The outgoing data transport stream receives the stored series of selected data packets from the transport stream output interface with interpacket time intervals which substantially match the corresponding interpacket time intervals of the series of selected data packets from the incoming data transport stream.
The present invention may also be regarded as a method of selectively storing a series of selected data packets from an incoming data transport stream. The series of selected data packets has interpacket time intervals between the selected data packets. The method comprises receiving at least one packet filter parameter identifying the series of selected data packets. The method further comprises receiving the incoming data transport stream. The method further comprises storing the series of selected data packets in response to the packet filter parameter and the incoming data transport stream. The method further comprises providing counter values for the selected data packets. Each counter value represents a time of reception of a respective selected data packet. The method further comprises storing the counter value in association with the respective selected data packet, thereby preserving information regarding the interpacket time intervals of the series of selected data packets from the incoming data transport stream.
The present invention may also be regarded as a method of selectively storing and playing back a series of selected data packets from an incoming data transport stream. The series of selected data packets has interpacket time intervals between the selected data packets. The method comprises receiving at least one packet filter parameter identifying the series of selected data packets. The method further comprises receiving the incoming data transport stream. The method further comprises storing the series of selected data packets in response to the packet filter parameter and the incoming data transport stream. The method further comprises providing counter values for the selected data packets. Each counter value represents a time of reception of a respective selected data packet. The method further comprises storing the counter value in association with the respective selected data packet, thereby preserving information regarding the interpacket time intervals of the series of selected data packets from the incoming data transport stream. The method further comprises playing back the stored selected data packets. The method further comprises receiving the counter value stored in association with the respective selected data packets. The method further comprises transmitting the stored selected data packet at a time of transmission responsive to the respective counter value. The stored series of selected data packets are transmitted with interpacket time intervals which substantially match the corresponding interpacket time intervals of the series of selected data packets from the incoming data transport stream.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 schematically illustrates a data storage system comprising a data stream control system in accordance with an embodiment of the present invention.
FIG. 2 is a timing diagram of one embodiment of an MPEG-encoded incoming data transport stream.
FIG. 3 schematically illustrates a data storage system comprising a data stream control system in accordance with another embodiment of the present invention.
FIG. 4 schematically illustrates a data stream control system in accordance with an embodiment of the present invention, in which the counter is synchronized to a clock that provides time information.
FIG. 5 schematically illustrates an exemplary series of selected data packets stored on the storage device.
FIG. 6 schematically illustrates a data stream control system in accordance with an embodiment of the present invention, in which the counter is coupled to the programmable data packet filter.
FIG. 7 schematically illustrates a data stream control system in accordance with an embodiment of the present invention, in which the timing restorer is synchronized to a clock that provides time information.
FIG. 8 schematically illustrates a data stream control system in accordance with an embodiment of the present invention, in which the timing restorer comprises a null data packet generator.
FIG. 9 is a flowchart which illustrates one embodiment of a method of selectively storing a series of selected data packets.
FIG. 10 is a flowchart which illustrates one embodiment of a method of selectively storing and playing back a stored series of selected data packets.
DETAILED DESCRIPTION OF THE EMBODIMENTFIG. 1 schematically illustrates adata storage system2 comprising a datastream control system10 in accordance with an embodiment of the present invention. The datastream control system10 is connectable to astorage device20 and selectively stores a series of selecteddata packets30 from an incomingdata transport stream40. The datastream control system10 comprises a transportstream input interface60 that receives the incomingdata transport stream40 that has interpacket time intervals between the selecteddata packets30. The datastream control system10 further comprises acommand interface50 that receives the at least onepacket filter parameter52 identifying the series of selecteddata packets30. The datastream control system10 further comprises a programmabledata packet filter70 coupled to thecommand interface50 and transportstream input interface60. The programmabledata packet filter70 transmits the series of selecteddata packets30 in response to thepacket filter parameter52 and the incomingdata transport stream40. The datastream control system10 further comprises astorage interface80 coupled to the programmabledata packet filter70 and connectable to thestorage device20. Thestorage interface80 transmits the selecteddata packets30 to thestorage device20. The datastream control system10 further comprises acounter90 that providescounter values100 for the selecteddata packets30. Eachcounter value100 represents a time of reception of a respective selecteddata packet30. Thecounter value100 is stored in association with the respective selecteddata packet30 to preserve information regarding the interpacket time intervals of the series of selecteddata packets30 from the incomingdata transport stream40. Thedata storage system2 comprises a data storage system controller4 that generates the at least onepacket filter parameter52 identifying the series of selecteddata packets30.
In certain embodiments of the present invention, the datastream control system10 is a portion of adata storage system2 such as a personal video recorder (PVR). In these embodiments, the datastream control system10 can be realized as an application-specific integrated circuit (ASIC) coupled to other components of thePVR2. Persons skilled in the art appreciate, however, that the datastream control system10 described herein can also be realized as multiple separate components of thePVR2. Only the portions of thePVR2 pertinent to the present invention are illustrated in FIG.1 and the other figures. One skilled in the art will appreciate that anexemplary PVR2 has other elements (not shown) that implement other features of thePVR2. Anexemplary PVR2 is disclosed in copending U.S. patent application Ser. No. 09/585,249, filed May 31, 2000, entitled “Digital Video Recorder Connectable To An Auxiliary Interface Of A Set-Top Box That Provides Video Data Stream To A Display Device Based On Selection Between Recorded Video Signal Received From The Digital Video Recorder And A Real-Time Video Signal,” which is incorporated by reference herein. Also, in other embodiments, the datastream control system10 can be a portion of other types of data storage systems, such as personal computers or video camera systems.
The datastream control system10 is connectable to astorage device20 which selectively stores a series of selecteddata packets30 from an incomingdata transport stream40. In addition, thestorage device20 can provide storage for various types of system information. In certain embodiments of the present invention, thestorage device20 comprises a hard disk drive compatible with a version of the ATA (AT-attachment) standard, such as IDE (Integrated Drive Electronics). In other embodiments, thestorage device20 comprises a hard disk drive compatible with the SCSI (Small Computer System Interface) standard. In still other embodiments, thestorage device20 comprises a hard disk drive compatible with the IEEE 1394 standard, which is described in the “IEEE Std 1394-1995 IEEE Standard for a High Performance Serial Bus,” Aug. 30, 1996, which is incorporated by reference herein. Astorage device20 compatible with the present invention can utilize any technology that provides writable non-volatile storage (e.g., a writable digital video disk (DVD) drive).
In an embodiment in which the datastream control system10 is a portion of aPVR2, the incomingdata transport stream40 is typically generated by a video input interface in response to an external video data stream received from a video data service provider that supplies video programming to multiple users. Examples of such video data service providers include, but are not limited to, cable television systems and satellite systems. Alternatively, the external video data stream can be received from UHF or VHF broadcast signals using an antenna. The incomingdata transport stream40 is generated by the video input interface with a format which is compatible with the other components of the data storage system. For example, in certain embodiments, to provide compatibility of thePVR2 with an analog-formatted external video data stream, the video input interface of certain embodiments comprises an MPEG (Motion Pictures Experts Group) encoder, which generates an incomingdata transport stream40 comprising MPEG-encoded data packets in response to the analog-formatted external video data stream. Alternatively, in other embodiments, the external video data stream itself comprises MPEG-encoded data packets thereby serving as the incomingdata transport stream40, which is then transmitted to the datastream control system10 by the video input interface. Furthermore, for particular embodiments that are compatible with an encrypted external video data stream (e.g., video data streams from premium cable channels), thePVR2 can also comprise a decrypter, typically as a component of the video input interface.
The transportstream input interface60 receives the incomingdata transport stream40 for the datastream control system10 and transmits the incomingdata transport stream40 to the programmabledata packet filter70. Persons skilled in the art are able to provide a video input interface and a transportstream input interface60 that are compatible with the present invention. Note that while the following discussion focuses on certain embodiments in which the incomingdata transfer stream40 is MPEG-encoded, other embodiments compatible with the present invention can utilize incoming data transport streams40 conforming to other selected compression standards.
In an embodiment in which the datastream control system10 is a portion of aPVR2, thepacket filter parameter52 is typically generated by a system controller in response to user input and/or electronic program guide (EPG) information. A user provides user input to the PVR to select which video program segments are stored from the incomingdata transfer stream40, as well as to control various other operation parameters of thePVR2, such as playback commands (e.g., pause, instant-replay, etc.). The incomingdata transport stream40 comprises selecteddata packets30 corresponding to the video program segments selected to be stored, and non-selected data packets corresponding to the portion of the incomingdata transport stream40 not selected for storing. The EPG information is a database, typically displayed to the user in the form of a program grid, containing information regarding the programs and broadcast schedules from various broadcast channels. The user input, in conjunction with the EPG information, is used by the system controller to generate at least onepacket filter parameter52 which indicates the series of selecteddata packets30 corresponding to the video program segment selected for storing. Thepacket filter parameter52 is then transmitted to thecommand interface50 of the datastream control system10.
In embodiments in which the incomingdata transport stream40 comprises multiple series of MPEG-encoded data packets, thepacket filter parameter52 comprises the packet identifier code (PID) which is contained in the header of each selecteddata packet30. Each MPEG-encoded data packet contains 188 bytes, comprising a header with a minimum size of 4 bytes, and a payload which comprises the encoded data. The header comprises the PID and the program clock reference (PCR) for the particular data packet. As described above, an MPEG decoder relies on the PCR value to properly synchronize its system time clock (STC) to the STC of the MPEG encoder. Under the MPEG encoding standard, in a given transport stream, MPEG-encoded data packets belonging to a given elementary stream (i.e., generated by the same MPEG encoder) will have the same PID. Packets in another elementary stream will have another PID. In this way, a decoder or demultiplexer can select the elementary stream it wants from a transport stream and reject the remainder. Under the MPEG standard, the PID is a thirteen-bit code which distinguishes the various data packets. For example, null data packets all have the same PID, which is 8191, or thirteen 1's. Persons skilled in the art appreciate that other encoding or compression standards with other packet identification means are compatible with the present invention.
FIG. 2 is a timing diagram of one possible embodiment of an MPEG-encoded incomingdata transport stream40 comprising audiovisual (AV) program data segments AV1 and AV2, information technology (IT) data segments IT1 and IT2, and null data packets. Null data packets are typically part of an incomingdata transport stream40 in which the full bandwidth of the incomingdata transport stream40 is not being utilized by the video data streams being transmitted. As a result, an incomingdata transport stream40 which contains video data streams being transmitted with reduced resolution, and hence requiring less bandwidth, will generally incorporate more null data packets. The horizontal axis ofFIG. 2 corresponds to time, with increasing elapsed time from left to right. In the following discussion, the series of AV1 data packets (AV1-1, AV1-2, . . . ) represents the series of selecteddata packets30 corresponding to the video program segment selected for storing to better illustrate the operation of the datastream control system10. The AV1 series of selecteddata packets30 has interpacket time intervals between the various AV1 data packets. Under one convention of expressing the interpacket time intervals, an interpacket time interval is defined as the time interval between the time of reception of the sync reference of a first selected data packet and the time of reception of the sync reference of a second selected data packet. Typically, the sync reference is the first byte of each data packet; however, any portion of the data packets may be selected as the sync reference as long as the selection is consistent for all data packets. For example, the interpacket time interval between selected data packets AV1-1 and AV1-2 is (t2−t1), where t1and t2are the times of reception of the sync references of the AV1-1 and AV1-2 selected data packets, respectively.
As seen inFIG. 2, these interpacket time intervals comprise one selected data packet, non-selected data packets (i.e., AV2, IT1, IT2, null) and/or time periods with no data packets (denoted inFIG. 2 as an ellipsis). For example, the interpacket time interval between times t1and t2comprises the AV1-1 selected data packet and the AV2, IT1, and IT2 non-selected data packets. The interpacket time interval between times t3and t4comprises the AV1-3 selected data packet, an AV2 non-selected data packet, and a time period with no data packets. Note that for selected data packets which immediately precede one another (e.g., selected data packets AV1-4 and AV1-5), the corresponding interpacket time interval between times t4and t5comprises one selected data packet (e.g., AV1-4). Accordingly, another convention can express the interpacket time intervals in terms of a number of non-selected data packets interposed between a first selected data packet and a second selected data packet. For example, the interpacket time interval between times t1, and t2can be expressed as three non-selected data packets, and the interpacket time interval between times t4and t5can be expressed as zero. Persons skilled in the art appreciate that various conventions for expressing the interpacket time intervals are compatible with the present invention.
The incomingdata transport stream40 and thepacket filter parameter52 are received by the programmabledata packet filter70, which transmits the series of selecteddata packets30 in response to thepacket filter parameter52 and the incomingdata transport stream40. For the incomingdata transport stream40 illustrated inFIG. 2, the programmabledata packet filter70 receives the selected data packets30 (i.e., AV1-1, AV1-2, . . . ) at times t1, t2, . . . and the interpacket time intervals between the selecteddata packets30 comprise the non-selected data packets. In certain embodiments, the programmabledata packet filter70 comprises a demultiplexer which transmits the series of selecteddata packets30 to thestorage interface80, but does not transmit the non-selected data packets. For the incomingdata transport stream40 illustrated inFIG. 2, the programmabledata packet filter70 transmits the AV1 series of selecteddata packets30 but does not transmit the AV2, IT1, IT2, or null data packets. Furthermore, in certain embodiments as described below, the programmabledata packet filter70 detects non-selected data packets and generates a corresponding signal.
Thestorage interface80 is coupled to the programmabledata packet filter70 and is connectable to thestorage device20. Thestorage interface80 transmits the selecteddata packets30 to thestorage device20. As is more fully described in the following discussion of various embodiments, thestorage interface80 can comprise various memory buffers to facilitate the transfer of selected data packets and other information between the datastream control system10 and thestorage device20. In certain embodiments, thestorage interface80 can also be coupled to other memory buffers (e.g., random-access memory (RAM)) to store various information such as the counter values100. Persons skilled in the art are able to provide astorage interface80 compatible with the present invention.
Thecounter90 provides counter values100 for the selecteddata packets30. Eachcounter value100 represents a time of reception of a respective selecteddata packet30. In one embodiment, the time of reception of a data packet is a time at which the data packet is received by the programmabledata packet filter70. In other embodiments, the time of reception can be the time at which the data packet is received by another component of thedata storage system2, as long as the time of reception is consistently defined for all data packets. As is more fully described in the following discussion of various embodiments, the counter values100 can represent the times of reception of the selecteddata packets30 in numerous forms. In addition, in these various embodiments, thecounter90 can be coupled with various other components of the datastream control system10 in order to providecounter values100 compatible with the present invention. As illustrated inFIG. 1, two of these optional couplings are represented by the dashed line between thecounter90 and the programmabledata packet filter70 and the dashed line between thecounter90 and the transportstream input interface60. Persons skilled in the art appreciate that other embodiments can utilize alternative couplings of thecounter90 which are compatible with the present invention.
The counter values100 are stored in association with the respective selecteddata packets30 to preserve information regarding the interpacket time intervals of the series of selecteddata packets30 from the incomingdata transport stream40. As is described more fully below, certain embodiments can append the counter values100 to the selecteddata packets30, storing both on thestorage device20. Alternatively, in other embodiments, the counter values100 can be stored on a memory buffer separate from thestorage drive20 in a memory location indexed to the respective selecteddata packet30.
FIG. 3 schematically illustrates adata storage system2 comprising an embodiment of the datastream control system10 in which thestorage interface80 receives stored selecteddata packets110 from thestorage device20, and thestorage device20 plays back and transmits the stored series of selecteddata packets110. In this embodiment, the datastream control system10 further comprises atiming restorer120 that receives the stored selecteddata packets110 from thestorage interface80 and that receives thecounter value130 stored in association with the respective selecteddata packets110. Thetiming restorer120 transmits the stored selecteddata packet110 at a time of transmission responsive to therespective counter value130. The datastream control system10 illustrated inFIG. 3 further comprises a transportstream output interface140 coupled to thetiming restorer120 and an outgoingdata transport stream150. The transportstream output interface140 receives the stored series of selecteddata packets110 from thetiming restorer120 and transmits the stored series of selecteddata packets110 to the outgoingdata transport stream150. The stored series of selecteddata packets110 transmitted to the outgoingdata transport stream150 has interpacket time intervals which substantially match the corresponding interpacket time intervals of the series of selected data packets from the incoming data transport stream.
As is described more fully in the following discussion of various embodiments, various configurations of thetiming restorer120 can utilize the storedcounter values130 to substantially match the interpacket time intervals of the corresponding series of selected data packets. In certain embodiments, by transmitting a stored selecteddata packet110 in response to the respective storedcounter value130, thetiming restorer120 can substantially restore the interpacket time intervals which existed between the corresponding selecteddata packets30 as they were received by the programmabledata packet filter70. Alternatively, in other embodiments, thetiming restorer120 can substantially restore the interpacket time intervals by inserting null data packets between the stored selecteddata packets110 in response to the respective storedcounter value130. In the various embodiments, the interpacket time intervals of the series of selecteddata packets30 are substantially matched or restored when the stored selecteddata packets110 have interpacket time intervals which match the interpacket time intervals of the corresponding selecteddata packets30 to within approximately one clock cycle.
The transportstream output interface140 receives the stored series of selecteddata packets110 with interpacket time intervals which substantially match those of the corresponding series of selected data packets and transmits the stored series of selecteddata packets110 to the outgoingdata transport stream150. In certain embodiments in which the datastream control system10 is a portion of a PVR, the outgoingdata transport stream150 transmitted from the datastream control system10 is received by an MPEG decoder which in response generates an audiovisual data stream which is displayed on a display device, such as a television. In this way, the datastream control system10 enables a PVR user to view a previously stored video data segment. Persons skilled in the art are able to provide a transportstream output interface140 that is compatible with the present invention.
As described above, MPEG decoding requires that the interpacket time intervals of the series of selecteddata packets30 be preserved because an MPEG decoder utilizes the PCR values of the selecteddata packet30 to synchronize its STC with the STC of the MPEG encoder. Normally, when a series of selecteddata packets30 from an incomingdata transport stream40 is stored on astorage device20, the selecteddata packets30 are collected in a memory buffer and then burst out to the media within thestorage device20. This procedure removes any information regarding the interpacket time intervals of the series of selecteddata packets30 that was present in the incomingdata transport stream40. Consequently, the PCR timing for MPEG encoding and decoding is therefore compromised. However, by storing the counter values100 representing the times of reception in association with the selecteddata packets30, the datastream control system10 compatible with the present invention preserves information regarding the interpacket time intervals of the series of selecteddata packets30 from the incomingdata transport stream40. Also, by not storing the non-selected data packets and the time periods without data packets, this use ofcounter values100 stored in association with the selecteddata packet30 can further reduce the total amount of storage space required. Persons skilled in the art recognize that in certain embodiments, this preservation of information regarding the interpacket time interval can find utility with data streams which are encoded according to other selected compression standards.
In the embodiment of the datastream control system10 illustrated inFIG. 4, the datastream control system10 further comprises aclock160, and thestorage interface80 further comprises astorage memory buffer170 and aplayback memory buffer180. Theclock160 is coupled to thecounter90 and provides time information in the form of aclock value190. In this way, thecounter90 is synchronized to theclock160. In addition, thecounter90 of the embodiment illustrated inFIG. 4 is coupled to the programmabledata packet filter70. Note that in alternative embodiments, thecounter90 need not be coupled to the programmabledata packet filter70. Theclock160 illustrated inFIG. 4 is a separate component of the datastream control system10; however, in other embodiments, theclock160 can be a sub-component of thecounter90, system controller, or other component of the datastream control system10. In certain other embodiments, theclock160 can be external to the datastream control system10.
The programmeddata packet filter70 of the embodiment illustrated inFIG. 4 sends a signal to thecounter90 upon receiving a selecteddata packet30. In response to this signal, thecounter90 determines the time of reception by the programmeddata packet filter70 of the selecteddata packet30 by noting theclock value190 from theclock160. As described below, different embodiments of the present invention can express this time of reception of the selecteddata packet30 in different forms.
In certain embodiments, thecounter value100 corresponding to the selecteddata packet30 represents a time interval expressed as anabsolute clock value190 in relation to a reference time, such as the time t0of a previous reset of theclock160. For example, referring toFIG. 2, the time of reception t1by the programmabledata packet filter70 of the selected AV1-1 data packet would be represented by a counter value of (t1−t0), the time of reception t2by the programmabledata packet filter70 of the selected AV1-2 data packet would be represented by a counter value of (t2−t0), and so on. The selecteddata packet30 and its associatedcounter value100 are then transmitted by the programmabledata packet filter70 and thecounter90 to thestorage memory buffer170.
Alternatively, in other embodiments, thecounter value100 corresponding to the selecteddata packet30 represents a time interval expressed as adifferential clock value190 in relation to a reference time, such as the time of reception of an earlier selecteddata packet30. For example, referring toFIG. 2, where the reference time is the time of reception t1of the selected AV1-1 data packet, the selected AV1-1 data packet would be associated with a counter value of (t1−t1)=0, the selected AV1-2 data packet detected at t2would be associated with a counter value of (t2−t1), the selected AV1-3 data packet detected at t3would be associated with a counter value of (t3−t1), and so on. Where the reference time is the time of reception of the immediately preceding selecteddata packet30, the selected AV1-2 data packet would be associated with a counter value of (t2−t1), the selected AV1-3 data packet detected at t3would be associated with a counter value of (t3−t2), and so on. The selecteddata packet30 and its associatedcounter value100 are then transmitted by the programmabledata packet filter70 and thecounter90 to thestorage memory buffer170.
Note that where a second selected data packet immediately follows another with no intervening time or non-selected data packets (e.g., selected data packets AV1-4 and AV1-5 in FIG.2), the interpacket time interval is the time corresponding to a single selected data packet. In certain embodiments of the present invention, this time corresponding to a single selected data packet can be implicit in the counter values, so that the corresponding counter value can be expressed as zero. Alternatively, in other embodiments of the present invention, the second of these selected data packets may not have a counter value associated with it. Instead, a flag or other form of indication may be used to denote two adjacent selected data packets with no intervening time or non-selected data packets. Persons skilled in the art will appreciate that such an embodiment is compatible with the present invention.
Thestorage memory buffer170 continuously transfers selecteddata packets30 from the datastream control system10 to thestorage device20. Similarly, theplayback memory buffer180 continuously transfers stored selecteddata packets110 from thestorage device20 to the datastream control system10. Data streaming rates for continuously streaming video data (e.g., 1 Mb/s) are typically much lower than the instantaneous data transfer rates for transferring data packets fromstorage devices20 comprising hard disk drives (e.g., 66 Mb/s). Thestorage memory buffer170 and theplayback memory buffer180 thus serve as temporary repositories of selected data packets in order to maintain a data streaming rate that is lower than the instantaneous data transfer rate of thestorage device20. Similar memory buffers are described in U.S. patent application Ser. No. 09/628,583, filed Jul. 31, 2000, entitled “Video Recording System Utilizing Host-Processor-Resident Error Recovery To Transfer Non-Time-Critical, Error-Intolerant Data Segments While Transferring Time-Critical, Error-Tolerant Streaming Data Segments At A Required Data Transfer Rate,” which is incorporated by reference herein.
From thestorage memory buffer170, the selecteddata packets30 are transmitted to thestorage device20, where they are stored for playback upon appropriate commands from the datastream control system10. In addition, the corresponding counter values100 are directed by thestorage interface80 to be stored in association with the selecteddata packets30. In the embodiment of the datastream control system10 illustrated inFIG. 4, the selecteddata packets30 and therespective counter values100 are both transmitted to thestorage device20. Astorage interface80 compatible with this embodiment can comprise a multiplexer to combine the selecteddata packets30 with therespective counter values100 which are both then stored on thestorage device20. In certain embodiments compatible with MPEG-encoded selecteddata packets30, an MPEG-encoded selected data packet is appended with a corresponding counter value representing the time of reception of the selected data packet, and both the selected data packet and the counter value are stored on thestorage device20.FIG. 5 schematically illustrates an exemplary series of selecteddata packets110 stored with the corresponding counter values130 by thestorage device20, the selected data packets corresponding to the video program segment AV1 of FIG.2. In certain embodiments of the present invention, thecounter value130 is a 4-byte value appended to the front end of the 188-byte selecteddata packet110.FIG. 5 illustrates an embodiment in which thecounter value130 stored with the stored selecteddata packet110 is expressed as anabsolute clock value190 in relation to a reference time to, although other embodiments are also compatible with the present invention. Note that embodiments which store the counter values130 on a memory buffer or RAM at a memory location indexed to the respective stored selecteddata packet110, and not with the respective stored selecteddata packets110 on thestorage device20, are also compatible with the present invention.
In embodiments in which the interpacket time intervals of the series of selecteddata packets30 are completely filled with non-selected data packets, the datastream control system10 schematically illustrated inFIG. 6 can be used. In this embodiment, thecounter90 is coupled to the programmabledata packet filter70, which detects non-selected data packets, i.e., those data packets which do not correspond to the selected video program segments, and transmits a series ofsignals200 to thecounter90, eachsignal200 denoting the detection of a non-selected data packet. By counting the number ofsuch signals200 preceding a selecteddata packet30 since receiving a previously received selecteddata packet30, thecounter90 can determine the time of reception of the selecteddata packet30. Thecounter90 then generates acounter value100 which comprises a non-selected packet count associated with the selecteddata packet30. For example, referring toFIG. 2, the AV1-2 selected data packet would be associated with a counter value of 3, which represents the number of non-selected data packets detected since the time of reception of the AV1-1 selected data packet, the AV1-3 selected data packet would be associated with a counter value of 2, which represents the number of non-selected data packets detected since the time of reception of the AV1-2 selected data packet, and so on.
Alternatively, in other embodiments, the programmabledata packet filter70 detects every data packet, both selecteddata packets30 and non-selected data packets, and transmits a series of signals to thecounter90, each signal denoting the detection of a data packet. By generating acounter value100 which corresponds to a continual count of the number of data packets, thecounter90 can express the time of reception for a selecteddata packet30 as the ordinal number of the selecteddata packet30 in the incomingdata transport stream40. For example, referring toFIG. 2, where the ordinal number of the AV1-1 selected data packet in the incoming data transport stream is N1, the AV1-2 selected data packet would be associated with a counter value of N2=(N1+4 which is the ordinal number of the AV1-2 selected data packet, the AV1-3 selected data packet would be associated with a counter value of N3=(N1+7), which represents the ordinal number of the AV1-3 selected data packet, and so on. Similarly, in still other embodiments, thecounter value100 can express the time of reception of a selecteddata packet30 as a difference of the ordinal numbers from two sequential selecteddata packets30. In each of these embodiments, thecounter90 generates acounter value100 which comprises a non-selected packet count associated with the selecteddata packet30. The selecteddata packet30 with itsrespective counter value100 is then transmitted by the programmabledata packet filter70 and thecounter90 to thestorage memory buffer100. Note that embodiments which utilize the non-selected packet count as a measure of the time of reception would not provide an accurate measure of interpacket time intervals which are not fully filled with non-selected data packets, such as the time interval between the AV1-3 selected data packet and the AV1-4 selected data packet, as illustrated in FIG.2.
To playback a stored series of selecteddata packets110, the datastream control system10 transmits the stored series of selecteddata packets110 to the outgoingdata transport stream150. In the embodiment schematically illustrated inFIG. 7, the stored selecteddata packets110 and the corresponding counter values130 are transmitted by thestorage device20 to theplayback memory buffer180, which then transmits the stored selecteddata packets110 and corresponding counter values130 to thetiming restorer120. Alternatively, in other embodiments in which the counter values130 are stored in another memory buffer or RAM, thestorage interface80 receives the counter values130 from the memory buffer or RAM and transmits the counter values130 to thetiming restorer120.
Upon receiving the stored selecteddata packet110 with itscorresponding counter value130, thetiming restorer120 transmits the stored selecteddata packet110 to the transportstream output interface140 at a time of transmission responsive to thecounter value130 of the stored selecteddata packet110. In embodiments in which the stored selecteddata packets110 have been combined with the respective counter values130, thetiming restorer120 can comprise a demultiplexer to separate the stored selecteddata packets110 from the counter values130. In certain embodiments, thetiming restorer120 is synchronized to aclock210, which provides time information which is used to determine the time of transmission for the stored selecteddata packet110. In certain embodiments of the present invention, thetiming restorer120 is synchronized to thesame clock160 to which thecounter90 is synchronized. In certain other embodiments, thetiming restorer120 can be synchronized to adifferent clock210. Theclock210 illustrated inFIG. 7 is a separate component of the datastream control system10; however, in other embodiments, theclock210 can be a sub-component of thetiming restorer120, system controller, or other component of the datastream control system10. In certain other embodiments, theclock210 can be external to the datastream control system10.
In embodiments in which thetiming restorer120 is synchronized to aclock210, the time of transmission of a stored selecteddata packet110 can be referenced to a reference time. By monitoring aclock value220 from theclock210, thetiming restorer120 can determine the appropriate time of transmission of the stored selecteddata packet110 in response to thecorresponding counter value130. In certain embodiments, the time of transmission is determined in relation to an absolute reference time, which can be the time of a previous reset of theclock210. Alternatively, in other embodiments utilizing a differential reference time, the reference time can be the time of transmission for an earlier stored selecteddata packet130. For example, referring to the stored selecteddata packets130 as illustrated inFIG. 5, where the time of transmission of the AV1-1 stored selected data packet was τ1, the time of transmission τ2for the AV1-2 stored selected data packet would be τ1+(t2−t1), the time of transmission τ3for the AV1-3 stored selected data packet would be τ1+(t3−t1), and so on. Similarly, if thecounter value130 of the stored selecteddata packet110 represents the time of reception as the number of non-selected data packets or the ordinal number of the stored selected data packet, thetiming restorer120 can calculate the appropriate time of transmission and transmit the stored selecteddata packet110 accordingly. Irrespective of the form in which the counter values130 represent the times of reception, the stored series of selecteddata packets110 are transmitted to the transportstream output interface140 with interpacket time intervals which substantially match the corresponding interpacket time intervals of the series of selected data packets from the incomingdata transport stream40.
In certain other embodiments, such as that illustrated inFIG. 8, thetiming restorer120 interposes a number of null data packets between the stored selecteddata packet110 and a previously transmitted stored selecteddata packet110. The number of interposed null data packets is responsive to thecounter value130 of the stored selecteddata packet110. In the embodiment schematically illustrated inFIG. 8, thetiming restorer120 comprises a nulldata packet generator230 which produces null data packets in response to the counter values130. In embodiments in which thecounter value130 represents the time of reception for a selected data packet as the number of non-selected data packets detected since receiving the immediately preceding selected data packet, the number of interposed null data packets between the corresponding stored selecteddata packets110 equals the number of non-selected data packets. Alternatively, in embodiments in which thecounter value130 represents the times of reception as either absolute or differential clock values, the number of interposed null data packets is chosen to substantially match the interpacket time intervals for the corresponding series of selected data packets. Irrespective of the form in which thecounter value130 represents the times of reception, the stored series of selecteddata packets110 are transmitted to the transportstream output interface140 with interpacket time intervals which substantially match the corresponding interpacket time intervals of the series of selected data packets from the incomingdata transport stream40.
FIG. 9 is a flowchart which illustrates one embodiment of amethod300 of selectively storing a series of selecteddata packets30 from an incomingdata transport stream40 comprising selecteddata packets30 and non-selected data packets. The series of selecteddata packets30 has interpacket time intervals between the selecteddata packets30. Themethod300 illustrated inFIG. 9 is discussed below primarily in reference to the embodiment of the datastream control system10 schematically illustrated in FIG.1. Persons skilled in the art appreciate that while the flowchart illustrated inFIG. 9 presents the procedural blocks in a particular sequence, other embodiments with other sequences of the procedural blocks are compatible with the present invention.
As shown inFIG. 9, themethod300 comprises aprocedure block310 which comprises receiving at least onepacket filter parameter52 identifying the series of selecteddata packets30 corresponding to the video program segment selected for storing. As described above, thepacket filter parameter52 is typically generated by a system controller in response to user input and/or EPG information.
Themethod300 further comprises aprocedure block320 which comprises receiving the incomingdata transport stream40. As described above, in certain embodiments, the incomingdata transport stream40 is generated by the video input interface in response to an external video data stream. Alternatively in other embodiments, the incomingdata transport stream40 is generated by the system controller, or by some other device upstream of the datastream control system10.
Themethod300 further comprises aprocedure block330 which comprises storing the series of selecteddata packets30 in response to thepacket filter parameter52 and the incomingdata transport stream40. As described above, the series of selecteddata packets30 is stored on thestorage device20 by transmitting the selecteddata packets30 from the programmabledata packet filter70 to thestorage interface80, and thestorage interface80 transmits the selecteddata packets30 to thestorage device20. In certain embodiments, the selecteddata packets30 are transmitted to thestorage device20 via astorage memory buffer170.
Themethod300 further comprises aprocedure block340 which comprises providing acounter value100 for the selecteddata packets30. Eachcounter value100 represents a time of reception of the selecteddata packet30. As described above, in certain embodiments, thecounter value100 for a selecteddata packet30 corresponds to a time interval between the time of reception of the selecteddata packet30 and a reference time. This reference time can represent a time of a previous reset of a clock, or a time of reception for an earlier selecteddata packet30. In addition, in certain embodiments, the reference time can represent a time of reception for an immediately preceding selecteddata packet30. Alternatively, in other embodiments, the time of reception of the selecteddata packet30 can be expressed as a number of non-selected data packets between the selecteddata packets30.
Themethod300 further comprises aprocedure block350 which comprises storing thecounter value100 in association with the respective selecteddata packet30. In this way, information regarding interpacket time intervals of the series of selecteddata packets30 from the incomingdata transport stream40 is preserved. As described above, in certain embodiments, the counter values100 are stored with the selecteddata packets30 on thestorage device20. Alternatively, in other embodiments, the counter values100 are stored elsewhere, but are indexed to be associated with the respective selecteddata packets30.
FIG. 10 is a flowchart which illustrates one embodiment of amethod400 of selectively storing and playing back a series of selecteddata packets30 from an incomingdata transport stream40 comprising selecteddata packets30 and non-selected data packets. The series of selecteddata packets30 has interpacket time intervals between the selecteddata packets30. Themethod400 illustrated inFIG. 10 is discussed below primarily in reference to the embodiment of the datastream control system10 schematically illustrated in FIG.3. Persons skilled in the art appreciate that while the flowchart illustrated inFIG. 10 presents the procedural blocks in a particular sequence, other embodiments with other sequences of the procedural blocks are compatible with the present invention.
As shown inFIG. 10, themethod400 comprises aprocedure block410 which comprises receiving at least onepacket filter parameter52 identifying the series of selected data packets, aprocedure block420 which comprises receiving the incomingdata transport stream40, aprocedure block430 which comprises storing the series of selecteddata packets30, aprocedure block440 which comprises providing acounter value100 for the selecteddata packets30, and aprocedure block450 which comprises storing thecounter value100 in association with the respective selecteddata packet30. These procedure blocks410,420,430,440, and450 mirror the procedure blocks310,320,330,340, and350 described above and schematically illustrated in FIG.9.
Themethod400 further comprises aprocedure block460 which comprises playing back the stored selecteddata packets110. As described above, to playback the stored series of selecteddata packets110, the stored selecteddata packets110 are transmitted from thestorage device20 to thestorage interface80. Thestorage interface80 transmits the stored selecteddata packets110 to thetiming restorer120. In certain embodiments, the stored selecteddata packets110 are transmitted to thetiming restorer120 via aplayback memory buffer180.
Themethod400 further comprises aprocedure block470 which comprises receiving thecounter value130 stored in association with the respective selecteddata packets110. As described above, in certain embodiments which store the counter values130 with the stored selecteddata packets110 on thestorage device20, the counter values are transmitted from thestorage device20 to thetiming restorer120 via thestorage interface80. Alternatively, in embodiments in which the counter values130 are stored elsewhere, but in association with the respective selecteddata packets110, the counter values130 are transmitted from the memory buffer or RAM from which they are stored via thestorage interface80 to thetiming restorer120.
Themethod400 further comprises aprocedure block480 which comprises transmitting the stored selecteddata packet110 at a time of transmission responsive to therespective counter value130. As described above, the stored series of selecteddata packets110 are transmitted with interpacket time intervals which substantially match the corresponding interpacket time intervals of the series of selected data packets from the incomingdata transport stream40.