H.261 is video coding standard by the ITU. It was designed for data rates which are multiples of 64Kbit/s, and is sometimes called p x 64Kbit/s (p is in the range 1-30). These data rates suit ISDN lines, for which this video codec was originally designed for. H.261 transport video stream using the real-time transport protocol, RTP, with any of the underlying protocols that carry RTP.
The coding algorithm is a hybrid of inter-picture prediction, transform coding, and motion compensation. The data rate of the coding algorithm was designed to be able to be set to between 40 Kbits/s and 2 Mbits/s. INTRA coding where blocks of 8x8 pixels each are encoded only with reference to themselves and are sent directly to the block transformation process. On the other hand INTER coding frames are encoded with respect to another reference frame. The inter-picture prediction removes temporal redundancy. The transform coding removes the spatial redundancy. Motion vectors are used to help the codec compensate for motion. To remove any further redundancy in the transmitted bitstream, variable length coding is used.
H261 supports motion compensation in the encoder as an option. In motion compensation a search area is constructed in the previous (recovered) frame to determine the best reference macroblock.
H261 supports two image resolutions, QCIF (Quarter Common Interchange format) which is (144x176 pixels) and CIF (Common Interchange format) which is(288x352).
The video multiplexer structures the compressed data into a hierarchical bitstream that can be universally interpreted. The hierarchy has four layers:
- Picture layer: corresponds to one video picture (frame)
- Group of blocks: corresponds to 1/12 of CIF pictures or 1/3 of QCIF
- Macroblocks : corresponds to 16x16 pixels of luminance and the two spatially corresponding 8x8 chrominance components.
- Blocks: corresponds to 8x8 pixels
Protocol Structure
| 3 bits | 6 bits | 7 bits | 8 bits | 12 bits | 17 bits | 22 bits | 27 bits | 32 bits |
| SBIT | EBIT | I | V | GOBN | MBAP | QUANT | HMVD | VMVD |
- SBIT - Start bit. Number of most significant bits that are to be ignored in the first data octet.
- EBIT - End bit. Number of least significant bits that are to be ignored in the last data octet.
- I - INTRA-frame encoded data field. Set to 1 if this stream contains only INTRA-frame coded blocks and to 0 if this stream may or may not contain INTRA-frame coded blocks.
- V - Motion Vector flag. Set to 0 if motion vectors are not used in this stream and to 1 if motion vectors may or may not be used in this stream.
- GOBN - GOB number. Encodes the GOB number in effect at the start of the packet. Set to 0 if the packet begins with a GOB header.
- MBAP - Macroblock address predictor. Encodes the macroblock address predictor (i.e., the last MBA encoded in the previous packet). This predictor ranges from 0-32 (to predict the valid MBAs 1-33), but because the bit stream cannot be fragmented between a GOB header and MB 1, the predictor at the start of the packet can never be 0.
- QUANT - Quantizer field. Shows the Quantizer value (MQUANT or GQUANT) in effect prior to the start of this packet. Set to 0 if the packet begins with a GOB header.
- HMVD - Horizontal motion vector data field. Represents the reference horizontal motion vector data (MVD). Set to 0 if V flag is 0 or if the packet begins with a GOB header, or when the MTYPE of the last MB encoded in the previous packet was not MC.
- VMVD - Vertical motion vector data (VMVD). Reference vertical motion vector data (MVD). Set to 0 if V flag is 0 or if the packet begins with a GOB header, or when the MTYPE of the last MB encoded in the previous packet was not MC.
Related protocols: RTSP, RTP, RTCP, H.323, H.245, H.263
Sponsor Source: H.261 is an ITU-T (http://www.itu.int/ITU-T/ ) standard.
Reference:
http://www.javvin.com/protocol/rfc2032.pdf: RTP Payload Format for H.261 Video Streams
http://www.h323forum.org/papers/: H.323 papers and documents
