Macroblock parsing without processing overhead
First Claim
1. A method for providing macroblock parsing in a packet to comply with a maximum-transmission-unit size, the packet having at least one group of blocks (GOBS) representing a portion of a video picture, the GOB further divided into macroblocks, the method comprising the steps of:
- determining whether a GOB of a current packet is partial;
and if so, then storing a bit count of a GOB of a previous sequential packet; and
storing header information contained in the current packet that allows the macroblocks of the GOB of the current packet to be decoded.
5 Assignments
0 Petitions
Accused Products
Abstract
The method and apparatus related to macroblock parsing in a GOB to comply with a maximum-transmission-unit size is described. The real-time transmission protocol (RTP) suggests that the RTP packet sent be smaller than the underlying transport mechanism. In the case where video streams are encoded under ITU-T H.261 recommendation, certain group of blocks (GOBs) exceed the allowable packet size. For end-points such as a terminal, implementing a macroblock parser is a natural outcome of the encoding process. However, for other devices, such as a multipoint control unit (MCU), a marcoblock parser is not that easily implemented. Thus, instead of using a macroblock parser, the incoming packets are monitored for partial GOBs. A partial GOB is where the GOB was previously parsed into portions by a device for compliance. Once a partial GOB is detected, pertinent information pertaining to the macroblock fragmentation is then retrieved and stored for future use. The pertinent partial GOBs are then combined to form a complete GOB. Subsequently, when this complete GOB needs to be parsed again for transmission, the stored information are retrieved to parse the complete GOB back to its previous state (i.e., partial GOBs).
42 Citations
21 Claims
-
1. A method for providing macroblock parsing in a packet to comply with a maximum-transmission-unit size, the packet having at least one group of blocks (GOBS) representing a portion of a video picture, the GOB further divided into macroblocks, the method comprising the steps of:
-
determining whether a GOB of a current packet is partial;
and if so, then storing a bit count of a GOB of a previous sequential packet; and
storing header information contained in the current packet that allows the macroblocks of the GOB of the current packet to be decoded. - View Dependent Claims (2, 3, 4, 5, 6, 7)
determining a byte count of a GOB to be packetized for compliance with the maximum-transmission-unit size; and
,if the GOB is non-compliant, then retrieving the bit count associated with the GOB to be packetized;
parsing the GOB to be packetized into a partial GOB, the size of the partial GOB corresponding to the bit count;
packetizing the partial GOB;
retrieving the header information associated with the GOB to be packetized; and
packetizing a remaining portion of the GOB to be packetized such that a header includes the retrieved header information.
-
-
4. The method of claim 1, wherein the step of determining whether the GOB of the current packet is partial further comprises the steps of:
-
reading a header GOB number (GOBN) value associated with the GOB;
determining that the GOB is non-partial if the GOBN value is zero; and
determining that the GOB is partial if the GOBN value is non-zero.
-
-
5. The method of claim 4, wherein a GOB data pointer points to a position in which a previous GOB data has been read in, the method further comprising the steps of:
-
if the GOBN value is zero, then reading a GOB group number (GN) value associated with the GOB of the current packet;
updating the GOB data pointer in accordance with the GN value;
reading the GOB of the current packet into the position pointed by the GOB data pointer; and
if the GOBN value is non-zero, then reading the GOB of the current packet into the position pointed to by the GOB data pointer.
-
-
6. The method of claim 5, wherein reading the GOB of the current packet into the position pointed by the GOB data pointer further comprises the steps of:
-
reading in the GOB byte by byte;
if a GOB start code (GBSC) is encountered then associating the GBSC with another GOB in the current packet;
reading a GN value associated with the another GOB in the current packet;
updating the GOB data pointer in accordance with the GN value associated with the another GOB; and
reading the another GOB in the current packet into the position pointed by the GOB data pointer.
-
-
7. The method of claim 4, further comprising the steps of:
-
reading the header GOB group number (GN) associated with the GOB of the current packet;
comparing the GN value with the read GOBN value; and
discarding the packet if the GN value does not correspond with the GOBN value.
-
-
8. A processor executable medium containing computer instructions therein, which when executed by a processor causes the processor to provide macroblock parsing in a packet to comply with a maximum-transmission-unit size, the packet having at least one group of blocks (GOBs) representing a portion of a video picture, the GOB further divided into macroblocks, the processor performing the steps comprising:
-
determining whether a GOB of a current packet is partial;
and if so, then storing a bit count of a GOB of a previous sequential packet; and
storing a header information contained in the current packet that allows the macroblocks of the GOB of the current packet to be decoded. - View Dependent Claims (9, 10, 11, 12, 13, 14)
determining a byte count of a GOB to be packetized for compliance with the maximum-transmission-unit size;
and if the GOB is non-compliant, then retrieving the bit count associated with the GOB to be packetized;
parsing the GOB to be packetized into a partial GOB, the size of the partial GOB corresponding to the bit count;
packetizing the partial GOB;
retrieving the header information associated with the GOB to be packetized; and
packetizing a remaining portion of the GOB to be packetized such that a header includes the retrieved header information.
-
-
11. The processor executable medium of claim 8, wherein the step of determining whether the GOB of the current packet is partial further comprises the steps of:
-
reading a header GOB number (GOBN) value associated with the GOB;
determining that the GOB is non-partial if the GOBN value is zero; and
determining that the GOB is partial if the GOBN value is non-zero.
-
-
12. The processor executable medium of claim 11, wherein a GOB data pointer points to a position in which a previous GOB data has been read in, the step further comprises:
-
if the GOBN value is zero, then reading a GOB group number (GN) value associated with the GOB of the current packet;
updating the GOB data pointer in accordance with the GN value;
reading the GOB of the current packet into the position pointed by the GOB data pointer;
and if the GOBN value is non-zero, then reading the GOB of the current packet into the position pointed by the GOB data pointer.
-
-
13. The processor executable medium of claim 12, wherein reading the GOB of the current packet into the position pointed by the GOB data pointer further comprises the steps of:
-
reading in the GOB byte by byte;
if a GOB start code (GBSC) is encountered then associating the GBSC with another GOB in the current packet;
reading a GN value associated with the another GOB in the current packet;
updating the GOB data pointer in accordance with the GN value associated with the another GOB; and
reading the another GOB in the current packet into the position pointed by the GOB data pointer.
-
-
14. The processor executable medium of claim 11, further comprising the steps of:
-
reading the header GOB group number (GN) associated with the GOB of the current packet;
comparing the GN value with the read GOBN value; and
discarding the packet if the GN value does not correspond with the GOBN value.
-
-
15. An apparatus to provide macroblock parsing in a packet to comply with a maximum-transmission-unit size, the packet having at least one group of blocks (GOBs) representing a portion of a video picture, the GOB further divided into macroblocks, the apparatus comprising:
-
a processor configured to determine whether a GOB of a current packet is partial;
and if so, then the processor configured to store a bit count of a GOB of a previous sequential packet in memory; and
the processor configured to store header information contained in the current packet in memory, the header information allowing the macroblocks of the GOB of the current packet to be decoded. - View Dependent Claims (16, 17, 18, 19, 20, 21)
the processor configured to determine a byte count of a GOB to be packetized for compliance with the maximum-transmission-unit size; and
,if the GOB is non-compliant, then the processor configured to retrieve the bit count associated with the GOB to be packetized from the memory;
the processor configured to parse the GOB to be packetized into a partial GOB, the size of the partial GOB corresponding to the bit count;
the processor configured to packetize the partial GOB;
the processor configured to retrieve the header information associated with the GOB to be packetized from the memory; and
the processor configured to packetize a remaining portion of the GOB to be packetized such that a header includes the retrieved header information.
-
-
18. The apparatus of claim 15, further comprising:
-
the processor configured to read a header GOB number (GOBN) value associated with the GOB; and
the processor configured to determine that the GOB is non-partial if the GOBN value is zero and determine that the GOB is partial if the GOBN value is non-zero.
-
-
19. The apparatus of claim 18, further comprising:
-
a GOB data pointer that points to a position in which a previous GOB data has been read into the memory, wherein;
if the GOBN value is zero, then the processor configured to read a GOB group number (GN) value associated with the GOB of the current packet;
the processor configured to update the GOB data pointer in accordance with the GN value;
the processor configured to read the GOB of the current packet into the position in the memory pointed by the GOB data pointer; and
if the GOBN value is non-zero, then the processor configured to read the GOB of the current packet into the position in the memory pointed to by the GOB data pointer.
-
-
20. The apparatus of claim 19, wherein the processor configured to read the GOB of the current packet into the position pointed by the GOB data pointer further comprises:
-
the processor configured to read in the GOB byte by byte;
if a GOB start code (GBSC) is encountered then the processor configured to associate the GBSC with another GOB in the current packet;
the processor configured to read a GN value associated with the another GOB in the current packet;
the processor configured to update the GOB data pointer in accordance with the GN value associated with the another GOB; and
the processor configured to read the another GOB in the current packet into the position in the memory pointed by the GOB data pointer.
-
-
21. The apparatus of claim 19, further comprising:
-
the processor configured to read the header GOB group number (GN) associated with the GOB of the current packet;
the processor configured to compare the GN value with the read GOBN value; and
the processor configured to discard the packet if the GN value does not correspond with the GOBN value.
-
Specification