Contents
.......................................... ... 1
1.1
1.2 V.................................. 2
1.3
2 Digital Video. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1 Introduction ............................................. 5
2.2 Concepts, Capture and Display ............................... 5
2.2.1 The Video Image .... . . .............................. 5
2.2.2 Digital Video ....... . .......................... ..... 5
2.2.3 Video Capture ...... . ............................... 7
2.2.4 Sampling .......................................... 7
2.2.5 Display ........ . .................................. 9
2.3 Colour Spaces .......................................... 10
2.3.1 RGB ............................................ 11
2.3.2 YCrCb .......................................... 12
2.4 The Human Visual System ................................. 16
2.5 Video Quality............. . ............................. 16
2.5.1 Subjective Quality Measurement ........................ 17
2.5.2 Objective Quality Measurement ......................... 19
2.6 Standards for Representing Digital Video ....................... 23
2.7 Applications.... . ....................................... 24
2.7.1 Platforms. . ....................................... 25
2.8 ............................................ 25
.............................................. 26
3 Image and Video Compression Fundamentals . . . . . . . . . . . . . . . 27
3.1 Introduction ............................................ 27
3.2 Image and Video Compression............................... 28
3.2.1 DPCM (Differential Pulse Code Modulation)................ 30
3.2.2 Transform Coding .................................. 31
3.2.3 Motion-compensated Prediction ......................... 31
3.2.4 Model-based Coding................................. 32
3.3 Image CODEC.......................................... 33
3.3.1 Transform Coding .................................. 33
3.3.2 Quantisation....................................... 35
vi CONTENTS
3.3.3 Entropy Coding .................................... 37
3.3.
4 Decoding. ........................................ 40
3.
4 Video CODEC .......................................... 41
3.
4 .1 Frame Differencing.................................. 42
3.
4 .2 Motion-compensated Prediction ......................... 43
3.
4 .3 Transform, Quantisation and Entropy Encoding .............. 45
3.
4.4 Decoding...................... . .................. 45
3. 45
4 Video Coding Standards: JPEG and MPEG................. 47
4 .1 Introduction ............................................ 47
4 .2 The International Standards Bodies............................ 47
4.2.1 The Expert Groups .................. . ............... 48
4 .2.2 The Standardisation Process ........................... 50
4 .2.3 Understanding and Using the Standards ................... 50
4 .3 JPEG (Joint Photographic Experts Group) ....................... 51
4 .3.1 JPEG ........................................... 51
4 .3.2 Motion JPEG ...................................... 56
4 .3.3 JPEG-2000 ....................................... 56
44. MPEG (Moving Picture Experts Group) ........................ 58
4.4.1 MPEG-1 ......................................... 58
4 .4 .2 MPEG-2 ......................................... 6 4
4.4 .3 MPEG-4 ......................................... 67
4 .5 .......................................... 76
............................................... 76
5 Video Coding Standards: H.261, H.263 and H.26L . . . . . . . . . . . 79
5.1 Introduction ............................................ 79
5.2 H.26 1 ................................................ 80
5.3 H.26 3 ................................................ 80
5.3.1 Features.......................................... 81
5.4 The H.26 3 Optional Modes/H.26 3+........................... 81
5.
4 .1 H.26 3 Profiles ............................... . ..... 86
5.5 H.26L................................................ 87
5.6 Performance of the Video Coding Standards ..................... 90
5.7 Summary.............................................. 91
References........................................... . ..... 92
6 Motion Estimation and Compensation . . . . . . . . . . . . . . . . . . . . . . 93
6.1 Introduction ...... ...................................... 93
6.2 Motion Estimation and Compensation.......................... 94
6.2.1 Requirements for Motion Estimation and Compensation ........ 94
6.2.2 Block Matching .............................. . ..... 95
6.2.3 Minimising Difference Energy.......................... 97
6.3 Full Search Motion Estimation. .......... . . . . . .... .... . ...... 99
6.
4 Fast Search ............. . ............................. 10 2
4 .1 Three-Step Search (TSS)............................. 10 2
6.
CONTENTS vii
6.4.2 Logarithmic Search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.4.3 Cross Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.4.4 One-at-a-Time Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.4.5 Nearest Neighbours Search . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.4.6 Hierarchical Search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.5 Comparison of Motion Estimation Algorithms . . . . . . . . . . . . . . . . . . . 109
6.6 Sub-Pixel Motion Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.7 Choice of Reference Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.7.1 Forward Prediction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.7.2 Backwards Prediction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.7.3 Bidirectional Prediction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.7.4 Multiple Reference Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.8 Enhancements to the Motion Model . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.8.1 Vectors That can Point Outside the Reference Picture. . . . . . . . . 115
6.8.2 Variable Block Sizes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.8.3 Overlapped Block Motion Compensation (OBMC). . . . . . . . . . . 116
6.8.4 Complex Motion Models. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
6.9 I mplementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.9.1 Software Implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.9.2 Hardware Implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
125
125
7 Transform Coding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7. l Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.2 Discrete Cosine Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Discrete Wavelet Transform. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
7.4 Fast
. Algorithms for the DCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
7.4.1 Separable Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
7.4.2 Flowgraph Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
7.4.3 Distributed Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
7.4.4 Other DCT Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
7.5 Implementing the DCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
7.5.1 Software DCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
7.5.2 Hardware DCT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
7.6 Quantisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
7.6.1 Types of Quantiser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
7.6.2 Quantiser Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
7.6.3 Quantiser Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
7.6.4 Vector Quantisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
160
161
8 Entropy Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2 Data Symbols. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
8.2.1 Run-Level Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
viii CONTENTS
8.2.2 Other Symbols . . . . . . . . . . . . . . .. ... .. .. ... ........ . 167
8.3 Huffman Coding. . . . . . . . . . . . . . . . . . . .. .... . .. ........... . 169
8.3.1 'True' Huffman Coding. . . . . . . . . .. .... . .. ........... . 169
8.3.2 Modified Huffman Coding. . . . . . . .. . .... .. ........... . 174
8.3.3 Table Design . . . . . . . . . . . . . . . . .. ..... .. ........... . 174
8.3.4 Entropy Coding Example . . . . . . . .. ..... .. .. ........ . 177
8.3.5 Variable Length Encoder Design . . .. ..... .. .... . ... ... . 180
8.3.6 Variable Length Decoder Design . . .. ..... .. .......... . . 184
8.3.7 Dealing with Errors . . . . . . . . . . . .. ..... .. .. ..... .... . 186
8.4 Arithmetic Coding . . . . . . . . . . . . . . . . . .. ..... .. .... ....... . 188
8.4.1 Implementation Issues. . . . . . . . . . .. ..... .. ... .... .... . 191
. 192
. 193
9 Pre- and Post-processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
9.2 Pre-filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
9.2.1 Camera Noise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
9.2.2 Camera Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
9 .3 Post-filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
9.3. l Image Distortion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
9.3.2 De-blocking Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
9.3.3 De-ringing Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
9.3.4 Error Concealment Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
208
209
10 Rate, Distortion and Complexity . . . . . . . . . . . . . . . . . . . . . . . . . . 211
10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
10.2 Bit Rate and Distortion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
10.2. l The Importance of Rate Control . . . . . . . . . . . . . . . . . . . . . . 212
10.2.2 Rate-Distortion Performance . . . . . . . . . . . . . . . . . . . . . . . . 215
10.2.3 The Rate-Distortion Problem . . . . . . . . . . . . . . . . . . . . . . . . 217
10.2.4 Practical Rate Control Methods . . . . . . . . . . . . . . . . . . . . . . 220
10.3 Computational Complexity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
10.3.l Computational Complexity and Video Quality . . . . . . . . . . . 226
10.3.2 Variable
. Complexity Algorithms. . . . . . . . . . . . . . . . . . . . . . 228
10.3.3 Complexity-Rate Control. . . . . . . . . . . . . . . . . . . . . . . . . . . 231
1 . 232
232
11 Transmission of Coded Video. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
11 .1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ... . ....... . 235
I 1.2 Quality of Service Requirements and Constraints . . .. ... . .. . . .. . . 235
11.2.1 QoS Requirements for Coded Video . . . . . .. ... . ....... . 235
11.2.2 Practical QoS Performance . . . . . . . . . . . .. . .. . ....... . 239
11.2.3 Effect of QoS Constraints on Coded Video .. ... . ....... . 24 l
CONTENTS ix
11.3 Design for Optimum QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
11.3.1 Bit Rate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
11.3.2 Error Resilience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
11.3.3 Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
11.4 Transmission Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
11.4.1 Digital Television Broadcasting: MPEG-2 Systemsffransport . 249
11.4.2 Packet Video: H.323 Multimedia Conferencing . . . . . . . . . . . 252
1 254
255
12 Platforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
12.2 General-purpose Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
12.2.1 Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
12.2.2 Multimedia Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
12.3 Digital Signal Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
12.4 Embedded Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
12.5 Media Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
12.6 Video Signal Processors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
12.7 Custom Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
12.8 Co-processors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
12.9 269
.... 270
13 Video CODEC Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
13.2 Video CODEC I nterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
13.2.1 Video I n/Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
13.2.2 Coded Data In/Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
13.2.3 Control Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
13.2.4 Status Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
13.3 Design of a Software CODEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
13.3.1 Design Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
13.3.2 Specification and Partitioning. . . . . . . . . . . . . . . . . . . . . . . . 279
13.3.3 Designing the Functional Blocks . . . . . . . . . . . . . . . . . . . . . 282
13.3.4 Improving Performance. . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
13.3.5 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
13.4 Design of a Hardware CODEC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
13.4.1 Design Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
13.4.2 Specification and Partitioning. . . . . . . . . . . . . . . . . . . . . . . . 285
13.4.3 Designing the Functional Blocks . . . . . . . . . . . . . . . . . . . . . 286
13.4.4 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
1 287
287
14 Future Developments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
14.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
X CONTENTS
14.2 Standards Evolution 289
14.3 Video Coding Research .................................. 290
14.4 Platform Trends ....................................... 290
14.5 Application Trends ..................................... 291
14.6 Video CODEC Design................................... 292
References................................................ 293