This sofware can be used to play the animation files for the following LucasArts Entertainment Company games :
I wrote this software because my most beloved game from LEC is Full Throttle, and because scummvm does not support this game yet.
Structure of the SMUSH Player.
I tried to used an object oriented design when I wrote this software.
The player itself is implemented in a specific class. The output (i.e. frames and sound) is then sent to a renderer, which is dependant on what we want to do.
I haven't found yet if there was a way to perfectly synchronise video and sound in the original format, so right now I use the following idea, which works great with Full Throttle (it's not as good with The Dig).
When a frame is terminated, The sound mixer enters a loop where it tries to output as much sound data as possible. For this, it iterates within all the active tracks and query them for their available size (look in mixer::handleFrame()). The loop is exited when either a track as no more data available, or there is no more active track. Then, the player will wait for all the sound data from the previous frame to have been played before starting to decode the next frame.