Task: build a multimedia player Inputs: for audio: mp3, mp4, wav, avi, and many other formats for video: mov, mp4, and other formats Outputs: audio players, video players, etc. Component tasks: determine file type file I/O (file read) change volume stop and start select file (use the command line for now) stereo balancing and basic EQ display basic metadata adjust speed support selection of start and end times Data Formats: common formats for audio and video Driver program: instantiate a player object decode command line arguments loop over all media files: open file determine the type of media instantiate an object of that type loop over data: read a chunk of data convert it to a common format send it an appropriate device end loop close file end loop Class Design: MediaPlayer AudioSignal AudioSignalMP3 AudioSignalWAV AudioSignalAVI VideoSignal DSP Filtering Linear Algebra Error Handler Common error handling AudioDevices VideoDevices