This is the final programming assignment for the course, Information Theory and Coding Technique, I took in this semester.
- Implement a MPEG video decoder (I-frame, IP-frames, IPB-frames ) with UI (display) [1].
- Correctly read the MPEG clips (with I, P, B frames) [2] and skip frames (e.g., B-frames) which your decoder doesn’t support.
With favors of codec experts from CMLab, I did finish finally it w/o any brain gotcha. What caught my eyes is the tool I used, GLYUVPlay, a Mac raw YUV player with some interesting function like:
- a pixel-level inspector for your observation.
- frame-by-frame playback for median-sized YUV videos.
- exporting as a Quicktime movie.
- side-by-side comparison of two YUV videos.
- standard measurement of videos, PSNR.
- advanced and famous metric, SSIM.
I haven’t tried SSIM yet but I did get proven that for relative PSNR, I_ONLY-based one is better than IPB_ALL one. What a lovely learning and experience.