ITU-T Recommendation H.263
Title: Video coding for low bit rate communicationDate of adoption: 02/1998
Summary
This Recommendation specifies a coded representation that can be used for compressing the moving picture component of audio-visual services at low bit rates. The basic configuration of the video source coding algorithm is based on Recommendation H.261 and is a hybrid of inter-picture prediction to utilize temporal redundancy and transform coding of the remaining signal to reduce spatial redundancy. The source coder can operate on five standardized video source formats: sub-QCIF, QCIF, CIF, 4CIF and 16CIF, and can also operate using a broad range of custom video formats.
TABLE OF CONTENTS
Page | ||
1 | Scope | 1 |
2 | References | 1 |
3 | Brief specification | 2 |
3.1 | Video input and output | 2 |
3.2 | Digital output and input | 2 |
3.3 | Sampling frequency | 2 |
3.4 | Source coding algorithm | 2 |
3.4.1 | Continuous Presence Multipoint and Video Multiplex mode | 3 |
3.4.2 | Unrestricted Motion Vector mode | 3 |
3.4.3 | Syntax-based Arithmetic Coding mode | 3 |
3.4.4 | Advanced Prediction mode | 3 |
3.4.5 | PB-frames mode | 3 |
3.4.6 | Forward Error Correction | 3 |
3.4.7 | Advanced INTRA Coding mode | 4 |
3.4.8 | Deblocking Filter mode | 4 |
3.4.9 | Slice Structured mode | 4 |
3.4.10 | Supplemental enhancement information | 4 |
3.4.11 | Improved PB-frames mode | 4 |
3.4.12 | Reference Picture Selection mode | 4 |
3.4.13 | Temporal, SNR and Spatial Scalability mode | 5 |
3.4.14 | Reference Picture Resampling mode | 5 |
3.4.15 | Reduced-Resolution Update mode | 5 |
3.4.16 | Independent Segment Decoding mode | 5 |
3.4.17 | Alternative INTER VLC mode | 5 |
3.4.18 | Modified Quantization mode | 5 |
3.5 | Bit rate | 6 |
3.6 | Buffering | 6 |
3.7 | Symmetry of transmission | 6 |
3.8 | Error handling | 6 |
3.9 | Multipoint operation | 7 |
4 | Source coder | 7 |
4.1 | Source format | 7 |
4.2 | Video source coding algorithm | 9 |
4.2.1 | GOBs, slices, macroblocks and blocks | 9 |
4.2.2 | Prediction | 11 |
4.2.3 | Motion compensation | 12 |
4.2.4 | Quantization | 12 |
4.3 | Coding control | 13 |
4.4 | Forced updating | 13 |
4.5 | Byte alignment of start codes | 13 |
5 | Syntax and semantics | 13 |
5.1 | Picture layer | 22 |
5.1.1 | Picture Start Code (PSC) (22 bits) | 22 |
5.1.2 | Temporal Reference (TR) (8 bits) | 23 |
5.1.3 | Type Information (PTYPE) (Variable Length) | 23 |
5.1.4 | Plus PTYPE (PLUSPTYPE) (Variable Length) | 24 |
5.1.5 | Custom Picture Format (CPFMT) (23 bits) | 27 |
5.1.6 | Extended Pixel Aspect Ratio (EPAR) (16 bits) | 28 |
5.1.7 | Custom Picture Clock Frequency Code (CPCFC) (8 bits) | 28 |
5.1.8 | Extended Temporal Reference (ETR) (2 bits) | 28 |
5.1.9 | Unlimited Unrestricted Motion Vectors Indicator (UUI) (Variable length) | 29 |
5.1.10 | Slice Structured Submode bits (SSS) (2 bits) | 29 |
5.1.11 | Enhancement Layer Number (ELNUM) (4 bits) | 29 |
5.1.12 | Reference Layer Number (RLNUM) (4 bits) | 29 |
5.1.13 | Reference Picture Selection Mode Flags (RPSMF) (3 bits) | 29 |
5.1.14 | Temporal Reference for Prediction Indication (TRPI) (1 bit) | 30 |
5.1.15 | Temporal Reference for Prediction (TRP) (10 bits) | 30 |
5.1.16 | Back-Channel message Indication (BCI) (Variable length) | 30 |
5.1.17 | Back-Channel Message (BCM) (Variable length) | 30 |
5.1.18 | Reference Picture Resampling Parameters (RPRP) (Variable length) | 30 |
5.1.19 | Quantizer Information (PQUANT) (5 bits) | 30 |
5.1.20 | Continuous Presence Multipoint and Video Multiplex (CPM) (1 bit) | 31 |
5.1.21 | Picture Sub-Bitstream Indicator (PSBI) (2 bits) | 31 |
5.1.22 | Temporal Reference for B-pictures in PB-frames (TRB) (3/5 bits) | 31 |
5.1.23 | Quantization information for B-pictures in PB-frames (DBQUANT) (2 bits) | 31 |
5.1.24 | Extra Insertion Information (PEI) (1 bit) | 31 |
5.1.25 | Supplemental Enhancement Information (PSUPP) (0/8/16 ... bits) | 31 |
5.1.26 | Stuffing (ESTUF) (Variable length) | 32 |
5.1.27 | End Of Sequence (EOS) (22 bits) | 32 |
5.1.28 | Stuffing (PSTUF) (Variable length) | 32 |
5.2 | Group of Blocks Layer | 32 |
5.2.1 | Stuffing (GSTUF) (Variable length) | 32 |
5.2.2 | Group of Block Start Code (GBSC) (17 bits) | 33 |
5.2.3 | Group Number (GN) (5 bits) | 33 |
5.2.4 | GOB Sub-Bitstream Indicator (GSBI) (2 bits) | 33 |
5.2.5 | GOB Frame ID (GFID) (2 bits) | 33 |
5.2.6 | Quantizer Information (GQUANT) (5 bits) | 33 |
5.3 | Macroblock layer | 33 |
5.3.1 | Coded macroblock indication (COD) (1 bit) | 34 |
5.3.2 | Macroblock type & Coded Block Pattern for Chrominance (MCBPC) (Variable length) | 34 |
5.3.3 | Macroblock mode for B-blocks (MODB) (Variable length) | 37 |
5.3.4 | Coded Block Pattern for B-blocks (CBPB) (6 bits) | 37 |
5.3.5 | Coded Block Pattern for luminance (CBPY) (Variable length) | 37 |
5.3.6 | Quantizer Information (DQUANT) (2 bits/Variable Length) | 37 |
5.3.7 | Motion Vector Data (MVD) (Variable length) | 38 |
5.3.8 | Motion Vector Data (MVD2-4) (Variable length) | 40 |
5.3.9 | Motion Vector Data for B-macroblock (MVDB) (Variable length) | 40 |
5.4 | Block layer | 40 |
5.4.1 | DC coefficient for INTRA blocks (INTRADC) (8 bits) | 41 |
5.4.2 | Transform Coefficient (TCOEF) (Variable length) | 41 |
6 | Decoding process | 44 |
6.1 | Motion compensation | 44 |
6.1.1 | Differential motion vectors | 44 |
6.1.2 | Interpolation for subpixel prediction | 46 |
6.2 | Coefficients decoding | 46 |
6.2.1 | Inverse quantization | 46 |
6.2.2 | Clipping of reconstruction levels | 46 |
6.2.3 | Zigzag positioning | 47 |
6.2.4 | Inverse transform | 47 |
6.3 | Reconstruction of blocks | 47 |
6.3.1 | Summation | 47 |
6.3.2 | Clipping | 48 |
Annex A | Inverse transform accuracy specification | 48 |
Annex B | Hypothetical Reference Decoder | 49 |
Annex C | Considerations for multipoint | 51 |
C.1 | Freeze picture request | 51 |
C.2 | Fast update request | 51 |
C.3 | Freeze picture release | 51 |
C.4 | Continuous Presence Multipoint and Video Multiplexing (CPM) | 51 |
C.4.1 | End Of Sub-Bitstream code (EOSBS) (23 bits) | 52 |
C.4.2 | Ending Sub-Bitstream Indicator (ESBI) (2 bits) | 53 |
Annex D | Unrestricted Motion Vector mode | 53 |
D.1 | Motion vectors over picture boundaries | 53 |
D.1.1 | Restrictions for motion vector values | 54 |
D.2 | Extension of the motion vector range | 54 |
Annex E | Syntax-based Arithmetic Coding mode | 56 |
E.1 | Introduction | 56 |
E.2 | Specification of SAC encoder | 57 |
E.3 | Specification of SAC decoder | 58 |
E.4 | Syntax | 58 |
E.5 | PSC_FIFO | 59 |
E.6 | Header layer symbols | 59 |
E.7 | Macroblock and Block layer symbols | 60 |
E.8 | SAC models | 61 |
Annex F | Advanced Prediction mode | 64 |
F.1 | Introduction | 64 |
F.2 | Four motion vectors per macroblock | 64 |
F.3 | Overlapped motion compensation for luminance | 65 |
Annex G | PB-frames mode | 68 |
G.1 | Introduction | 68 |
G.2 | PB-frames and INTRA blocks | 69 |
G.3 | Block layer | 69 |
G.4 | Calculation of vectors for the B-picture in a PB-frame | 69 |
G.5 | Prediction of a B-block in a PB-frame | 70 |
Annex H | Forward error correction for coded video signal | 72 |
H.1 | Introduction | 72 |
H.2 | Error correction framing | 72 |
H.3 | Error correcting code | 72 |
H.4 | Relock time for error corrector framing | 72 |
Annex I | Advanced INTRA Coding mode | 73 |
I.1 | Introduction | 73 |
I.2 | Syntax | 74 |
I.3 | Decoding process | 74 |
Annex J | Deblocking Filter mode | 80 |
J.1 | Introduction | 80 |
J.2 | Relation to UMV and AP modes (Annexes D and F) | 81 |
J.3 | Definition of the deblocking edge filter | 81 |
Annex K | Slice Structured mode | 85 |
K.1 | Introduction | 85 |
K.2 | Structure of slice layer | 86 |
K.2.1 | Stuffing (SSTUF) (Variable length) | 86 |
K.2.2 | Slice Start Code (SSC) (17 bits) | 86 |
K.2.3 | Slice Emulation Prevention Bit 1 (SEPB1) (1 bit) | 86 |
K.2.4 | Slice Sub-Bitstream Indicator (SSBI) (4 bits) | 86 |
K.2.5 | Macroblock Address (MBA) (5/6/7/9/11/12/13/14 bits) | 87 |
K.2.6 | Slice Emulation Prevention Bit 2 (SEPB2) (1 bit) | 87 |
K.2.7 | Quantizer Information (SQUANT) (5 bits) | 87 |
K.2.8 | Slice Width Indication in Macroblocks (SWI) (3/4/5/6/7 bits) | 87 |
K.2.9 | Slice Emulation Prevention Bit 3 (SEPB3) (1 bit) | 88 |
Annex L | Supplemental Enhancement Information Specification | 88 |
L.1 | Introduction | 88 |
L.2 | PSUPP format | 88 |
L.3 | Do Nothing | 89 |
L.4 | Full-Picture Freeze Request | 89 |
L.5 | Partial-Picture Freeze Request | 89 |
L.6 | Resizing Partial-Picture Freeze Request | 90 |
L.7 | Partial-Picture Freeze-Release Request | 90 |
L.8 | Full-Picture Snapshot Tag | 90 |
L.9 | Partial-Picture Snapshot Tag | 91 |
L.10 | Video Time Segment Start Tag | 91 |
L.11 | Video Time Segment End Tag | 91 |
L.12 | Progressive Refinement Segment Start Tag | 91 |
L.13 | Progressive Refinement Segment End Tag | 91 |
L.14 | Chroma Keying Information | 92 |
L.15 | Extended Function Type | 94 |
Annex M | Improved PB-frames mode | 94 |
M.1 | Introduction | 94 |
M.2 | BPB-macroblock prediction modes | 95 |
M.2.1 | Bidirectional prediction | 95 |
M.2.2 | Forward prediction | 95 |
M.2.3 | Backward prediction | 95 |
M.3 | Calculation of vectors for bidirectional prediction of a the B-macroblock | 95 |
M.4 | MODB table | 95 |
Annex N | Reference Picture Selection mode | 96 |
N.1 | Introduction | 96 |
N.2 | Video source coding algorithm | 97 |
N.3 | Channel for back-channel messages | 97 |
N.3.1 | Separate logical channel mode | 98 |
N.3.2 | Videomux mode | 98 |
N.4 | Syntax | 98 |
N.4.1 | Forward channel | 98 |
N.4.2 | Back-Channel Message (BCM) syntax | 100 |
N.5 | Decoder process | 101 |
Annex O | Temporal, SNR, and Spatial Scalability mode | 102 |
O.1 | Overview | 102 |
O.1.1 | Temporal scalability | 102 |
O.1.2 | SNR scalability | 103 |
O.1.3 | Spatial scalability | 104 |
O.1.4 | Multilayer scalability | 105 |
O.2 | Transmission order of pictures | 106 |
O.3 | Picture layer syntax | 108 |
O.4 | Macroblock layer syntax | 108 |
O.4.1 | Coded macroblock indication (COD) (1 bit) | 110 |
O.4.2 | MBTYPE/MCBPC (VLC) | 110 |
O.4.3 | Coded Block Pattern for Chrominance (CBPC) (Variable length) | 112 |
O.4.4 | Coded Block Pattern for Luminance (CBPY) (Variable length) | 112 |
O.4.5 | Quantizer Information (DQUANT) (2 bits/Variable length) | 113 |
O.4.6 | Motion vector data (MVDFW, MVDBW) (Variable length) | 113 |
O.5 | Motion vector decoding | 113 |
O.5.1 | Differential motion vectors | 113 |
O.5.2 | Motion vectors in direct mode | 113 |
O.6 | Interpolation filters | 113 |
Annex P | Reference picture resampling | 116 |
P.1 | Introduction | 116 |
P.2 | Syntax | 119 |
P.2.1 | Warping Displacement Accuracy (WDA) (2 bits) | 119 |
P.2.2 | Warping parameters (Variable length) | 119 |
P.2.3 | Fill Mode (FILL_MODE) (2 bits) | 120 |
P.2.4 | Fill Color Specification (Y_FILL, CB_EPB, CB_FILL, CR_EPB, CR_FILL) (26 bits) | 120 |
P.3 | Resampling algorithm | 121 |
P.4 | Example of implementation | 124 |
P.4.1 | Displacements of virtual points | 124 |
P.4.2 | Resampling algorithm | 124 |
P.5 | Factor-of-4 resampling | 126 |
P.5.1 | Factor-of-4 upsampling | 126 |
P.5.2 | Factor-of-4 downsampling | 128 |
Annex Q | Reduced-Resolution Update mode | 129 |
Q.1 | Introduction | 129 |
Q.2 | Decoding procedure | 130 |
Q.2.1 | Reference preparation | 131 |
Q.2.2 | Macroblock layer decoding | 131 |
Q.2.3 | Picture store | 132 |
Q.2.4 | Display | 132 |
Q.3 | Extension of referenced picture | 133 |
Q.4 | Reconstruction of motion vectors | 134 |
Q.5 | Enlarged overlapped motion compensation for luminance | 136 |
Q.6 | Upsampling of the reduced-resolution reconstructed prediction error | 138 |
Q.6.1 | Upsampling procedure for the pixels inside a 16 × 16 reconstructed prediction error block | 140 |
Q.6.2 | Upsampling procdedure for the pixels at the boundary of 16 × 16 reconstructed prediction error block | 141 |
Q.7 | Block boundary filter | 141 |
Q.7.1 | Definition of the default block boundary filter | 142 |
Q.7.2 | Definition of the block boundary filter when Deblocking Filter mode is used | 142 |
Annex R | Independent Segment Decoding mode | 143 |
R.1 | Introduction | 143 |
R.2 | Mode operation | 143 |
R.3 | Constraints on usage | 144 |
R.3.1 | Constraint on segment shapes | 144 |
R.3.2 | Constraint on changes of segment shapes | 144 |
Annex S | Alternative INTER VLC mode | 145 |
S.1 | Introduction | 145 |
S.2 | Alternative INTER VLC for coefficients | 145 |
S.2.1 | Encoder action | 145 |
S.2.2 | Decoder action | 145 |
S.3 | Alternative INTER VLC for CBPY | 146 |
Annex T | Modified Quantization mode | 146 |
T.1 | Introduction | 146 |
T.2 | Modified DQUANT Update | 146 |
T.2.1 | Small-step QUANT alteration | 146 |
T.2.2 | Arbitrary QUANT selection | 147 |
T.3 | Altered quantization step size for chrominance coefficients | 147 |
T.4 | Modified coefficient range | 148 |
T.5 | Usage restrictions | 148 |
Appendix I | Error tracking | 149 |
I.1 | Introduction | 149 |
I.2 | Error tracking | 149 |
Appendix II | Recommended Optional Enhancement | 150 |
II.1 | Introduction | 150 |
II.2 | Levels of preferred mode support | 151 |
II.2.1 | Level 1 preferred modes | 151 |
II.2.2 | Level 2 preferred modes | 152 |
II.2.3 | Level 3 preferred modes | 152 |
II.3 | Picture formats and picture clock frequencies | 153 |