# Patent

## Title
System and method for transport PID broadcast scheme

## Abstract

A system and method for processing information may include broadcasting information, which indicates program content for each of a plurality of channels communicated via a plurality of transport streams, to a plurality of processors. The plurality of processors identify which of the program content is associated with a particular one of the plurality of channels in each of the plurality of transport streams. The broadcasted information may be stored in a table in memory. The broadcasted information may include a packet identifier (PID) and/or a processor identifier associated with the PID that identifies at least one of the plurality of processors, such as parsers. The information may be stored in a table in memory prior to the broadcasting. The table may be indexed according to the plurality of channels.

## Background
RELATED APPLICATIONS
This application makes reference to U.S. patent application Ser. No. 11/332,960, filed on even date herewith, which is hereby incorporated herein by reference in its entirety.
FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT
Not Applicable
MICROFICHE/COPYRIGHT REFERENCE
Not Applicable
FIELD OF THE INVENTION
Certain embodiments of the invention relate generally to processing of packetized data. More specifically, certain embodiments of the invention relate to a system and method for a transport packet identifier (PID) transport scheme.
BACKGROUND OF THE INVENTION
As the speed of Internet traffic increases, on-demand television and video are becoming closer and closer to reality. The introduction of broadband networks, headend and terminal devices such as set-top boxes, and media such as DVD disks recorded with digitally compressed audio, video and data signals, for example, which utilize motion Picture Expert Group (MPEG) compression standards, may provide sound and picture quality that is virtually indistinguishable from the original material. One of the most popular MPEG standards is MPEG-2, which provides the necessary protocols and infrastructure that may be used for delivering digital television or DVD contents with compressed audio, video and data signals. The MPEG-2 compression scheme compresses and packetizes the video content into MPEG-2 packets. A detailed description of the MPEG-2 standard is published as ISO/IEC Standard 13818.
In addition to the increasing speed of Internet transactions, continued advancement of motion picture content compression standards permit high quality picture and sound while significantly reducing the amount of data that must be transmitted. A compression standard for television and video signals was developed by the Moving Picture Experts Group (MPEG), and is known as MPEG-2. An encoded bitstream, such as an MPEG-2 bitstream, comprises different types of data. For example, an MPEG-2 bitstream may comprise audio information, video information, and additional data. A transmitted MPEG-2 bitstream may be received by a set-top box (STB), for example, and the STB may further process the received bitstream. However, since the received bitstream comprises multiple types of data, the STB may utilize multiple tuners. Using multiple tuners to parse the received bitstream is time consuming and may result in processing delays.
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.
BRIEF SUMMARY OF THE INVENTION
A system and/or method for a transport packet identifier (PID) transport scheme, substantially as shown in and/or described in connection with at least one of the figures, as set forth more completely in the claims.
Various advantages, aspects 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 drawings.



BRIEF DESCRIPTION OF SEVERAL VIEWS OF THE DRAWINGS
FIG. 1A is a block diagram of an exemplary system for encoding an MPEG stream, which may be utilized in accordance with an embodiment of the invention.
FIG. 1B is a block diagram of an exemplary packet in an MPEG stream.
FIG. 1C is a diagram of the structure for an exemplary MPEG transport stream, in accordance with an embodiment of the invention.
FIG. 2 is a block diagram of an exemplary MPEG encoding system that may be utilized in accordance with an embodiment of the invention.
FIG. 3 is a block diagram of an exemplary MPEG decoding system that may be utilized in accordance with an embodiment of the invention.
FIG. 4 is an exemplary packet identification (PID) table, in accordance with an embodiment of the invention.
FIG. 5 is a block diagram illustrating an exemplary system for parsing a transport stream utilizing a PID table, which may be used in connection with an embodiment of the invention.
FIG. 6 is a block diagram illustrating an exemplary system for parsing a transport stream utilizing a PID table, in accordance with an embodiment of the invention.
FIG. 7 is a block diagram of a system for processing information utilizing a PID table, in accordance with an embodiment of the invention.
FIG. 8 is a flow diagram illustrating exemplary steps for processing information, in accordance with an embodiment of the invention.



DETAILED DESCRIPTION OF THE INVENTION
Certain embodiments of the invention may be found in a method and system for a transport packet identifier (PID) transport scheme. A set-top box (STB) or other bitstream processing circuitry may utilize a plurality of parsers that parse the received bitstream, such as an MPEG-2 bitstream. Each parser may access PID information, which may be stored in memory, to determine whether to accept or reject a received packet. Access to the memory table may be achieved via arbitration between all parsers. In one embodiment of the invention, PID information may be stored in a table in memory and the stored PID information may be simultaneously communicated or broadcasted to all parsers. In this regard, each parser obtains access to the PID information without any delay in accessing the PID information.
Aspects of the invention may comprise broadcasting information, which indicates program content for each of a plurality of channels communicated via a plurality of transport streams, to a plurality of processors. The processors may identify which of the program content is associated with a particular one of the plurality of channels in each of the plurality of transport streams. The broadcasted information may comprise a packet identifier (PID) and/or a processor identifier associated with the PID. The processor identifier may identify at least one of the plurality of processors. The information may be stored in a table in memory prior to the broadcasting, and the table may be indexed according to the plurality of channels. At least a portion of the program content associated with the particular one of the plurality of channels may be selected for processing, if a channel associated with at least a portion of the broadcasted information matches the particular one of the plurality of channels.
FIG. 1A is a block diagram of an exemplary system for encoding an MPEG stream, which may be utilized in accordance with an embodiment of the invention. Referring to FIG. 1A, the exemplary system 101a for encoding an MPEG bitstream may comprise an audio encoder 104a, a video encoder 106a, and packetizers 108a, 110a. The audio encoder 104a may comprise suitable circuitry, logic, and/or code and may be enabled to encode audio information 100a. The video encoder 106a may comprise suitable circuitry, logic, and/or code and may be enabled to encode video information 102a. The packetizers 108a and 110a may comprise suitable circuitry, logic, and/or code and may be adapted to arrange encoded audio and video information, respectively, into packets for transmission.
In operation, the audio encoder 104a may encode the audio information 100a to generate an audio elementary stream (ES). The packetizer 108a may then packetize the audio ES. Similarly, the video encoder 106a may encode the video information 102a to generate a video ES. The packetizer 110a may then packetize the video ES. In MPEG-2, the audio ES and video ES may encapsulate additional information, such as decoding and presentation timestamps, to generate packetized elementary streams (PES). The PES may include a header that may precede one or more payload bytes. The header may include information pertaining to the encoding process required by an MPEG decoder to decompress and decode a received ES. Each individual ES may have a corresponding PES and any encoded audio and video information may still reside in separate PESs. Notably, the PES may be viewed primarily as a logical construct and may not be utilized for data interchange, transport, and interoperability. Notwithstanding, the PES may be utilized for conversion between two types of system streams, namely, TS and program stream (PS).
The audio and video PES may be combined with packets containing additional data 112a and program specific information (PSI) 114a. The PSI 114a may comprise tables, which may be necessary for de-multiplexing the TS 116a in a receiver. All these streams may be encoded and multiplexed into an MPEG transport stream (TS) 116a for transmission. To maintain synchronization and timing, null packets may also be inserted to fill the intervals between information-bearing packets. Timing information for an associated program may be carried by specific packets. The TS 116a may be modulated for transmission via local television digital broadcast, for example. The TS 116a may be de-multiplexed, and compressed video and audio streams may be decoded in a set-top box (STB) and viewed on a TV. The STB may utilize one or more parsers to parse and demultiplex the received TS 116a. In this regard, the parsers may utilize PID information, which may be stored in a table in memory, to determine whether to accept or reject a particular packet from the received TS 116a. TS packets may have a fixed length of 188 bytes, which may include a header having a minimum size of 4 bytes and a maximum payload of 184 bytes.
In existing MPEG compliant systems, audio/video streams may be carried using MPEG-2 transport packets. Multiple streams may be differentiated using a PID contained in a packet header called the transport packet header. Transport packets from various streams may be multiplexed and transmitted on the same physical medium. Exemplary media may include, copper, coaxial cable, wireless, optical and any combination thereof. On the receiver side transport packets may be de-multiplexed and data may be separated for each stream. For example, audio packets may be extracted from the transport stream and separated from video packets utilizing PID information.
Transport packets may include three fields, namely a 4-byte header, an optional adaptation field and a packet payload. The packet payload may not be altered by multiplexing or transmitting equipment, except during processing which may include data encryption and decryption. Encryption may be performed once within a typical MPEG processing system. Notwithstanding, some fields of adaptation field may be changed by multiplexing and transmission equipment. Typically, packet order within a PID channel may be maintained from an MPEG encoder to an MPEG receiver but packet order among multiple PID streams may not guaranteed by during transmission by any transmitting equipment. In cases where co-relation of packets from different PIDs may be required, packet position in a stream cannot be utilized since packet order among multiple PID channels may be altered.
FIG. 1B is a block diagram of an exemplary packet in an MPEG stream. Referring to FIG. 1B, the MPEG-2 packet 101b may comprise a header 102b and a payload 104b. The header 102b may comprise 32 bits and the payload 104b may comprise 184 bytes. In this regard, an MPEG-2 packet 101b may comprise 1504 bits.
MPEG-2 packets, such as packet 101b, may be received within a STB as a continuous stream of serial data. Recovery of the original video and/or audio content may require parsing the continuous stream of serial data into the individual constituent packets. Given the starting point of an MPEG-2 packet, a transport stream receiver may be enabled to parse the continuous stream into the individual constituent data packets by counting the number of bits received since the MPEG-2 packets are of a known uniform length of 1504 bits. The starting point of a packet, such as packet 101b, may be determined by calculation and detection of a predetermined eight-bit checksum, for example. Detection of the predetermined checksum may be indicative of the beginning of the MPEG-2 packet 101b. In addition, detection of the predetermined checksum may be used to establish MPEG synchronization and lock alignment. Once alignment has been locked, the absence of the predetermined checksum at expected locations, such as every 1504 bits, may be indicative of bit errors.
FIG. 1C is a diagram of the structure for an exemplary MPEG transport stream, in accordance with an embodiment of the invention. Referring to FIG. 1C, the transport stream (TS) 100c may comprise a plurality of TS packets. Each TS packet may comprise a header 102 and payload 104, which may total 188 bytes. The TS packet header 102 may include the following fields: synchronization (SYNC) 106, transport error indicator 108, payload unit start indicator 110, transport priority 112, packet identifier (PID) 114, transport scrambling control 116, adaptation field control 118, continuity counter 120, and adaptation field 122. The adaptation field 122 may further comprise the following fields: adaptation field length 132, discontinuity indicator 134, random access indicator 136, ES priority 138, flags 140, optional fields 142, and stuffing bytes 144. The optional fields 142 may further comprise the following: program clock reference (PCR) 146, OPCR 148, a splice countdown 150, private data length 152, adaptation field extension length 154, flags 156, and optional field 158. The payload 104 may be comprise a plurality of PES, such as PES1 124, PES2 126, . . . , PESn 130.
The TS 100c may comprise variable length PESs that may be divided into fixed length packets for use by a transmission system. In this regard, the information added by the TS 100c may be additional to the information contained in the headers of the PESs. SYNC byte 106 may be used to delineate the beginning and ending of TS packet 100c. The transport error indicator 108 may indicate when there is an error in a packet or block. This may be particularly useful for error block detection.
The packet identifier (PID) 114 may be a unique identifier that may identify every video and audio stream. Additionally, each PSI table may have a unique PID 114. The PID 114 may be utilized for identifying a channel and may include any information required for locating, identifying and reconstructing programs. The PID may identify packets belonging to the same data stream, which facilitates reconstruction of the data stream within a STB, for example. Some PIDs may be reserved for specific uses by the MPEG protocol. PID values may be stored in PSI tables, for example, within the bitstream receiver, such as the STB. In order to ensure that all the audio, video and data for a program are properly decoded, it may be critical to ensure that the PIDs are correctly assigned and that the PSI tables correspond with their associated audio and video streams.
PCR 146 may comprise 42 bits, which may represent 27 MHz clock ticks, and 33 bits of PCR base may represent 90 kHz ticks. The bits in PCR 146 may provide program clock recovery information that may be utilized for synchronization. PCR 146 may be used to provide a clock recovery mechanism for MPEG programs. A 27 MHz system time clock (STC) signal may typically be used for encoding MPEG signals. Decoding of the signal requires a clock that may be locked to the encoder's STC of 27 MHz. Notably, the PCR 146 may be utilized by the decoder to regenerate a local clock signal that is locked to the STC. Whenever a program is placed in the transport stream, a 27 MHz time stamp may be inserted into the PCR 146. When the signal is received by a decoder, the decoder may compare the value in the PCR 146 with the frequency of its local voltage controlled oscillator (VCO) and adjust the VCO to ensure that the VCO is locked to the frequency specified by the PCR 146. To ensure accuracy, the PCR 146 may be updated with the STC every about 100 ms.
The continuity counter (CC) 120 may be used to determine when packets are lost or repeated. It may include a 4-bit field, which may be repeatedly incremented from zero to 15 for each PID. Discontinuity indicator 134 may permit a decoder to handle discontinuities in the transport stream. Discontinuity indicator 134 may indicate a time base such as the PCR 146 and continuity counter 120 discontinuities. Random access indicator 136 may be configured to indicate whether the next PES packet in the PID stream contains a video-sequence header or the first byte of an audio frame. Splice countdown 150 may be configured to indicate the number packets of the same PID number to a splice point occurring at the start of PES packets.
An MPEG TS may be a multi-program TS or a single program TS (SPTS). A number of SPTSs may be multiplexed to create a multi-program TS. In some cases, the program may include one or more ESs that may have a similar time reference. This may occur, for example, in a movie that has video and its corresponding audio content.
PSI may include a set of tables that may be part of a TS. The tables in the PSI may be required while de-multiplexing the TS and for matching PIDs to their corresponding streams. Once the PIDs are matched to their corresponding streams, the TS may be decoded by assembling and decompressing program contents. Typically, in order to determine which audio and video PIDs contain the corresponding content for a particular stream, a program map table (PMT) may be decoded. Each program may have its own PMT bearing a unique PID value. The PAT may be decoded in order to determine which PID contains the desired program's PMT. The PAT may function as the master PSI table with PID value always equal to 0. In a case where the PAT cannot be found and decoded in the TS, no programs may be available for presentation. Each parser within an MPEG demultiplexer may access PID information for a particular data channel and received MPEG transport stream may be parsed based on the PID information.
The PSI table may be refreshed periodically at a rate that is fast enough to allow a STB to go through program recovery and decompression processes. This may be necessary to ensure real-time user interaction. The PSI may also be used to determine the accuracy and consistency of PSI contents. Notwithstanding, during programs changes or modification of multiplexer provisioning, there may be packets which have a PID value present in the TS, but have no corresponding reference in the PSI. Additionally, the PSI may have references to one or more packets in the PID that are not present in the TS.
FIG. 2 is a block diagram of an exemplary MPEG encoding system that may be utilized in accordance with an embodiment of the invention. Referring to FIG. 2, an analog input video signal may be converted to digital format by A/D converter 16. An output signal from the A/D converter 16 may be communicated to video processor 18 for processing. After the video processor 18 processes the signal, the output signal generated from the video processor 18 may be sent to a sub-picture encoder 24 for processing. A presentation control information (PCI) encoder 26 may be configured to encode PCI data for the video signal processed by video processor 22. The output signal generated from the video processor 18 may also be received and processed by an MPEG video encoder 28, which may be configured to format the video signal in MPEG format.
An analog input audio signal may be converted to digital format by A/D converter 20. An output signal from the A/D converter 20 may be communicated to audio processor 22 for processing. After the audio processor 22 processes the signal, the output signal generated from the audio processor 22 may be sent to an audio encoder 30 to be encoded in a suitable format. A data search information (DSI) encoder 34 may be configured to encode indexing and search data for the video signal processed by video processor 22. The outputs from the sub-picture encoder 24, PCI encoder 26, MPEG video encoder 28, audio encoder 30 and DSI encoder 34 may be multiplexed into a single data stream, by multiplexer 36. A controller 32 may be configured to control the operations of audio encoder 32, DSI encoder 34 and multiplexer (MUX) 36. The output of the MUX 36 may include a single steam, which may contain various kinds of PES. The PES may include, audio, video, PCI, DSI and sub-picture information.
The MPEG encoding system 14 may also include a conditional access buffer 38 that may be configured to controls propagation of the packets through MUX 36. A track buffer 40 may be used to buffer and assemble data packets for further processing. Finally, the assembled packets may be encoded with a forward error correction algorithm within the forward error correction block (FEC) 42 for transmission over a channel. The output of the FEC block 42 may be an MPEG formatted digital audio/video signal.
FIG. 3 is a block diagram of an exemplary MPEG decoding system that may be utilized in accordance with an embodiment of the invention. The MPEG decoding system 48 may be, for example, a set-top box. Referring to FIG. 3, the MPEG decoding system 48 may comprise a forward error correction (FEC) processing block 50 and a track buffer 52. The track buffer 52 may be used to buffer and assemble data packets for further processing. The packets may be processed by a conditional access circuit 54 that may be configured to control propagation of the packets through de-multiplexer (DEMUX) 56 and into respective video and audio processing paths. The output of the DEMUX 56 may include various kinds of packetized elementary streams (PES), including audio, video, presentation control information (PCI), sub-picture information, and data search information (DSI) streams. The de-multiplexed PCI in the PES may be buffered prior to being decoded by PCI decoder 66.
The sub-picture information in the PES may be buffered and decoded by sub-picture decoder 68. The de-multiplexed video stream in the PES may be decoded by MPEG video decoder 64. Video processor 72 may be configured to process the output from the MPEG video decoder 64. Video processor 72 may be a microprocessor or an integrated circuit (IC). Subsequent to processing of the MPEG video, mixer 70 may combine the outputs of the PCI decoder 66, the video processor 64 and the sub-picture decoder 68 to form a composite video signal. The output of mixer 70 may thereafter be encoded in a conventional television signal format such as PAL, SECAM, or NTSC by the TV encoder 76. The output of the TV encoder 76 may be a digital video signal. However, D/A converter 78 may convert this digital video output signal to an analog video output signal.
The audio portion of the PES may be buffered and decoded by audio decoder 62. The output of the audio decoder 62 may be a digital audio signal. The audio D/A 74 may process digital audio received from the audio decoder 62 and produce an analog audio output signal. Audio decoder 62 may include a frame buffer sufficient for temporarily storing audio frames prior to decoding. Controller 60 may control the operation of audio decoder 62 and DSI 58. Controller 60 may be configured to utilize DMA to access to data in track buffer 52 or any other associated memory (not shown).
FIG. 4 is an exemplary packet identification (PID) table, in accordance with an embodiment of the invention. Referring to FIG. 4, the PID table 400 may comprise a plurality of N entries, entry 1, . . . , entry N. Each of the N entries may comprise a parser band number field, a validate bit field, and a PID field. In this regard, the PID table 400 may comprise parser band number fields 402, . . . , 406, validate bit fields 408, . . . , 412, and PID fields 414, . . . , 418.
The parser band number field may be, for example, 5 bits. The validate bit field may be 1 bit, and the PID field may be, for example, 13 bits. The parser band number field may comprise information identifying a parser that may utilize the corresponding PID from the PID field. The validate bit may be asserted or de-asserted. If the validate bit is asserted, a parser identified by the corresponding parser band number may utilize the PID from the corresponding PID field to parse received transport stream data. If the validate bit is de-asserted, the PID stored in the corresponding PID field may not be utilized by any parser. The PID value field may comprise a PID value that may be used by a parser, for example, during parsing of received MPEG transport stream.
Entries in the PID table 400 may be indexed according to a data channel number for the PID stored in the corresponding PID entry. For example, PID 414 is located in entry 1 and, therefore, PID 414 may be used for parsing transport stream (TS) data associated with data channel 1. Similarly, PID 418 is located in entry N and, therefore, PID 418 may be used for parsing TS data associated with data channel N. In one embodiment of the invention, the data channel may comprise a PID channel. The PID table 400 may be stored in memory and may be accessed by one or more parsers within an MPEG transport processor, for example, during parsing of received TS data.
FIG. 5 is a block diagram illustrating an exemplary system for parsing a transport stream utilizing a PID table, which may be used in connection with an embodiment of the invention. Referring to FIG. 5, the system 500 for parsing a transport stream may comprise a PID table 512, an arbiter 510, and parsers 502, . . . , 508. The system 500 may be utilized within an MPEG transport processor, for example, to parse a received transport stream such as the transport stream 514. The transport stream 514 may comprise an MPEG-encoded transport stream and may indicate program content for a plurality of data channels. In one embodiment of the invention, the stream 514 may comprise a plurality of transport streams.
The PID table 512 may be stored in memory and may be similar to the PID table 400 in FIG. 4. In this regard, the PID table 512 may comprise a plurality of entries, and each entry may comprise a parser band number entry, a validate bit entry, and a PID. The arbiter 510 may comprise suitable circuitry, logic, and/or code and may enable access to the PID table 512 by one or more of the parsers 502, . . . , 508. In this regard, the arbiter 510 may utilize one or more arbitration schemes to grant access by one or more of the parsers 502, . . . , 508 to the PID table 512 stored in memory. For example, the arbiter 510 may utilize a round-robin arbitration scheme. The parsers 502, . . . , 508 may comprise suitable circuitry, logic, and/or code and may be adapted to parse data content, associated with one or more data channels, within a received transport stream 514. In this regard, the parsers 502, . . . , 508 may utilize the arbiter 510 to access PID information stored in the PID table 512. The parsers 502, . . . , 508 may be identified by a parser band number. For example, the parser 502 may be identified as parser band number 1. Similarly, the parser 508 may be identified as parser band number 4. After parsing, parsed information may be communicated to a decoder, for example, for further processing and decoding.
In operation, the system 500 may receive a transport stream, such as the transport stream 514. The transport stream 514 may be communicated to each of the parsers 502, . . . , 508. The parsers 502, . . . , 508 may obtain access to the PID table 512 via the arbiter 510. For example, the parser 502 may receive the transport stream 514 and may be adapted to parse content associated with a particular data channel. After the arbiter 510 allows parser 502 to access the PID table 512, the parser 502 may start to read all entries in the PID table 512. Referring to FIGS. 4 and 5, the PID table 512 may be the same as the PID table 400. The parser 502 may initially read the parser band number field in each table entry. Since the parser 502 is identified as parser band number 1, the parser 502 may accept PID table entries with parser band number field equal to 1, and reject all other PID table entries. For example, if parser band number field 402 equals 1, parser 502 may accept entry 1 from table 400. The parser 502 may then check whether the validate bit 408 is asserted or de-asserted. If the validate bit 408 is asserted, the parser 502 may obtain the corresponding PID from PID entry 414. Parser 502 may then parse program content within the transport stream 514 based on the PID obtained from PID table entry 414.
After the parser 502 completes reading entries in the PID table 512, the arbiter 510 may grant access to the PID table 512 to the next parser according to the arbiter's arbitration scheme. In this regard, only one parser at a time may access the PID table 512. Even though only 4 parsers are provided within the system 500, the present invention may not be so limited and a different number of parsers may be utilized. As the number of parsers within the system 500 increases, the wait time for obtaining access to the PID table 512 by each of the parsers may also increase. An increased wait time may result in processing delay and decreased quality of the decoded audio and/or video signals within the transport stream 514.
In an exemplary embodiment of the invention, processing time within the system 500 may be improved by removing the arbiter 510 and enabling a processor to broadcast the PID table 512 simultaneously to the parsers 502, . . . , 508. In this regard, each of parsers 502, . . . , 508 may simultaneously read through the entries within the PID table 512 and obtain one or more corresponding PIDs that may be required for parsing program content.
FIG. 6 is a block diagram illustrating an exemplary system for parsing a transport stream utilizing a PID table, in accordance with an embodiment of the invention. Referring to FIG. 6, the system 600 for parsing a transport stream may comprise a PID table 610 and the parsers 602, . . . , 608. The system 600 may be utilized within an MPEG transport processor, for example, to parse a received transport stream such as the transport stream 612. The transport stream 612 may comprise an MPEG-encoded transport stream and may indicate program content for a plurality of data channels. In one embodiment of the invention, the stream 612 may comprise a plurality of transport streams.
The PID table 610 may be stored in memory and may be similar to the PID table 400 in FIG. 4. In this regard, the PID table 610 may comprise a plurality of entries, and each entry may comprise a parser band number entry, a validate bit entry, and a PID. The parsers 602, . . . , 608 may comprise suitable circuitry, logic, and/or code and may be adapted to parse data content, associated with one or more data channels, within a received transport stream 612. The parsers 602, . . . , 608 may be identified by a parser band number. The parser band number may be utilized by each parser to accept or reject table entries from the PID table 610. For example, the parser 602 may be identified as parser band number 1. Similarly, the parser 608 may be identified as parser band number 4. After parsing, parsed information may be communicated to a decoder, for example, for further processing and decoding.
In an exemplary embodiment of the invention, contents of the PID table 610 may be continuously transmitted to each the parsers 602, . . . , 608. The system 600 may receive a transport stream, such as the transport stream 612, which may be communicated to the parsers 602, . . . , 608. The table entries from the PID table 610 may be communicated simultaneously to each of the parsers 602, . . . , 608. For example, the parser 602 may receive the transport stream 612 and may enable parsing of content associated with a particular data channel. As table entries from the PID table 610 are broadcasted to the parser 602, the parser 602 may accept or reject a table entry based on the parser band number field in each received PID table entry. Referring to FIGS. 4 and 6, the PID table 610 may be the same as PID table 400. During the simultaneous broadcasting of the PID table entries from PID table 610, the parser 602 may initially read the parser band number from each of the PID table entries.
Since the parser 602 is identified as parser band number 1, for example, the parser 602 may accept PID table entries with parser band number field equal to 1, and reject all other PID table entries. For example, if the parser band number field 402 equals 1, the parser 602 may accept entry 1 from PID table 400. The parser 602 may then check whether the validate bit 408 is asserted or de-asserted. If the validate bit 408 is asserted, the parser 602 may obtain the corresponding PID from PID entry 414. The parser 602 may then parse program content within the transport stream 612 based on the PID obtained from PID table entry 414. In this regard, the parser 602 may parse packets which have the same PID number stored within the packet headers of program content within the transport stream 612. If the PIDs from the packet headers do not match the PID obtained from the corresponding entry in the PID table, the parser 602 may reject the packets. Alternatively, if the PIDs from the packet headers match the PID obtained from the corresponding entry in the PID table, the parser 602 may accept the packets for parsing.
FIG. 7 is a block diagram of a system for processing information utilizing a PID table, in accordance with an embodiment of the invention. Referring to FIG. 7, the system 700 for processing information may comprise a PID table 704, a host CPU 712, a parser 702, a buffer 706, an audio/video (A/V) processor 708, a display 710, and a speaker 711. The PID table 704 may be stored in memory and may be similar to the PID table 610 in FIG. 6. In this regard, the PID table 704 may comprise a plurality of entries, and each entry may comprise a parser band number entry, a validate bit entry, and a PID. The parser 702 may comprise suitable circuitry, logic, and/or code and may enable parsing of data content, associated with one or more data channels, within a received transport stream 714. The transport stream 714 may comprise a plurality of transport streams. In addition, the parser 702 may be identified by a parser band number. The parser band number may be utilized by the parser 702 to accept or reject table entries from the PID table 704. For example, parser 702 may be identified as parser band number 1.
In an exemplary embodiment of the invention, contents of the PID table 704 may be continuously broadcasted to the parser 702. In this regard, the host CPU 712 may control the transmitting of the PID table 704 as well as other data processing functionalities within the system 700. The buffer 706 may comprise suitable circuitry, logic, and/or code and may be enabled to buffer parsed data received from the parser 702. The A/V processor 708 may comprise suitable circuitry, logic, and/or code and may be enabled to process data received from the buffer 706. For example, the A/V processor may be enabled to decode the received audio and/or video data.
In operation, the system 700 may receive a transport stream, such as the transport stream 714, which may be communicated to the parsers 702. Table entries from the PID table 704 may be continuously transmitted to the parser 702 via connection 716. The parser 702 may receive the transport stream 714 and may parse content associated with a particular data channel. As table entries from the PID table 704 are transmitted to the parser 702, the parser 702 may accept or reject a table entry based on the parser band number field in each received PID table entry. Referring to FIGS. 4 and 7, PID table 704 may be the same as PID table 400. During the simultaneous transmission of the PID table entries from PID table 704, the parser 702 may initially read the parser band number from each PID table entry.
Since the parser 702 is identified as parser band number 1, for example, the parser 702 may accept PID table entries with parser band number field equal to 1, and reject all other PID table entries. For example, if parser band number field 402 equals 1, the parser 702 may accept entry 1 from PID table 400. The parser 702 may then check whether the validate bit 408 is asserted or de-asserted. If the validate bit 408 is asserted, the parser 702 may obtain the corresponding PID from PID entry 414. The parser 702 may then parse program content within the transport stream 714 based on the PID obtained from PID table entry 414. In this regard, the parser 702 may parse packets which have the same PID number stored within the packet headers of program content within the transport stream 714. If the PIDs from the packet headers within the stream 714 do not match the PID obtained from the corresponding entry in the PID table 704, the parser 702 may reject the packets. Alternatively, if the PIDs from the packet headers match the PID obtained from the corresponding entry in the PID table, the parser 702 may accept the packets for parsing.
The parser 702 may communicate parsed program content to the buffer 706 for buffering. The buffered program content may be communicated to the A/V processor 708 for further processing, such as decoding. Decoded video information may be communicated to the display 710, and decoded audio information may be communicated to the speakers 711. Even though the system 700 comprises only one parser, the present invention may not be so limited and a plurality of parsers 702, . . . , 722 may also be utilized for parsing the transport stream 714.
In one embodiment of the invention, the host CPU 712 may enable broadcasting of information from the PID table 704, which indicates program content for each of a plurality of channels communicated via a plurality of transport streams 714, to a plurality of processors that parse 702, . . . , 722 that identify which of the program content is associated with a particular one of the plurality of channels in each of the plurality of transport streams 714. The broadcasted information may comprise a packet identifier (PID) and/or a processor identifier associated with the PID that identifies at least one of the plurality of processors that parse 702, . . . , 722. The host CPU 712 may enable storing of the information in a PID table 704 in memory prior to the broadcasting.
The PID table 704 may be indexed in the memory according to the plurality of channels. If a channel associated with at least a portion of the broadcasted information matches the particular one of the plurality of channels, at least one of the plurality of processors that parse 702, . . . , 722 may enable selection of at least a portion of the program content associated with the particular one of the plurality of channels for processing. At least one of the plurality of processors that parse 702, . . . , 722 may enable parsing of at least a portion of the plurality of transport streams, based on at least a portion of the broadcasted information. The identification of the program content may be based on at least one PID within the broadcast information. If an identification of a particular one of the plurality of processors matches a processor identifier within the broadcasted information, one of the plurality of processors that parse 702, . . . , 722 may enable selection of at least a portion of the program content associated with the processor identifier for processing. At least one of the plurality of processors that parse 702, . . . , 722 may enable parsing of program content within the selected at least the portion of the program content, based on at least one PID associated with the processor identifier. The host CPU 712 may enable decoding of at least a portion of the parsed program content.
FIG. 8 is a flow diagram illustrating exemplary steps for processing information, in accordance with an embodiment of the invention. Referring to FIGS. 7 and 8, at 802, the host CPU 712 may store information, which may indicate program content for each of a plurality of channels communicated via a plurality of transport streams, in a PID table 704 in memory. At 804, the PID table 704 may be indexed according to the plurality of channels. At 806, the stored information may be broadcasted to a plurality of processors that parse 702, . . . , 722 that identify which of the program content is associated with a particular one of the plurality of channels in each of the plurality of transport streams 714. At 807, it may be determined whether a channel associated with at least a portion of the broadcasted information matches the particular one of the plurality of channels. If the channel associated with at least a portion of the broadcasted information does not match the particular one of the plurality of channels, processing may continue at step 809.
At 809, at least a portion of the program content associated with the particular one of the plurality channels. For example, if a PID value of an incoming transport packet within a transport bitstream does not match with any programmed valid PID value in the PID table for a corresponding parser, then the packet may be discarded without any processing. After step 809, processing of information may resume at step 806. If the channel associated with at least a portion of the broadcasted information matches the particular one of the plurality of channels, at 808, at least a portion of the program content associated with the particular one of the plurality of channels may be selected for processing. At 810, at least a portion of the plurality of transport streams 714 may be parsed based on at least a portion of the broadcasted information.
Another embodiment of the invention may provide a machine-readable storage having stored thereon, a computer program having at least one code section for processing of information, where the at least one code section is executable by a machine for causing the machine to perform steps as disclosed herein.
Accordingly, aspects of the invention may be realized in hardware, software, firmware or a combination thereof. The invention may be realized in a centralized fashion in at least one computer system or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware, software and firmware may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
One embodiment of the present invention may be implemented as a board level product, as a single chip, application specific integrated circuit (ASIC), or with varying levels integrated on a single chip with other portions of the system as separate components. The degree of integration of the system will primarily be determined by speed and cost considerations. Because of the sophisticated nature of modern processors, it is possible to utilize a commercially available processor, which may be implemented external to an ASIC implementation of the present system. Alternatively, if the processor is available as an ASIC core or logic block, then the commercially available processor may be implemented as part of an ASIC device with various functions implemented as firmware.
The invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context may mean, for example, any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form. However, other meanings of computer program within the understanding of those skilled in the art are also contemplated by the present invention.
While the invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the present invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiments disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.

## Claims

1. A method for processing information, the method comprising:
receiving, by a plurality of processors within a media processing device, a plurality of transport streams comprising program content to be communicated via a plurality of channels; and
accessing, by the processors within the media processing device, information stored in a memory table within the media processing device, wherein the information comprises a plurality of processor identifiers and a plurality of packet identifiers, and wherein the packet identifiers are used to identify which program content in each of the transport streams is associated with a particular one of the channels;
identifying, by the processors within the media processing device, which of the processors is associated with the particular one of the channels based on the processor identifiers;
at each of the plurality of processors:
identifying one or more of the plurality of packet identifiers stored in the memory table corresponding to the channel associated with the processor;
selecting a portion of the program content for processing when data in one of the plurality of transport streams including the portion of the program content matches one of the one or more packet identifiers corresponding to the channel associated with the processor; and
discarding the portion of the program content when the data in the one of the plurality of transport streams including the portion of the program content does not match any of the one or more packet identifiers corresponding to the channel associated with the processor.

2. The method according to claim 1, wherein each of the plurality of packet identifiers is associated with one of the plurality of processor identifiers.

3. The method according to claim 1, wherein the information further identifies whether the program content associated with each of the packet identifiers can be processed.

4. The method according to claim 1, further comprising indexing the memory table according to the channels.

5. The method according to claim 1, further comprising parsing at least a portion of the transport streams, based on at least a portion of the information.

6. The method according to claim 1, wherein the identification of the program content is based on the plurality of packet identifiers within the information.

7. The method according to claim 1, wherein, at each of the plurality of processors, identifying the one or more packet identifiers corresponding to the channel associated with the processor comprises determining the one or more packet identifiers to be associated with the processor identifier corresponding to the processor based on the memory table.

8. The method according to claim 1, further comprising, at each of the plurality of processors, parsing program content within the selected portion of program content based on at least one of the one or more packet identifiers associated with the processor identifier of the processor.

9. The method according to claim 8, further comprising decoding at least a portion of the parsed program content.

10. A system for processing information, the system comprising:
a plurality of first processors within a media processing device, the first processors configured to each receive a plurality of transport streams including program content to be communicated via a plurality of channels;
a memory table including information stored within the media processing device, the information comprising a plurality of processor identifiers and a plurality of packet identifiers, wherein the information is used to identify:
which program content included in each of the transport streams is associated with a particular one of the channels based on the packet identifiers; and
which of the first processors is associated with the particular one of the channels based on the processor identifiers; and

at least one second processor which enables communicating internally, within the media processing device, the information from the memory table to the first processors;
wherein at least one of the plurality of first processors or the at least one second processor is configured to identify, for each of the plurality of first processors, one or more of the plurality of packet identifiers stored in the memory table corresponding to the channel associated with the first processor; and
wherein each of the plurality of first processors is configured to:
select a portion of the program content for processing when data in one of the plurality of transport streams including the portion of the program content matches one of the one or more packet identifiers corresponding to the channel associated with the first processor; and
discard the portion of the program content when the data in the one of the plurality of transport streams including the portion of the program content does not match any of the one or more packet identifiers corresponding to the channel associated with the first processor.

11. The system according to claim 10, wherein each of the processor identifiers is associated with one or more of the packet identifiers and identifies at least one of the first processors.

12. The system according to claim 10, wherein the at least one second processor enables storing of the information in the memory table within the media processing device prior to the communication.

13. The system according to claim 10, wherein the at least one second processor enables indexing of the memory table in the media processing device according to the channels.

14. The system according to claim 10, wherein at least one of the first processors enables parsing of the at least a portion of the transport streams, based on at least a portion of the communicated information.

15. The system according to claim 10, wherein the identification of the program content is based on the plurality of packet identifiers, and wherein the plurality of packet identifiers are included within the communicated information.

16. The system according to claim 10, wherein, for each of the plurality of first processors, the first processor enables parsing of the program content within the selected at least portion of the program content based on at least one of the one or more packet identifiers associated with the processor identifier of the first processor.

17. The system according to claim 16, wherein, for each of the plurality of first processors, the first processor enables decoding of the at least portion of the parsed program content.

18. A method for processing information, the method comprising:
receiving, by a processor within a media processing device, a plurality of transport streams including program content to be communicated via a plurality of channels;
communicating internally, within the media processing device, information from a memory table stored within the media processing device to the processor, wherein the memory table comprises a plurality of entries each associated with at least one of the channels, each entry comprising one of a plurality of processor identifiers and one of a plurality of packet identifiers, and the information is used to at least identify:
which program content included in each of the received transport streams is associated with a particular one of the channels based on the packet identifiers; and
which of the channels are associated with the processor based on a first processor identifier of the plurality of processor identifiers;

identifying one or more of the plurality of packet identifiers stored in the memory table corresponding to the channel associated with the processor;
selecting a portion of the program content for processing by the processor when data in one of the plurality of transport streams including the portion of the program content matches one of the one or more packet identifiers corresponding to the channel associated with the processor;
discarding the portion of the program content when the data in the one of the plurality of transport streams including the portion of the program content does not match any of the one or more packet identifiers corresponding to the channel associated with the processor; and
parsing, by the processor, the portion of the program content based on the selection of the portion of the program content for processing by the processor.

19. The method according to claim 18, wherein the portion of the program content selected for processing by the processor comprises at least one of the entries in the memory table the first processor identifier that identifies the processor.

20. The method according to claim 18, wherein the processor is associated with at least one of the channels.

21. The method according to claim 18, further comprising indexing, by a second processor within the media processing device, the memory table according to the channels.

22. The method according to claim 18, further comprising determining the portion of the program content to be parsed based on at least one of the one or more packet identifiers corresponding to the channel associated with the processor.

23. The method according to claim 18, further comprising decoding at least a portion of the parsed program content.