Abstract:
A method and apparatus for transmitting a video bitstream over a communication medium is provided. The video bitstream is carried as payload data within packets of a transport protocol by dynamically determining whether to fragment the video bitstream at current macroblock. If no determination of fragmentation occurs, based upon the maximum transfer unit size of the transport protocol, the current macroblock is transmitted in a current transport protocol packet. However, if a determination of fragmentation occurs, synchronization information and the current macroblock are transmitted in another transport protocol packet. Permitting dynamic insertion of synchronization information, gives rise to a flexible video bitstream that can be efficiently packetized for a variety of transport protocols.

Description:
FIELD OF THE INVENTION 
     The invention relates generally to the field of video signal processing. More specifically, the invention relates to the real-time transmission of coded digital video signals and segmentation of a digital video bitstream into transport protocol packets. 
     BACKGROUND OF THE INVENTION 
     Transmission of encoded digital video data from one computer system over a communication medium to another computer system typically involves carrying the video bitstream as payload data within the payload of transport protocol packets. This process of inserting data into another protocol&#39;s packet is generally referred to as &#34;encapsulation.&#34; While this process of encapsulation adds overhead, it provides a method of transmitting data from one location to another over an intermediate communication medium. The process of dividing the input bitstream among the transport protocol packets is referred to as &#34;segmentation.&#34; Generally, encapsulation involves &#34;segmentation&#34; of the bitstream at the source into packets and reassembling the bitstream at the destination. For example, a prior encapsulation approach is described with reference to FIG. 2B and FIG. 3. Likewise, the video bitstream format is described with reference to FIG. 1. 
     FIG. 1 illustrates the layers used by H.263 to represent a picture in an encoded digital video bitstream. The Telecommunication Standardization Sector of the International Telecommunication Union (ITU-T) has specified a coded representation useful for compressing the moving picture portion of a low bitrate audio-visual service. This coded representation is described in Recommendation H.263 entitled &#34;Video Coding For Low Bitrate Communication.&#34; Draft ITU-T Recommendation H.263, published 1995 (hereinafter H.263). 
     Only a brief description of the layers is presented here, as Recommendation H.263 fully describes the syntax for each layer. At the highest level, is a picture layer 110. Generally, an encoded picture includes a picture header 115, one or more Groups of Blocks in a Group of Blocks (GOB) layer, and an end of sequence (EOS) code. The picture header 115 includes, among other fields, a picture start code (PSC) field and a picture type (PTYPE) information field. These fields and their purpose are described in detail in Recommendation H.263. 
     The GOB layer 120 includes a GOB header 125 and a macroblock (MB) layer. The GOB header 125 includes optional stuffing bits, GSTUF, a GOB start code (GBSC), a GOB group number (GN), an optional GOB sub bitstream indicator (GSBI), a GOB frame identifier (GFID), and quantizer information (GQUANT). 
     The macroblock layer 130 includes a MB header 135 followed by block data in a block layer 140. At the lowest level, is the block layer 140. Each block includes an optional DC coefficient for INTRA blocks (INTRADC), and a variable length coded transform coefficient (TCOEF). 
     The five standardized picture formats are described below with reference to Table 1. 
     
                       TABLE 1______________________________________Number of Pixels per Line and Number of Linesfor each of the H.263 Picture FormatsPicture  # Pixels # Lines # Pixels                           # Lines                                  MBs perFormat for Lum  for Lum for Chro                           for Chro                                  GOB______________________________________sub-QCIF  128      96      64      48     8QCIF   176      144     88      72     11CIF    352      288     176     144    224CIF   704      576     352     288    8816CIF  1408     1152    704     576    352______________________________________ 
    
     Table 1 shows the sampling structure for each of the five standardized picture formats. For example, a picture in Quarter Common Intermediate Format (QCIF) has 176×144 pixels for luminance and 88×72 pixels for chrominance. The last column of Table 1 indicates the number of macroblocks (MBs) per group of blocks (GOB) for each picture format. This number may be calculated using the pixel data in Table 1, the number of GOBs per picture, and the number of pixels in each MB. The number of GOBs per picture is defined by H.263 to be 6 for sub-QCIF, 9 for QCIF, and 18 for CIF, 4CIF and 16CIF. Each macroblock contains 16×16 pixels of luminance and 8×8 pixels of chrominance. To determine the number of MBs per GOB for a QCIF picture, the number of luminance pixels (176×144=25,344) is divided by the number of luminance pixels in each MB (16×16=256; 25,344/256=99). Subsequently, the number of MBs employed to encode the given picture format (99) is divided by the number of GOBs for the picture format (9) to determine the number of MBs per GOB for the particular picture format. For this example, the result is 11 MBs per GOB for QCIF pictures. From this example, it should be apparent that the spatial location of GOBs within the video bitstream, in this prior approach, is determined based upon the picture format. Thus, for each picture format, a GOB header can appear in the video bitstream only at certain predetermined spatial locations within the bitstream. 
     Referring now to FIG. 2A, the GOB layer for a QCIF picture is depicted. As described above, the GOB layer for this particular picture format includes 9 GOBs (210-290), each including 11 macroblocks. This figure illustrates the inflexibility of this prior approach. As discussed earlier, GOB headers are only allowed at predetermined spatial locations in the video bitstream for a given picture format. For example, when encoding a QCIF picture, a GOB header can only appear after a multiple of 11 consecutive MBs as shown. 
     FIG. 2B shows a H.263 video packet using a prior encapsulation approach and the prior layer structure shown in FIG. 1. The H.263 video packet 201 includes a Real-Time Transport Protocol (RTP) packet header 202 and a payload area 207. Further information regarding RTP may be found in H. Schulzrinne, S. Casner, R. Fredrick, V. Jacobson, &#34;RTP: A Transport Protocol for Real-Time Application,&#34; RFC 1889, 1996. Using this prior approach, the payload area 207 of the H.263 video packet 201 also includes one of three H.263 payload headers, Mode A 203, Mode B 204, or Mode C 205. Finally, the H.263 compressed video bitstream 206 is included in the payload area 207 of the H.263 video packet 201. 
     In this prior approach, the shortest header mode (Mode A) is recommended for GOBs that are smaller than the network packet size. In this mode, a 4 byte payload header 203 is inserted prior to the H.263 compressed video bitstream. In this mode, each packet must start at the beginning of a GOB. That is, the H.263 bitstream is packetized only at GOB boundaries. 
     Modes B and C allow the H.263 bitstream to be fragmented at MB boundaries. However, extra information is employed at the start of a packet to recover the decoder internal state should a H.263 video packet 201 be lost during transmission. This extra information results in a size increase of the payload header from 4 bytes to 8-12 bytes. In this prior approach, modes B and C are recommended for transmitting GOBs whose sizes are larger than the maximum packet size allowed in the underlying protocol. 
     A number of disadvantages of the prior method exist within encapsulation. One limitation of the prior approach is that GOB headers are limited to predetermined spatial locations within the video bitstream. Further, while modes B and C allow fragmentation at MB boundaries, they do so at the expense of higher overhead. 
     In general, it is desirable to provide a more efficient method and apparatus for encapsulating and transmitting a video bitstream. More specifically, it is desirable to allow fragmentation of the video bitstream at MB boundaries with less overhead. 
     It is also desirable to jointly optimize the video bitstream layering and the process of segmenting the video bitstream into transport protocol packets. Specifically, it would be advantageous to provide a video bitstream syntax that allows dynamic insertion of synchronization information thereby creating a flexible video bitstream that may be efficiently packetized for a variety of transport protocols. 
     SUMMARY OF THE INVENTION 
     A method and apparatus for transmitting a video bitstream over a communication medium is disclosed. The video bitstream is carried as payload data within packets of a transport protocol by dynamically determining whether to fragment the video bitstream at a current macroblock. If no determination of fragmentation occurs, based upon the maximum transfer unit size of the transport protocol, the current macroblock is transmitted in a current transport protocol packet. However, if determination of fragmentation occurs, synchronization information and the current macroblock are transmitted in another transport protocol packet. 
    
    
     Other features of the present invention will be apparent from the accompanying drawings and from the detailed description which follows. 
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which: 
     FIG. 1 is a diagram illustrating the layers used by H.263 to represent a picture in an encoded digital video bitstream. 
     FIG. 2A is a diagram illustrating the arrangement of the Group of Blocks layer for a Quarter Common Intermediate Format (QCIF) picture. 
     FIG. 2B is a diagram illustrating the structure of a H.263 video packet using a prior encapsulation approach. 
     FIG. 3 is a diagram illustrating a prior approach of encapsulating a H.263 video bitstream in Real-Time Transport Protocol (RTP) packets. 
     FIG. 4 is a block diagram of a typical computer system that may be employed to implement one embodiment of the present invention. 
     FIG. 5 is a block diagram of a software architecture according to one embodiment of the present invention. 
     FIG. 6 is a diagram illustrating layers of H.263 employed to represent a picture in an encoded digital video bitstream according to one embodiment of the present invention. 
     FIG. 7 is a diagram illustrating a method of encapsulating a H.263 video bitstream in Real-Time Transport Protocol (RTP) packets according to one embodiment of the present invention. 
     FIG. 8A is a flow diagram illustrating a method of encapsulating a H.263 video bitstream according to one embodiment of the present invention. 
     FIG. 8B is a flow diagram illustrating a method of building a slice header for a H.263 video bitstream according to one embodiment of the present invention. 
    
    
     DETAILED DESCRIPTION 
     A method and apparatus for transmitting a flexible and error resilient video bitstream is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown only in block diagram form. 
     FIG. 3 illustrates the prior approach of encapsulating a H.263 video bitstream in Real-Time Transport Protocol (RTP) packets. A H.263 video bitstream 310 is provided to a packetization process 320. Depending on the mode, the packetization process 320 will produce RTP packets with 4 byte payload payload headers or RTP packets with 8-12 byte headers. 
     The first example assumes the GOBs in the H.263 video bitstream 310 are smaller than the RTP packet size. In this example, the packetization process 320 will read data from the H.263 video bitstream 310 and produce RTP packets 330, 340, and other intermediate RTP packets (not shown). RTP packet 330 includes a RTP header and a RTP packet payload 331. As discussed above, in mode A, the payload area 331 of each transport protocol packet (here RTP packets) must begin with a 4 byte H.263 payload header and a GOB header (GH 0 ). Since this example assumes that the GOBs are smaller than the RTP packet size, there may be room in the RTP packet payload for multiple GOBs. In this example, RTP packet 330 is shown carrying 2 GOBs. The first GOB begins with GOB header, GH 0 , and includes 11 macroblocks, MB 0-10 . The second GOB begins with GOB header, GH 1  and includes 11 macroblocks, MB 11-21 . 
     Now, an example assuming the GOBs in the H.263 video bitstream 310 are larger than the RTP packet size will be discussed. In this example, the packetization process 320 will read data from the H.263 video bitstream 310 and produce RTP packets 350, 360, 370, and other intermediate RTP packets (not shown). RTP packet 350 includes a RTP header and a RTP packet payload 351. As discussed above, in mode B and C, the payload area 351 of each transport protocol packet must begin with a H.263 payload header of 8 to 12 bytes and a GOB header (GH 0 ). RTP packet 350 is shown carrying less than one GOB. Here, no wasted bandwidth results from leaving portions of the RTP packet payload 351 unused. However, as will be seen, the fragmentation between MBs results in higher overhead in the form of larger payload headers. Since, for this example, we have assumed that the GOBs are larger than the RTP packet size, the GOB must be fragmented between macroblocks. Because the H.263 video bitstream is being fragmented between MBs in this example, some of the information from the GOB transmitted in packet 350 (e.g., quantizer information) must be duplicated into the next packet&#39;s H.263 payload header. This duplication of information is required in order to process subsequent macroblocks that have become separated from their GOB header in the event of packet loss. In this example, the macroblocks M B 9-10  --cannot be decoded without the synchronization information contained in GH 0  ; therefore, at least a portion of the information in GH 0  must be duplicated into the H.263 payload header of RTP packet 360. Similar duplication will be necessary for RTP packet 370 and other intermediate packets not shown. The inefficiencies of this prior approach should now be clear. 
     HARDWARE OVERVIEW 
     Referring to FIG. 4, a computer system is shown as 400. The computer system 400 represents a computer system which may implement an embodiment of the present invention. Computer system 400 comprises a bus or other communication means 401 for communicating information, and a processing means 402 coupled with bus 401 for processing information. Computer system 400 further comprises a random access memory (RAM) or other dynamic storage device 404 (referred to as main memory), coupled to bus 401 for storing information and instructions to be executed by processor 402. Main memory 404 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 402. Computer system 400 also comprises a read only memory (ROM) and/or other static storage device 406 coupled to bus 401 for storing static information and instructions for processor 402. Data storage device 407 is coupled to bus 401 for storing information and instructions. A data storage device 407 such as a magnetic disk or optical disc and its corresponding drive can be coupled to computer system 400. Computer system 400 can also be coupled via bus 401 to a display device 421, such as a cathode ray tube (CRT), for displaying information to a computer user. An alphanumeric input device 422, including alphanumeric and other keys, is typically coupled to bus 401 for communicating information and command selections to processor 402. Another type of user input device is cursor control 423, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 402 and for controlling cursor movement on display 421. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), which allows the device to specify positions in a plane. Alternatively, other input devices such as a stylus or pen can be used to interact with the display. A video device 424 may be coupled to bus 201 for providing video signals to the computer system 400. Further, a communication device 425 may be coupled to bus 401 for use in accessing other nodes of a distributed system via a network. The communication device 425 may include any of a number of commercially available networking peripheral devices such as those used for coupling to an Ethernet, token ring, Internet, or wide area network. The communication device 425 is coupled to a communication medium 430. The communication medium 430 may include any of a number of medium suitable for transmission and reception of data signals such as Ethernet, the Internet, POTS (plain old telephone service), and ISDN (Integrated Services Digital Network). Note that any or all of the components of the system illustrated in FIG. 2 and associated hardware may be used in various embodiments of the present invention; however, it will be appreciated by those of ordinary skill in the art that any configuration of the system may be used for various purposes according to the particular implementation. 
     This particular embodiment of the present invention is related to the use of computer system 200 for producing a coded video bitstream, encapsulating the coded video bitstream in packets of a transport protocol, and transmitting the resulting transport protocol packets over a communication medium 430. In this embodiment, computer system 200 executes a program resulting in the processor 202 encoding input video data signals and segment the coded video bitstream into packets of a given transport protocol for transmission by the communication device 425 over the communication medium 430. 
     FIG. 5 is an example of a software architecture according to one embodiment of the present invention. In this embodiment, an application 510 oversees the processing of a video device driver 515, an encoder/decoder (codec) 520, and a transport protocol. In this embodiment, the video device driver 515 receives video data from the video device 424. The application 510 reads the video data from the video device driver and commands the codec 520 to compress the video data. It is appreciated that the application 510 could also command the video device driver 515 to transfer the received video data to the codec 520 directly without having to both read the video data from the video device driver 515 and then transfer the video data to the codec 520. In any event, after the codec 520 completes the compression process, the coded video bitstream is segmented into appropriate size units for transmission by the transport protocol 525. While an embodiment will be described with respect to the Real-Time Transport Protocol (RTP), the present invention is not limited to any specific transport protocol. 
     Alternatively, in another embodiment, application 510 may not be employed. For example, the video device driver could simply send the received video data directly to the codec 520. Further, upon compressing the video data, the codec 520 could pass the coded video bitstream directly to the transport protocol for segmentation and transmission. 
     FIG. 6 illustrates layers proposed for H.263 to represent a picture in an encoded digital video bitstream according to this embodiment of the present invention. In one embodiment, a slice layer 620 is used in place of the group of blocks layer 120 when the codec is operating in Slice Structured mode. The prior layered structure described with respect to FIG. 1 remains available when the codec is not in Slice Structured mode. 
     In this embodiment, the picture layer 110, the macroblock layer 130, and the block layer 140 remain the same as described above with reference to FIG. 1 and in Recommendation H.263, except that the use of the Slice Structured mode is indicated in an optional ETYPE field that follows the PTYPE field of the picture header. A flag in the ETYPE field tells the receiving computer system whether to expect GOB headers or slice headers. 
     The slice layer 620 includes a slice header 625 and a macroblock (MB) layer. The slice header 625 includes optional stuffing bits (SSTUF), a slice start code (SSC), a quantizer information field (SQUANT), an optional slice sub bitstream indicator (SSBI), a slice frame identifier (SFID), and a macroblock address (MBA). 
     SSTUF is a codeword of variable length comprising less than 8 bits. SSTUF byte aligns the start of the SSC codeword. Encoders may insert this codeword directly before an SSC codeword. The bit value 1 is used for stuffing within SSTUF. 
     SSC is a word of 17 bits having a value of 0000 0000 0000 0000 1 b . As discussed above, the slice start codes may or may not be byte aligned. Byte alignment can be achieved by inserting SSTUF before the SSC such that the first bit of the start code is the first (most significant) bit of a byte. 
     SQUANT is a fixed length codeword of 5 bits which indicates the quantizer to be used for the slice until it is updated by a subsequent DQUANT. In this embodiment the 5 bit codewords are the natural binary representations of the values of QUANT which, being half the step sizes, range from 1 to 31. 
     SSBI is a fixed length codeword of 2 bits that functions essentially the same as the GSBI codeword in H.263. The 2 bit codeword is only present if Continuous Presence Multipoint mode is indicated by the CPM field in the picture header 115. The codewords are the natural binary representation of the sub-bitstream number for the slice header and all following information until the next picture slice start code. Annex C of Recommendation H.263 contains additional information on Continuous Presence Multipoint (CPM). 
     SFID is a fixed length codeword of 2 bits that functions essentially the same as the GFID codeword in H.263. In this embodiment, SFID has the same value in every slice header of a given picture. Moreover, if PTYPE as indicated in a picture header is the same as for the previous transmitted picture, SFID will have the same value as in that previous picture. However, if PTYPE in a certain picture header differs from the PTYPE in the previous transmitted picture header, the value for SFID in that picture should differ from the value in the previous picture. 
     MBA is a codeword of 10 to 14 bits, depending on the source picture format (e.g., sub-QCIF, QCIF, CIF, 4CIF, or 16CIF). The bits are the binary representation of the macroblock number of the first macroblock in the current slice. The macroblock number is relative to the beginning of the picture and is incremented in scanning order. Therefore, MBA uniquely identifies which macroblock in the picture is the first macroblock of the current slice. 
     For source picture formats having fewer than 1024 macroblocks (e.g., sub-QCIF, QCIF, and CIF), 10 bits are used for MBA; 11 bits are used if there are at least 1024 macroblocks and fewer than 2048; 12 bits are used if there are at least 2048 macroblocks and fewer than 4096; 13 bits are used if there are at least 4096 macroblocks and fewer than 8192; and 14 bits are used if there are 8192 or more macroblocks. Of course, it is appreciated that more bits may be required to represent the macroblock address for future picture formats. 
     When a slice starting with macroblock number 0 is transmitted first for a picture, the slice header including SSTUF, SSC, SQUANT, SSBI, SFID, and MBA is empty. Instead, the PSC is used when the slice starting with macroblock number 0 is transmitted. If the first slice being transmitted does not begin with macroblock number 0 (e.g., an out-of-order slice), then a slice header should be used. 
     FIG. 7 illustrates a method of encapsulating a H.263 video bitstream in Real-Time Transport Protocol (RTP) packets according to one embodiment of the present invention. A H.263 video bitstream in slice structured mode 770 is provided a packetization process for RTP. For the sake of example, the H.263 video bitstream is assumed to be representing a compressed QCIF picture. 
     The H.263 video bitstream uses the layered structure shown in FIG. 6. The RTP packetization process 780 segments the H.263 video bitstream into RTP packets 791, 793, 795, and other intermediate RTP packets (not shown). RTP packet 791 includes a RTP header and a RTP packet payload 792. The RTP packet payload 792 includes a slice header and a group of M+1 consecutive macroblocks (typically as many MBs as the RTP packet payload 792 will accommodate), shown here as MB 0  -M. The next RTP packet 793 will also include a RTP header and a slice header. The first macroblock in the next RTP packet 793 is MB M+1  and the packet will contain macroblocks numbered M+1 through N. Intermediate RTP packets, not shown, will carry macroblocks N+1 through X. Finally, the last of the macroblocks for the QCIF picture will be carried in the payload of RTP packet 795. RTP packet 795 also has a RTP header and a slice header followed by a group of consecutive macroblocks, MB X+1-98 . 
     As may now be observed with reference to RTP packets 791, 793, and 795, each packet has a slice header for synchronizing the decoder without the additional overhead of mode B or mode C H.263 payload headers. Further, since the slice headers now contain a macroblock address codeword, the received video packets can be decoded in the order received. 
     The video bitstream of this embodiment of the present invention provides better support for packetization over packet-switched networks by providing a more flexible technique of synchronization. The addition of the slice layer 620 allows dynamic synchronization at RTP packet boundaries. Of course, it is appreciated that the flexibility of the slice layer 620 has application beyond RTP. Because the synchronization information in the slice headers is no longer constrained to predefined spatial locations in the video bitstream, synchronization may be achieved at packet boundaries of any given transport protocol. 
     In a simulation using the slice structured mode described herein, the overhead of slice headers at various data rates and network maximum transfer unit (MTU) sizes was measured against the overhead of using GOB headers, and H.263 payload headers (mode A and mode B). The simulation was run with different data rates and frame rates with the following test sequences: QCIF news, CIF news, and CIF foreman. Upon, examining the results of the simulation, shown in Table 2, Table 3, and Table 4, the conclusion is that the use of slice headers significantly reduces overhead in the cases simulated compared with the prior encapsulation methods. 
     Table 2 and Table 3 as provided in appendix A. 
     Table 4 as provided in appendix A. 
     FIG. 8A is a flow diagram illustrating a method of encapsulating a H.263 video bitstream according to one embodiment of the present invention. The video bitstream is encapsulated and carried as payload data within packets of a transport protocol so the video bitstream may be transmitted over a communication medium. Importantly, in this embodiment, synchronization information is not inserted at predetermined spatial locations in the video bitstream based upon the picture format. Rather, the determination of where to fragment the video bitstream is a function of the transport protocol. 
     At step 805, the H.263 video bitstream is received from the codec. Transport protocol headers are employed for each transport protocol packet. Here, an RTP header is assembled for the next RTP packet at step 810. The RTP header may be predefined or it may be dynamically assembled during the encapsulation process. In any event, at step 815, the RTP header is written into the header of the transport protocol packet. 
     Slice headers are assembled and inserted into the video bitstream. This may be performed by the codec or the packetization process. At step 820, the slice header for the current group of macroblocks is built. At step 830, the slice header is written into the packet payload area. In this embodiment, the slice header appears before any of the macroblocks in the payload. 
     As discussed earlier, the number of macroblocks per slice is based upon the transport protocol rather than the picture format. In one embodiment, the number of macroblocks per slice is dynamically determined based upon the maximum transfer unit size of the transport protocol. At any rate, the number of macroblocks for the current slice is determined at step 840, based upon the transport protocol. 
     The macroblocks associated with the current slice are read from the video bitstream at step 850. At step 860, the macroblocks associated with the current slice are written into the RTP packet payload. After having written the transport protocol header, the slice header, and the macroblocks associated with the current slice into the RTP packet, the packet is transmitted over the communication medium at step 870. 
     At step 880, it is determined whether the end of the bitstream has been reached. If this is not the end of the bitstream, processing continues with step 810. That is, the above steps are repeated starting at step 810 until the entire bitstream has been encapsulated and transmitted. 
     FIG. 8B is a flow diagram illustrating a method of building a slice header for a H.263 video bitstream according to one embodiment of the present invention. In one embodiment, step 820, above, further includes the steps described hereafter. At step 821, the number of stuff bits to be employed is determined. As discussed earlier, stuff bits are optional. However, if they are inserted into the slice header, they assist in byte aligning the slice start code. 
     At step 822, if the SSTUF codeword is used, it is written into the slice header. Following the SSTUF codeword is the slice start code (SSC). SSC is inserted into the slice header at step 823. 
     The decoding apparatus employs information regarding which quantizer to use for inverse quantization of the macroblocks within the current slice. Therefore, at step 824, the quantizer used by the codec for the current slice of macroblock is determined. At step 825, a codeword representing the quantizer, SQUANT, is written into the slice header. 
     In order to facilitate our-of-order decoding, a macroblock address is employed in the video packet to identify the spatial location of the first macroblock of the slice. At step 826, the macroblock address (MBA) for the first macroblock in the current slice is determined. Then, at step 827, the MBA is written into the slice header. 
     In the foregoing specification, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.