⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vcmapi.h

📁 网页游戏赤壁
💻 H
📖 第 1 页 / 共 3 页
字号:
/************************
*
*		VCMAPI.h		:	v0010
*		v0010			:	Mar.26.1997
*		Origenal from	:	Intel
*		Changed by		:	Liu Gang
*		Copyright		:	WayAhead Software Co., Ltd
*
*
*		included:	Assert.h
*					Vfw_spec.h
*					Datatype.h
*					Videovcm.h
*					Dib.h
*					Avimovie.h
*					Scale.h
*					Movie.h				
*************************/

/************************/
/***
*assert.h - define the assert macro
*
*	Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
*
*Purpose:
*	Defines the assert(exp) macro.
*	[ANSI/System V]
*
*       [Public]
*
****/

#if !defined(_WIN32) && !defined(_MAC)
#error ERROR: Only Mac or Win32 targets supported!
#endif



/* Define _CRTAPI1 (for compatibility with the NT SDK) */

#ifndef _CRTAPI1
#if	_MSC_VER >= 800 && _M_IX86 >= 300
#define _CRTAPI1 __cdecl
#else
#define _CRTAPI1
#endif
#endif


/* Define _CRTAPI2 (for compatibility with the NT SDK) */

#ifndef _CRTAPI2
#if	_MSC_VER >= 800 && _M_IX86 >= 300
#define _CRTAPI2 __cdecl
#else
#define _CRTAPI2
#endif
#endif


/* Define _CRTIMP */

#ifndef _CRTIMP
#ifdef	_NTSDK
/* definition compatible with NT SDK */
#define _CRTIMP
#else	/* ndef _NTSDK */
/* current definition */
#ifdef	_DLL
#define _CRTIMP __declspec(dllimport)
#else	/* ndef _DLL */
#define _CRTIMP
#endif	/* _DLL */
#endif	/* _NTSDK */
#endif	/* _CRTIMP */


/* Define __cdecl for non-Microsoft compilers */

#if	( !defined(_MSC_VER) && !defined(__cdecl) )
#define __cdecl
#endif


#undef	assert

#ifdef TNDEBUG

#define assert(exp)	((void)0)

#else

#ifdef __cplusplus
extern "C" {
#endif

_CRTIMP void __cdecl _assert(void *, void *, unsigned);

#ifdef __cplusplus
}
#endif

#define assert(exp) (void)( (exp) || (_assert(#exp, __FILE__, __LINE__), 0) )

#endif	/* NDEBUG */
/************************/



/************************************************************************
*  vfw_spec.h                                                           *
*                                                                       *
* 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) 1994-1995 Intel Corporation.              *
*                         All Rights Reserved.                          *
*                                                                       *
************************************************************************/
/*
 *
 *  DESCRIPTION:
 *  The Indeo(R) Video Interactive codec provides access to new features
 *  using the ICM_SETCODECSTATE and ICM_GETCODECSTATE messages. This header
 *  file defines the data structures used in these messages.
 */

/* $Revision:   1.27  $
 */


#ifndef __VFW_SPEC_H__
#define __VFW_SPEC_H__


/* The specific interface version is defined as follows:
 */
#define INTERFACE_MAJOR_NUMBER(v)		((v) >> 16)
#define INTERFACE_MINOR_NUMBER(v)		((v) & 0xffff)
#define CREATE_INTERFACE_VERSION(maj,min)	((((DWORD)maj)<<16) | (((DWORD)min) & 0xffff))
#define SPECIFIC_INTERFACE_VERSION 		CREATE_INTERFACE_VERSION(1,2)

/* The codec specific information is handled by the general state
 * handler.
 */
#define ICM_GETCODECSTATE					ICM_GETSTATE
#define ICM_SETCODECSTATE					ICM_SETSTATE
#define	EXTENDED_INTERFACE_SIZE				1

/* OS Environments - Within the Microsoft Windows domain (Win 3.1, Win 95,
 * and Win NT), both applications and codecs can be compiled in either 16 or
 * 32-bit formats.  Any combination is allowed with the knowledge that data
 * pointers will not be thunked.
 */
typedef enum {
	OE_UNDEFINED,
	OE_16,
	OE_32,
} R4_OS_ENVIRONMENT;


/* The type field identifies the kind of operation that should be done as part
 * of the ICM_GETCODECSTATE and ICM_SETCODECSTATE messages.
 *
 * The MT_UNDEFINED value is not a supported type - it should only be used
 * to initialize variables to an "undefined" state.
 */
typedef enum {
	MT_UNDEFINED,
	MT_DECODE_FRAME_DEFAULT,
	MT_DECODE_FRAME_VALUE,
	MT_DECODE_SEQ_DEFAULT,
	MT_DECODE_SEQ_VALUE,
	MT_ENCODE_SEQ_DEFAULT,
	MT_ENCODE_SEQ_VALUE,
	MT_DECODE_INIT_DATA
} R4_MESSAGE_TYPE;

/*
 * MT_QUEUE is for 16-bit applications that call 32-bit codecs, only.  It
 * is necessary to pre-set ICM_GETCODECSTATE messages by first issuing an
 * ICM_SETCODECSTATE with the MT_QUEUE flag or'ed with the desired
 * message type to get.  The ICM_GETCODECSTATE message which follows
 * must set its dwFourCC field to 0.
 */
#define	MT_QUEUE  (1UL<<31)

/* UCHAR is defined in Win32 but not Win16 MS* Windows headers.
 */
#if !defined UCHAR
typedef unsigned char UCHAR;
#endif

/* A flag is false if it is zero, otherwise it is true.
 */
typedef DWORD R4_FLAG;

/* Pointer to a Flag - A pointer to a flag is used by the codec to write 
 * status information at a later time.
 */
typedef R4_FLAG FAR * PTR_R4_FLAG;
 

/* Rectangle - The following structure is used to describe a rectangle.
 */
typedef struct {
	DWORD dwX;
	DWORD dwY;
	DWORD dwWidth;
	DWORD dwHeight;
} R4_RECT, FAR * PTR_R4_RECT;


/* Transparency Bitmask - A transparency bitmask contains one bit for each 
 * pixel in the source image. If a bit is zero the data is transparent.  
 * The first bit in each byte is identified by the mask 0x80.  The last 
 * bit in each byte is identified by the mask 0x01. 
 * 
 * To allow faster access each row must begin on a DWORD boundary and the 
 * total number of bytes must be rounded-up to a multipe of four.
 */
typedef BYTE FAR * PTR_R4_BITMASK;


/* Playback Platform - The codec supports several playback options.  This is
 * not hardware specific.  Instead it rates the relative capabilities of the  
 * hardware.
 */
typedef enum {
	PP_LOW,
	PP_MEDIUM,
	PP_HIGH,
} R4_PLAYBACK_PLATFORM;


/* Transparency Method - The codec supports a number of tranparency encoding
 * methods. The enumeration specifies the transparency method.
 */
typedef enum {
	TM_UNDEFINED,
	TM_NONE,
	TM_RANGE,
	TM_BITMASK,
	TM_FRAME,
	TM_ALPHA_CHANNEL		/* XRGB color formats only */
} R4_TRANS_METHOD;


/* Transparency Range - A transparency range is specified using minimum 
 * and maximum values for R, G, and B. Any pixel with values within this range 
 * (inclusive) is considered transparent.
 */
typedef struct {
	WORD		u16Reserved;
	UCHAR		u8BlueLow;
	UCHAR		u8BlueHigh;
	UCHAR		u8GreenLow;
	UCHAR		u8GreenHigh;
	UCHAR		u8RedLow;
	UCHAR		u8RedHigh;
} R4_RANGE, FAR * PTR_R4_RANGE;


/* The structure header is a set fields that are common,
 * to each of the data structures that follows.
 */
typedef struct {
	DWORD		dwSize;
	DWORD		dwFourCC;
	DWORD		dwVersion;
	LONG		mtType;	
	LONG		oeEnvironment;
	DWORD		dwFlags;
} R4_HEADER, FAR * PTR_R4_HEADER;
/* The structure header size is enough room for dwSize, dwFourCC,
 * dwVersion, dwType, dwEnvironment, and dwFlags
 */
#define R4_STRUCTURE_HEADER_SIZE (sizeof(R4_HEADER))


typedef enum {
	OFF,
	LOW,
	MEDIUM,
	HIGH
} R4_DITHER;

/* Some decode parameters can be changed prior to either an ICM_DECOMPRESS or 
 * ICM_DECOMPRESSEX mesage. These are found in the  R4_DEC_FRAME_DATA 
 * structure.  See CUSTOM_INTERFACE_ENCODER_DATA for structure size constraints.
 */
#define DECFRAME_TIME_LIMIT				(1UL<<0)
#define DECFRAME_DECODE_RECT				(1UL<<1)
#define DECFRAME_VIEW_RECT				(1UL<<2)
#define DECFRAME_BOUNDING_RECT			(1UL<<3)
#define DECFRAME_TRANS_BITMASK			(1UL<<4)
#define DECFRAME_BRIGHTNESS				(1UL<<5)
#define DECFRAME_SATURATION				(1UL<<6)
#define DECFRAME_CONTRAST				(1UL<<7)
#define DECFRAME_FILL_COLOR				(1UL<<9)
#define DECFRAME_8BIT_CONFIG_PALETTE		(1UL<<10)
#define DECFRAME_8BIT_DITHER				(1UL<<11)
#define DECFRAME_VIEW_RECT_ORIGIN			(1UL<<12)
#define DECFRAME_INPUT_TRANS_MASK			(1UL<<13)
#define DECFRAME_VALID					(1UL<<31)

/* Signals that the fill color provided is not a defined value */
#define DECFRAME_FILL_UNDEFINED 0xFF000000

typedef struct {
	DWORD			dwSize;
	DWORD			dwFourCC;
	DWORD			dwVersion;
	LONG			mtType;	
	LONG			oeEnvironment;
	DWORD			dwFlags;

	DWORD			dwTimeLimit;				/* version 1.0 */
	R4_RECT		rDecodeRect;				/* version 1.0 */
	R4_RECT		rViewRect;					/* version 1.0 */
	PTR_R4_RECT 	prBoundingRect;				/* version 1.0 */
	PTR_R4_BITMASK 	pbmTransparencyBitmask;			/* version 1.0 */
	PTR_R4_FLAG 	pfUpdatedTransparencyBitmask;		/* version 1.0 */
	LONG			lBrightness;				/* version 1.0 */
	LONG			lSaturation;				/* version 1.0 */
	LONG			lContrast;					/* version 1.0 */
	
	DWORD			dwFillColor;				/* version 1.2 */
	DWORD			dwFirstPalIndex;				/* version 1.2 */
	DWORD			dwLastPalIndex;				/* version 1.2 */
	LPRGBQUAD		prgbPalette;				/* version 1.2 */
	R4_DITHER		eDither;					/* version 1.2 */
	R4_FLAG		fViewRectOrigin;				/* version 1.2 */
	PTR_R4_BITMASK 	pbmInputTransparencyBitmask;		/* version 1.2 */
} R4_DEC_FRAME_DATA, FAR * PTR_R4_DEC_FRAME_DATA;

/* Turning scalability off completely was accomplished in versions 1.0 and 1.1
 * of the interface by decoding in STEPPING mode.  Setting the scalability
 * flag to false meant not to drop the quality of frames, but frames could
 * still be dropped.  For this reason, if SC_OFF is used, it will map to 
 * stepping mode, and SC_DONT_DROP_QUALITY occupies the position of "false."
 */
typedef enum {
	SC_DONT_DROP_QUALITY,
	SC_ON,
	SC_DONT_DROP_FRAMES,
	SC_OFF,
} R4_SCALABILITY;

/* Other decode parameters can only be changed prior to either an 
 * ICM_DECOMPRESS_BEGIN or an ICM_DECOMPRESSEX_BEGIN message.  These 
 * are found in the R4_DEC_SEQ_DATA structure.
 * See CUSTOM_INTERFACE_ENCODER_DATA for structure size constraints.
 */ 
#define DECSEQ_KEY				(1UL<<0)
#define DECSEQ_SCALABILITY			(1UL<<1)
#define DECSEQ_FILL_TRANSPARENT		(1UL<<2)
#define DECSEQ_ALT_LINE				(1UL<<3)
#define DECSEQ_VALID 				(1UL<<31)

typedef struct {
	DWORD		dwSize;
	DWORD		dwFourCC;
	DWORD		dwVersion;
	LONG		mtType;	
	LONG		oeEnvironment;
	DWORD		dwFlags;

	DWORD		dwKey;					/* version 1.0 */
	R4_FLAG		fEnabledKey;			/* version 1.0 */
	LONG		eScalability;				/* version 1.2; 1.0 fScalability */
	R4_FLAG		fFillTransparentPixels;		/* version 1.0 */
	R4_FLAG		fAltLine;				/* version 1.1 */
} R4_DEC_SEQ_DATA, FAR * PTR_R4_DEC_SEQ_DATA;


/* Decode persistent data parameters can only be sent prior to the
 * first ICM_DECOMPRESS_BEGIN message. These are found in the
 * R4_DECODE_INIT_DATA structure.
 */
#define DECINIT_VALID				(3UL<<30)	/* valid bit + one other bit */

typedef struct {
	DWORD		dwSize;
	DWORD		dwFourCC;
	DWORD		dwVersion;
	LONG		mtType;	
	LONG		oeEnvironment;
	DWORD		dwFlags;

	R4_FLAG	fBidir;					/* version 1.2 */
	R4_FLAG	fDeltaFrames;				/* version 1.2 */
	R4_FLAG	fTransparency;				/* version 1.2 */
	DWORD		dwNLevels;					/* version 1.2 */
	DWORD		dwTileWidth;				/* version 1.2 */
	DWORD		dwTileHeight;				/* version 1.2 */
} R4_DECODE_INIT_DATA, FAR * PTR_R4_DECODE_INIT_DATA;


/* Encode parameters can only be changed prior to an ICM_COMPRESS_BEGIN 
 * messsage.  These are found in the R4_ENC_SEQ_DATA structure (these 
 * include the parameters that can be set in the super dialog box).
 * See CUSTOM_INTERFACE_ENCODER_DATA for structure size constraints.
 */  
#define ENCSEQ_KEY				(1UL<<0)
#define ENCSEQ_MINIMUM_VIEWPORT		(1UL<<1)
#define ENCSEQ_TRANSPARENCY			(1UL<<2)
#define ENCSEQ_SCALABILITY			(1UL<<3)
#define ENCSEQ_BI_DIR_PREDICTION		(1UL<<4)
#define ENCSEQ_PLAYBACK_PLATFORM		(1UL<<5)
#define ENCSEQ_RANDOM_KEY_AND_BIDIR 	(1UL<<6)
#define ENCSEQ_FRAME_INFO			(1UL<<7)
#define ENCSEQ_QUICK_COMPRESS			(1UL<<8)
#define ENCSEQ_VALID				(1UL<<31)

typedef struct {
	DWORD			dwSize;
	DWORD			dwFourCC;
	DWORD			dwVersion;
	LONG			mtType;	
	LONG			oeEnvironment;
	DWORD			dwFlags;

	DWORD			dwKey;					/* version 1.0 */
	DWORD			dwMinViewportWidth;			/* version 1.0 */
	DWORD			dwMinViewportHeight;			/* version 1.0 */
	R4_RANGE		rngTransparencyRange;			/* version 1.0 */
	PTR_R4_BITMASK 	pbmTransparencyBitmask;			/* version 1.0 */
	LONG			tmTransparencyMethod;			/* version 1.0 */
	R4_FLAG		fEnabledKey;				/* version 1.0 */
	R4_FLAG		fScalability;				/* version 1.0 */
	R4_FLAG		fBiDirPrediction;				/* version 1.0 */
	R4_FLAG		fRandomKeyAndBiDir;			/* version 1.0 */
	DWORD			dwPlaybackPlatform;			/* version 1.0 */
	WORD			wFrameLatency;				/* version 1.0 */
	WORD			wDeadFrames;				/* version 1.0 */
	R4_FLAG		fQuickCompress;				/* version 1.1 */
} R4_ENC_SEQ_DATA, FAR * PTR_R4_ENC_SEQ_DATA;


#endif /* __VFW_SPEC_H__ */
/************************/


/************************************************************************
*  datatype.h                                                           *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -