scummvm/scummvm — pull request #268 by clone2727 (2012-08-17 17:16:32+00:00)
Title: VideoDecoder upgrade & partial rewrite

I've worked on a fairly thorough rewrite of the of the VideoDecoder code over the past month. The old version of the code still relied on a lot of things such as timing and audio reinvented for each subclass. This is the way I decided to better separate the demuxing/decoding from the actual playback.

I've been able to test every format, but not every game that uses it. It would be great to have some people test the remaining cases. (Volunteers? Please? :)) Any questions/comments/concerns would also be appreciated.

The CoktelDecoder code was split off from VideoDecoder after talking with DrMcCoy. The code relies too much on the layout of the file and treating it as a sane video format would only break things in Gob. A wrapper class around the new API is in place instead for use in SCI.

Features:
- Timing functions moved completely to base class
- Multiple track support
- Audio control moved to base class
- Videos no longer play immediately upon loadStream()
- Videos can be stopped at a given time
- Easy way to add external audio tracks
- Seek/rewind functions now in base class and not specific subclasses (which were a pain to deal with without rtti); isSeekable() and isRewindable() functions exist now

Videos Tested:
- AVI (GK1/KQ6)
- Bink (baseball2003)
- VMD (Torin/Dynasty)
- DXA (sword1/sword2)
- FLIC (Bud Tucker demo)
- PSX Stream (sword1/sword2)
- QuickTime (myst/riven/KQ6)
- Smacker (sword1/toonstruck)
- Theora (but not of sword25)
- SEQ (various SCI)
- Robot (Phantasmagoria demo)

Not Tested:
- DXA/Smacker in The Feeble Files
- Other gob games (though, the impact of the code was very minimal)
- Sword25
- FLIC rewinding (in tucker, part of the intro)