📄 vfwmod.h
字号:
DWORD dwFlags; DWORD dwChunkOffset; // Position of chunk DWORD dwChunkLength; // Length of chunk} AVIINDEXENTRY;/*** Palette change chunk**** Used in video streams.*/typedef struct{ BYTE bFirstEntry; /* first entry to change */ BYTE bNumEntries; /* # entries to change (0 if 256) */ WORD wFlags; /* Mostly to preserve alignment... */ PALETTEENTRY peNew[]; /* New color specifications */} AVIPALCHANGE;#else #include <avifmt.h>#endif /* not _WIN32 */#endif /* NOAVIFMT *//**************************************************************************** * * MMREG.H (standard include file for MM defines, like FOURCC and things) * ***************************************************************************/#ifdef _WIN32#ifndef RC_INVOKED#include "pshpack8.h"#endif#endif#ifndef NOMMREG #include <mmreg.h>#endif/**************************************************************************** * * AVIFile - routines for reading/writing standard AVI files * ***************************************************************************/#ifndef NOAVIFILE#ifdef _WIN32/* * Ansi - Unicode thunking. * * Unicode or Ansi-only apps can call the avifile APIs. * any Win32 app who wants to use * any of the AVI COM interfaces must be UNICODE - the AVISTREAMINFO and * AVIFILEINFO structures used in the Info methods of these interfaces are * the unicode variants, and no thunking to or from ansi takes place * except in the AVIFILE api entrypoints. * * For Ansi/Unicode thunking: for each entrypoint or structure that * uses chars or strings, two versions are declared in the Win32 version, * ApiNameW and ApiNameA. The default name ApiName is #defined to one or * other of these depending on whether UNICODE is defined (during * compilation of the app that is including this header). The source will * contain ApiName and ApiNameA (with ApiName being the Win16 implementation, * and also #defined to ApiNameW, and ApiNameA being the thunk entrypoint). * */#ifndef mmioFOURCC #define mmioFOURCC( ch0, ch1, ch2, ch3 ) \ ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \ ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )#endif#ifndef streamtypeVIDEO#define streamtypeVIDEO mmioFOURCC('v', 'i', 'd', 's')#define streamtypeAUDIO mmioFOURCC('a', 'u', 'd', 's')#define streamtypeMIDI mmioFOURCC('m', 'i', 'd', 's')#define streamtypeTEXT mmioFOURCC('t', 'x', 't', 's')#endif#ifndef AVIIF_KEYFRAME#define AVIIF_KEYFRAME 0x00000010L // this frame is a key frame.#endif// For GetFrame::SetFormat - use the best format for the display#define AVIGETFRAMEF_BESTDISPLAYFMT 1//// Structures used by AVIStreamInfo & AVIFileInfo.//// These are related to, but not identical to, the header chunks// in an AVI file.///* * * --- AVISTREAMINFO ------------------------------------------------ * * for Unicode/Ansi thunking we need to declare three versions of this! */typedef struct _AVISTREAMINFOW { DWORD fccType; DWORD fccHandler; DWORD dwFlags; /* Contains AVITF_* flags */ DWORD dwCaps; WORD wPriority; WORD wLanguage; DWORD dwScale; DWORD dwRate; /* dwRate / dwScale == samples/second */ DWORD dwStart; DWORD dwLength; /* In units above... */ DWORD dwInitialFrames; DWORD dwSuggestedBufferSize; DWORD dwQuality; DWORD dwSampleSize; RECT rcFrame; DWORD dwEditCount; DWORD dwFormatChangeCount; WCHAR szName[64];} AVISTREAMINFOW, FAR * LPAVISTREAMINFOW;typedef struct _AVISTREAMINFOA { DWORD fccType; DWORD fccHandler; DWORD dwFlags; /* Contains AVITF_* flags */ DWORD dwCaps; WORD wPriority; WORD wLanguage; DWORD dwScale; DWORD dwRate; /* dwRate / dwScale == samples/second */ DWORD dwStart; DWORD dwLength; /* In units above... */ DWORD dwInitialFrames; DWORD dwSuggestedBufferSize; DWORD dwQuality; DWORD dwSampleSize; RECT rcFrame; DWORD dwEditCount; DWORD dwFormatChangeCount; char szName[64];} AVISTREAMINFOA, FAR * LPAVISTREAMINFOA;#ifdef UNICODE#define AVISTREAMINFO AVISTREAMINFOW#define LPAVISTREAMINFO LPAVISTREAMINFOW#else#define AVISTREAMINFO AVISTREAMINFOA#define LPAVISTREAMINFO LPAVISTREAMINFOA#endif#define AVISTREAMINFO_DISABLED 0x00000001#define AVISTREAMINFO_FORMATCHANGES 0x00010000/* * --- AVIFILEINFO ---------------------------------------------------- * */typedef struct _AVIFILEINFOW { DWORD dwMaxBytesPerSec; // max. transfer rate DWORD dwFlags; // the ever-present flags DWORD dwCaps; DWORD dwStreams; DWORD dwSuggestedBufferSize; DWORD dwWidth; DWORD dwHeight; DWORD dwScale; DWORD dwRate; /* dwRate / dwScale == samples/second */ DWORD dwLength; DWORD dwEditCount; WCHAR szFileType[64]; // descriptive string for file type?} AVIFILEINFOW, FAR * LPAVIFILEINFOW;typedef struct _AVIFILEINFOA { DWORD dwMaxBytesPerSec; // max. transfer rate DWORD dwFlags; // the ever-present flags DWORD dwCaps; DWORD dwStreams; DWORD dwSuggestedBufferSize; DWORD dwWidth; DWORD dwHeight; DWORD dwScale; DWORD dwRate; /* dwRate / dwScale == samples/second */ DWORD dwLength; DWORD dwEditCount; char szFileType[64]; // descriptive string for file type?} AVIFILEINFOA, FAR * LPAVIFILEINFOA;#ifdef UNICODE#define AVIFILEINFO AVIFILEINFOW#define LPAVIFILEINFO LPAVIFILEINFOW#else#define AVIFILEINFO AVIFILEINFOA#define LPAVIFILEINFO LPAVIFILEINFOA#endif// Flags for dwFlags#define AVIFILEINFO_HASINDEX 0x00000010#define AVIFILEINFO_MUSTUSEINDEX 0x00000020#define AVIFILEINFO_ISINTERLEAVED 0x00000100#define AVIFILEINFO_WASCAPTUREFILE 0x00010000#define AVIFILEINFO_COPYRIGHTED 0x00020000// Flags for dwCaps#define AVIFILECAPS_CANREAD 0x00000001#define AVIFILECAPS_CANWRITE 0x00000002#define AVIFILECAPS_ALLKEYFRAMES 0x00000010#define AVIFILECAPS_NOCOMPRESSION 0x00000020typedef BOOL (FAR PASCAL * AVISAVECALLBACK)(int);/************************************************************************//* Declaration for the AVICOMPRESSOPTIONS structure. Make sure it *//* matches the AutoDoc in avisave.c !!! *//************************************************************************/typedef struct { DWORD fccType; /* stream type, for consistency */ DWORD fccHandler; /* compressor */ DWORD dwKeyFrameEvery; /* keyframe rate */ DWORD dwQuality; /* compress quality 0-10,000 */ DWORD dwBytesPerSecond; /* bytes per second */ DWORD dwFlags; /* flags... see below */ LPVOID lpFormat; /* save format */ DWORD cbFormat; LPVOID lpParms; /* compressor options */ DWORD cbParms; DWORD dwInterleaveEvery; /* for non-video streams only */} AVICOMPRESSOPTIONS, FAR *LPAVICOMPRESSOPTIONS;//// Defines for the dwFlags field of the AVICOMPRESSOPTIONS struct// Each of these flags determines if the appropriate field in the structure// (dwInterleaveEvery, dwBytesPerSecond, and dwKeyFrameEvery) is payed// attention to. See the autodoc in avisave.c for details.//#define AVICOMPRESSF_INTERLEAVE 0x00000001 // interleave#define AVICOMPRESSF_DATARATE 0x00000002 // use a data rate#define AVICOMPRESSF_KEYFRAMES 0x00000004 // use keyframes#define AVICOMPRESSF_VALID 0x00000008 // has valid data?#include <ole2.h>/* - - - - - - - - *//****** AVI Stream Interface *******************************************/#undef INTERFACE#define INTERFACE IAVIStreamDECLARE_INTERFACE_(IAVIStream, IUnknown){ // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; // *** IAVIStream methods *** STDMETHOD(Create) (THIS_ LPARAM lParam1, LPARAM lParam2) PURE ; STDMETHOD(Info) (THIS_ AVISTREAMINFOW FAR * psi, LONG lSize) PURE ; STDMETHOD_(LONG, FindSample)(THIS_ LONG lPos, LONG lFlags) PURE ; STDMETHOD(ReadFormat) (THIS_ LONG lPos, LPVOID lpFormat, LONG FAR *lpcbFormat) PURE ; STDMETHOD(SetFormat) (THIS_ LONG lPos, LPVOID lpFormat, LONG cbFormat) PURE ; STDMETHOD(Read) (THIS_ LONG lStart, LONG lSamples, LPVOID lpBuffer, LONG cbBuffer, LONG FAR * plBytes, LONG FAR * plSamples) PURE ; STDMETHOD(Write) (THIS_ LONG lStart, LONG lSamples, LPVOID lpBuffer, LONG cbBuffer, DWORD dwFlags, LONG FAR *plSampWritten, LONG FAR *plBytesWritten) PURE ; STDMETHOD(Delete) (THIS_ LONG lStart, LONG lSamples) PURE; STDMETHOD(ReadData) (THIS_ DWORD fcc, LPVOID lp, LONG FAR *lpcb) PURE ; STDMETHOD(WriteData) (THIS_ DWORD fcc, LPVOID lp, LONG cb) PURE ;#ifdef _WIN32 STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, LONG cbInfo) PURE;#else STDMETHOD(Reserved1) (THIS) PURE; STDMETHOD(Reserved2) (THIS) PURE; STDMETHOD(Reserved3) (THIS) PURE; STDMETHOD(Reserved4) (THIS) PURE; STDMETHOD(Reserved5) (THIS) PURE;#endif};typedef IAVIStream FAR* PAVISTREAM;#undef INTERFACE#define INTERFACE IAVIStreamingDECLARE_INTERFACE_(IAVIStreaming, IUnknown){ // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; // *** IAVIStreaming methods *** STDMETHOD(Begin) (THIS_ LONG lStart, // start of what we expect // to play LONG lEnd, // expected end, or -1 LONG lRate) PURE; // Should this be a float? STDMETHOD(End) (THIS) PURE;};typedef IAVIStreaming FAR* PAVISTREAMING;#undef INTERFACE#define INTERFACE IAVIEditStreamDECLARE_INTERFACE_(IAVIEditStream, IUnknown){ // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; // *** IAVIEditStream methods *** STDMETHOD(Cut) (THIS_ LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult) PURE; STDMETHOD(Copy) (THIS_ LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult) PURE; STDMETHOD(Paste) (THIS_ LONG FAR *plPos, LONG FAR *plLength, PAVISTREAM pstream, LONG lStart, LONG lEnd) PURE; STDMETHOD(Clone) (THIS_ PAVISTREAM FAR *ppResult) PURE; STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, LONG cbInfo) PURE;};typedef IAVIEditStream FAR* PAVIEDITSTREAM;/****** AVI File Interface *******************************************/#undef INTERFACE#define INTERFACE IAVIFile#define PAVIFILE IAVIFile FAR*DECLARE_INTERFACE_(IAVIFile, IUnknown){ // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; // *** IAVIFile methods *** STDMETHOD(Info) (THIS_ AVIFILEINFOW FAR * pfi, LONG lSize) PURE; STDMETHOD(GetStream) (THIS_ PAVISTREAM FAR * ppStream, DWORD fccType, LONG lParam) PURE; STDMETHOD(CreateStream) (THIS_ PAVISTREAM FAR * ppStream, AVISTREAMINFOW FAR * psi) PURE; STDMETHOD(WriteData) (THIS_ DWORD ckid, LPVOID lpData, LONG cbData) PURE; STDMETHOD(ReadData) (THIS_ DWORD ckid, LPVOID lpData, LONG FAR *lpcbData) PURE; STDMETHOD(EndRecord) (THIS) PURE; STD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -