aboutsummaryrefslogtreecommitdiff
path: root/Src/vp32/include/duck_dxl.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/vp32/include/duck_dxl.h')
-rw-r--r--Src/vp32/include/duck_dxl.h460
1 files changed, 460 insertions, 0 deletions
diff --git a/Src/vp32/include/duck_dxl.h b/Src/vp32/include/duck_dxl.h
new file mode 100644
index 00000000..40377aaa
--- /dev/null
+++ b/Src/vp32/include/duck_dxl.h
@@ -0,0 +1,460 @@
+//==========================================================================
+//
+// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
+// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
+// PURPOSE.
+//
+// Copyright (c) 1999 - 2001 On2 Technologies Inc. All Rights Reserved.
+//
+//--------------------------------------------------------------------------
+
+
+#ifndef _duck_dxl_h
+#define _duck_dxl_h
+
+
+/******************************************************************************\
+* *
+* duck_dxl.h - TrueMotion include file for decompression libraries *
+* *
+* Version: 6.0.0 *
+* Created: 3/3/98 *
+* *
+\******************************************************************************/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/* enumerated data types */
+
+typedef enum BLITQUALITY {
+ DXBLIT_SAME = 0, /* Blit directly, w/o stretching */
+ DXBLIT_R1,
+ DXBLIT_R2,
+ DXBLIT_STRETCH, /* double horizontally, skip lines vertically */
+ DXBLIT_R3,
+ DXBLIT_STRETCH_BRIGHT, /* double horizontally, interpolate vertically */
+ DXBLIT_R4,
+ DXBLIT_R5,
+ DXBLIT_R6,
+ DXBLIT_NONE,
+ DXBLITMAX
+} dxvBlitQuality ;
+
+typedef enum BITDEPTH {
+ DXRGBNULL = 0,
+ DXRGB8 = 1,
+
+ DXRGB16_555 = 2,
+ DXRGB24 = 3,
+ DXRGB_UNUSED = 4,
+ DXRGB16VESA = 5,
+ DXRGB8VESA = 6,
+ DXRGB16_565 = 7,
+
+ DXYUY2 = 8,
+ DXYVU9 = 9,
+ DXYV12 = 10,
+ DXUYVY = 11,
+
+ DXRGB32 = 12,
+ DXRGB16VESA_565 = 13,
+ DXHALFTONE8 =14,
+ DXMAX
+} dxvBitDepth ;
+
+#define DXRGB16 DXRGB16_555
+#define DXRGB24CHAR DXRGB24
+
+typedef enum OFFSETXY {
+ DXL_ABSOLUTE = 0,
+ DXL_RELATIVE
+} dxvOffsetMode;
+
+typedef enum IMAGETYPE {
+ DXL_INTRAFRAME = 0,
+ DXL_INTERFRAME,
+ DXL_SPRITE
+} dxvImageType;
+
+typedef enum DXL_ERR{
+ DXL_LOW_ERR = -32000,
+ DXL_INVALID_REQUEST = -8,
+ DXL_VERSION_CONFLICT = -7,
+ DXL_INVALID_DATA = -7,
+ DXL_INVALID_BLIT = -6,
+ DXL_BAD_DATA = -5,
+ DXL_ALLOC_FAILED = -4,
+ DXL_NULL_FRAME = -3,
+ DXL_NULLSOURCE = -2,
+ DXL_NOTINUSE = -1,
+ DXL_OK = 0,
+ DXL_HOLD_FRAME = 1
+} dxvError ;
+
+typedef enum BGMODE /* sprite drawing modes
+ v1.0.2 supports NORM & NO_BACKGROUND */{
+ NORM = 0, /* normal sprite mode, blend edges w/background */
+ NO_BACKGROUND = 1,/* transparant sprite mode 1,
+ sets all background data transparant no blending */
+ NORM_TRANS = 2, /* transparant sprite mode 2,
+ blend edges (alphas) w/separate background buffer,
+ set sprite background to trans */
+ RGB_OPAQUE = 3, /* blend edges to sprColor, set background to sprColor*/
+ RGB_TRANS = 4 /* blend edges w/sprColor, set background to trans */
+} dxvBackgroundMode ;
+
+/*********************************************************/
+
+/* definition of data handles */
+
+typedef struct vScreen *DXL_VSCREEN_HANDLE;
+typedef struct tXImage *DXL_XIMAGE_HANDLE;
+typedef struct tXAudioSource *DXL_XAUDIOSRC_HANDLE;
+typedef struct tAudioBuff *DXL_AUDIODST_HANDLE;
+
+/* main video decompression init, exit and query */
+
+int DXL_InitVideo(int maxScreens,int maxImages);
+void DXL_ExitVideo(void);
+
+/*get pointer to NULL terminated
+ array of supported fourCCs */
+unsigned long *DXL_GetFourCCList(void);
+
+/* create an xImage (decompressor) object,
+ based on the provided compressed data */
+DXL_XIMAGE_HANDLE DXL_CreateXImage(
+ unsigned char *data
+ );
+
+int DXL_SetXImageCSize(DXL_XIMAGE_HANDLE xImage, int compressedSize);
+int DXL_InitVideoEx(int lmaxScreens, int lmaxImages);
+
+/* create an xImage (decompressor) object
+ of a specific type */
+DXL_XIMAGE_HANDLE DXL_CreateXImageOfType(
+ unsigned char *data,
+ unsigned long fccType
+ );
+
+/* destroy the specified xImage */
+void DXL_DestroyXImage(DXL_XIMAGE_HANDLE src);
+
+/* feed the xImage new data, get ready to decompress */
+int DXL_AlterXImageData(
+ DXL_XIMAGE_HANDLE src,
+ unsigned char *ptrData
+ );
+
+/* explicitly alter attributes of an xImage */
+DXL_XIMAGE_HANDLE DXL_AlterXImage(
+ DXL_XIMAGE_HANDLE ,
+ unsigned char *ptrData,
+ int xImType,
+ dxvBitDepth bitDepth ,
+ int maxWidth,int maxHeight
+ );
+
+/* get xImage target bounding rectangle */
+int DXL_GetXImageDirtyXYWH(
+ DXL_XIMAGE_HANDLE ,
+ int *,int *,int *,int *
+ );
+
+/* force decompressor to refresh all destination pixels */
+int DXL_SetXImageBlitAll(
+ DXL_XIMAGE_HANDLE xImage
+ );
+
+/* if available, get pointer to internal frameBuffer */
+void *DXL_GetXImageFrameBuffer(
+ DXL_XIMAGE_HANDLE src
+ );
+
+long DXL_GetXImageCSize(
+ DXL_XIMAGE_HANDLE src
+ );
+
+/* change x,y, offset at which to decompress image */
+int DXL_MoveXImage(
+ DXL_XIMAGE_HANDLE src,
+ dxvOffsetMode mode,
+ int x,int y
+ );
+
+/* set sprite transparency mode (SegaSaturn only) */
+int DXL_AlterXImageSpriteModes(
+ DXL_XIMAGE_HANDLE src,
+ int sprMode, int sprColor
+ );
+
+/* get application specified x,y offset,
+ and overall decompressed width and height */
+int DXL_GetXImageXYWH(
+ DXL_XIMAGE_HANDLE src,
+ int *x,int *y,int *w, int *h
+ );
+
+int DXL_GetXImageType(DXL_XIMAGE_HANDLE src);
+int DXL_GetXImageColorDepth(DXL_XIMAGE_HANDLE src);
+int DXL_IsXImageKeyFrame(DXL_XIMAGE_HANDLE src);
+
+/* decompress and blit as a single process */
+int DXL_dxImageToVScreen(
+ DXL_XIMAGE_HANDLE src,
+ DXL_VSCREEN_HANDLE dst
+ );
+
+/* compatibility check prior between
+ decompressor and destination */
+int DXL_CheckdxImageToVScreen(
+ DXL_XIMAGE_HANDLE src,
+ DXL_VSCREEN_HANDLE dst
+ );
+
+/* blit from xImage internal "working area" to vScreen */
+int DXL_BlitXImageToVScreen(
+ DXL_XIMAGE_HANDLE src,
+ DXL_VSCREEN_HANDLE dst
+ );
+
+/* vscreen management functions */
+
+/* create a virtual screen target for decompression (renderer?) */
+DXL_VSCREEN_HANDLE DXL_CreateVScreen(
+ unsigned char *addr,
+ dxvBitDepth colorMode,
+ short bytePitch,
+ short height
+ );
+
+/* alter attributes of an existing vScreen */
+int DXL_AlterVScreen(
+ DXL_VSCREEN_HANDLE dst,
+ unsigned char *addr,
+ dxvBitDepth colorMode,
+ int bytePitch,
+ int height
+ );
+
+
+void DXL_VScreenSetInfoDotsFlag(DXL_VSCREEN_HANDLE vScreen, int showDots);
+
+
+/* alter clipping rectangle of vScreen */
+/* not supported by all decompressors */
+int DXL_AlterVScreenClip(
+ DXL_VSCREEN_HANDLE dst,
+ int x,int y,
+ int w,int h
+ );
+
+/* alter viewport rectangle of vScreen */
+/* width/height not supported by all decompressors */
+int DXL_AlterVScreenView(
+ DXL_VSCREEN_HANDLE dst,
+ int x,int y,
+ int w,int h
+ );
+
+/* destroy a vScreen object/struct */
+void DXL_DestroyVScreen(
+ DXL_VSCREEN_HANDLE dst
+ );
+
+/* set blit mode/quality of a vScreen
+ same (normal), stretch (black lined)
+ stretch bright (stretched w/interpolation) */
+int DXL_SetVScreenBlitQuality(
+ DXL_VSCREEN_HANDLE dest,
+ dxvBlitQuality bq
+ );
+
+/* get vScreens current blit mode/quality */
+dxvBlitQuality DXL_GetVScreenBlitQuality(
+ DXL_VSCREEN_HANDLE
+ );
+
+/* alter spite background associated with a vscreen */
+/* used only by SegaSaturn for hardware sprite support */
+int DXL_AlterVScreenBackground(
+ DXL_VSCREEN_HANDLE ,
+ unsigned char *,
+ dxvBitDepth bd ,int ,int ,int ,int
+ );
+
+/* set DOS VESA mode for vScreen (DOS only) */
+int DXL_AlterVScreenVESAMode(
+ DXL_VSCREEN_HANDLE ,
+ int vesaMode
+ );
+
+/* set physical screen to vScreen's vesa mode */
+int DXL_ActivateVScreenVESAMode(DXL_VSCREEN_HANDLE);
+
+/* get vScreen (generally physical) vesa mode */
+int DXL_GetVScreenVESAMode(DXL_VSCREEN_HANDLE );
+
+void DXL_EraseVScreen(DXL_VSCREEN_HANDLE );
+void DXL_BlackLineVScreen(DXL_VSCREEN_HANDLE );
+
+/* copy one vScreen to another */
+/* provides support for offscreen compositing,
+ 16 bit and 8 bit modes only */
+int DXL_BlitVScreenToVScreen(
+ DXL_VSCREEN_HANDLE fromVScreen,
+ DXL_VSCREEN_HANDLE toVScreen
+ );
+
+/* get attributes of the vScreen */
+int DXL_GetVScreenAttributes(
+ DXL_VSCREEN_HANDLE vScreen,
+ void **addr,
+ dxvBlitQuality *bq,
+ short *pitch,
+ short *height
+ );
+
+char *DXL_GetXImageStats(DXL_XIMAGE_HANDLE xImage,char *storage);
+
+
+/* get vScreen's current viewport rectangle
+ a viewport represents an x,y, offset and
+ a clipping width and height */
+int DXL_GetVScreenView(
+ DXL_VSCREEN_HANDLE dst,
+ int *x,int *y,int *w,int *h
+ );
+
+/* get vScreen's current clipping rectangle */
+int DXL_GetVScreenClip(
+ DXL_VSCREEN_HANDLE dst,
+ int *x,int *y,int *w,int *h
+ );
+
+/* provide Color lookup tables for 8 bit support */
+int DXL_SetVScreenCLUTs(
+ DXL_VSCREEN_HANDLE vScr,
+ unsigned char *clpt,
+ unsigned char *clpt2,
+ int exp
+ );
+
+/* return the palette currently used */
+int DXL_GetBitDepthPalette(dxvBitDepth colorMode,
+ unsigned char **pal);
+
+/* relinquish color lookup table structures */
+void DXL_ResetVScreenCLUTs(
+ DXL_VSCREEN_HANDLE vScr
+ );
+
+/* check to see if a blit mode is supported */
+
+int DXL_CheckVScreenBlit(DXL_VSCREEN_HANDLE dst,unsigned long fourcc);
+int DXL_CheckVScreenXImageBlit(DXL_VSCREEN_HANDLE dst,DXL_XIMAGE_HANDLE src);
+
+/* audio function prototypes */
+
+int DXL_InitAudio(int srcs,int dsts);
+void DXL_ExitAudio(void);
+
+typedef struct tDKWAVEFORM *DKWAVEFORMPTR; /* place holder pointer */
+
+/* create a compressed audio source (decompressor) */
+DXL_XAUDIOSRC_HANDLE DXL_CreateXAudioSrc(
+ DKWAVEFORMPTR wv,
+ unsigned char *addr,int length
+ );
+
+/* feed an audio decompressor new data (w/o decompressing) */
+void DXL_AlterXAudioData(
+ DXL_XAUDIOSRC_HANDLE xSource,
+ unsigned char *addr,int length
+ );
+
+/* destroy an audio decompressor */
+void DXL_DestroyXAudioSrc(DXL_XAUDIOSRC_HANDLE xSource);
+
+/* create a audio destination description */
+DXL_AUDIODST_HANDLE DXL_CreateAudioDst(
+ void *addrL,void *addrR,
+ int length,int bitDepth,
+ int numChannels,
+ int sampleRate
+ );
+
+/* change characteristics of audio destination descriptor */
+void DXL_AlterAudioDst(
+ DXL_AUDIODST_HANDLE dst,
+ void *addrL,void *addrR,
+ int length,int bitDepth,
+ int numChannels,
+ int sampleRate
+ );
+
+/* destroy audio destination description struct */
+void DXL_DestroyAudioDst(DXL_AUDIODST_HANDLE dst);
+
+/* decompress up to maxSamplesToDecompress */
+/* function returns the actual number of
+ samples decompressed */
+int DXL_dxAudio(
+ DXL_XAUDIOSRC_HANDLE src,
+ DXL_AUDIODST_HANDLE dst,
+ int maxSamplesToDecompress
+ );
+
+/* windows 95 dll system abstraction functions */
+
+/* set memory allocator function */
+void DXV_Setmalloc(
+ void *(*mallocFuncPtr)(unsigned int size)
+ );
+
+/* set cleared memory allocator function */
+void DXV_Setcalloc(
+ void *(*callocFuncPtr)(unsigned int size, unsigned int number)
+ );
+
+/*set memory free function */
+void DXV_Setfree(
+ void (*freeFuncPtr)(void *)
+ );
+
+
+/* can only have a max of 32 cpu specific features */
+typedef enum tCPU_FEATURES
+{
+ NO_FEATURES = 0,
+ MMX_SUPPORTED = 1
+} CPU_FEATURES;
+
+CPU_FEATURES DXL_GetCPUFeatures(void);
+unsigned long DXL_GetXImageFOURCC(DXL_XIMAGE_HANDLE src);
+
+
+void vp31_SetParameter(DXL_XIMAGE_HANDLE src,int Command, unsigned long Parameter );
+
+
+
+//int DXL_RegisteredAudioDXerGet(DXL_AUDIO_REGISTRATION *oneRegistration);
+
+typedef struct tFrameInfo
+{
+ int KeyFrame;
+ int Version;
+ int Quality;
+ int vp30Flag;
+} FrameInfo;
+
+void vp31_GetInfo(unsigned char * source, FrameInfo * frameInfo);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* include guards */