aboutsummaryrefslogtreecommitdiff
path: root/smush.h
diff options
context:
space:
mode:
authorVincent Hamm2002-03-06 19:58:06 +0000
committerVincent Hamm2002-03-06 19:58:06 +0000
commitcf868605f6f619c339660eb3380246d92bbbbe5f (patch)
treecb471f0286ab328808c145ab542828baa766ae58 /smush.h
parent6265b84fb3b2cd07a6e079b1d12fa89a521e6898 (diff)
downloadscummvm-rg350-cf868605f6f619c339660eb3380246d92bbbbe5f.tar.gz
scummvm-rg350-cf868605f6f619c339660eb3380246d92bbbbe5f.tar.bz2
scummvm-rg350-cf868605f6f619c339660eb3380246d92bbbbe5f.zip
Preliminary smush playback support.
svn-id: r3669
Diffstat (limited to 'smush.h')
-rw-r--r--smush.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/smush.h b/smush.h
new file mode 100644
index 0000000000..556fd4f064
--- /dev/null
+++ b/smush.h
@@ -0,0 +1,77 @@
+struct PersistentCodecData37 {
+ byte *deltaBuf;
+ byte *deltaBufs[2];
+ uint32 deltaSize;
+ uint width, height;
+ int curtable;
+ int unk2,unk3;
+
+ uint16 flags;
+
+ int16 *table1;
+ int table_last_pitch;
+ byte table_last_flags;
+};
+
+struct CodecData {
+ byte *out,*src;
+ int x,y;
+ int outwidth,outheight;
+ int w,h,pitch;
+
+ int flags;
+};
+
+
+struct SmushPlayer {
+ FILE *_in;
+ bool _paletteChanged;
+ byte * _block;
+ uint32 _blockTag;
+ uint32 _blockSize;
+ byte *_cur;
+ byte *_renderBitmap;
+ uint32 _frameSize;
+ uint32 _frmeTag, _frmeSize;
+
+ byte *_deltaBuf;
+ int _deltaBufSize;
+
+ PersistentCodecData37 pcd37;
+
+ byte _fluPalette[768];
+ uint16 _fluPalMul129[768];
+ uint16 _fluPalWords[768];
+
+ void openFile(byte* fileName);
+ void nextBlock();
+
+ uint32 fileReadBE32();
+ uint32 fileReadLE32();
+ void go();
+
+ bool parseTag();
+
+ void parseAHDR();
+ void parseFRME();
+
+ void parseNPAL();
+ void parseFOBJ();
+ void parsePSAD();
+ void parseTRES();
+ void parseXPAL();
+
+ void fileRead(void *mem, int len);
+
+ uint32 nextBE32();
+ void init();
+
+ void startVideo(short int arg, byte* videofile);
+
+ void setPalette();
+
+ long fileSize;
+
+ Scumm *sm;
+
+};