I263

From MultimediaWiki
Jump to navigation Jump to search
  • FOURCCs: I263
  • Company: Intel

General description

This codec is based on early drafts of the H.263 standard specification. It supports the following modes: Unrestricted Motion Vector mode, Advanced Prediction mode, PB frames mode, Improved PB frames mode (old version!) and Deblocking Filter mode.

Picture Layer

Data for each picture consists of a picture header followed by data for Group of Blocks, eventually followed by an end-of-sequence code and stuffing bits.

Picture Header

The Picture Header of the I.263 has the following format:

  • Picture Start Code (PSC) (22 bits)

PSC is a word of 22 bits. Its value is 0000 0000 0000 0000 1 00000. All picture start codes shall be byte aligned.

  • Temporal Reference (TR) (8 bits)

An 8-bit number which can have 256 possible values. It is formed by incrementing its value in the previously transmitted picture header by one plus the number of non-transmitted pictures (at 29.97 Hz) since the previously transmitted one. The arithmetic is performed with only the eight LSBs. In the optional PB-frames mode, TR only addresses P-pictures; for the temporal reference for B-pictures refer to the field "Temporal Reference for B-pictures (TRB)" below.

Type Information (PTYPE)

  • Marker (1 bit)

This bit should be always set to "1" in order to avoid start code emulation.

  • H.263 ID (1 bit)

This bit should be always set to "0" for distinction with H.261.

  • Split screen indicator (1 bit)

This indicator is not used in the I.263. Just skip this bit.

  • Document camera indicator (1 bit)

This indicator is not used in the I.263. Just skip this bit.

  • Freeze Picture Release (1 bit)

Unused. Just skip this bit.

  • Source Format (3 bits)

Indicates the source format of the picture. Values "000" and "110" are forbidden. "111" indicates the extended PTYPE (see below).

  • Picture type (1 bit)

Picture Coding Type: “0” INTRA (I-picture), “1” INTER (P-picture).

  • Unrestricted Motion Vector mode indicator (1 bit)

Unrestricted Motion Vector mode: “0” off, “1” on.

  • Syntax-based Arithmetic Coding mode (SAC) indicator (1 bit)

Syntax-based Arithmetic Coding mode is not supported in the I.263. Just skip this bit.

  • Advanced Prediction mode indicator (1 bit)

Advanced Prediction mode: “0” off, “1” on.

  • PB-frames mode indicator (1 bit)

PB-frames mode: “0” normal I- or P-picture, “1” PB-frame. If the Picture Type bit (see above) is set to “0”, this bit shall be set to “0” as well.


Extended PTYPE (EPTYPE):

These fields are present only if the Source Format field (see above) indicates the extended PTYPE.

  • Source Format (3 bits)

Values "000" and "111" are forbidden. "110" indicates that the custom source format (CSFMT) extension is present (see below).

  • Unknown flags (2 bits)

These bits should be always set to "0". They have no meaning. Just skip them.

  • Deblocking Filter mode indicator (1 bit)

Deblocking Filter mode: “0” off, “1” on.

  • Unknown flag (1 bit)

This bit should be always set to "0". It has no meaning. Just skip it.

  • Improved PB-frames mode indicator (1 bit)

Improved PB-frames mode: “0” off, “1” on. For a description of this mode see the Annex M below.

  • Unknown flags (5 bits)

These bits should be always set to "0". They have no meaning. Just skip them.

  • Unknown Marker (5 bits)

The value of this bits should be always set to "00001".


Custom source format (CSFMT) extension

This extension is present only if indicated by the Source Format field of the Extended PTYPE (EPTYPE) (see above).

  • Pixel Aspect Ratio code (4 bits)

Aspect ratios: "0001" - 1:1, "0010" - 12:11 (CIF 4:3), "0011" - 10:11 (525-type 4:3), "1111" - extended PAR (see below; probably never used because of an internal bug in the I.263 driver). Other values are forbidden.

  • Picture width (9 bits)

The width of the encoded picture = (value of this field + 1) * 4

  • Marker (1 bit)

Equal to "1" to prevent start code emulation.

  • Picture height (9 bits)

The height of the encoded picture = (value of this field + 1) * 4

Extended Pixel Aspect Ratio (EPAR)

The following bits are present if CSFMT extension (see above) is present and extended PAR is indicated therein. When present, EPAR consists of:

  • Pixel Aspect ratio width (8 bits)

The natural binary representation of the PAR width; "0" is forbidden.

  • Pixel Aspect ratio height (8 bits)

The natural binary representation of the PAR height; "0" is forbidden.


  • Quantizer Information (PQUANT) (5 bits)

A fixed length codeword of 5 bits which indicates the quantizer QUANT to be used for the picture until updated by any subsequent GQUANT or DQUANT. The codewords are the natural binary representations of the values of QUANT which, being half the step sizes, range from 1 to 31.

  • Continuous Presence Multipoint (CPM) (1 bit)

A codeword of 1 bit that signals the use of the optional Continuous Presence Multipoint mode (CPM); “0” is off, “1” is on. This mode is not supported in the I.263 and should be off.

  • Temporal Reference for B-pictures (TRB) (3 bits)

TRB is present if the PB-frame mode is on (see above) and indicates the number of non-transmitted pictures (at 29.97 Hz) since the last P- or I-picture and before the B-picture. The codeword is the natural binary representation of the number of non-transmitted pictures plus one. The maximum number of non-transmitted pictures is 6.

  • Quantization information for B-pictures (DBQUANT) (2 bits)

DBQUANT is present if the PB-frame mode is on (see above). In the decoding process a quantization parameter QUANT is obtained for each macroblock. With PB-frames QUANT is used for the P-block, while for the B-block a different quantization parameter BQUANT is used. QUANT ranges from 1 to 31.

  • Extra Insertion Information (PEI) (1 bit)

A bit which when set to "1" signals the presence of the following optional data field. This data field has no meaning in the I.263 and should be ignored.

Group of Blocks Layer

Data for each Group of Blocks (GOB) consists of a GOB header followed by data for macroblocks. Each GOB contains one row of macroblocks. For the first GOB in each picture (with number 0), no GOB header shall be transmitted. For all other GOBs, the GOB header may be empty, depending on the encoder strategy.

GOB Header

This header may be present or not. For the first GOB in each picture (with number 0), no GOB header shall be transmitted. The decoder must search the 256 input bits for the GOB start code. The GOB Header has the following format:

  • Group of Block Start Code (GBSC) (17 bits)

A word of 17 bits. Its value is 0000 0000 0000 0000 1. GOB start codes may be byte aligned.

  • Group Number (GN) (5 bits)

A fixed length codeword of 5 bits. The bits are the binary representation of the number of the Group of Blocks. For the GOB with number 0, the GOB header including GSTUF, GBSC, GN, GFID and GQUANT is empty; group number 0 is used in the PSC.

  • GOB Frame ID (GFID) (2 bits)

A fixed length codeword of 2 bits. GFID shall have the same value in every GOB header of a given picture. Moreover, if PTYPE as indicated in a picture header is the same as for the previous transmitted picture, GFID shall 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 GFID in that picture shall differ from the value in the previous picture.

  • Quantizer Information (GQUANT) (5 bits)

A fixed length codeword of 5 bits which indicates the quantizer QUANT to be used for the remaining part of the picture until updated by any subsequent GQUANT or DQUANT. The codewords are the natural binary representations of the values of QUANT which, being half the step sizes, range from 1 to 31.

Macroblock Layer

Data for each macroblock consists of a macroblock header followed by data for blocks.

Macroblock Header

The Macroblock Header has the following format:

  • Coded macroblock indication (COD) (1 bit)

A bit which when set to "0" signals that the macroblock is coded. If set to "1", no further information is transmitted for this macroblock; in that case the decoder shall treat the macroblock as an INTER macroblock with motion vector for the whole block equal to zero and with no coefficient data. COD is only present in pictures for which PTYPE indicates ‘INTER’, for each macroblock in these pictures.

  • Macroblock type & Coded block pattern for chrominance (MCBPC)

A variable length codeword giving information about the macroblock type and the coded block pattern for chrominance. For a description of codewords for this field please refer the section 5.3.2 of the H.263 standard.

  • Macroblock mode for B-blocks (MODB) (Variable length)

MODB is present for MB-type 0-4 if the PB frames mode is on and is a variable length codeword indicating whether CBPB is present (indicates that B-coefficients are transmitted for this macroblock) and/or MVDB is present. The the codewords for MODB are defined as follows (“x” means that the item is present in the macroblock):

number of bits code CPBP MVDB
1 0
2 10 x
2 11 x x

MODB is coded differently for Improved PB-frames, as specified in Annex M (see below).

  • Coded Block Pattern for B-blocks (CBPB) (6 bits)

CBPB is only present in PB-frames mode if indicated by MODB. CBPBN = 1 if any coefficient is present for B-block N, else 0, for each bit CBPBN in the coded block pattern.

  • Coded block pattern for luminance (CBPY) (Variable length)

Variable length codeword giving a pattern number signifying those Y blocks in the macroblock for which at least one non-INTRADC transform coefficient is transmitted. Please refer the section 5.3.5 of the H.263 standard for a description of this field.

  • Quantizer Information (DQUANT) (2 bits)

A two bit code to define change in QUANT. Please refer the section 5.3.6 of the H.263 standard for a description of this field.

  • Motion vector data (MVD) (Variable length)

MVD is included for all INTER macroblocks (in PB-frames mode also for INTRA macroblocks) and consists of a variable length codeword for the horizontal component followed by a variable length codeword for the vertical component. Please refer the section 5.3.7 of the H.263 standard for a description of codewords for this field.

  • Motion vector data (MVD 2-4) (Variable length)

The three codewords MVD 2-4 are included if indicated by PTYPE and by MCBPC, and consist each of a variable length codeword for the horizontal component followed by a variable length codeword for the vertical component of each vector. MVD 2-4 are only present when in Advanced Prediction mode (refer to Annex F). For a description of codewords for this field see the section 5.3.8 of the H.263 standard.

  • Motion vector data for B-macroblock (MVDB) (Variable length)

MVDB is only present in PB-frames mode if indicated by MODB and consists of a variable length codeword for the horizontal component followed by a variable length codeword for the vertical component of each vector. Please refer the section 5.3.9 of the H.263 standard for a description of codewords for this field.

Block Layer

Please refer to the section 5.4 of the H.263 standard for a description.

Decoding Process

Please refer to the section 6 of the H.263 standard for a description.

Annex D - Unrestricted motion Vector mode

Please refer to the Annex D of the H.263 standard for a description.

Annex F - Advanced Prediction mode

Please refer to the Annex F of the H.263 standard for a description.

Annex G - PB-frames mode

Please refer to the Annex G of the H.263 standard for a description.

Annex J - Deblocking Filter mode

  • J.1 Introduction

This annex describes the use of an block edge filter within the coding loop. The main purpose of the block edge filter is to reduce blocking artifacts. The filtering is performed on 8x8 block edges and assumes that 8x8 DCT is used and that motion vectors may have either 8x8 or 16x16 resolution. The use of this mode is indicated in the picture header. In case PB-frame the present option applies for B-frames as well as for the P- and I-frames.

  • J.2 Definition of the edge filter

The filter operations are performed along 8x8 block edges at the encoder as well as on the decoder side. Filtering is performed on the complete reconstructed image data but before the clipping described in paragraph 6.3.2 and before storing the data in the frame store for future prediction. No filtering is performed on frame and slice edges. Luminance as well as chrominance data is filtered.

If A,B,C and D are four pixel values on a line - horizontal or vertical - of the reconstructed picture, and A and B belong to one block called block1 whereas C and D belong to a neighboring block called block 2 which is to the right or below of block 1. Figure 1 shows examples for the position of these pixels.

IMAGE!!!! Can everyone show me how to add an image?

One of the following conditions must be fulfilled in order to turn the filter on for a particular edge:

- block1 belongs to a coded macro block (COD==0 || MB-type == INTRA ) or - block2 belongs to a coded macro block (COD==0 || MB-type == INTRA )

B shall be replaced by B1 and C shall be replaced by C1 where:

B1	=	B + d1
C1	=	C - d1
d1	=	SIGN(d) * ( MAX( 0,  |d|-MAX( 0, 2*|d| - QP)  )
  d	=	(3A-8B+8C-3D) / 16

QP = quantization parameter of block 2.

Figure 2 shows how the value of d is modified into d1 in order to make sure, that only edges are filtered that assumable represent an artifact and not a natural edge. Resulting from this modification, only those pixels on an edge are filtered that present a step in luminance, that is smaller than QP.

The definition of d1 may seem a little complicated, but it guarantees, that small mismatches will remain small and will not build up during the sequence. This could happen with a condition that simply switches the filter on or off, because a mismatch of only _1 could then cause the filter to be switched on or off unexpectedly resulting in large differences between coder and decoder.

Due to rounding effects, the order of edges where filtering is performed must be specified. Filtering along horizontal edges shall be performed before filtering along vertical edges.

Annex M - Improved PB-frames mode