Transport processor

Information

  • Patent Grant
  • 6781601
  • Patent Number
    6,781,601
  • Date Filed
    Tuesday, February 5, 2002
    22 years ago
  • Date Issued
    Tuesday, August 24, 2004
    20 years ago
Abstract
The present invention relates to a system and method for processing information, specifically data packets. One embodiment of the present invention relates to a method for processing information, comprising determining if a first identifier associated with the information is acceptable and assigning a second identifier to the information. The method further includes determining a type of processing that is required using the second identifier and performing that type of processing on the information.
Description




FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT




[Not Applicable]




SEQUANCE LISTING




[Not Applicable]




MICROFICHE/COPYRIGHT REFERENCE




[Not Applicable]




BACKGROUND OF THE INVENTION




One embodiment of the present invention relates to a transport processor. More specifically, one embodiment of the present invention relates to a system and method for processing data packets or information using a transport processor.




Known receivers or decoders are adapted to accept inputs from one or more input sources at a time. It is contemplated that each input may contain multiple programs, each program identified by a program identifier. It is also contemplated that among all the input sources there may be programs with the same program identifier, which may create problems for processing such programs.




Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.




SUMMARY OF THE INVENTION




One embodiment of the present invention relates to a system and method for processing information, specifically data packets. One embodiment of the present invention relates a method for processing information, comprising determining if a first identifier associated with the information is acceptable and assigning a second identifier to the information. The method further includes determining a type of processing required using the second identifier and performing that type of processing on the information.




Another embodiment of the present invention relates to a method for processing at least one data packet using a data processor. The method comprises receiving the at least one data packet from at least one input band and determining if a packet identifier associated with the data packet is acceptable. The method assigns a tag to the data packet and communicates the tag to at least one processing block. The method further comprises determining if processing of the data packet is required using the tag, determining what type of processing that is needed based on the tag, and performing that type of processing.




Another embodiment of the present invention relates to a transport processor used to process data packets. The transport processor comprises at least a parser device adapted to assign a unique tag to the data packets based on a packet identifier.




Other aspects, advantages and novel features of the present invention, as well as details of an illustrated embodiment thereof, will be more fully understood from the following description and drawing, wherein like numerals refer to like parts.











BRIEF DESCRIPTION OF SEVERAL VIEWS OF THE DRAWINGS





FIG. 1

illustrates one embodiment of a flow diagram depicting an exemplary transport stream through a transport processor in accordance with the present invention;





FIG. 2

illustrates a block diagram of one embodiment of a transport processor in accordance with the present invention;





FIG. 3

illustrates a block diagram of another embodiment of a transport processor in accordance with the present invention;





FIG. 4

illustrates a block diagram of yet another embodiment of a transport processor in accordance with the present invention; and





FIGS. 5A & 5B

illustrate a flow chart of one embodiment of processing data or information in accordance with the present invention.











DETAILED DESCRIPTION OF THE INVENTION




One embodiment of the present invention relates to processing one or more inputs. More specifically, one embodiment of the present invention relates to processing input streams using a transport processor used, for example, to transport input streams from a communication channel to a video channel. It is contemplated that such input streams may comprise data, information, data packets, audio/video data, system data, private data, etc. In accordance with the present invention, the transport processor is adapted to accept input streams from one or more input sources or bands (i.e., in-band or out-of-band streams for example) at a time. Each band or input stream may include one or more multiple programs or transport streams, where each program or transport stream is identified by a first identifier or program ID (alternatively referred to as “PID”).





FIG. 1

illustrates an exemplary transport or input stream (MPEG-2 for example) processed through or using a transport processor. In one embodiment of the present invention, an MPEG-2 audio/video decoder (not shown) receives one or more MPEG-2 transport streams from a transceiver (not shown). The illustrated MPEG-2 transport streams may include one or more in-band streams (high data rate streams such as audio or video data) and/or out-of-band streams (such as low data rate messaging communicated to or from a termination point or headend). It is contemplated that such in-band streams may include, without limitation, such universal multi-standards as Annex A, Annex B or Annex C, while such out-of-band streams may include, without limitation, DAVIC, MPEG layered on DAVIC or straight MPEG.




In the illustrated embodiment, each input stream or band may comprise at least header and payload information. In the illustrated embodiment, the header information may include sync-byte and PID information.




In one embodiment, the payload information may comprise program specific information (alternatively referred to as “PSI”) and Packetized Elementary Stream (alternatively referred to as “PES”) information, or some combination thereof. The PSI may comprise information such as program associated table, program map table, network information table, and conditional access table, one or all of which may be processed by one or more section filters. PES may comprise audio, video and/or private streams.




The transport processor in accordance with one embodiment of the present invention may perform one or more of, but is not limited to, PID filtering, encrypting, decrypting and packet buffering of the received transport or input streams. It should be appreciated that the transport processor may be incorporated into a transceiver or as a separate block.

FIG. 2

illustrates a block diagram of one embodiment of a transport processor


100


according to the present invention. The transport processor


100


may also perform one or more of, but is not limited to, adaptation processing, buffering, PES filtering and section filtering, as well as encryption and decryption. In one embodiment, the transport processor transmits private data to a memory controller.




In this embodiment, the transport processor


100


may comprise out-of-band and in-band input interfaces


112


and


114


respectively. The out-of-band input interface


112


is adapted to receive one or more out-of-band streams (comprising high speed information such as program information for example), while the in-band input interface


114


is adapted to receive one or more in-band input streams (comprising lower speed information such as system information for example).




It is contemplated that the out-of-band input interface


112


may communicate information to either a PID Filter, Decryptor and Packet Buffer


116


which filters or parses the PIDs and/or a high speed interface


118


, which may output a serial stream. It is further contemplated that the in-band input interface


114


may communicate information to the PID Filter, Decryptor and Packet Buffer


116


and/or the high speed interface


118


. In this embodiment, the PID Filter, Decryptor and Packet Buffer


116


may receive information from a smart card and output a decrypted transport stream to audio & video decoders.





FIG. 2

also illustrates an adaptation processor


120


, a PES filter


122


, a section filter and processor


124


, and a buffer manager


126


. The PID Filter, Decryptor and Packet Buffer or parser


116


outputs information to such processors, filters and managers as illustrated.




The transport processor


100


includes a complex state machine that accepts serial data up to about 60 Mbps from the in-band receiver and up to about 3 Mbps from the out-of-band receiver simultaneously. The transport parser and demultiplexer extracts and decrypts the MPEG-2 video data for example, Dolby Digital audio data for example, and PCR from the input in-band transport stream. It extracts PSI and generic PES data from the input in-band or out-of-band data stream. In one embodiment, the demultiplexer includes a generic data filter, a high speed data filter, a video data filter, and an audio data filter. The data transport demultiplexer is capable of demultiplexing 44 data PIDs from the in-band or out-of-band data stream, for example, and supports 32 section filters.




Stream requirements dictate parallel comparisons for the filters that result in a register programmable hardwired implementation under state-machine control. The backend of the transport demultiplexer interfaces to the memory arbiter that, in one embodiment, controls the system memory at about 81 MHz over a 32-bit bus for example. The transport module supports a DVB and DES descrambler. The DVB engine supports full and conformance modes. The DES engine supports electronic code book and cipher block chaining modes with selectable residue termination modes of partial block unscrambled, residual block termination, and cipher-text stealing. This cryptosystem together with two on-chip smart card interfaces are used for conditional access control.




In one embodiment, the transport processor


100


transmits decrypted transport stream to the audio decoder and the video processor for audio and video decoding, respectively. The audio decoder and the video processor may included in an audio/video decoder.




The in-band front end of one embodiment of the transport processor interfaces to access control pins. The input data rate to the in-band transport demux is, in one example, 60 Mbps maximum. The transport demux may also interface directly to the out-of-band receiver or the on-chip DAVIC MAC via an internal 3-wire interface. The out-of-band input data rate is about 3 Mbps maximum. Video data may be stored in a dedicated video 2 Mbyte SDRAM. Audio, PSI and generic PES data may be stored in a system memory. Therefore, the back-end of the transport demultiplex interfaces to the memory arbiter that controls the system memory. The system memory interface is an 81 MHz 32-bit bus for example.




In one embodiment, the transport processor is an MPEG-2 transport stream message/PES parser and demultiplexer capable of processing two independent serial transport streams simultaneously. The processor supports decryption for up to 44 PIDs in the in-band stream for example. The processor supports 32 PIDs for PSI message or PES processing, and it supports 32 PSI section filters or filters for processing of MPEG or DVB sections. In one embodiment, it includes a special addressing mode that filters MPEG and private stream messages. The messages are preferably stored in one of 32 circular message buffers that reside in external memory.




The transport processor module may support two simultaneous input channels, typically allocated to the in-band and out-of bandstreams, respectively. There are two input synchronizers that synchronize incoming serial transport packets to the module's processing clock. The data may then converted to bytewide format.




The transport processor module may support a DVB and DES descrambler for up to 44 PIDs in the in-band transport stream including video, audio and data streams. The DVB engine supports full and conformance mode. The DES engine supports ECB and CBC mode with selectable residue termination modes of partial block unscrambled, residual block termination and cipher-text stealing. There is a mode for the processor to use the DES engine to encrypt or decrypt 64 bits of data during transport stream decryption. The microprocessor is preferably guaranteed a result in ninety-four 81 MHz clock cycles.




The illustrated embodiment includes two independent PID filters. In this embodiment, a PID table (a 44 entry PID table for example) is used to compare with PIDs of the transport streams. Each PID filter examines its corresponding transport stream for at least the PIDs that it is programmed to accept. In one embodiment, each filter examines at least one PID and Band. Each of the 44 PIDs for example may be arbitrarily allocated between the two input channels. The output of the PID filters form 44 PID channels of transport packet data for example, each corresponding to a PID table entry. Data from up to 32 PID channels (0-31), after further processing, are sent to one of 32 DRAM buffers. For out-of-band transport stream only, the same PID may be selected for different PID channels, allowing different PSI section filter output of the same PID stream to be sent to different memory buffers. Common PIDs between the two streams are processed as two independent PIDs. The PID filter examines the continuity counter and rejects duplicate packets. It generates error interrupts for length errors and discontinuity errors.




The same PID may be assigned to more than one PID channel or input stream (referred to as duplicate PID assignments). This feature may be used to provide different PSI or PES filtering options for messages within a common PID stream. There may be constraints to follow when utilizing duplicate PID assignments. For any single PLD channel, only 1 type of packet filtering option is allowed. For out-of-band transport streams, the same PID may be selected for different PID channels, enabling different PSI section filter output of the same PID stream to be sent to different memory buffers. For duplicate PIDs, if one channel is programmed for all-pass, then the rest of the channels with the same PID will also be treated as if they were programmed for all-pass. This is true even if the other duplicate PID channels are not programmed for PES, PSI or all-pass. For MPEG, since either PES packets or PSI messages (but not both) are contained in a single PID, it is preferred that there not be duplicate PIDs with a mixture of both PES and PSI filtering enabled. When duplicate PID assignments are created which cause a single message to be stored to more than one memory buffer, the total data throughput of the transport processor is reduced.




The transport processor module includes a packet input buffer that holds all accepted transport packets and presents them in turn to subsequent processing blocks. In one embodiment, the buffer is incorporated into the parser. The maximum processing rate of the selected transport packets is about 81 Mbps. Packets not selected by the PID filters are not stored.





FIG. 3

illustrates a block diagram of another embodiment of a transport processor


300


of the present invention. The transport processor


300


preferably performs descrambling of the transport streams (MPEG transport streams for example). The descrambling may include DES and DVB descrambling as well as descrambling of transport streams encrypted using other encryption methods. The transport processor


300


preferably provides the descrambled transport streams to a video transport and an audio decode processor (alternatively referred to as “ADP”). The transport processor


300


preferably also extracts message data from the input streams and transfers them to an external memory, SDRAM for example. The external memory may be configured as


32


,


64


or other suitable number of circular memory buffers.




A transport stream (MPPEG for example) typically includes fixed-length transport packets. Each transport packet is typically 188 bytes long. The transport processor


300


is, in one embodiment, an MPEG-2 transport stream message/PES parser and demultiplexer. The transport processor


300


preferably is capable of simultaneously receiving and processing three independent serial transport streams, two-inband (alternatively referred to as “IB”) streams and one out-of-band (alternatively referred to as “OOB”) stream for example. The transport processor


300


preferably has transport packet processing throughput of 81 Mbps. In other embodiments, the data transport may be capable of receiving more or less than three independent serial transport streams, and the transport packet processing throughput may be more or less than 81 Mbps.




The transport processor


300


preferably performs filtering of multiple PIDs for message or PES processing (32 for example). In other embodiments, transport processor


300


may filter more or less than 32 PID's, up to 64 PID's for example. In addition, the transport processor


300


preferably includes 32 PSI section filters for processing of MPEG or DVB sections. In other embodiments, the data transport may filter more or less than 32 sections, up to 64 sections for example. The sections may include program specific information or PSI and/or private sections.




The transport processor


300


typically receives the transport streams at different data rates. For example, the out-of-band transport stream is typically received synchronized to a 3.5 MHz clock. The in-band transport streams are typically received synchronized to a clock having a frequency range of, about 1 to about 60 MHz for example. Since the transport processor


300


in the described embodiment operates at a fixed frequency, 40.5 MHz or 81 MHz for example, the three transport streams are received by three input synchronizers


302




a-c.






The three input synchronizers


302




a-c


preferably synchronize incoming transport packets (MPEG-2 for example) to the data transport clock. In other embodiments, the transport processor


300


may operate at different clock frequencies. Each input synchronizer preferably includes a serial-to-parallel converter for converting incoming data into parallel, e.g., byte-wise, format.




From the input synchronizers


302




a-c


, the transport streams preferably are provided to parsers


306




a-c


, which may also be called PID filters. The parsers


306




a-c


preferably compare the PID's of the incoming transport streams with the PID's in the PID table


308


to extract only the data associated with the PID's found in the PID) table


308


. The parsers


306




a-c


preferably also perform error checking, such as continuity error checking, to ensure that the received transport packets do not contain error. In one embodiment, the parsers


306




a-c


assign a unique tag or id to the transport stream,




In one embodiment, the PID table


308


preferably includes 32 PID's. In other embodiments, the PID table


308


may include more or less than 32 PID's, 64 PID's for example. Some of the PID's may be filtered by hardware for increased throughput, while some other PID's may be filtered by programmable firmware for increased flexibility. Entries in the PID table may be arbitrarily assigned to any of the three transport streams. Each of the three transport streams preferably are processed uniquely, even in cases when two or more of the transport streams contain the same PID.




The synchronizers


302




a-c


preferably also provide the synchronized transport streams to a high speed interface module


330


. The high speed interface module


330


preferably also receives parsed transport streams


338


of all three of the transport streams: IB


1


, IB


2


and OOB. The parsed transport streams


338


preferably are provided by the parsers


306




a-c


. In addition, the high-speed interface module


330


preferably receives clocks


340


for all three of the synchronized transport streams.




It is also contemplated that the high speed interface module


330


preferably also receives a channel


1


stream


342


and a channel


2


stream


344


. The channel


1


stream


342


and channel


2


stream


344


are provided by output buffers


332


and


334


as outputs


356


and


358


, respectively. Further, the high speed interface module


330


preferably receives the decrypted parsed transport streams, which have been decrypted by a descrambler


312


and provided as an output.




With all these inputs, the high speed interface module


330


preferably provides an output


354


. The output


354


may include one or more of the synchronized transport streams, the parsed transport streams


338


, the decrypted parsed transport streams, the clocks


340


and the channel


1


and channel


2


streams


342


and


344


. The output


354


of the high speed interface


330


preferably is provided to a port as an output of the system, e.g., integrated chip, of the present invention.




Register variables within the transport processor


300


preferably are stored in registers


303


. The registers


303


preferably are on a register bus of the system.




The parsers


306




a-c


preferably also provide the parsed transport streams to an input buffer


310


. The input buffer


310


preferably is capable of storing up to eight 188-byte transport packets (MPEG-2 for example). In other embodiments, the number of transport packets stored in the input buffer


310


may be more or less than eight for example. The input buffer


310


preferably outputs to a descrambler


312


.




The descrambler


312


preferably performs DES and DVB descrambling. The descrambler


312


may also be used to decrypt transport streams encrypted using other encrypting methods. The descrambler


312


preferably receives key data for decrypting from a key table


314


. Each of the encrypted input transport streams preferably is decrypted using DES, DVB or other descrambling methods. The type of descrambling performed on each transport stream preferably is selectable. For decryption, even and odd keys preferably are provided. The keys typically are 64 bits in size, however, they may be 56 or other number of bits in size in some embodiments.




The output of the descrambler


312


preferably is also provided to the buffers


332


and


334


. In addition to receiving the output of the descrambler


312


, the buffers


332


and


334


preferably are provided with a first audio hold signal


346


and a second audio hold signal


348


, respectively. All three transport streams, IB


1


, IB


2


and OOB transport streams, preferably are included in a decrypted parsed transport stream output of the descrambler


312


. In other embodiments, one or two, but not all three of the transport streams may be included in the output of the descrambler


312


.




The buffers


332


and


334


preferably provide channel


1


and channel


2


outputs


356


and


358


, respectively. The channel


1


and channel


2


outputs may be provided to the video transport or to the audio decode processor or ADP. When decrypted parsed transport streams from the buffers


332


and


334


are received by the video transport and the ADP, the video transport and the ADP determine whether the incoming data is video or audio and process them accordingly.




In one embodiment, the video transport is capable of processing video data from both the output buffers


332


and


334


. The data transport and the video transport are capable of processing the incoming transport streams (MPEG-2 for example) to display multiple video simultaneously in, e.g., picture-in-picture (alternatively referred to as “PIP”) or tile format. The ADP preferably extracts audio data from one or the other of the output channels


1


and


2


,


356


and


358


respectively. In other embodiments, the ADP may extract audio data from both the channels


1


and


2


.




The first audio hold and second audio hold signals preferably are provided by the audio decode processor. The first audio hold signal indicates to the buffer


332


that an audio buffer (e.g., in the ADP) receiving the channel


1


output


356


requests that the output


356


be held until the audio buffer is ready to receive the output


356


again. Similarly, the second audio hold signal indicates to the output buffer


334


that the audio buffer (e.g., in the ADP) requests that the channel


2


output


358


be held. Thus, the first and second audio hold signals preferably safeguard against overflow of the audio buffer.




The input synchronizers


302




a-c


preferably also provide synchronized transport streams to a PCR recovery module


328


for extraction of program clock information (alternatively referred to as “PCRs”). The PCR recovery module


328


preferably extracts the PCRs from the transport streams and outputs as a program clock reference (alternatively referred to as “PCR”) output


336


. Maintaining upstream timing synchronicity is typically important when playing transmitted programs directly, and the availability of a local reference clock generally enables playback synchronicity between video and audio. Thus, the PCR output


336


preferably is provided simultaneously to downstream devices including but not limited to the video transport, the ADP and other synchronous devices. Using the PCR output


336


, the downstream devices may operate in a time synchronous manner with one another, the transport processor


300


and upstream devices that use the program clock, e.g., an upstream transmitter.




The PCR recovery module


328


may extract PCRs from transport streams having different formats including but not limited to MPEG Transport streams and DIRECT transport streams. The PCR output


336


preferably is a serial output signal as to conserve chip area. In other embodiments, the PCR output


336


may be a parallel output signal.




The program clock information or PCRs extracted from the transport stream preferably is loaded into a counter and may be used to lock the system clock of the transport processor


300


to the program clock. In this manner, a timing relationship may be maintained between the transport processor


300


and the upstream transmitter. The PCRs may typically be extracted from the input streams at any time, and sent to the downstream devices either as they are available or only at discontinuities. The discontinuities may exist in the recovered PCRs, for example, when the transport streams include elementary streams generated using different program reference clocks.




In one embodiment decision circuitry preferably is used to send some or all of the PCRs to the downstream devices such as the video transport or the ADP. The ADP typically only requires a PCR when there is a channel change or a PCR discontinuity. The ADP preferably has its own local PCR counter, which typically is re-loaded under these conditions. Thus, for example, only the PCRs loaded into a local PCR counter, which may also be referred to as a system time clock (alternatively referred to as “STC”) counter, are typically provided to the ADP. The PCRs may also be sent to the downstream devices at other intervals.




The PCR output


336


preferably is also provided to an external DAC (alternatively referred to as “PCRDAC’) for digital-to-analog conversion. The digital-to-analog-converted program clock reference output is provided to a voltage control oscillator (alternatively referred to as “VCXO”) to adjust the voltage level to control the VCXO frequency, which in turn adjusts the system clock to lock to the program clock. The data transport may include the PCRDAC in other embodiments. In still other embodiments, the PCRDAC may be included in one of the downstream devices such as the video transport.




In other embodiments, the PCR output


336


may be programmed by a host CPU, so as to create a reference clock locally, instead of, or in addition to, extracting PCRs from the input streams. In this embodiment, the host CPU preferably performs a “direct load” function, in which the host CPU programs serial PCRs that are sent rather than have the PCRs extracted from the input streams. Thus, the mode to transmit the extracted PCRs may be overridden by a mode to transmit user defined PCRs, i.e., programmed PCR output.




The descrambler


312


preferably also provides the decrypted parsed transport streams to a PES parser


318


. In one embodiment, the PES parser


318


preferably parses the decrypted parsed transport streams and provides the PES header and data to the DMA controller


324


for storage in the external memory, e.g., the circular memory buffers implemented in SDRAM. In another embodiment, the output of the PES parser


318


is not stored in the external memory. Instead, the output of the PES parser


318


provides audio and video streams to the video transport and the ADP, respectively. In the described embodiment, the data streams are provided to the in-band 1 channel or the in-band 2 channel, respectively, of the video transport.




The PES parser may perform PES packet extraction for any of the PID channels. In other embodiments, there may be more, 64 for example, or less PID channels. There are 32 (or 64) PID's for all three input transport streams, spanning across all three channels. The packetized elementary stream or PES parser


318


preferably looks at the PES header to determine the length of the PES stream, and thereby figure out the end of the PES stream.




The descrambler


312


preferably also provides the decrypted parsed transport streams to a PSI filter


320


. The PSI filter preferably is a thirteen-byte filter with an associated mask. The PSI filter


320


, in the first part of the section, selectively filters messages out of the data stream of the current PID and provides to the DMA controller


324


to be written to the external memory, e.g., the circular memory buffers. Thus, the PSI filtering extract messages from the transport streams. The PSI filter


320


preferably uses PSI filter data from a PSI table


322


for filtering.




The PSI filter


320


preferably is comprised of 32 section byte-compare filters for example. Each of the 32 section byte-compare filters preferably has a capability to filter 13 bytes as well as a mask per bit feature. In the transport processor


300


, each PID channel may independently select any number of section byte-compare filters, where each filter may be used by multiple PID channels. The data extracted by the PSI filter


320


from the out-of-band and in-band transport streams preferably stored in one of circular memory buffers. For example, in one embodiment, there may be 64 circular memory buffers. The output of the PSI filter


320


preferably is provided to the external memory through the DMA controller


324


over a 64-bit bus. In other embodiments, the bus width may be different from 64, e.g., the bus may be a 128-bit bus.




The circular memory buffers may be distributed between message data from the PSI filter


320


and video/audio data from the PES parser


318


. For example, 64 circular memory buffers in one embodiment may be configured into all PES data memory buffers. In another example, 64 circular memory buffers may be apportioned between the PES data and the PSI data- 62 data buffers and 2 PSI data buffers or any other distribution between the PES data buffers and the PSI data buffers. In addition, the transport processor


300


preferably performs a cyclic redundancy check (alternatively referred to as “CRC”) to verify correctness of the data. The CRC is associated with the PSI filter


320


.




It is contemplated that each of the circular memory buffers may be 1 K, 2 K, 4 K, 8 K, 16 K, 32 K, 64 K or 128 K bytes in size. In other embodiments, the size of the circular memory buffers may have other suitable size. Each of the circular memory buffers preferably is associated with a PID channel. For out-of-band packets, PID channels with duplicate PID's are allowed to output to different circular memory buffers.




The transport processor


300


may also include a special addressing mode for filtering of proprietary messages including but not limited to: message type range, single cast-unit address, network


40


address, multicast


40


address, multicast


24


address, multicast


16


address and independent wild cards for the network


40


and multicast


40


address.





FIG. 4

illustrates a block diagram of an alternate embodiment of the data transport according to the present invention. The transport processor


301


is similar to the transport processor


300


provided previously, except that the transport processor


301


may store complete transport packets in the external memory and playback the stored transport packets when desired.




In addition to the elements of the transport processor


300


, the transport processor


301


of

FIG. 4

includes multiplexers


304




a-c


, a transport recorder


316


and a playback circuit (alternatively referred to as “PVR”)


326


. During normal operation, the multiplexers


304




a-c


select the transport streams from the input synchronizers


302




a-c


, and thus the transport processor


301


operates similarly to the transport processor


300


of FIG.


3


.




The transport recorder


316


may store complete transport packets in the circular memory buffers through the DMA controller


360


. Data associated with one PID is typically stored in a circular memory buffer. When the record channels are used, one or more of the circular memory buffers preferably are configured for taking transport stream inputs. Thus, data associated with the PID's in the transport stream may be placed into a single circular memory buffer. In one embodiment, a single circular memory buffer may contain data associated with up to 64 PID's. In other embodiments, a single circular memory buffer may contain data associated with more or less than 64 PID's.




The playback circuit or PVR


326


may operate in either MPEG mode or DIRECTV mode for example. The PVR preferably performs DMA function of transferring data from the external memory, e.g., the circular memory buffers in SDRAM, into the transport processor


301


. During the playback mode, the PVR


326


receives the stored transport packets from the external memory and provides to the buffers


1


and


2




332


and


334


, the high speed interface module


330


, the PCR recovery module


328


and the multiplexers


304




a-c


. During this mode, the multiplexers


304




a-c


provide the stored transport packets to the parsers


306




a-c


. Both the transport recorder


316


and the PVR


326


preferably have two channels: channel


1


and channel


2


. Either channel may be used to store and playback the transport packets.




Unlike in the normal operation, where PCRs preferably are extracted from the input transport streams, during playback, the PCRs preferably are derived from program time stamps (alternatively referred to as “PTS”) of the playback stream. This is due to the fact that the packets with PCR information may not have been recorded by the transport recorder


316


. Further, even if such packets with PCR information have been recorded, the playback stream is not necessarily played back at a regular rate so that the PCRs may not arrive at proper intervals to be used in a manner that they are designed to be used. For the playback operation, since the PCRs are still needed decoding video and audio, a virtual PCR may be constructed by looking at the PTS information from the input streams. This user defined PCR may then be delivered to the video decoder by utilizing the serial PCR “direct load” capability, which has been discussed earlier.




Unlike directly transmitted data, in transport steams for example, which is synchronous because of the PCRs, the playback data is available from memory, potentially at a much higher rate than that required for the actual bit stream. This may cause an overflow of the video buffers. In one embodiment, during playback, two methods are available to prevent this overflow. These two methods preferably allow the video decoder to receive data only as they are needed.




The first method uses a throttling mechanism, allowing the playback stream to be sent at a data rate not faster than the maximum data rate, which may be programmed by the host CPU. This provides for a controlled bit rate and byte interval commensurate with the processing capabilities of the video decoder, which typically have a limit to input data rate. Thus, the PVR


326


in this embodiment preferably includes throttle control for controlling the maximum rate at which the recorded transport streams are played back. In this embodiment, the rate of playback may vary between about 10 to about 81 Mbps with a normal rate of playback of about 27 Mbps for example. Other embodiments may have different playback rates.




The second method uses a hold mechanism, which halts the data output. The hold mechanism preferably is activated when the video decoder faces imminent overflow conditions. The PVR


326


preferably receives video pause signals


1


,


2




350


as well as an audio pause signal


352


. The video pause signals


1


,


2


preferably indicate to the PVR


326


that a video buffer for video for channel


1


or channel


2


, respectively, is getting too full and not ready to receive further input and that the PVR


326


should pause before providing additional video data. The video buffer may alternatively referred to as a coded data buffer or a compressed data buffer. The video buffer sometimes is alternatively referred to as a video buffer verifier, VBV buffer or simply a VBV. In one embodiment, there actually are two video buffers for video for PIP display for example. Thus, video pause signals


1


and


2


preferably are provided by the video decoder to pause the two video buffers independently of each other. Similarly, the audio pause signal


352


preferably is provided by the ADP to the PVR


326


to indicate that an audio buffer is getting full and is not ready to receive further input and that the PVR


326


should pause before providing additional audio data.




In other embodiments, only one of the two methods, namely the throttle control mechanism and the hold mechanism, may be implemented to prevent overflow. In still other embodiments, other methods may be used to prevent overflow in the video and audio buffers.




During the playback mode, the PVR


326


may playback the packetized elementary streams or PES extracted by the PES parser


318


and stored in the external memory, i.e., circular memory buffer, rather than the transport packets. In this case, the PES may not be parsed in the parsers


306




a-c


. The PES stream preferably is provided to the high speed interface module


330


to be outputted as the output


354


and to the buffers


1


and


2




332


and


334


to be outputted as the outputs


356


and


358


, respectively.





FIGS. 5A & 5B

illustrate one method for processing input or information streams and generally designated


500


. More specifically,

FIGS. 5A & 5B

illustrate one embodiment for processing one or more data packets using a transport processor similar to those provided previously. In accordance with one embodiment of the present invention, the transport processor is adapted to accept input from more than one input source or band at a time as illustrated by block


510


. It is contemplated that there are multiple programs or streams within each band or input, where each program or stream is identified by PID. In one embodiment, the PID parser of the transport processor compares at least each input packet's PID with a stored table of PIDs to be accepted as illustrated by diamond


512


. More specifically, PID parser compares the input packet's PID with a stored table of PIDs and bands. If the input packet's PID doesn't match one of such stored table of bands and PIDs, the input packet is rejected as illustrated by block


514


, and a next packet (if available) is received. It the PID matches, the input packet is passed to one or more other processing modules or blocks as illustrated by block


518


. Examples of such processing includes one or more of, but is not limited to, PID filtering, encrypting, decrypting and packet buffering




In one embodiment, the parser assigns a second identifier, a unique tag or id as illustrated by block


516


. These accepted packets are identified internally by such a unique tag, which contains information about the packet so other processing modules will know how, and with what parameters, to process each one. It is contemplated that among all the input bands, there may be packets with the same PID. The unique tags provide for the unique identification of each packet. The PID within the packets will no longer be necessary, or adequate, as identification. It is further contemplated that the PID table of accepted packets may have duplicate entries. These entries are identified by the channel numbers, the numeric value of each virtual channel. The unique tag provides a vector of matches that will accompany each accepted packet.




The subject method further determines if the data packets require processing. More specifically, the transport processor uses the tag to determine if processing is needed as illustrated by diamond


520


. In one embodiment, the data packets are passed to the processing blocks in a sequential manner for example. If no processing is needed, the processor determines if this is the last processing block as illustrated by diamond


522


. If this is the last block, the method may end such processing on that data packet, passing the data packet to a final destination (video, audio or memory buffers for example). In one embodiment, if this is the last data packet, the processing may terminate. If this, however, is not the last block, the method may communicate the tag to a subsequent processing block as illustrated by block


518


.




If processing is needed, the method determines what type of processing is needed as illustrated by block


524


. The transport processor then performs the determined type of processing as illustrated by block


526


. In one embodiment, the method processes the data packets in a repetitive manner. However, it is also contemplated that the method determines if there is any other information or data packets to be processed and terminates the method if there is no other information to be processed.




One example of processing includes decrypting a data packet using one or more decryptors. In one embodiment, such decryptor is a multi-standard decryption module, supporting the DVB standard, and NIST DES standard for example with many termination modes. The module is preprogrammed to process each PID channel a specific way. When a data packet arrives for processing, the tag is examined to determine what PID channel the packet belongs. The data packet is decrypted with the preprogrammed format. No control processor intervention is necessary.




It is contemplated that some of these packets may contain messages, in MPEG PSI format for example. There may be many messages within each PID channel, and it is contemplated that many messages may sent to different buffer queues for different users. To accomplish this, duplicate PIDs (duplicate entries in the PID table for example) may be used, so a packet may be associated with more than one PID channel. Each channel, at the PSI filter, is preprogrammed with a different match filter and buffer queue address. The PSI filter, after examining the tag for the vector of matches, will test the messages with the match filter assigned to each buffer. If a match is found, the message will be deposited into the buffer. If no match is found, the message is discarded. A message may be deposited into multiple buffers, if multiple matches are found.




Many modifications and variations of the present invention are possible in light of the above teachings. Thus, it is to be understood that, within the scope of the appended claims, the invention may be practiced otherwise than as described hereinabove.



Claims
  • 1. A method for processing information, comprising:(a) determining if a first identifier associated with the information is stored in an identifier table; (b) extracting data associated with said first identifier if said first identifier is stored in said identifier table; (c) assigning a second identifier to the information; (d) determining a type of processing that is required using said second identifier; and (e) performing said type of processing on the information.
  • 2. The method of claim 1, further comprising repeating steps (a) through (e) in a repetitive manner.
  • 3. The method of claim 1, further comprising:(f) determining if there is any other information to be processed; and (g) terminating the method if there is no other information to be processed.
  • 4. The method of claim 1, further comprising receiving the information.
  • 5. The method of claim 4, further comprising receiving the information from at least one input band.
  • 6. The method of claim 1, wherein the information comprises at least one packet of data.
  • 7. The method of claim 1, wherein said first identifier is a program identifier.
  • 8. The method of claim 1, wherein said second identifier is a unique tag.
  • 9. The method of claim 1, further comprising indicating what processing is required using only said second identifier.
  • 10. The method of claim 1, wherein said type of processing comprises at least one of at least encrypting, decrypting, filtering or buffering.
  • 11. A method for processing at least one data packet using a data processor, comprising:(a) receiving the at least one data packet from at least one input band; (b) determining if a packet identifier associated with the data packet is stored in an identifier table; (c) extracting information associated with said packet identifier if said packet identifier is stored in said identifier table; (d) assigning a unique tag to the data packet; (e) communicating said unique tag to at least one processing block; (f) determining if processing of the data packet is required using said unique tag; (g) determining a type of processing that is needed based only on said unique tag; and (h) performing said type of processing.
  • 12. The method of claim 11, further comprising repeating steps (a) through (h) in a repetitive manner.
  • 13. The method of claim 11, further comprising:(i) determining if there is any more data packets to be processed; and (j) terminating the method if there are no more data packets to be processed.
  • 14. The method of claim 11, wherein said type of processing comprises at least one of at least encrypting, decrypting, filtering or buffering.
  • 15. The method of claim 1, comprising performing error checking on said information.
  • 16. The method of claim 11, comprising performing error checking on the at least one data packet.
  • 17. A method for processing at least one data packet using a data processor, comprising:(a) receiving at least two transport streams; and (b) processing the at least one data packet from said two transport streams, comprising: (1) determining if a packet identifier associated with the at least one data packet is acceptable; (2) assigning a tag to the at least one data packet; (3) communicating said tag to at least one processing block; (4) determining if processing of the at least one data packet is required using said tag; (5) determining a type of processing that is required using said tag; and (6) performing said type of processing.
  • 18. The method of claim 17 wherein said two transport streams comprise independent serial transport streams.
  • 19. The method of claim 17 wherein said two transport streams comprise at least one in-band and one out-of-band stream.
CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part of, and claims benefit of and priority from, U.S. patent application Ser. No. 09/969,212 Filed Oct. 2, 2001, titled “Single Chip Set-Top Box System”, which claims benefit of and priority from Provisional Application No. 60/266,753 Filed Feb. 5, 2001, titled “Single Chip Set-Top Box System” the complete subject matter of each of which is incorporated herein by reference in its entirety. This application is also a continuation-in-part of, and claims benefit of and priority from, U.S. patent application Ser. No. 09/640,869 Filed Aug. 18, 2000, titled “Video and Graphics System with A Data Transport Processor” now U.S. Pat. No. 6,538,656 issued Mar. 25, 2003, which is a continuation-in-part of, and claims benefit and priority from, U.S. patent application Ser. No. 09/437,208 Filed Nov. 9, 1999, titled “Graphics Display System” now U.S. Pat. No. 6,570,579 issued May 27, 2003, and claims the benefit of and priority from Provisional Application No. 60/30,866 Filed Dec. 14, 1999, titled “Graphics Chip Architecture” the complete subject matter of each of which is incorporated herein by reference in its entirety. This application is continuation-in-part of, and claims benefit of and priority from, U.S. patent application Ser. No. 09/641,374 Filed Aug. 18, 2000, titled “Video, Audio and Graphics Decode, Composite and Display System”, which is a continuation-in-part of, and claims benefit of and priority from, U.S. patent application Ser. No. 09/437,208 Filed Nov. 9, 1999, titled “Graphics Display System” now U.S. Pat. No. 6,570,579 issued May 27, 2003, and claims the benefit and priority from Provisional Application No. 60/30,866 Filed Dec. 14, 1999 titled “Graphics Chip Architecture” the complete subject matter of each of which is incorporated herein by reference in its entirety.

US Referenced Citations (205)
Number Name Date Kind
4020332 Crochiere et al. Apr 1977 A
4367466 Takeda et al. Jan 1983 A
4532547 Bennett Jul 1985 A
4679040 Yan Jul 1987 A
4688033 Carini et al. Aug 1987 A
4959718 Bennett Sep 1990 A
5043714 Perlman Aug 1991 A
5097257 Clough et al. Mar 1992 A
5142273 Wobermin Aug 1992 A
5148417 Wong et al. Sep 1992 A
5155816 Kohn Oct 1992 A
5258747 Oda et al. Nov 1993 A
5262854 Ng Nov 1993 A
5307177 Shibata et al. Apr 1994 A
5371877 Drako et al. Dec 1994 A
5384912 Ogrinc et al. Jan 1995 A
5396567 Jass Mar 1995 A
5398211 Willenz et al. Mar 1995 A
5418535 Masucci et al. May 1995 A
5420866 Wasilewski May 1995 A
5422858 Mizukami et al. Jun 1995 A
5432769 Honjo Jul 1995 A
5432900 Rhodes et al. Jul 1995 A
5434683 Sekine et al. Jul 1995 A
5434957 Moller Jul 1995 A
5467144 Saeger et al. Nov 1995 A
5469223 Kimura Nov 1995 A
5471411 Adams et al. Nov 1995 A
5488385 Singhal et al. Jan 1996 A
5515077 Tateyama May 1996 A
5526054 Greenfield et al. Jun 1996 A
5533182 Bates et al. Jul 1996 A
5539891 Childers et al. Jul 1996 A
5546103 Rhodes et al. Aug 1996 A
5550594 Cooper et al. Aug 1996 A
5570296 Heyl et al. Oct 1996 A
5577187 Mariani Nov 1996 A
5592601 Kelley et al. Jan 1997 A
5598525 Nally et al. Jan 1997 A
5598545 Childers et al. Jan 1997 A
5600364 Hendricks et al. Feb 1997 A
5604514 Hancock Feb 1997 A
5610983 Stewart Mar 1997 A
5614952 Boyce et al. Mar 1997 A
5615376 Ranganathan Mar 1997 A
5619270 Demmer Apr 1997 A
5619337 Naimpally Apr 1997 A
5621478 Demmer Apr 1997 A
5621869 Drews Apr 1997 A
5621906 O'Neill et al. Apr 1997 A
5623311 Phillips et al. Apr 1997 A
5625611 Yokota et al. Apr 1997 A
5627836 Conoscenti et al. May 1997 A
5635985 Boyce et al. Jun 1997 A
5638499 O'Connor et al. Jun 1997 A
5638501 Gough et al. Jun 1997 A
5640543 Farrell et al. Jun 1997 A
5664162 Dye Sep 1997 A
5694143 Fielder et al. Dec 1997 A
5696527 King et al. Dec 1997 A
5706482 Matsushima et al. Jan 1998 A
5708764 Borrel et al. Jan 1998 A
5708961 Hylton et al. Jan 1998 A
5719593 De Lange Feb 1998 A
5734589 Kostreski et al. Mar 1998 A
5742779 Steele et al. Apr 1998 A
5745095 Parchem et al. Apr 1998 A
5751979 McCrory May 1998 A
5758177 Gulick et al. May 1998 A
5761516 Rostoker et al. Jun 1998 A
5764238 Lum et al. Jun 1998 A
5765010 Chung et al. Jun 1998 A
5790136 Hoffert et al. Aug 1998 A
5790795 Hough Aug 1998 A
5790842 Charles et al. Aug 1998 A
5793384 Okitsu Aug 1998 A
5793445 Lum et al. Aug 1998 A
5802579 Crary Sep 1998 A
5815137 Weatherford et al. Sep 1998 A
5828383 May et al. Oct 1998 A
5831615 Drews et al. Nov 1998 A
5838678 Davis et al. Nov 1998 A
5844608 Yu et al. Dec 1998 A
5854761 Patel et al. Dec 1998 A
5864345 Wickstrom et al. Jan 1999 A
5867166 Myhrvold et al. Feb 1999 A
5874967 West et al. Feb 1999 A
5889949 Charles Mar 1999 A
5894300 Takizawa Apr 1999 A
5896136 Augustine et al. Apr 1999 A
5903281 Chen et al. May 1999 A
5907295 Lin May 1999 A
5907635 Numata May 1999 A
5914725 MacInnis et al. Jun 1999 A
5914728 Yamagishi et al. Jun 1999 A
5920572 Washington et al. Jul 1999 A
5923316 Kitamura et al. Jul 1999 A
5923385 Mills et al. Jul 1999 A
5926647 Adams et al. Jul 1999 A
5940089 Dilliplane et al. Aug 1999 A
5948082 Ichikawa Sep 1999 A
5949432 Gough et al. Sep 1999 A
5949439 Ben-Yoseph et al. Sep 1999 A
5951644 Lambrecht et al. Sep 1999 A
5953691 Mills Sep 1999 A
5956041 Koyamada et al. Sep 1999 A
5959626 Garrison et al. Sep 1999 A
5959637 Mills et al. Sep 1999 A
5961603 Kunkel et al. Oct 1999 A
5963201 McGreggor et al. Oct 1999 A
5963262 Ke et al. Oct 1999 A
5966385 Fujii et al. Oct 1999 A
5977933 Wicher et al. Nov 1999 A
5982305 Taylor Nov 1999 A
5982425 Allen et al. Nov 1999 A
5982459 Fandrianto et al. Nov 1999 A
5987555 Alzien et al. Nov 1999 A
6002411 Dye Dec 1999 A
6005546 Keene Dec 1999 A
6006286 Baker et al. Dec 1999 A
6006303 Barnaby et al. Dec 1999 A
6018803 Kardach Jan 2000 A
6023302 MacInnis et al. Feb 2000 A
6028583 Hamburg Feb 2000 A
6038031 Murphy Mar 2000 A
6046740 LaRoche et al. Apr 2000 A
6061094 Maietta May 2000 A
6061402 Boyce et al. May 2000 A
6064676 Slattery et al. May 2000 A
6067322 Wang May 2000 A
6072771 Anderson et al. Jun 2000 A
6078305 Mizutani Jun 2000 A
6078594 Anderson et al. Jun 2000 A
6088355 Mills et al. Jul 2000 A
6094226 Ke et al. Jul 2000 A
6098046 Cooper et al. Aug 2000 A
6100826 Jeon et al. Aug 2000 A
6100899 Ameline et al. Aug 2000 A
6105048 He Aug 2000 A
6111611 Ozkan et al. Aug 2000 A
6111896 Slattery et al. Aug 2000 A
6115074 Ozkan et al. Sep 2000 A
6115422 Anderson et al. Sep 2000 A
6121978 Miler Sep 2000 A
6133901 Law Oct 2000 A
6134378 Abe et al. Oct 2000 A
6144392 Rogers Nov 2000 A
6151030 DeLeeuw et al. Nov 2000 A
6151074 Werner Nov 2000 A
6151078 Yoneda et al. Nov 2000 A
6157415 Glen Dec 2000 A
6157978 Ng et al. Dec 2000 A
6160989 Hendricks et al. Dec 2000 A
6169843 Lenihan et al. Jan 2001 B1
6178486 Gill et al. Jan 2001 B1
6184908 Chan et al. Feb 2001 B1
6189064 MacInnis et al. Feb 2001 B1
6189073 Pawlowski Feb 2001 B1
6199131 Melo et al. Mar 2001 B1
6204859 Jouppi et al. Mar 2001 B1
6205260 Crinon et al. Mar 2001 B1
6208354 Porter Mar 2001 B1
6208671 Paulos et al. Mar 2001 B1
6212590 Melo et al. Apr 2001 B1
6215703 Bogin et al. Apr 2001 B1
6226794 Anderson, Jr. et al. May 2001 B1
6229550 Gloudemans et al. May 2001 B1
6236727 Ciacelli et al. May 2001 B1
6239810 Van Hook et al. May 2001 B1
6240553 Son et al. May 2001 B1
6252608 Snyder et al. Jun 2001 B1
6263019 Ryan Jul 2001 B1
6263023 Ngai Jul 2001 B1
6263396 Cottle et al. Jul 2001 B1
6269107 Jong Jul 2001 B1
6275501 Anderson et al. Aug 2001 B1
6281873 Oakley Aug 2001 B1
6286103 Maillard et al. Sep 2001 B1
6311204 Mills Oct 2001 B1
6320619 Jiang Nov 2001 B1
6326963 Meehan Dec 2001 B1
6326984 Chow et al. Dec 2001 B1
6327000 Auld et al. Dec 2001 B1
6335746 Enokida et al. Jan 2002 B1
6337703 Konar et al. Jan 2002 B1
6339434 West et al. Jan 2002 B1
6351471 Robinett et al. Feb 2002 B1
6351474 Robinett et al. Feb 2002 B1
6353460 Sokawa et al. Mar 2002 B1
6353930 Shimoji et al. Mar 2002 B1
6362827 Ohba Mar 2002 B1
6369855 Chauvel et al. Apr 2002 B1
6374244 Shibata Apr 2002 B1
6380945 MacInnis et al. Apr 2002 B1
6384840 Frank et al. May 2002 B1
6408436 deHaas Jun 2002 B1
6411333 Auld et al. Jun 2002 B1
6421460 Hamburg Jul 2002 B1
6426755 Deering Jul 2002 B1
6434319 Wine Aug 2002 B1
6459456 Oh Oct 2002 B1
6466624 Fogg Oct 2002 B1
6467093 Inove et al. Oct 2002 B1
6496186 Deering Dec 2002 B1
6496862 Akatsu et al. Dec 2002 B1
Foreign Referenced Citations (11)
Number Date Country
0656708 Mar 1993 EP
0746116 Dec 1996 EP
0 752 695 Jan 1997 EP
0840276 May 1998 EP
0840277 May 1998 EP
0 840 505 May 1998 EP
2287627 May 1995 GB
2000196586 Jul 2000 JP
WO 9410641 May 1994 WO
WO 0028518 May 2000 WO
0049825 Aug 2000 WO
Non-Patent Literature Citations (11)
Entry
Sun, Huifang et al., “A New Approach for Memory Efficient ATV Decoding,” 1977 IEEE International Conference on Consumer Electronics, pp. 174-175, Los Angeles, 1997.
Bao, Jay et al., “HDTV Down-Conversion Decoder,” IEEE Transactions on Consumer Electronics, pp. 402-410, vol. 42, No. 3, Aug. 1996.
Mokry, Robert et al., “Minimal Error Drift in Frequency Scalability for Motion-Compensated DCT Coding,” IEEE Transactions on Circuits and Systems for Video Technology, pp. 392-406, vol. 4, No. 4, Aug. 1994.
Vetro, Anthony et al., “Minimum Drift Architectures for 3-Layer Scalable DTV Decoding,” IEEE Transactions on Consumer Electronics, pp. 527-536, vol. 44, No. 3, Aug. 1998.
Lee, Dong-Ho et al., “HDTV Video Decoder Which Can Be Implemented With Low Complexity,” IEEE International Conference on Consumer Electronics, pp. 6-7, 1994.
Sun, Huifang, “Hierarchical Decoder For MPEG Compressed Video Data,” IEEE Transactions on Consumer Electronics, pp. 559-564, vol. 39, No. 3, Aug. 1993.
Yu, Haoping et al., “Block-Based Image Processor for Memory Efficient MPEG Video Decoding,” 1999 IEEE International Conference on Consumer Electronics, pp. 114-115, 1999.
Blinn, Jim; Jim Blinn's Corner Dirty Pixels; publication; 1998; pp. 179-190; Chapter Sixteen; Morgan Kaufmann Publishers, Inc.; San Francisco, CA, U.S.A.
Foley, James D. et al.; Computer Graphics: Principles and Practice; publication, 1996, 1990; The Systems Programming Series, 4 pages, Second Edition in C; Addison-Wesley Publishing Company; U.S.A.
Motorola, Inc., MC92100 “Scorpion” Graphics Display Generator, SDRAM Controller, and Digital Video Encoder, 1997, 6 pages.
Power TV, Inc., Eagle ™. Graphics/Audio Media Compositor Data Sheeet, Version 1.7, Feb. 27, 1997, 63 pages.
Provisional Applications (3)
Number Date Country
60/266753 Feb 2001 US
60/170866 Dec 1999 US
60/170866 US
Continuations (4)
Number Date Country
Parent 09/969212 Oct 2001 US
Child 10/068579 US
Parent 10/068579 US
Child 10/068579 US
Parent 09/640869 Aug 2000 US
Child 10/068579 US
Parent 09/641374 Aug 2000 US
Child 10/068579 US
Continuation in Parts (3)
Number Date Country
Parent 09/437208 Nov 1999 US
Child 09/640869 US
Parent 10/068579 US
Child 09/640869 US
Parent 09/437208 US
Child 09/641374 US