(No late homework will be accepted!)


Homework 1: Networked Video Player (Due: May 10, 2006)

Use the public source codes of MPEG-4 video codec, and the YUV image player software to design a streaming video player.

Basic features:

Local play mode

Encode a raw YUV data file into an MPEG-4 bitstream

        Decode an MPEG-4 bitstream into YUV images and play the images on the screen

The encoding parameters (e.g., codec type, frame size, encoding frame rate, bit-rate, number of frames, etc.) are configurable via the GUI interface

At least two separate windows for displaying two YUV videos

Calculate the PSNR values of the video being displayed with respect to a specified target video (say, the original video), and show the PSNR values on another display window.


Network play mode

You can choose to play a compressed video or a YUV raw video located at a remote terminal. (If a YUV raw video is chosen, the remote terminal should encode the raw video first)

The packet size and other parameters (frame-rate, bit-rate, etc.) should be configurable. The configuration data should be sent to the remote side via TCP/IP.


Reference: Winsock programming

Document and MPEG-4 codec source codes

Document: ISO/IEC JTC1/SC29/WG11 N2502, FDIS of ISO/IEC 14496-2, “Generic coding of audio-visual objects: Part 2- Visual,” (MPEG-4), Nov. 1998

Software: Microsoft (July 3rd 2000 Version 2 FPDAM1-1.0-000703 Version 2.2.0), MoMuSys (FPDAM1 (Version 2) 1.0)



Homework 2: Error Generation & Concealment (Due: June 20, 2006)

(1)   Add new functions in the networked codec tool you made in homework #1. These functions include

a.      The codec tool can packetize the coded bitstream in units of a frame or slice as configured through the user interface (i.e., 1 packet/frame or 1 packet/slice).

b.      The codec tool can generate different error patterns with uniformly distributed or bursty bit errors to corrupt the outgoing packets. The bit error rate can be set through the user interface. (NTT DoCoMo bursty error generator is here)


(2) Assume each packet is protected with an FEC code with a correction capacity of up to two bits, that is, if a packet has more than two error bits, it’s considered lost. Also assume that the decoder know which packets are lost. Read Chap. 6 of the textbook and implement the zero MV replacement and the side match error concealment schemes. Evaluate the subjective and PSNR performance of the two error concealment methods.


(3) Modify the encoder code to provide a fixed-rate intra-refresh feature (that is, x% macroblocks will be intra-refreshed, where x is a configurable number). Show the effects of intra-refresh (with intra-refresh rate of 5%, 10%, and 20%) on the PSNR performance under a given channel condition (e.g., packet loss-rate = 5% and 10%). Use the TM5 rate in the MPEG-4 encoder to control the bitrate.