Title: MPEG Video (Part 2)
1MPEG Video (Part 2)
2MPEG Encoding Revisit
- Overall MPEG bitstream organization.
- I-Frames
- Examples of many encoding techniques
- Subsampling (chrominance planes)
- Transform Coding (DCT, zig-zag)
- Run-length Encoding (AC coeffs)
- Predictive Encoding (DC coeffs)
- Entropy Encoding (Huffman encoding)
- Quantization (All coefficients)
3P and B Frame Encoding
- P and B frames
- Motion compensation.
- Search techniques
- The problem with error measurements
- Skipped macroblocks
- Quantization control
- Variable bitrate vs. Constant bitrate
- DCT Artifacts
- Spider noise
- Blockiness
4DCT Artifacts
- Spiders
- High frequency noise.
- Shows up most with diagonal edges.
- Blockiness
- Quantization noise in lower frequencies between
macroblocks creates an artificial edge. - Shows up a lot with smooth gradients.
5P-Frames
- Two types of macroblocks in P-Frames
- I-Macroblocks.
- Just like macroblocks in a I-Frame
- DC term is differentially encoded from DC
predictor - AC terms
- RLEd as (run,value) pairs. Huffman encoded.
- P-Macroblocks
6P-Macroblocks
Macroblock Type determines if Q Scale, Motion
Vector, or Block Pattern exist. One or all of the
blocks may be absent in a P-Macroblock.
7Address Increment
- Each macroblock has an address.
- MB_WIDTH width of luminance / 16
- MB_ROW row of upper left pixel / 16
- MB_COL col. of upper left pixel / 16
- MB_ADDR MB_ROW MB_WIDTH MB_COL
- Decoder maintains PREV_MBADDR.
- MB address increment added to PREV_MBADDR
provides current macroblock address.
8MB Type
- Huffman coded.
- 7 possible codes (1 - 6 bits)
- Determine the following
- Intra or non-intra.
- Q scale specified or not.
- Motion vector exists or not.
- Block pattern exists or not.
- Not all combinations are possible.
- Not all possible combinations are feasible.
9Quantization Scale
- 5 bits.
- Zero is illegal.
- Encoded as 1-31 which results in q-scale values
of (2-62). - Odd values impossible to encode.
- Decoder maintains current q-scale.
- If not specified, current q-scale used.
- If specified, current q-scale replaced.
10Motion Vector
- Two components
- Horizontal and vertical offsets.
- Offset is from upper left pixel of macroblock.
- Positive values indicate right and down.
- Negative values indicate left and up.
- Offsets are specified in half pixels.
- Motion vector is used to define a predictive base
for the current macroblock from the reference
picture.
11Motion Vector Illustrated
P-Frame
Previously Decoded I- or P- Frame
Prediction base does not have to be macroblock
aligned. If predictive base is half-pixel
aligned, bilinear interpolation is used. Whatever
luminance pixels are picked out, corresponding
chrominance pixels used to form chrominance
prediction.
12P-Frame Encoding
13Motion Vector Encoding
- If no motion vector is present, then motion
vector is understood to be (0,0). - Horiz. component followed by vertical.
- Decoder maintains motion vector predictor.
- Set to 0,0 at beginning of picture or slice or
whenever an I-macroblock is encountered. - Difference between predictor and value is Huffman
encoded.
14Predictive Base
- P-Macroblocks always specify a predictive base
- Either motion vector picks out an area, or
- No motion vector implicitly implies 0,0 (i.e.,
predictive base is same macroblock in reference
frame.)
15Block Pattern
- The goal of motion compensation is to find
predictive base that matches most closely with
macroblock. - If match is really good, then no appreciable
difference will need to be encoded at all. - Block pattern indicates which blocks have enough
error to warrant coding. - Absence of block pattern indicates no blocks
needed coding.
16Block Pattern Encoding
- Huffman code
- 3-9 bits
- Encodes values 1-63
- 0 not needed because then pattern wouldnt be
encoded. - Each bit in the block pattern value corresponds
to a particular block
5
4
3
2
1
0
V
U
Lower right luminance
Lower left luminance
Upper right luminance
Upper left luminance
17Block
- Difference between pixels in prediction and
macroblock is encoded as block - 9-bit input values
- Still produces 12-bit coefficients
- Sometimes called error blocks.
18P-Frame Review
- Macroblocks are either I-macroblocks or
P-macroblocks. - I-macroblocks just like macroblocks in
I-frame. - P-macroblocks define predictive base and encode
the difference.
19Skipped Macroblocks
- If P-macroblock has (0,0) motion vector and no
appreciable difference to encode, then can be
skipped altogether. - Skipped macroblock detected when address
increment for next coded macroblock is detected.
20Decoder State Updates
- DC predictors are reset whenever a
P-macroblock or skipped macroblock is
encountered. - Motion vector predictors reset whenever
I-macroblock is encountered.
21B-Frames
- B-frames have 4 macroblock types
- I-macroblocks
- P-macroblocks
- Predictive base specified from previous reference
frame. - B-macroblocks
- Predictve base specified from subsequent
reference frame. - Bi-macroblocks.
- Predictive base specified from both reference
frames.
22B-Frame Macroblock Structure
Macroblock Type determines if Q Scale, Motion
Vectors, or Block Pattern exist. One or all of
the blocks may be absent in a P-, B- or
Bi-macroblock.
23Two Motion Vectors
- Separate predictors are maintained for both
components of both the forward and backward
motion vectors. - Reset whenever it doesnt get used.
- If both are specified, then predictive base is
formed by bilinear interpolation of both
prediction areas. - Error encoded in blocks as per P-macroblocks.
24(No Transcript)
25Putting it all together
Input Buffer
VLC Decoder
ZZ and DeQuant
IDCT
Forward MC
Prev. Frame Store
Adder
Display
Bi- directional MC
Future Frame Store
Backward MC
26Motion Compensation
- Provides most of MPEGs compression.
- Relies on temporal coherence.
- Finding a good motion vector essentially a search
problem. - Evaluating how goodness of a motion vector can be
a bit tricky. - MC is what makes MPEG asymmetric.
- Harder to encode than to decode.
27Error Measurements
- Regardless of search algorithm, need to determine
which motion vector is best. - Simple measures
- Mean Squared Error
- Mean Absolute Error
- Minimum Difference Variance
- Fundamental problem is no good correlation
between any simple metric and perceptual quality.
28VBR vs. CBR
- Two ways to handle bitrate
- Variable Bit Rate (VBR)
- Allows compressed bitrate to vary
- Constant Bit Rate (CBR)
- Bitrate constant over some averaging window.
- MPEG buffer model.
- Optional (dont have to use it).
- Provides in the sequence header parameters to a
buffer model that can describe bitrate behavior.
29VBR Q-scale adjustments
- In general, VBR used to maintain quality.
- Q scale is adjusted to provide maximum
compression given quality limit. - Need some metric for quality.
- Same issue for judging perceptual quality crop up
here. - Common solution q scale statically set for I-,
P-, and B-frames. - A variation on this is differentiating among
macroblock types.
30CBR Q-scale adjustments
- To achieve CBR, q-scale used to control bitrate.
- Higher q-scale provides better compression at the
expense of quality. - Lower q-scale provides better quality at the
expense of compression. - Algorithms for controlling how q-scale is
adjusted can get pretty complicated. - Common solution is to have target I, P, and B
frame sizes and then adjust q-scale as
macroblocks are encoded to hit the target.