PARALLEL IMPLEMENTATION OF H.264
Steven Wirsz
D:\Dropbox\CBT\Comp 620\project\flv vs mp4.jpg
D:\Dropbox\CBT\Comp 620\project\HEVC-Encode.jpg
D:\Dropbox\CBT\Comp 620\project\frames.gif
D:\Dropbox\CBT\Comp 620\project\encoders.png
D:\Dropbox\CBT\Comp 620\project\encooders.png
D:\Dropbox\CBT\Comp 620\project\jpeg process.gif
D:\Dropbox\CBT\Comp 620\project\jpeg color comp.gif
VIDEO DECODING CPU USAGE
D:\Dropbox\CBT\Comp 620\project\cpu use 1.gif
MOTION ESTIMATION
D:\Dropbox\CBT\Comp 620\project\me.gif
INTERFACE
D:\Dropbox\CBT\Comp 620\project\ME block matching.jpg
INTERFACE
D:\Dropbox\CBT\Comp 620\project\ME example.jpg
D:\Dropbox\CBT\Comp 620\project\ME full search.jpg
D:\Dropbox\CBT\Comp 620\project\ME Log Search.jpg
D:\Dropbox\CBT\Comp 620\project\ME diamond search.jpg
DECODING CPU USAGE
D:\Dropbox\CBT\Comp 620\project\cpu-mem use.gif
ENCODING CPU USAGE
D:\Dropbox\CBT\Comp 620\project\parallel.jpg
PARALLEL TASKS
D:\Dropbox\CBT\Comp 620\project\cpu pipelining.gif
TASKS VS SLICES
D:\Dropbox\CBT\Comp 620\project\parallel types.jpg
PARALLELISM
Task Level or Data Level?
1.Tasks
2.Groups of Pictures
3.B-frames
4.Slices of each image
5.Macro-Blocks / Motion Estimation
1. TASKS
D:\Dropbox\CBT\Comp 620\project\parallel types.jpg
PARALLEL TASKS
D:\Dropbox\CBT\Comp 620\project\cpu pipelining.gif
Task Level Decomposition
Downsides:
CPU usage not well distributed due tounpredictable data load
Similar to CPU pipelining: Limitednumber of tasks – can only use a limitednumber of cores
2. GROUP PARALLEL ENCODING
D:\Dropbox\CBT\Comp 620\project\gop parallel.jpg
FRAME TYPES
D:\Dropbox\CBT\Comp 620\project\ipbFrameSequence.jpg
GOP-Level Parallelism
Downsides:
Large shared memory requirements
Poor scalability: Limited number ofgroups of frames that can be decoded inparallel
Not completely coarse-grained:  borderI-frames must be shared or redundantlyprocessed
3. Frame-Level Parallelism
Downsides:
Earlier MPEG didn’t, but H.264 utilizesB-frames for reference. Compressionrate suffers if independently encoded
Scalability: usually no more than 1 to 3B-frames between P-frames
4. SLICES
D:\Dropbox\CBT\Comp 620\project\parallel types.jpg
Slice-Level Parallelism
Downsides:
no content from 1 slice can be used topredict information within another slice
Must be encoded for exactly nprocessors in order to be decoded by nprocessors
Same degradation in compression rate(64 slices increases bitrate roughly 34%)
MOTION ESTIMATION
D:\Dropbox\CBT\Comp 620\project\me.gif
5. Macroblock-Level Parallelism
# of independent MBs fluctuates widely(complicated dependency rules)
Macro blockrows/Groups of MBs: lessfluctuation, greater memory requirement
Scalability grows with image resolution
Macroblock-Level Parallelism
Downsides:
Entropy decoding cannot be parallelizedbecause earlier stages must becompleted first (Amdahl’s Law 1/f)
Number of independent MBs doesn’tremain constant (pseudo-bell curve)
Decoding: Macroblock Rows
D:\Dropbox\CBT\Comp 620\project\2\mblocks.jpg
Encoding: Bit Rate Loss
D:\Dropbox\CBT\Comp 620\project\2\pre-compressed bit rate loss - me parallel.jpg
Speedup: Macroblock Rows
D:\Dropbox\CBT\Comp 620\project\2\speedup- num.jpg
D:\Dropbox\CBT\Comp 620\project\2\speedup-mc.jpg
D:\Dropbox\CBT\Comp 620\project\2\speedup-mc2.jpg