Mercurial > mm7
diff Media/Video/Bink_Smacker.h @ 2502:a77c34acdbc9
Media folder
author | Ritor1 |
---|---|
date | Fri, 19 Sep 2014 05:13:32 +0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Media/Video/Bink_Smacker.h Fri Sep 19 05:13:32 2014 +0600 @@ -0,0 +1,230 @@ +#pragma once +#include "Media/Audio/AIL.h" + + + + +void BINKW32_DLL_Initialize(); + + +int __stdcall BinkDDSurfaceType(struct IDirectDrawSurface *); +int __stdcall BinkSetSoundSystem(void *pSoundSystem, HDIGDRIVER hDrv); +int __stdcall BinkOpenMiles(int); +HBINK __stdcall BinkOpen(void *hFileHandle, unsigned int uFlags); +int __stdcall BinkWait(HBINK); +int __stdcall BinkDoFrame(HBINK); +int __stdcall BinkNextFrame(HBINK); +int __stdcall BinkGetRects(HBINK hBink, unsigned int uFlags); +int __stdcall BinkCopyToBuffer(HBINK hBink, void *pBuffer, unsigned int lPitch, unsigned int uNumLines, unsigned int uX, unsigned int uY, unsigned int uFlags); +int __stdcall BinkPause(HBINK, int bPause); +int __stdcall BinkClose(HBINK); +int __stdcall BinkGoto(HBINK, long a2, long a3); + +int __stdcall BinkBufferSetOffset(void *, int, int); +int __stdcall BinkBufferSetScale(void *, unsigned int uWidth, unsigned int uHeight); + + void SMACKW32_DLL_Initialize(); + +struct _SMACK +{ + unsigned int Version; // SMK2 only right now + unsigned int Width; // Width (1 based, 640 for example) + unsigned int Height; // Height (1 based, 480 for example) + unsigned int Frames; // Number of frames (1 based, 100 = 100 frames) + unsigned int MSPerFrame; // Frame Rate + unsigned int SmackerType; // bit 0 set=ring frame + unsigned int LargestInTrack[7]; // Largest single size for each track + unsigned int tablesize; // Size of the init tables + unsigned int codesize; // Compression info + unsigned int absize; // ditto + unsigned int detailsize; // ditto + unsigned int typesize; // ditto + unsigned int TrackType[7]; // high byte=0x80-Comp,0x40-PCM data,0x20-16 bit,0x10-stereo + unsigned int extra; // extra value (should be zero) + unsigned int NewPalette; // set to one if the palette changed + unsigned char Palette[772]; // palette data + unsigned int PalType; // type of palette + unsigned int FrameNum; // 0374 Frame Number to be displayed + unsigned int FrameSize; // The current frame's size in bytes + unsigned int SndSize; // The current frame sound tracks' size in bytes + int LastRectx; // 0380 Rect set in from SmackToBufferRect (X coord) + int LastRecty; // Rect set in from SmackToBufferRect (Y coord) + int LastRectw; // Rect set in from SmackToBufferRect (Width) + int LastRecth; // 038C Rect set in from SmackToBufferRect (Height) + unsigned int OpenFlags; // flags used on open + unsigned int LeftOfs; // Left Offset used in SmackTo + unsigned int TopOfs; // Top Offset used in SmackTo + unsigned int LargestFrameSize; // Largest frame size + unsigned int Highest1SecRate; // Highest 1 sec data rate + unsigned int Highest1SecFrame; // Highest 1 sec data rate starting frame + unsigned int ReadError; // Set to non-zero if a read error has ocurred + unsigned int addr32; // translated address for 16 bit interface +}; + + + +struct _SMACKBLIT +{ + unsigned int Flags; + unsigned char *Palette; + unsigned int PalType; + unsigned short *SmoothTable; + unsigned short *Conv8to16Table; + unsigned int whichmode; + unsigned int palindex; + unsigned int t16index; + unsigned int smoothindex; + unsigned int smoothtype; + unsigned int firstpalette; +}; + +struct _SMACKBUF +{ + unsigned int Reversed; // 1 if the buffer is upside down + unsigned int SurfaceType; // SMACKSURFACExxxx defines + unsigned int BlitType; // SMACKxxxxBLIT defines + unsigned int FullScreen; // 1 if full-screen + unsigned int Width; + unsigned int Height; + unsigned int Pitch; + unsigned int Zoomed; + unsigned int ZWidth; + unsigned int ZHeight; + unsigned int DispColors; // colors on the screen + unsigned int MaxPalColors; // total possible colors in palette (usually 256) + unsigned int PalColorsInUse; // Used colors in palette (usually 236) + unsigned int StartPalColor; // first usable color index (usually 10) + unsigned int EndPalColor; // last usable color index (usually 246) + RGBQUAD Palette[256]; + unsigned int PalType; + unsigned int forceredraw; // force a complete redraw on next blit (for >8bit) + unsigned int didapalette; // force an invalidate on the next palette change + + void * Buffer; + void * DIBRestore; + unsigned int OurBitmap; + unsigned int OrigBitmap; + unsigned int OurPalette; + unsigned int WinGDC; + unsigned int FullFocused; + unsigned int ParentHwnd; + unsigned int OldParWndProc; + unsigned int OldDispWndProc; + unsigned int DispHwnd; + unsigned int WinGBufHandle; + void * lpDD; + void * lpDDSP; + unsigned int DDSurfaceType; + struct _SMACKBLIT DDblit; + int ddSoftwarecur; + int didaddblit; + int lastwasdd; + RECT ddscreen; + int manyblits; + int * blitrects; + int * rectsptr; + int maxrects; + int numrects; + HDC lastdc; +}; +#define BINKFRAMERATE 0x00001000L // Override fr (call BinkFrameRate first) +#define BINKPRELOADALL 0x00002000L // Preload the entire animation +#define BINKSNDTRACK 0x00004000L // Set the track number to play +#define BINKOLDFRAMEFORMAT 0x00008000L // using the old Bink frame format (internal use only) +#define BINKRBINVERT 0x00010000L // use reversed R and B planes (internal use only) +#define BINKGRAYSCALE 0x00020000L // Force Bink to use grayscale +#define BINKNOMMX 0x00040000L // Don't use MMX +#define BINKNOSKIP 0x00080000L // Don't skip frames if falling behind +#define BINKALPHA 0x00100000L // Decompress alpha plane (if present) +#define BINKNOFILLIOBUF 0x00200000L // Fill the IO buffer in SmackOpen +#define BINKSIMULATE 0x00400000L // Simulate the speed (call BinkSim first) +#define BINKFILEHANDLE 0x00800000L // Use when passing in a file handle +#define BINKIOSIZE 0x01000000L // Set an io size (call BinkIOSize first) +#define BINKIOPROCESSOR 0x02000000L // Set an io processor (call BinkIO first) +#define BINKFROMMEMORY 0x04000000L // Use when passing in a pointer to the file +#define BINKNOTHREADEDIO 0x08000000L // Don't use a background thread for IO + +#define BINKSURFACEFAST 0x00000000L +#define BINKSURFACESLOW 0x08000000L +#define BINKSURFACEDIRECT 0x04000000L + +#define BINKCOPYALL 0x80000000L // copy all pixels (not just changed) +#define BINKCOPY2XH 0x10000000L // Force doubling height scaling +#define BINKCOPY2XHI 0x20000000L // Force interleaving height scaling +#define BINKCOPY2XW 0x30000000L // copy the width zoomed by two +#define BINKCOPY2XWH 0x40000000L // copy the width and height zoomed by two +#define BINKCOPY2XWHI 0x50000000L // copy the width and height zoomed by two +#define BINKCOPY1XI 0x60000000L // copy the width and height zoomed by two +#define BINKCOPYNOSCALING 0x70000000L // Force scaling off + +#define SMACKNEEDPAN 0x00020L // Will be setting the pan +#define SMACKNEEDVOLUME 0x00040L // Will be setting the volume +#define SMACKFRAMERATE 0x00080L // Override fr (call SmackFrameRate first) +#define SMACKLOADEXTRA 0x00100L // Load the extra buffer during SmackOpen +#define SMACKPRELOADALL 0x00200L // Preload the entire animation +#define SMACKNOSKIP 0x00400L // Don't skip frames if falling behind +#define SMACKSIMULATE 0x00800L // Simulate the speed (call SmackSim first) +#define SMACKFILEHANDLE 0x01000L // Use when passing in a file handle +#define SMACKTRACK1 0x02000L // Play audio track 1 +#define SMACKTRACK2 0x04000L // Play audio track 2 +#define SMACKTRACK3 0x08000L // Play audio track 3 +#define SMACKTRACK4 0x10000L // Play audio track 4 +#define SMACKTRACK5 0x20000L // Play audio track 5 +#define SMACKTRACK6 0x40000L // Play audio track 6 +#define SMACKTRACK7 0x80000L // Play audio track 7 + + +#define SMACKBUFFER555 0x80000000 +#define SMACKBUFFER565 0xC0000000 + +#define SMACKBLIT1X 1 +#define SMACKBLIT2X 2 +#define SMACKBLIT2XSMOOTHING 4 +#define SMACKBLIT2XINTERLACE 8 + + +int __stdcall SmackSoundUseMSS(HDIGDRIVER hDrv); +unsigned int __stdcall SmackUseMMX(unsigned int flag); +HSMACK __stdcall SmackOpen(HANDLE hSourceFile, unsigned int uFlags, unsigned int uExtraBuffers); +HSMACKBLIT __stdcall SmackBlitOpen(unsigned int uSurfaceFormat); +void __stdcall SmackToBuffer(HSMACK, unsigned int uX, unsigned int uY, unsigned int uPitch, unsigned int uHeight, void *pBuffer, unsigned int uFlags); +void __stdcall SmackBlitSetPalette(HSMACKBLIT hBlit, void *pPalette, unsigned int uPalType); +unsigned int __stdcall SmackDoFrame(HSMACK); +unsigned int __stdcall SmackToBufferRect(HSMACK, unsigned int uSmackSurface); +void __stdcall SmackBlit(HSMACKBLIT, void *pDest, unsigned int uDestPitch, unsigned int uDestX, unsigned int uDestY, void *pSrc, unsigned int uSrcPitch, unsigned int uSrcX, unsigned int uSrcY, unsigned int uSrcZ, unsigned int uSrcW); +void __stdcall SmackNextFrame(HSMACK); +unsigned int __stdcall SmackWait(HSMACK); +unsigned int __stdcall SmackSoundOnOff(HSMACK, unsigned int bOn); +void __stdcall SmackClose(HSMACK); +void __stdcall SmackBufferClose(HSMACKBUF); +void __stdcall SmackBlitClose(HSMACKBLIT); +int __stdcall SmackBlitClear(HSMACKBLIT a1, unsigned short *pFrameData, unsigned int uTargetSurfacePitch, unsigned int uOutX, unsigned int uOutY, unsigned int uOutZ, unsigned int uOutW, int a8); + + + + + +int __stdcall SmackBufferOpen(HWND a1, long a2, long a3, long a4, long a5, long a6); +int __fastcall SmackVolumePan(_SMACK *a3, long a4, long a5, long a6); + +int __stdcall SmackGoto(_SMACK *a1, long a2); + +// sub_4D83D0: using guessed type int __stdcall SmackBufferNewPalette(_DWORD, _DWORD, _DWORD); +void __stdcall SmackBufferNewPalette(HSMACKBUF a1, void *a2, unsigned int a3); + +// sub_4D83D4: using guessed type int __stdcall SmackColorRemapWithTrans(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); +void __stdcall SmackColorRemapWithTrans(_SMACK *a1, void *a2, unsigned int a3, unsigned int a4, unsigned int a5); + + + + + + + + + + + + + +