af062818b47340eef15700d2f0211576ba3506eevboxsync/*
af062818b47340eef15700d2f0211576ba3506eevboxsync * Copyright (C) the Wine project
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is free software; you can redistribute it and/or
af062818b47340eef15700d2f0211576ba3506eevboxsync * modify it under the terms of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License as published by the Free Software Foundation; either
af062818b47340eef15700d2f0211576ba3506eevboxsync * version 2.1 of the License, or (at your option) any later version.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is distributed in the hope that it will be useful,
af062818b47340eef15700d2f0211576ba3506eevboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
af062818b47340eef15700d2f0211576ba3506eevboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
af062818b47340eef15700d2f0211576ba3506eevboxsync * Lesser General Public License for more details.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * You should have received a copy of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License along with this library; if not, write to the Free Software
af062818b47340eef15700d2f0211576ba3506eevboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync/*
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * a choice of LGPL license versions is made available with the language indicating
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * of the LGPL is applied is otherwise unspecified.
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync */
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef __WINE_VFW_H
af062818b47340eef15700d2f0211576ba3506eevboxsync#define __WINE_VFW_H
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#include <mmsystem.h>
af062818b47340eef15700d2f0211576ba3506eevboxsync#include <mmreg.h>
af062818b47340eef15700d2f0211576ba3506eevboxsync#include <msacm.h>
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VFWAPI WINAPI
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VFWAPIV WINAPIV
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __cplusplus
af062818b47340eef15700d2f0211576ba3506eevboxsyncextern "C" {
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* __cplusplus */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef HANDLE HDRAWDIB;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/*****************************************************************************
af062818b47340eef15700d2f0211576ba3506eevboxsync * Predeclare the interfaces
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct IAVIStream *PAVISTREAM;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct IAVIFile *PAVIFILE;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct IGetFrame *PGETFRAME;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct IAVIEditStream *PAVIEDITSTREAM;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Installable Compressor Manager */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICVERSION 0x0104
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HIC);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* error return codes */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_OK 0
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_DONTDRAW 1
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_NEWPALETTE 2
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_GOTOKEYFRAME 3
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_STOPDRAWING 4
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_UNSUPPORTED -1
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_BADFORMAT -2
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_MEMORY -3
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_INTERNAL -4
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_BADFLAGS -5
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_BADPARAM -6
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_BADSIZE -7
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_BADHANDLE -8
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_CANTUPDATE -9
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_ABORT -10
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_ERROR -100
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_BADBITDEPTH -200
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_BADIMAGESIZE -201
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICERR_CUSTOM -400
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* ICM Messages */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_USER (DRV_USER+0x0000)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* ICM driver message range */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_RESERVED_LOW (DRV_USER+0x1000)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_RESERVED_HIGH (DRV_USER+0x2000)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_RESERVED ICM_RESERVED_LOW
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_GETSTATE (ICM_RESERVED+0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_SETSTATE (ICM_RESERVED+1)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_GETINFO (ICM_RESERVED+2)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_CONFIGURE (ICM_RESERVED+10)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_ABOUT (ICM_RESERVED+11)
af062818b47340eef15700d2f0211576ba3506eevboxsync/* */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_GETQUALITY (ICM_RESERVED+31)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_SETQUALITY (ICM_RESERVED+32)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_SET (ICM_RESERVED+40)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_GET (ICM_RESERVED+41)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* 2 constant FOURCC codes */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_FRAMERATE mmioFOURCC('F','r','m','R')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R')
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_COMPRESS_GET_FORMAT (ICM_USER+4)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_COMPRESS_GET_SIZE (ICM_USER+5)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_COMPRESS_QUERY (ICM_USER+6)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_COMPRESS_BEGIN (ICM_USER+7)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_COMPRESS (ICM_USER+8)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_COMPRESS_END (ICM_USER+9)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DECOMPRESS_QUERY (ICM_USER+11)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DECOMPRESS_BEGIN (ICM_USER+12)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DECOMPRESS (ICM_USER+13)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DECOMPRESS_END (ICM_USER+14)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_QUERY (ICM_USER+31)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_BEGIN (ICM_USER+15)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_GET_PALETTE (ICM_USER+16)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_START (ICM_USER+18)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_STOP (ICM_USER+19)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_END (ICM_USER+21)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_GETTIME (ICM_USER+32)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW (ICM_USER+33)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_WINDOW (ICM_USER+34)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_SETTIME (ICM_USER+35)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_REALIZE (ICM_USER+36)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_FLUSH (ICM_USER+37)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_RENDERBUFFER (ICM_USER+38)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_START_PLAY (ICM_USER+39)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_STOP_PLAY (ICM_USER+40)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DRAW_CHANGEPALETTE (ICM_USER+51)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_GETBUFFERSWANTED (ICM_USER+41)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DECOMPRESSEX_QUERY (ICM_USER+61)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DECOMPRESSEX (ICM_USER+62)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_DECOMPRESSEX_END (ICM_USER+63)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICM_SET_STATUS_PROC (ICM_USER+72)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef comptypeDIB
af062818b47340eef15700d2f0211576ba3506eevboxsync#define comptypeDIB mmioFOURCC('D','I','B',' ')
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* structs */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* NOTE: Only the 16 bit structs are packed. Structs that are packed anyway
af062818b47340eef15700d2f0211576ba3506eevboxsync * have not been changed. If a structure is later extended, you may need to create
af062818b47340eef15700d2f0211576ba3506eevboxsync * two versions of it.
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSize; /* 00: size */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccType; /* 04: type 'vidc' usually */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccHandler; /* 08: */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwVersion; /* 0c: version of compman opening you */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags; /* 10: LOWORD is type specific */
af062818b47340eef15700d2f0211576ba3506eevboxsync LRESULT dwError; /* 14: */
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID pV1Reserved; /* 18: */
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID pV2Reserved; /* 1c: */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dnDevNode; /* 20: */
af062818b47340eef15700d2f0211576ba3506eevboxsync /* 24: */
af062818b47340eef15700d2f0211576ba3506eevboxsync} ICOPEN,*LPICOPEN;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICCOMPRESS_KEYFRAME 0x00000001L
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiOutput;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpOutput;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiInput;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpInput;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPDWORD lpckid;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPDWORD lpdwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lFrameNum;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFrameSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwQuality;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiPrev;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpPrev;
af062818b47340eef15700d2f0211576ba3506eevboxsync} ICCOMPRESS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncDWORD VFWAPIV ICCompress(
af062818b47340eef15700d2f0211576ba3506eevboxsync HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiOutput,LPVOID lpData,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiInput,LPVOID lpBits,LPDWORD lpckid,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPDWORD lpdwFlags,LONG lFrameNum,DWORD dwFrameSize,DWORD dwQuality,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiPrev,LPVOID lpPrev
af062818b47340eef15700d2f0211576ba3506eevboxsync);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICCompressGetFormat(hic, lpbiInput, lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage( \
af062818b47340eef15700d2f0211576ba3506eevboxsync hic,ICM_COMPRESS_GET_FORMAT,(DWORD_PTR)(LPVOID)(lpbiInput), \
af062818b47340eef15700d2f0211576ba3506eevboxsync (DWORD_PTR)(LPVOID)(lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync )
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICCompressGetFormatSize(hic,lpbi) ICCompressGetFormat(hic,lpbi,NULL)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICCompressBegin(hic, lpbiInput, lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage( \
af062818b47340eef15700d2f0211576ba3506eevboxsync hic, ICM_COMPRESS_BEGIN, (DWORD_PTR)(LPVOID)(lpbiInput), \
af062818b47340eef15700d2f0211576ba3506eevboxsync (DWORD_PTR)(LPVOID)(lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync )
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICCompressGetSize(hic, lpbiInput, lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage( \
af062818b47340eef15700d2f0211576ba3506eevboxsync hic, ICM_COMPRESS_GET_SIZE, (DWORD_PTR)(LPVOID)(lpbiInput), \
af062818b47340eef15700d2f0211576ba3506eevboxsync (DWORD_PTR)(LPVOID)(lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync )
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICCompressQuery(hic, lpbiInput, lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage( \
af062818b47340eef15700d2f0211576ba3506eevboxsync hic, ICM_COMPRESS_QUERY, (DWORD_PTR)(LPVOID)(lpbiInput), \
af062818b47340eef15700d2f0211576ba3506eevboxsync (DWORD_PTR)(LPVOID)(lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync )
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICCompressEnd(hic) ICSendMessage(hic, ICM_COMPRESS_END, 0, 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* ICCOMPRESSFRAMES.dwFlags */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICCOMPRESSFRAMES_PADDING 0x00000001
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiOutput;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPARAM lOutput;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiInput;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPARAM lInput;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lStartFrame;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lFrameCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lQuality;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lDataRate;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lKeyRate;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwRate;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwScale;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwOverheadPerFrame;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwReserved2;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG (CALLBACK *GetData)(LPARAM lInput,LONG lFrame,LPVOID lpBits,LONG len);
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG (CALLBACK *PutData)(LPARAM lOutput,LONG lFrame,LPVOID lpBits,LONG len);
af062818b47340eef15700d2f0211576ba3506eevboxsync} ICCOMPRESSFRAMES;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPARAM lParam;
af062818b47340eef15700d2f0211576ba3506eevboxsync /* messages for Status callback */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICSTATUS_START 0
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICSTATUS_STATUS 1
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICSTATUS_END 2
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICSTATUS_ERROR 3
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICSTATUS_YIELD 4
af062818b47340eef15700d2f0211576ba3506eevboxsync /* FIXME: some X11 libs define Status as int... */
af062818b47340eef15700d2f0211576ba3506eevboxsync /* LONG (CALLBACK *zStatus)(LPARAM lParam, UINT message, LONG l); */
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG (CALLBACK *zStatus)(LPARAM lParam, UINT message, LONG l);
af062818b47340eef15700d2f0211576ba3506eevboxsync} ICSETSTATUSPROC;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Values for wMode of ICOpen() */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMODE_COMPRESS 1
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMODE_DECOMPRESS 2
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMODE_FASTDECOMPRESS 3
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMODE_QUERY 4
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMODE_FASTCOMPRESS 5
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMODE_DRAW 8
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* quality flags */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICQUALITY_LOW 0
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICQUALITY_HIGH 10000
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICQUALITY_DEFAULT -1
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSize; /* 00: */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccType; /* 04:compressor type 'vidc' 'audc' */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccHandler; /* 08:compressor sub-type 'rle ' 'jpeg' 'pcm '*/
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags; /* 0c:flags LOWORD is type specific */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwVersion; /* 10:version of the driver */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwVersionICM; /* 14:version of the ICM used */
af062818b47340eef15700d2f0211576ba3506eevboxsync /*
af062818b47340eef15700d2f0211576ba3506eevboxsync * under Win32, the driver always returns UNICODE strings.
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync WCHAR szName[16]; /* 18:short name */
af062818b47340eef15700d2f0211576ba3506eevboxsync WCHAR szDescription[128]; /* 38:long name */
af062818b47340eef15700d2f0211576ba3506eevboxsync WCHAR szDriver[128]; /* 138:driver that contains compressor*/
af062818b47340eef15700d2f0211576ba3506eevboxsync /* 238: */
af062818b47340eef15700d2f0211576ba3506eevboxsync} ICINFO;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* ICINFO.dwFlags */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDCF_QUALITY 0x0001 /* supports quality */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDCF_CRUNCH 0x0002 /* supports crunching to a frame size */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDCF_TEMPORAL 0x0004 /* supports inter-frame compress */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDCF_COMPRESSFRAMES 0x0008 /* wants the compress all frames message */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDCF_DRAW 0x0010 /* supports drawing */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDCF_FASTTEMPORALC 0x0020 /* does not need prev frame on compress */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDCF_FASTTEMPORALD 0x0080 /* does not need prev frame on decompress */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDCF_QUALITYTIME 0x0040 /* supports temporal quality */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* function shortcuts */
af062818b47340eef15700d2f0211576ba3506eevboxsync/* ICM_ABOUT */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMF_ABOUT_QUERY 0x00000001
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICQueryAbout(hic) \
af062818b47340eef15700d2f0211576ba3506eevboxsync (ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR)-1,ICMF_ABOUT_QUERY)==ICERR_OK)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICAbout(hic, hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR)(UINT_PTR)(hwnd),0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* ICM_CONFIGURE */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMF_CONFIGURE_QUERY 0x00000001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICQueryConfigure(hic) \
af062818b47340eef15700d2f0211576ba3506eevboxsync (ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICConfigure(hic,hwnd) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR)(UINT_PTR)(hwnd),0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Decompression stuff */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDECOMPRESS_HURRYUP 0x80000000 /* don't draw just buffer (hurry up!) */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDECOMPRESS_UPDATE 0x40000000 /* don't draw just update screen */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDECOMPRESS_PREROLL 0x20000000 /* this frame is before real start */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDECOMPRESS_NULLFRAME 0x10000000 /* repeat last frame */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDECOMPRESS_NOTKEYFRAME 0x08000000 /* this frame is not a key frame */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags; /* flags (from AVI index...) */
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiInput; /* BITMAPINFO of compressed data */
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpInput; /* compressed data */
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiOutput; /* DIB to decompress to */
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpOutput;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD ckid; /* ckid from AVI file */
af062818b47340eef15700d2f0211576ba3506eevboxsync} ICDECOMPRESS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync /* changed for ICM_DECOMPRESSEX */
af062818b47340eef15700d2f0211576ba3506eevboxsync INT xDst; /* destination rectangle */
af062818b47340eef15700d2f0211576ba3506eevboxsync INT yDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dxDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dyDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync INT xSrc; /* source rectangle */
af062818b47340eef15700d2f0211576ba3506eevboxsync INT ySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dxSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync} ICDECOMPRESSEX;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncDWORD VFWAPIV ICDecompress(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiFormat,LPVOID lpData,LPBITMAPINFOHEADER lpbi,LPVOID lpBits);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDecompressBegin(hic, lpbiInput, lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage( \
af062818b47340eef15700d2f0211576ba3506eevboxsync hic, ICM_DECOMPRESS_BEGIN, (DWORD_PTR)(LPVOID)(lpbiInput), \
af062818b47340eef15700d2f0211576ba3506eevboxsync (DWORD_PTR)(LPVOID)(lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync )
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDecompressQuery(hic, lpbiInput, lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage( \
af062818b47340eef15700d2f0211576ba3506eevboxsync hic,ICM_DECOMPRESS_QUERY, (DWORD_PTR)(LPVOID)(lpbiInput), \
af062818b47340eef15700d2f0211576ba3506eevboxsync (DWORD_PTR) (LPVOID)(lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync )
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDecompressGetFormat(hic, lpbiInput, lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ((LONG)ICSendMessage( \
af062818b47340eef15700d2f0211576ba3506eevboxsync hic,ICM_DECOMPRESS_GET_FORMAT, (DWORD_PTR)(LPVOID)(lpbiInput), \
af062818b47340eef15700d2f0211576ba3506eevboxsync (DWORD_PTR)(LPVOID)(lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDecompressGetFormatSize(hic, lpbi) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICDecompressGetFormat(hic, lpbi, NULL)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDecompressGetPalette(hic, lpbiInput, lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage( \
af062818b47340eef15700d2f0211576ba3506eevboxsync hic, ICM_DECOMPRESS_GET_PALETTE, (DWORD_PTR)(LPVOID)(lpbiInput), \
af062818b47340eef15700d2f0211576ba3506eevboxsync (DWORD_PTR)(LPVOID)(lpbiOutput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync )
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDecompressSetPalette(hic,lpbiPalette) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage( \
af062818b47340eef15700d2f0211576ba3506eevboxsync hic,ICM_DECOMPRESS_SET_PALETTE, \
af062818b47340eef15700d2f0211576ba3506eevboxsync (DWORD_PTR)(LPVOID)(lpbiPalette),0 \
af062818b47340eef15700d2f0211576ba3506eevboxsync )
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDecompressEnd(hic) ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncLRESULT VFWAPI ICSendMessage(HIC hic, UINT msg, DWORD_PTR dw1, DWORD_PTR dw2);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncstatic inline LRESULT VFWAPI ICDecompressEx(HIC hic, DWORD dwFlags,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiSrc, LPVOID lpSrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync int xSrc, int ySrc, int dxSrc, int dySrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiDst, LPVOID lpDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync int xDst, int yDst, int dxDst, int dyDst)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync ICDECOMPRESSEX ic;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dwFlags = dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpbiSrc = lpbiSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpSrc = lpSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.xSrc = xSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.ySrc = ySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dxSrc = dxSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dySrc = dySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpbiDst = lpbiDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpDst = lpDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.xDst = xDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.yDst = yDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dxDst = dxDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dyDst = dyDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync return ICSendMessage(hic, ICM_DECOMPRESSEX, (DWORD_PTR)&ic, sizeof(ic));
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncstatic inline LRESULT VFWAPI ICDecompressExBegin(HIC hic, DWORD dwFlags,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiSrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpSrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync int xSrc, int ySrc, int dxSrc, int dySrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync int xDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync int yDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync int dxDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync int dyDst)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync ICDECOMPRESSEX ic;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dwFlags = dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpbiSrc = lpbiSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpSrc = lpSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.xSrc = xSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.ySrc = ySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dxSrc = dxSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dySrc = dySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpbiDst = lpbiDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpDst = lpDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.xDst = xDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.yDst = yDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dxDst = dxDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dyDst = dyDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync return ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, (DWORD_PTR)&ic, sizeof(ic));
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsyncstatic inline LRESULT VFWAPI ICDecompressExQuery(HIC hic, DWORD dwFlags,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiSrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpSrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync int xSrc, int ySrc, int dxSrc, int dySrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync int xDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync int yDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync int dxDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync int dyDst)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync ICDECOMPRESSEX ic;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dwFlags = dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpbiSrc = lpbiSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpSrc = lpSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.xSrc = xSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.ySrc = ySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dxSrc = dxSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dySrc = dySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpbiDst = lpbiDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpDst = lpDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.xDst = xDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.yDst = yDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dxDst = dxDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dyDst = dyDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync return ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, (DWORD_PTR)&ic, sizeof(ic));
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDecompressExEnd(hic) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_QUERY 0x00000001L /* test for support */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_FULLSCREEN 0x00000002L /* draw to full screen */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_HDC 0x00000004L /* draw to a HDC/HWND */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_ANIMATE 0x00000008L /* expect palette animation */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_CONTINUE 0x00000010L /* draw is a continuation of previous draw */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_MEMORYDC 0x00000020L /* DC is offscreen, by the way */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_UPDATING 0x00000040L /* We're updating, as opposed to playing */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_RENDER 0x00000080L /* used to render data not draw it */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_BUFFER 0x00000100L /* buffer data offscreen, we will need to update it */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDecompressOpen(fccType, fccHandler, lpbiIn, lpbiOut) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawOpen(fccType, fccHandler, lpbiIn) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICLocate(fccType, fccHandler, lpbiIn, NULL, ICMODE_DRAW)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHANDLE VFWAPI ICImageCompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpBits, LPBITMAPINFO lpbiOut, LONG lQuality,
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG* plSize);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHANDLE VFWAPI ICImageDecompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpBits, LPBITMAPINFO lpbiOut);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI ICInfo(DWORD fccType, DWORD fccHandler, ICINFO * lpicinfo);
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags);
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags);
af062818b47340eef15700d2f0211576ba3506eevboxsyncLRESULT VFWAPI ICGetInfo(HIC hic,ICINFO *picinfo, DWORD cb);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHIC VFWAPI ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode);
5112e32d7072e280613921c982a6672f2c859cf3vboxsync#ifdef WINE_STRICT_PROTOTYPES
5112e32d7072e280613921c982a6672f2c859cf3vboxsyncHIC VFWAPI ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, DRIVERPROC lpfnHandler);
5112e32d7072e280613921c982a6672f2c859cf3vboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsyncHIC VFWAPI ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler);
5112e32d7072e280613921c982a6672f2c859cf3vboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncLRESULT VFWAPI ICClose(HIC hic);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHIC VFWAPI ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHIC VFWAPI ICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Values for wFlags of ICInstall() */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICINSTALL_UNICODE 0x8000
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICINSTALL_FUNCTION 0x0001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICINSTALL_DRIVER 0x0002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICINSTALL_HDRV 0x0004
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICINSTALL_DRIVERW 0x8002
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICGetState(hic, pv, cb) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_GETSTATE, (DWORD_PTR)(LPVOID)(pv), (DWORD_PTR)(cb))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICSetState(hic, pv, cb) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_SETSTATE, (DWORD_PTR)(LPVOID)(pv), (DWORD_PTR)(cb))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICGetStateSize(hic) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICGetState(hic, NULL, 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncstatic inline DWORD ICGetDefaultQuality(HIC hic)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwICValue;
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_GETDEFAULTQUALITY, (DWORD_PTR)(LPVOID)&dwICValue, sizeof(DWORD));
af062818b47340eef15700d2f0211576ba3506eevboxsync return dwICValue;
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncstatic inline DWORD ICGetDefaultKeyFrameRate(HIC hic)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwICValue;
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, (DWORD_PTR)(LPVOID)&dwICValue, sizeof(DWORD));
af062818b47340eef15700d2f0211576ba3506eevboxsync return dwICValue;
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawWindow(hic, prc) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_WINDOW, (DWORD_PTR)(LPVOID)(prc), sizeof(RECT))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* As passed to ICM_DRAW_SUGGESTFORMAT */
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiIn;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiSuggest;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dxSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dxDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dyDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync HIC hicDecompressor;
af062818b47340eef15700d2f0211576ba3506eevboxsync} ICDRAWSUGGEST;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync int iStart;
af062818b47340eef15700d2f0211576ba3506eevboxsync int iLen;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPPALETTEENTRY lppe;
af062818b47340eef15700d2f0211576ba3506eevboxsync} ICPALETTE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncDWORD VFWAPIV ICDrawBegin(
af062818b47340eef15700d2f0211576ba3506eevboxsync HIC hic,
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags,/* flags */
af062818b47340eef15700d2f0211576ba3506eevboxsync HPALETTE hpal, /* palette to draw with */
af062818b47340eef15700d2f0211576ba3506eevboxsync HWND hwnd, /* window to draw to */
af062818b47340eef15700d2f0211576ba3506eevboxsync HDC hdc, /* HDC to draw to */
af062818b47340eef15700d2f0211576ba3506eevboxsync INT xDst, /* destination rectangle */
af062818b47340eef15700d2f0211576ba3506eevboxsync INT yDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dxDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dyDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbi, /* format of frame to draw */
af062818b47340eef15700d2f0211576ba3506eevboxsync INT xSrc, /* source rectangle */
af062818b47340eef15700d2f0211576ba3506eevboxsync INT ySrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dxSrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dySrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwRate, /* frames/second = (dwRate/dwScale) */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwScale
af062818b47340eef15700d2f0211576ba3506eevboxsync);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* as passed to ICM_DRAW_BEGIN */
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync HPALETTE hpal;
af062818b47340eef15700d2f0211576ba3506eevboxsync HWND hwnd;
af062818b47340eef15700d2f0211576ba3506eevboxsync HDC hdc;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT xDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT yDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dxDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dyDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbi;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT xSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT ySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dxSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync INT dySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwRate;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwScale;
af062818b47340eef15700d2f0211576ba3506eevboxsync} ICDRAWBEGIN;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_HURRYUP 0x80000000L /* don't draw just buffer (hurry up!) */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_UPDATE 0x40000000L /* don't draw just update screen */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_PREROLL 0x20000000L /* this frame is before real start */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_NULLFRAME 0x10000000L /* repeat last frame */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDRAW_NOTKEYFRAME 0x08000000L /* this frame is not a key frame */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpFormat;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpData;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD cbData;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lTime;
af062818b47340eef15700d2f0211576ba3506eevboxsync} ICDRAW;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncDWORD VFWAPIV ICDraw(HIC hic,DWORD dwFlags,LPVOID lpFormat,LPVOID lpData,DWORD cbData,LONG lTime);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncstatic inline LRESULT VFWAPI ICDrawSuggestFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbiOut,
af062818b47340eef15700d2f0211576ba3506eevboxsync int dxSrc, int dySrc,
af062818b47340eef15700d2f0211576ba3506eevboxsync int dxDst, int dyDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync HIC hicDecomp)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync ICDRAWSUGGEST ic;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpbiIn = lpbiIn;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lpbiSuggest = lpbiOut;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dxSrc = dxSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dySrc = dySrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dxDst = dxDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dyDst = dyDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.hicDecompressor = hicDecomp;
af062818b47340eef15700d2f0211576ba3506eevboxsync return ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, (DWORD_PTR)&ic, sizeof(ic));
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawQuery(hic, lpbiInput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_QUERY, (DWORD_PTR)(LPVOID)(lpbiInput), 0L)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawChangePalette(hic, lpbiInput) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, (DWORD_PTR)(LPVOID)(lpbiInput), 0L)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICGetBuffersWanted(hic, lpdwBuffers) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_GETBUFFERSWANTED, (DWORD_PTR)(LPVOID)(lpdwBuffers), 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawEnd(hic) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_END, 0, 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawStart(hic) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_START, 0, 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawStartPlay(hic, lFrom, lTo) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_START_PLAY, (DWORD_PTR)(lFrom), (DWORD_PTR)(lTo))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawStop(hic) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_STOP, 0, 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawStopPlay(hic) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawGetTime(hic, lplTime) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_GETTIME, (DWORD_PTR)(LPVOID)(lplTime), 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawSetTime(hic, lTime) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_SETTIME, (DWORD_PTR)lTime, 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawRealize(hic, hdc, fBackground) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_REALIZE, (DWORD_PTR)(UINT_PTR)(HDC)(hdc), (DWORD_PTR)(BOOL)(fBackground))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawFlush(hic) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICDrawRenderBuffer(hic) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncstatic inline LRESULT VFWAPI ICSetStatusProc(HIC hic, DWORD dwFlags, LRESULT lParam,
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG (CALLBACK *fpfnStatus)(LPARAM, UINT, LONG))
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync ICSETSTATUSPROC ic;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.dwFlags = dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.lParam = lParam;
af062818b47340eef15700d2f0211576ba3506eevboxsync /* FIXME: see comment in ICSETSTATUSPROC definition */
af062818b47340eef15700d2f0211576ba3506eevboxsync ic.zStatus = fpfnStatus;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync return ICSendMessage(hic, ICM_SET_STATUS_PROC, (DWORD_PTR)&ic, sizeof(ic));
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG cbSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync HIC hic;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccType;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccHandler;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFO lpbiIn;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFO lpbiOut;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpBitsOut;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpBitsPrev;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lFrame;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lKey;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lDataRate;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lQ;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG lKeyCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpState;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG cbState;
af062818b47340eef15700d2f0211576ba3506eevboxsync} COMPVARS, *PCOMPVARS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMF_COMPVARS_VALID 0x00000001
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData,
af062818b47340eef15700d2f0211576ba3506eevboxsync PCOMPVARS pc, LPSTR lpszTitle);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMF_CHOOSE_KEYFRAME 0x0001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMF_CHOOSE_DATARATE 0x0002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMF_CHOOSE_PREVIEW 0x0004
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICMF_CHOOSE_ALLCOMPRESSORS 0x0008
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid VFWAPI ICSeqCompressFrameEnd(PCOMPVARS pc);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncLPVOID VFWAPI ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits,
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL *pfKey, LONG *plSize);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid VFWAPI ICCompressorFree(PCOMPVARS pc);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/********************* AVIFILE function declarations *************************/
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef mmioFOURCC
af062818b47340eef15700d2f0211576ba3506eevboxsync#define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
af062818b47340eef15700d2f0211576ba3506eevboxsync ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
af062818b47340eef15700d2f0211576ba3506eevboxsync ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef aviTWOCC
af062818b47340eef15700d2f0211576ba3506eevboxsync#define aviTWOCC(ch0, ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef WORD TWOCC;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICTYPE_VIDEO mmioFOURCC('v', 'i', 'd', 'c')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ICTYPE_AUDIO mmioFOURCC('a', 'u', 'd', 'c')
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define formtypeAVI mmioFOURCC('A', 'V', 'I', ' ')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define listtypeAVIHEADER mmioFOURCC('h', 'd', 'r', 'l')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ckidAVIMAINHDR mmioFOURCC('a', 'v', 'i', 'h')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define listtypeSTREAMHEADER mmioFOURCC('s', 't', 'r', 'l')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ckidSTREAMHEADER mmioFOURCC('s', 't', 'r', 'h')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ckidSTREAMFORMAT mmioFOURCC('s', 't', 'r', 'f')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ckidSTREAMHANDLERDATA mmioFOURCC('s', 't', 'r', 'd')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ckidSTREAMNAME mmioFOURCC('s', 't', 'r', 'n')
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define listtypeAVIMOVIE mmioFOURCC('m', 'o', 'v', 'i')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define listtypeAVIRECORD mmioFOURCC('r', 'e', 'c', ' ')
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ckidAVINEWINDEX mmioFOURCC('i', 'd', 'x', '1')
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define streamtypeANY 0UL
af062818b47340eef15700d2f0211576ba3506eevboxsync#define streamtypeVIDEO mmioFOURCC('v', 'i', 'd', 's')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define streamtypeAUDIO mmioFOURCC('a', 'u', 'd', 's')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define streamtypeMIDI mmioFOURCC('m', 'i', 'd', 's')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define streamtypeTEXT mmioFOURCC('t', 'x', 't', 's')
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Basic chunk types */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define cktypeDIBbits aviTWOCC('d', 'b')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define cktypeDIBcompressed aviTWOCC('d', 'c')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define cktypePALchange aviTWOCC('p', 'c')
af062818b47340eef15700d2f0211576ba3506eevboxsync#define cktypeWAVEbytes aviTWOCC('w', 'b')
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Chunk id to use for extra chunks for padding. */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ckidAVIPADDING mmioFOURCC('J', 'U', 'N', 'K')
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FromHex(n) (((n) >= 'A') ? ((n) + 10 - 'A') : ((n) - '0'))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define StreamFromFOURCC(fcc) ((WORD)((FromHex(LOBYTE(LOWORD(fcc))) << 4) + \
af062818b47340eef15700d2f0211576ba3506eevboxsync (FromHex(HIBYTE(LOWORD(fcc))))))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define TWOCCFromFOURCC(fcc) HIWORD(fcc)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ToHex(n) ((BYTE)(((n) > 9) ? ((n) - 10 + 'A') : ((n) + '0')))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MAKEAVICKID(tcc, stream) \
af062818b47340eef15700d2f0211576ba3506eevboxsync MAKELONG((ToHex((stream) & 0x0f) << 8) | \
af062818b47340eef15700d2f0211576ba3506eevboxsync (ToHex(((stream) & 0xf0) >> 4)), tcc)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* AVIFileHdr.dwFlags */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIF_HASINDEX 0x00000010 /* Index at end of file? */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIF_MUSTUSEINDEX 0x00000020
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIF_ISINTERLEAVED 0x00000100
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIF_TRUSTCKTYPE 0x00000800 /* Use CKType to find key frames*/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIF_WASCAPTUREFILE 0x00010000
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIF_COPYRIGHTED 0x00020000
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVI_HEADERSIZE 2048
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef BOOL (CALLBACK *AVISAVECALLBACK)(INT);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _MainAVIHeader
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwMicroSecPerFrame;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwMaxBytesPerSec;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwPaddingGranularity;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwTotalFrames;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwInitialFrames;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwStreams;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSuggestedBufferSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwWidth;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwHeight;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwReserved[4];
af062818b47340eef15700d2f0211576ba3506eevboxsync} MainAVIHeader;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* AVIStreamHeader.dwFlags */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVISF_DISABLED 0x00000001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVISF_VIDEO_PALCHANGES 0x00010000
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync FOURCC fccType;
af062818b47340eef15700d2f0211576ba3506eevboxsync FOURCC fccHandler;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags; /* AVISF_* */
af062818b47340eef15700d2f0211576ba3506eevboxsync WORD wPriority;
af062818b47340eef15700d2f0211576ba3506eevboxsync WORD wLanguage;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwInitialFrames;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwScale;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwRate; /* dwRate / dwScale == samples/second */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwStart;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwLength; /* In units above... */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSuggestedBufferSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwQuality;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSampleSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct { SHORT left, top, right, bottom; } rcFrame; /* word.word - word.word in file */
af062818b47340eef15700d2f0211576ba3506eevboxsync} AVIStreamHeader;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* AVIINDEXENTRY.dwFlags */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIIF_LIST 0x00000001 /* chunk is a 'LIST' */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIIF_TWOCC 0x00000002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIIF_KEYFRAME 0x00000010 /* this frame is a key frame. */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIIF_FIRSTPART 0x00000020
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIIF_LASTPART 0x00000040
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIIF_MIDPART (AVIIF_LASTPART|AVIIF_FIRSTPART)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIIF_NOTIME 0x00000100 /* this frame doesn't take any time */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIIF_COMPUSE 0x0FFF0000
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _AVIINDEXENTRY {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD ckid;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwChunkOffset;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwChunkLength;
af062818b47340eef15700d2f0211576ba3506eevboxsync} AVIINDEXENTRY;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _AVIPALCHANGE {
af062818b47340eef15700d2f0211576ba3506eevboxsync BYTE bFirstEntry;
af062818b47340eef15700d2f0211576ba3506eevboxsync BYTE bNumEntries;
af062818b47340eef15700d2f0211576ba3506eevboxsync WORD wFlags; /* pad */
af062818b47340eef15700d2f0211576ba3506eevboxsync PALETTEENTRY peNew[1];
af062818b47340eef15700d2f0211576ba3506eevboxsync} AVIPALCHANGE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIIF_KEYFRAME 0x00000010 /* this frame is a key frame. */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIGETFRAMEF_BESTDISPLAYFMT 1
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _AVISTREAMINFOA {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccType;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccHandler;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags; /* AVIIF_* */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwCaps;
af062818b47340eef15700d2f0211576ba3506eevboxsync WORD wPriority;
af062818b47340eef15700d2f0211576ba3506eevboxsync WORD wLanguage;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwScale;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwRate; /* dwRate / dwScale == samples/second */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwStart;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwLength; /* In units above... */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwInitialFrames;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSuggestedBufferSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwQuality;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSampleSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync RECT rcFrame;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwEditCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFormatChangeCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync CHAR szName[64];
af062818b47340eef15700d2f0211576ba3506eevboxsync} AVISTREAMINFOA, * LPAVISTREAMINFOA, *PAVISTREAMINFOA;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _AVISTREAMINFOW {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccType;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccHandler;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwCaps;
af062818b47340eef15700d2f0211576ba3506eevboxsync WORD wPriority;
af062818b47340eef15700d2f0211576ba3506eevboxsync WORD wLanguage;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwScale;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwRate; /* dwRate / dwScale == samples/second */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwStart;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwLength; /* In units above... */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwInitialFrames;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSuggestedBufferSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwQuality;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSampleSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync RECT rcFrame;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwEditCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFormatChangeCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync WCHAR szName[64];
af062818b47340eef15700d2f0211576ba3506eevboxsync} AVISTREAMINFOW, * LPAVISTREAMINFOW, *PAVISTREAMINFOW;
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECL_WINELIB_TYPE_AW(AVISTREAMINFO)
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECL_WINELIB_TYPE_AW(LPAVISTREAMINFO)
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECL_WINELIB_TYPE_AW(PAVISTREAMINFO)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVISTREAMINFO_DISABLED 0x00000001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVISTREAMINFO_FORMATCHANGES 0x00010000
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* AVIFILEINFO.dwFlags */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFILEINFO_HASINDEX 0x00000010
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFILEINFO_MUSTUSEINDEX 0x00000020
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFILEINFO_ISINTERLEAVED 0x00000100
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFILEINFO_TRUSTCKTYPE 0x00000800
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFILEINFO_WASCAPTUREFILE 0x00010000
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFILEINFO_COPYRIGHTED 0x00020000
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* AVIFILEINFO.dwCaps */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFILECAPS_CANREAD 0x00000001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFILECAPS_CANWRITE 0x00000002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFILECAPS_ALLKEYFRAMES 0x00000010
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFILECAPS_NOCOMPRESSION 0x00000020
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _AVIFILEINFOW {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwMaxBytesPerSec;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwCaps;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwStreams;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSuggestedBufferSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwWidth;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwHeight;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwScale;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwRate;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwLength;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwEditCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync WCHAR szFileType[64];
af062818b47340eef15700d2f0211576ba3506eevboxsync} AVIFILEINFOW, * LPAVIFILEINFOW, *PAVIFILEINFOW;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _AVIFILEINFOA {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwMaxBytesPerSec;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwCaps;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwStreams;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSuggestedBufferSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwWidth;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwHeight;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwScale;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwRate;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwLength;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwEditCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync CHAR szFileType[64];
af062818b47340eef15700d2f0211576ba3506eevboxsync} AVIFILEINFOA, * LPAVIFILEINFOA, *PAVIFILEINFOA;
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECL_WINELIB_TYPE_AW(AVIFILEINFO)
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECL_WINELIB_TYPE_AW(PAVIFILEINFO)
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECL_WINELIB_TYPE_AW(LPAVIFILEINFO)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* AVICOMPRESSOPTIONS.dwFlags. determines presence of fields in below struct */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVICOMPRESSF_INTERLEAVE 0x00000001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVICOMPRESSF_DATARATE 0x00000002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVICOMPRESSF_KEYFRAMES 0x00000004
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVICOMPRESSF_VALID 0x00000008
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccType; /* stream type, for consistency */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccHandler; /* compressor */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwKeyFrameEvery; /* keyframe rate */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwQuality; /* compress quality 0-10,000 */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwBytesPerSecond; /* bytes per second */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags; /* flags... see below */
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpFormat; /* save format */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD cbFormat;
af062818b47340eef15700d2f0211576ba3506eevboxsync LPVOID lpParms; /* compressor options */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD cbParms;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwInterleaveEvery; /* for non-video streams only */
af062818b47340eef15700d2f0211576ba3506eevboxsync} AVICOMPRESSOPTIONS, *LPAVICOMPRESSOPTIONS,*PAVICOMPRESSOPTIONS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_DIR 0x0000000FL /* direction mask */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_NEXT 0x00000001L /* search forward */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_PREV 0x00000004L /* search backward */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_FROM_START 0x00000008L /* start at the logical beginning */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_TYPE 0x000000F0L /* type mask */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_KEY 0x00000010L /* find a key frame */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_ANY 0x00000020L /* find any (non-empty) sample */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_FORMAT 0x00000040L /* find a formatchange */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_RET 0x0000F000L /* return mask */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_POS 0x00000000L /* return logical position */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_LENGTH 0x00001000L /* return logical size */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_OFFSET 0x00002000L /* return physical position */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_SIZE 0x00003000L /* return physical size */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define FIND_INDEX 0x00004000L /* return physical index position */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#include <ole2.h>
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DEFINE_AVIGUID(name, l, w1, w2) \
af062818b47340eef15700d2f0211576ba3506eevboxsync DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncDEFINE_AVIGUID(IID_IAVIFile, 0x00020020, 0, 0);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDEFINE_AVIGUID(IID_IAVIStream, 0x00020021, 0, 0);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDEFINE_AVIGUID(IID_IAVIStreaming, 0x00020022, 0, 0);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDEFINE_AVIGUID(IID_IGetFrame, 0x00020023, 0, 0);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDEFINE_AVIGUID(IID_IAVIEditStream, 0x00020024, 0, 0);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncDEFINE_AVIGUID(CLSID_AVISimpleUnMarshal,0x00020009, 0, 0);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDEFINE_AVIGUID(CLSID_AVIFile, 0x00020000, 0, 0);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/*****************************************************************************
af062818b47340eef15700d2f0211576ba3506eevboxsync * IAVIStream interface
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define INTERFACE IAVIStream
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_INTERFACE_(IAVIStream,IUnknown)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IUnknown methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,AddRef)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,Release)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IAVIStream methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Create)(THIS_ LPARAM lParam1, LPARAM lParam2) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Info)(THIS_ AVISTREAMINFOW *psi, LONG lSize) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(LONG,FindSample)(THIS_ LONG lPos, LONG lFlags) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(ReadFormat)(THIS_ LONG lPos, LPVOID lpFormat, LONG *lpcbFormat) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(SetFormat)(THIS_ LONG lPos, LPVOID lpFormat, LONG cbFormat) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Read)(THIS_ LONG lStart, LONG lSamples, LPVOID lpBuffer, LONG cbBuffer, LONG *plBytes, LONG *plSamples) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Write)(THIS_ LONG lStart, LONG lSamples, LPVOID lpBuffer, LONG cbBuffer, DWORD dwFlags, LONG *plSampWritten, LONG *plBytesWritten) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Delete)(THIS_ LONG lStart, LONG lSamples) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(ReadData)(THIS_ DWORD fcc, LPVOID lpBuffer, LONG *lpcbBuffer) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(WriteData)(THIS_ DWORD fcc, LPVOID lpBuffer, LONG cbBuffer) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(SetInfo)(THIS_ AVISTREAMINFOW *plInfo, LONG cbInfo) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync#undef INTERFACE
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#if !defined(__cplusplus) || defined(CINTERFACE)
af062818b47340eef15700d2f0211576ba3506eevboxsync/*** IUnknown methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_AddRef(p) (p)->lpVtbl->AddRef(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_Release(p) (p)->lpVtbl->Release(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync/*** IAVIStream methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_Create(p,a,b) (p)->lpVtbl->Create(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_Info(p,a,b) (p)->lpVtbl->Info(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_FindSample(p,a,b) (p)->lpVtbl->FindSample(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_ReadFormat(p,a,b,c) (p)->lpVtbl->ReadFormat(p,a,b,c)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_SetFormat(p,a,b,c) (p)->lpVtbl->SetFormat(p,a,b,c)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_Read(p,a,b,c,d,e,f) (p)->lpVtbl->Read(p,a,b,c,d,e,f)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_Write(p,a,b,c,d,e,f,g) (p)->lpVtbl->Write(p,a,b,c,d,e,f,g)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_Delete(p,a,b) (p)->lpVtbl->Delete(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_ReadData(p,a,b,c) (p)->lpVtbl->ReadData(p,a,b,c)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_WriteData(p,a,b,c) (p)->lpVtbl->WriteData(p,a,b,c)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStream_SetInfo(p,a,b) (p)->lpVtbl->SetInfo(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVISTREAMREAD_CONVENIENT (-1L)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncULONG WINAPI AVIStreamAddRef(PAVISTREAM iface);
af062818b47340eef15700d2f0211576ba3506eevboxsyncULONG WINAPI AVIStreamRelease(PAVISTREAM iface);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamCreate(PAVISTREAM*,LONG,LONG,CLSID*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamInfoA(PAVISTREAM iface,AVISTREAMINFOA *asi,LONG size);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamInfoW(PAVISTREAM iface,AVISTREAMINFOW *asi,LONG size);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamInfo WINELIB_NAME_AW(AVIStreamInfo)
af062818b47340eef15700d2f0211576ba3506eevboxsyncLONG WINAPI AVIStreamFindSample(PAVISTREAM pstream, LONG pos, LONG flags);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamReadFormat(PAVISTREAM iface,LONG pos,LPVOID format,LONG *formatsize);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamSetFormat(PAVISTREAM iface,LONG pos,LPVOID format,LONG formatsize);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamRead(PAVISTREAM iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamWrite(PAVISTREAM iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamReadData(PAVISTREAM iface,DWORD fcc,LPVOID lp,LONG *lpread);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamWriteData(PAVISTREAM iface,DWORD fcc,LPVOID lp,LONG size);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncPGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM pavi,LPBITMAPINFOHEADER lpbiWanted);
af062818b47340eef15700d2f0211576ba3506eevboxsyncLPVOID WINAPI AVIStreamGetFrame(PGETFRAME pg,LONG pos);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME pg);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM*ppsCompressed,PAVISTREAM ppsSource,AVICOMPRESSOPTIONS *lpOptions,CLSID*pclsidHandler);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIMakeFileFromStreams(PAVIFILE *ppfile, int nStreams, PAVISTREAM *ppStreams);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIMakeStreamFromClipboard(UINT cfFormat, HANDLE hGlobal, PAVISTREAM * ppstream);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamOpenFromFileA(PAVISTREAM *ppavi, LPCSTR szFile,
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccType, LONG lParam,
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT mode, CLSID *pclsidHandler);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIStreamOpenFromFileW(PAVISTREAM *ppavi, LPCWSTR szFile,
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD fccType, LONG lParam,
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT mode, CLSID *pclsidHandler);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamOpenFromFile WINELIB_NAME_AW(AVIStreamOpenFromFile)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncLONG WINAPI AVIStreamBeginStreaming(PAVISTREAM pavi, LONG lStart, LONG lEnd, LONG lRate);
af062818b47340eef15700d2f0211576ba3506eevboxsyncLONG WINAPI AVIStreamEndStreaming(PAVISTREAM pavi);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIBuildFilterA(LPSTR szFilter, LONG cbFilter, BOOL fSaving);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIBuildFilterW(LPWSTR szFilter, LONG cbFilter, BOOL fSaving);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIBuildFilter WINELIB_NAME_AW(AVIBuildFilter)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI AVISaveOptions(HWND hWnd,UINT uFlags,INT nStream,
af062818b47340eef15700d2f0211576ba3506eevboxsync PAVISTREAM *ppavi,LPAVICOMPRESSOPTIONS *ppOptions);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVISaveOptionsFree(INT nStreams,LPAVICOMPRESSOPTIONS*ppOptions);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT CDECL AVISaveA(LPCSTR szFile, CLSID *pclsidHandler,
af062818b47340eef15700d2f0211576ba3506eevboxsync AVISAVECALLBACK lpfnCallback, int nStreams,
af062818b47340eef15700d2f0211576ba3506eevboxsync PAVISTREAM pavi, LPAVICOMPRESSOPTIONS lpOptions, ...);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT CDECL AVISaveW(LPCWSTR szFile, CLSID *pclsidHandler,
af062818b47340eef15700d2f0211576ba3506eevboxsync AVISAVECALLBACK lpfnCallback, int nStreams,
af062818b47340eef15700d2f0211576ba3506eevboxsync PAVISTREAM pavi, LPAVICOMPRESSOPTIONS lpOptions, ...);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVISave WINELIB_NAME_AW(AVISave)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVISaveVA(LPCSTR szFile, CLSID *pclsidHandler,
af062818b47340eef15700d2f0211576ba3506eevboxsync AVISAVECALLBACK lpfnCallback, int nStream,
af062818b47340eef15700d2f0211576ba3506eevboxsync PAVISTREAM *ppavi, LPAVICOMPRESSOPTIONS *plpOptions);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVISaveVW(LPCWSTR szFile, CLSID *pclsidHandler,
af062818b47340eef15700d2f0211576ba3506eevboxsync AVISAVECALLBACK lpfnCallback, int nStream,
af062818b47340eef15700d2f0211576ba3506eevboxsync PAVISTREAM *ppavi, LPAVICOMPRESSOPTIONS *plpOptions);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVISaveV WINELIB_NAME_AW(AVISaveV)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncLONG WINAPI AVIStreamStart(PAVISTREAM iface);
af062818b47340eef15700d2f0211576ba3506eevboxsyncLONG WINAPI AVIStreamLength(PAVISTREAM iface);
af062818b47340eef15700d2f0211576ba3506eevboxsyncLONG WINAPI AVIStreamSampleToTime(PAVISTREAM pstream, LONG lSample);
af062818b47340eef15700d2f0211576ba3506eevboxsyncLONG WINAPI AVIStreamTimeToSample(PAVISTREAM pstream, LONG lTime);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFileClose(pavi) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIFileRelease(pavi)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamClose(pavi) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamRelease(pavi);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamEnd(pavi) \
af062818b47340eef15700d2f0211576ba3506eevboxsync (AVIStreamStart(pavi) + AVIStreamLength(pavi))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamEndTime(pavi) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamFormatSize(pavi, lPos, plSize) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamReadFormat(pavi, lPos, NULL, plSize)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamLengthTime(pavi) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamSampleToTime(pavi, AVIStreamLength(pavi))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamSampleSize(pavi,pos,psize) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamRead(pavi,pos,1,NULL,0,psize,NULL)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamSampleToSample(pavi1, pavi2, samp2) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamTimeToSample(pavi1, AVIStreamSampleToTime(pavi2, samp2))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamStartTime(pavi) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamSampleToTime(pavi, AVIStreamStart(pavi))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamNextSample(pavi, pos) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamFindSample(pavi, pos + 1, FIND_NEXT | FIND_ANY)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamPrevSample(pavi, pos) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamFindSample(pavi, pos - 1, FIND_PREV | FIND_ANY)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamNearestSample(pavi, pos) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamFindSample(pavi, pos, FIND_PREV | FIND_ANY)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVStreamNextKeyFrame(pavi,pos) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamFindSample(pavi, pos + 1, FIND_NEXT | FIND_KEY)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVStreamPrevKeyFrame(pavi,pos) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamFindSample(pavi, pos - 1, FIND_NEXT | FIND_KEY)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamNearestKeyFrame(pavi,pos) \
af062818b47340eef15700d2f0211576ba3506eevboxsync AVIStreamFindSample(pavi, pos, FIND_PREV | FIND_KEY)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIStreamIsKeyFrame(pavi, pos) \
af062818b47340eef15700d2f0211576ba3506eevboxsync (AVIStreamNearestKeyFrame(pavi, pos) == pos)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/*****************************************************************************
af062818b47340eef15700d2f0211576ba3506eevboxsync * IAVIStreaming interface
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define INTERFACE IAVIStreaming
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_INTERFACE_(IAVIStreaming,IUnknown)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IUnknown methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,AddRef)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,Release)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IAVIStreaming methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Begin)(IAVIStreaming*iface,LONG lStart,LONG lEnd,LONG lRate) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(End)(IAVIStreaming*iface) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync#undef INTERFACE
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#if !defined(__cplusplus) || defined(CINTERFACE)
af062818b47340eef15700d2f0211576ba3506eevboxsync/*** IUnknown methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStreaming_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStreaming_AddRef(p) (p)->lpVtbl->AddRef(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStreaming_Release(p) (p)->lpVtbl->Release(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync/*** IAVIStreaming methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStreaming_Begin(p,a,b,c) (p)->lpVtbl->Begin(p,a,b,c)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIStreaming_End(p) (p)->lpVtbl->End(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/*****************************************************************************
af062818b47340eef15700d2f0211576ba3506eevboxsync * IAVIEditStream interface
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define INTERFACE IAVIEditStream
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_INTERFACE_(IAVIEditStream,IUnknown)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IUnknown methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,AddRef)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,Release)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IAVIEditStream methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Cut)(IAVIEditStream*iface,LONG*plStart,LONG*plLength,PAVISTREAM*ppResult) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Copy)(IAVIEditStream*iface,LONG*plStart,LONG*plLength,PAVISTREAM*ppResult) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Paste)(IAVIEditStream*iface,LONG*plStart,LONG*plLength,PAVISTREAM pSource,LONG lStart,LONG lEnd) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Clone)(IAVIEditStream*iface,PAVISTREAM*ppResult) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(SetInfo)(IAVIEditStream*iface,LPAVISTREAMINFOW asi, LONG size) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync#undef INTERFACE
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#if !defined(__cplusplus) || defined(CINTERFACE)
af062818b47340eef15700d2f0211576ba3506eevboxsync/*** IUnknown methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIEditStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIEditStream_AddRef(p) (p)->lpVtbl->AddRef(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIEditStream_Release(p) (p)->lpVtbl->Release(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync/*** IAVIEditStream methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIEditStream_Cut(p,a,b,c) (p)->lpVtbl->Cut(p,a,b,c)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIEditStream_Copy(p,a,b,c) (p)->lpVtbl->Copy(p,a,b,c)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIEditStream_Paste(p,a,b,c,d,e) (p)->lpVtbl->Paste(p,a,b,c,d,e)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIEditStream_Clone(p,a) (p)->lpVtbl->Clone(p,a)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIEditStream_SetInfo(p,a,b) (p)->lpVtbl->SetInfo(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI CreateEditableStream(PAVISTREAM *ppEditable,PAVISTREAM pSource);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI EditStreamClone(PAVISTREAM pStream, PAVISTREAM *ppResult);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI EditStreamCopy(PAVISTREAM pStream, LONG *plStart,
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG *plLength, PAVISTREAM *ppResult);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI EditStreamCut(PAVISTREAM pStream, LONG *plStart,
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG *plLength, PAVISTREAM *ppResult);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI EditStreamPaste(PAVISTREAM pDest, LONG *plStart, LONG *plLength,
af062818b47340eef15700d2f0211576ba3506eevboxsync PAVISTREAM pSource, LONG lStart, LONG lEnd);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI EditStreamSetInfoA(PAVISTREAM pstream, LPAVISTREAMINFOA asi,
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG size);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI EditStreamSetInfoW(PAVISTREAM pstream, LPAVISTREAMINFOW asi,
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG size);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define EditStreamSetInfo WINELIB_NAME_AW(EditStreamSetInfo)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI EditStreamSetNameA(PAVISTREAM pstream, LPCSTR szName);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI EditStreamSetNameW(PAVISTREAM pstream, LPCWSTR szName);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define EditStreamSetName WINELIB_NAME_AW(EditStreamSetName)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/*****************************************************************************
af062818b47340eef15700d2f0211576ba3506eevboxsync * IAVIFile interface
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync/* In Win32 this interface uses UNICODE only */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define INTERFACE IAVIFile
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_INTERFACE_(IAVIFile,IUnknown)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IUnknown methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,AddRef)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,Release)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IAVIFile methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Info)(THIS_ AVIFILEINFOW *pfi, LONG lSize) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(GetStream)(THIS_ PAVISTREAM *ppStream, DWORD fccType, LONG lParam) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(CreateStream)(THIS_ PAVISTREAM *ppStream, AVISTREAMINFOW *psi) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(WriteData)(THIS_ DWORD fcc, LPVOID lpBuffer, LONG cbBuffer) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(ReadData)(THIS_ DWORD fcc, LPVOID lpBuffer, LONG *lpcbBuffer) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(EndRecord)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(DeleteStream)(THIS_ DWORD fccType, LONG lParam) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync#undef INTERFACE
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#if !defined(__cplusplus) || defined(CINTERFACE)
af062818b47340eef15700d2f0211576ba3506eevboxsync/*** IUnknown methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIFile_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIFile_AddRef(p) (p)->lpVtbl->AddRef(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIFile_Release(p) (p)->lpVtbl->Release(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync/*** IAVIFile methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIFile_Info(p,a,b) (p)->lpVtbl->Info(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIFile_GetStream(p,a,b,c) (p)->lpVtbl->GetStream(p,a,b,c)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIFile_CreateStream(p,a,b) (p)->lpVtbl->CreateStream(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIFile_WriteData(p,a,b,c) (p)->lpVtbl->WriteData(p,a,b,c)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIFile_ReadData(p,a,b,c) (p)->lpVtbl->ReadData(p,a,b,c)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIFile_EndRecord(p) (p)->lpVtbl->EndRecord(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IAVIFile_DeleteStream(p,a,b) (p)->lpVtbl->DeleteStream(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid WINAPI AVIFileInit(void);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid WINAPI AVIFileExit(void);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIFileOpenA(PAVIFILE* ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIFileOpenW(PAVIFILE* ppfile,LPCWSTR szFile,UINT uMode,LPCLSID lpHandler);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFileOpen WINELIB_NAME_AW(AVIFileOpen)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncULONG WINAPI AVIFileAddRef(PAVIFILE pfile);
af062818b47340eef15700d2f0211576ba3506eevboxsyncULONG WINAPI AVIFileRelease(PAVIFILE pfile);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIFileInfoA(PAVIFILE pfile,PAVIFILEINFOA pfi,LONG lSize);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIFileInfoW(PAVIFILE pfile,PAVIFILEINFOW pfi,LONG lSize);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFileInfo WINELIB_NAME_AW(AVIFileInfo)
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIFileGetStream(PAVIFILE pfile,PAVISTREAM* avis,DWORD fccType,LONG lParam);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIFileCreateStreamA(PAVIFILE pfile,PAVISTREAM* ppavi,AVISTREAMINFOA* psi);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIFileCreateStreamW(PAVIFILE pfile,PAVISTREAM* ppavi,AVISTREAMINFOW* psi);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIFileCreateStream WINELIB_NAME_AW(AVIFileCreateStream)
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIFileWriteData(PAVIFILE pfile,DWORD fcc,LPVOID lp,LONG size);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIFileReadData(PAVIFILE pfile,DWORD fcc,LPVOID lp,LPLONG size);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIFileEndRecord(PAVIFILE pfile);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/*****************************************************************************
af062818b47340eef15700d2f0211576ba3506eevboxsync * IGetFrame interface
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define INTERFACE IGetFrame
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_INTERFACE_(IGetFrame,IUnknown)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IUnknown methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,AddRef)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,Release)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IGetFrame methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(LPVOID,GetFrame)(THIS_ LONG lPos) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Begin)(THIS_ LONG lStart, LONG lEnd, LONG lRate) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(End)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(SetFormat)(THIS_ LPBITMAPINFOHEADER lpbi, LPVOID lpBits, INT x, INT y, INT dx, INT dy) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync#undef INTERFACE
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#if !defined(__cplusplus) || defined(CINTERFACE)
af062818b47340eef15700d2f0211576ba3506eevboxsync/*** IUnknown methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IGetFrame_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IGetFrame_AddRef(p) (p)->lpVtbl->AddRef(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IGetFrame_Release(p) (p)->lpVtbl->Release(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync/*** IGetFrame methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IGetFrame_GetFrame(p,a) (p)->lpVtbl->GetFrame(p,a)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IGetFrame_Begin(p,a,b,c) (p)->lpVtbl->Begin(p,a,b,c)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IGetFrame_End(p) (p)->lpVtbl->End(p)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IGetFrame_SetFormat(p,a,b,c,d,e,f) (p)->lpVtbl->SetFormat(p,a,b,c,d,e,f)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIClearClipboard(void);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIGetFromClipboard(PAVIFILE *ppfile);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHRESULT WINAPI AVIPutFileOnClipboard(PAVIFILE pfile);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef OFN_READONLY
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn);
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define GetOpenFileNamePreview WINELIB_NAME_AW(GetOpenFileNamePreview)
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn);
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define GetSaveFileNamePreview WINELIB_NAME_AW(GetSaveFileNamePreview)
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_OK 0
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MAKE_AVIERR(error) MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+error)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_UNSUPPORTED MAKE_AVIERR(101)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_BADFORMAT MAKE_AVIERR(102)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_MEMORY MAKE_AVIERR(103)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_INTERNAL MAKE_AVIERR(104)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_BADFLAGS MAKE_AVIERR(105)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_BADPARAM MAKE_AVIERR(106)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_BADSIZE MAKE_AVIERR(107)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_BADHANDLE MAKE_AVIERR(108)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_FILEREAD MAKE_AVIERR(109)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_FILEWRITE MAKE_AVIERR(110)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_FILEOPEN MAKE_AVIERR(111)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_COMPRESSOR MAKE_AVIERR(112)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_NOCOMPRESSOR MAKE_AVIERR(113)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_READONLY MAKE_AVIERR(114)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_NODATA MAKE_AVIERR(115)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_BUFFERTOOSMALL MAKE_AVIERR(116)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_CANTCOMPRESS MAKE_AVIERR(117)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_USERABORT MAKE_AVIERR(198)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVIERR_ERROR MAKE_AVIERR(199)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPIV MCIWndRegisterClass(void);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHWND VFWAPIV MCIWndCreateA(HWND, HINSTANCE, DWORD, LPCSTR);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHWND VFWAPIV MCIWndCreateW(HWND, HINSTANCE, DWORD, LPCWSTR);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndCreate WINELIB_NAME_AW(MCIWndCreate)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDOPENF_NEW 0x0001
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOAUTOSIZEWINDOW 0x0001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOPLAYBAR 0x0002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOAUTOSIZEMOVIE 0x0004
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOMENU 0x0008
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_SHOWNAME 0x0010
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_SHOWPOS 0x0020
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_SHOWMODE 0x0040
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_SHOWALL 0x0070
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOTIFYMODE 0x0100
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOTIFYPOS 0x0200
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOTIFYSIZE 0x0400
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOTIFYERROR 0x1000
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOTIFYALL 0x1F00
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOTIFYANSI 0x0080
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOTIFYMEDIAA 0x0880
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOTIFYMEDIAW 0x0800
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOTIFYMEDIA WINELIB_NAME_AW(MCIWNDF_NOTIFYMEDIA)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_RECORD 0x2000
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOERRORDLG 0x4000
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDF_NOOPEN 0x8000
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __cplusplus
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSM ::SendMessage
af062818b47340eef15700d2f0211576ba3506eevboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSM SendMessage
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndCanPlay(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_PLAY,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndCanRecord(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_RECORD,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndCanSave(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_SAVE,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndCanWindow(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_WINDOW,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndCanEject(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_EJECT,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndCanConfig(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_CONFIG,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndPaletteKick(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_PALETTEKICK,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSave(hWnd,szFile) (LONG)MCIWndSM(hWnd,MCI_SAVE,0,(LPARAM)(LPVOID)(szFile))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSaveDialog(hWnd) MCIWndSave(hWnd,-1)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndNew(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_NEW,0,(LPARAM)(LPVOID)(lp))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndRecord(hWnd) (LONG)MCIWndSM(hWnd,MCI_RECORD,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndOpen(hWnd,sz,f) (LONG)MCIWndSM(hWnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndOpenDialog(hWnd) MCIWndOpen(hWnd,-1,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndClose(hWnd) (LONG)MCIWndSM(hWnd,MCI_CLOSE,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndPlay(hWnd) (LONG)MCIWndSM(hWnd,MCI_PLAY,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndStop(hWnd) (LONG)MCIWndSM(hWnd,MCI_STOP,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndPause(hWnd) (LONG)MCIWndSM(hWnd,MCI_PAUSE,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndResume(hWnd) (LONG)MCIWndSM(hWnd,MCI_RESUME,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSeek(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCI_SEEK,0,(LPARAM)(LONG)(lPos))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndEject(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_EJECT,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndHome(hWnd) MCIWndSeek(hWnd,MCIWND_START)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndEnd(hWnd) MCIWndSeek(hWnd,MCIWND_END)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_SOURCE,0,(LPARAM)(LPRECT)(prc))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndPutSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_SOURCE,0,(LPARAM)(LPRECT)(prc))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_DEST,0,(LPARAM)(LPRECT)(prc))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndPutDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_DEST,0,(LPARAM)(LPRECT)(prc))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndPlayReverse(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYREVERSE,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndPlayFrom(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYFROM,0,(LPARAM)(LONG)(lPos))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndPlayTo(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYTO, 0,(LPARAM)(LONG)(lPos))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndPlayFromTo(hWnd,lStart,lEnd) (MCIWndSeek(hWnd,lStart),MCIWndPlayTo(hWnd,lEnd))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetDeviceID(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETDEVICEID,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetAlias(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETALIAS,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetMode(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetPosition(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetPositionString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetStart(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSTART,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetLength(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETLENGTH,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetEnd(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETEND,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync#define MCIWndStep(hWnd,n) (LONG)MCIWndSM(hWnd,MCI_STEP,0,(LPARAM)(LONG)(n))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndDestroy(hWnd) (VOID)MCIWndSM(hWnd,WM_CLOSE,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSetZoom(hWnd,iZoom) (VOID)MCIWndSM(hWnd,MCIWNDM_SETZOOM,0,(LPARAM)(UINT)(iZoom))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetZoom(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETZOOM,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSetVolume(hWnd,iVol) (LONG)MCIWndSM(hWnd,MCIWNDM_SETVOLUME,0,(LPARAM)(UINT)(iVol))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetVolume(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETVOLUME,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSetSpeed(hWnd,iSpeed) (LONG)MCIWndSM(hWnd,MCIWNDM_SETSPEED,0,(LPARAM)(UINT)(iSpeed))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetSpeed(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSPEED,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSetTimeFormat(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_SETTIMEFORMAT,0,(LPARAM)(LPTSTR)(lp))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetTimeFormat(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndValidateMedia(hWnd) (VOID)MCIWndSM(hWnd,MCIWNDM_VALIDATEMEDIA,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSetRepeat(hWnd,f) (void)MCIWndSM(hWnd,MCIWNDM_SETREPEAT,0,(LPARAM)(BOOL)(f))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetRepeat(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_GETREPEAT,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndUseFrames(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("frames"))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndUseTime(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("ms"))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSetActiveTimer(hWnd,active) \
af062818b47340eef15700d2f0211576ba3506eevboxsync (VOID)MCIWndSM(hWnd,MCIWNDM_SETACTIVETIMER, \
af062818b47340eef15700d2f0211576ba3506eevboxsync (WPARAM)(UINT)(active),0L)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSetInactiveTimer(hWnd,inactive) \
af062818b47340eef15700d2f0211576ba3506eevboxsync (VOID)MCIWndSM(hWnd,MCIWNDM_SETINACTIVETIMER, \
af062818b47340eef15700d2f0211576ba3506eevboxsync (WPARAM)(UINT)(inactive),0L)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSetTimers(hWnd,active,inactive) \
af062818b47340eef15700d2f0211576ba3506eevboxsync (VOID)MCIWndSM(hWnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),\
af062818b47340eef15700d2f0211576ba3506eevboxsync (LPARAM)(UINT)(inactive))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetActiveTimer(hWnd) \
af062818b47340eef15700d2f0211576ba3506eevboxsync (UINT)MCIWndSM(hWnd,MCIWNDM_GETACTIVETIMER,0,0L);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetInactiveTimer(hWnd) \
af062818b47340eef15700d2f0211576ba3506eevboxsync (UINT)MCIWndSM(hWnd,MCIWNDM_GETINACTIVETIMER,0,0L);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndRealize(hWnd,fBkgnd) (LONG)MCIWndSM(hWnd,MCIWNDM_REALIZE,(WPARAM)(BOOL)(fBkgnd),0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSendString(hWnd,sz) (LONG)MCIWndSM(hWnd,MCIWNDM_SENDSTRING,0,(LPARAM)(LPTSTR)(sz))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndReturnString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetError(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetPalette(hWnd) (HPALETTE)MCIWndSM(hWnd,MCIWNDM_GETPALETTE,0,0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSetPalette(hWnd,hpal) (LONG)MCIWndSM(hWnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetFileName(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetDevice(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndGetStyles(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETSTYLES,0,0L)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndChangeStyles(hWnd,mask,value) (LONG)MCIWndSM(hWnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndOpenInterface(hWnd,pUnk) (LONG)MCIWndSM(hWnd,MCIWNDM_OPENINTERFACE,0,(LPARAM)(LPUNKNOWN)(pUnk))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWndSetOwner(hWnd,hWndP) (LONG)MCIWndSM(hWnd,MCIWNDM_SETOWNER,(WPARAM)(hWndP),0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETDEVICEID (WM_USER + 100)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETSTART (WM_USER + 103)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETLENGTH (WM_USER + 104)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETEND (WM_USER + 105)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_EJECT (WM_USER + 107)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETZOOM (WM_USER + 108)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETZOOM (WM_USER + 109)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETVOLUME (WM_USER + 110)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETVOLUME (WM_USER + 111)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETSPEED (WM_USER + 112)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETSPEED (WM_USER + 113)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETREPEAT (WM_USER + 114)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETREPEAT (WM_USER + 115)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_REALIZE (WM_USER + 118)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_VALIDATEMEDIA (WM_USER + 121)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_PLAYFROM (WM_USER + 122)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_PLAYTO (WM_USER + 123)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETPALETTE (WM_USER + 126)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETPALETTE (WM_USER + 127)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETTIMERS (WM_USER + 129)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETACTIVETIMER (WM_USER + 130)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETINACTIVETIMER (WM_USER + 131)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETACTIVETIMER (WM_USER + 132)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETINACTIVETIMER (WM_USER + 133)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_CHANGESTYLES (WM_USER + 135)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETSTYLES (WM_USER + 136)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETALIAS (WM_USER + 137)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_PLAYREVERSE (WM_USER + 139)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GET_SOURCE (WM_USER + 140)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_PUT_SOURCE (WM_USER + 141)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GET_DEST (WM_USER + 142)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_PUT_DEST (WM_USER + 143)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_CAN_PLAY (WM_USER + 144)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_CAN_WINDOW (WM_USER + 145)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_CAN_RECORD (WM_USER + 146)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_CAN_SAVE (WM_USER + 147)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_CAN_EJECT (WM_USER + 148)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_CAN_CONFIG (WM_USER + 149)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_PALETTEKICK (WM_USER + 150)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_OPENINTERFACE (WM_USER + 151)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETOWNER (WM_USER + 152)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SENDSTRINGA (WM_USER + 101)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETPOSITIONA (WM_USER + 102)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETMODEA (WM_USER + 106)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETTIMEFORMATA (WM_USER + 119)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETTIMEFORMATA (WM_USER + 120)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETFILENAMEA (WM_USER + 124)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETDEVICEA (WM_USER + 125)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETERRORA (WM_USER + 128)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_NEWA (WM_USER + 134)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_RETURNSTRINGA (WM_USER + 138)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_OPENA (WM_USER + 153)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SENDSTRINGW (WM_USER + 201)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETPOSITIONW (WM_USER + 202)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETMODEW (WM_USER + 206)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETTIMEFORMATW (WM_USER + 219)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETTIMEFORMATW (WM_USER + 220)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETFILENAMEW (WM_USER + 224)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETDEVICEW (WM_USER + 225)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETERRORW (WM_USER + 228)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_NEWW (WM_USER + 234)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_RETURNSTRINGW (WM_USER + 238)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_OPENW (WM_USER + 252)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SENDSTRING WINELIB_NAME_AW(MCIWNDM_SENDSTRING)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETPOSITION WINELIB_NAME_AW(MCIWNDM_GETPOSITION)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETMODE WINELIB_NAME_AW(MCIWNDM_GETMODE)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_SETTIMEFORMAT WINELIB_NAME_AW(MCIWNDM_SETTIMEFORMAT)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETTIMEFORMAT WINELIB_NAME_AW(MCIWNDM_GETTIMEFORMAT)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETFILENAME WINELIB_NAME_AW(MCIWNDM_GETFILENAME)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETDEVICE WINELIB_NAME_AW(MCIWNDM_GETDEVICE)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_GETERROR WINELIB_NAME_AW(MCIWNDM_GETERROR)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_NEW WINELIB_NAME_AW(MCIWNDM_NEW)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_RETURNSTRING WINELIB_NAME_AW(MCIWNDM_RETURNSTRING)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_OPEN WINELIB_NAME_AW(MCIWNDM_OPEN)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_NOTIFYMODE (WM_USER + 200)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_NOTIFYPOS (WM_USER + 201)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_NOTIFYSIZE (WM_USER + 202)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_NOTIFYMEDIA (WM_USER + 203)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWNDM_NOTIFYERROR (WM_USER + 205)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWND_START -1
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MCIWND_END -2
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/********************************************
af062818b47340eef15700d2f0211576ba3506eevboxsync * DrawDib declarations
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG timeCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG timeDraw;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG timeDecompress;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG timeDither;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG timeStretch;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG timeBlt;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG timeSetDIBits;
af062818b47340eef15700d2f0211576ba3506eevboxsync} DRAWDIBTIME, *LPDRAWDIBTIME;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHDRAWDIB VFWAPI DrawDibOpen( void );
af062818b47340eef15700d2f0211576ba3506eevboxsyncUINT VFWAPI DrawDibRealize(HDRAWDIB hdd, HDC hdc, BOOL fBackground);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI DrawDibBegin(HDRAWDIB hdd, HDC hdc, INT dxDst, INT dyDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbi, INT dxSrc, INT dySrc, UINT wFlags);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI DrawDibDraw(HDRAWDIB hdd, HDC hdc, INT xDst, INT yDst, INT dxDst, INT dyDst,
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBITMAPINFOHEADER lpbi, LPVOID lpBits,
af062818b47340eef15700d2f0211576ba3506eevboxsync INT xSrc, INT ySrc, INT dxSrc, INT dySrc, UINT wFlags);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* DrawDibDraw flags */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_UPDATE 0x0002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_SAME_HDC 0x0004
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_SAME_DRAW 0x0008
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_DONTDRAW 0x0010
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_ANIMATE 0x0020
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_BUFFER 0x0040
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_JUSTDRAWIT 0x0080
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_FULLSCREEN 0x0100
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_BACKGROUNDPAL 0x0200
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_NOTKEYFRAME 0x0400
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_HURRYUP 0x0800
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_HALFTONE 0x1000
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_PREROLL DDF_DONTDRAW
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_SAME_DIB DDF_SAME_DRAW
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DDF_SAME_SIZE DDF_SAME_DRAW
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHPALETTE VFWAPI DrawDibGetPalette(HDRAWDIB hdd);
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI DrawDibChangePalette(HDRAWDIB hdd, int iStart, int iLen, LPPALETTEENTRY lppe);
af062818b47340eef15700d2f0211576ba3506eevboxsyncLPVOID VFWAPI DrawDibGetBuffer(HDRAWDIB hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI DrawDibStart(HDRAWDIB hdd, DWORD rate);
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI DrawDibStop(HDRAWDIB hdd);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DrawDibUpdate(hdd, hdc, x, y) \
af062818b47340eef15700d2f0211576ba3506eevboxsync DrawDibDraw(hdd, hdc, x, y, 0, 0, NULL, NULL, 0, 0, 0, 0, DDF_UPDATE)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI DrawDibEnd(HDRAWDIB hdd);
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI DrawDibClose(HDRAWDIB hdd);
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI DrawDibTime(HDRAWDIB hdd, LPDRAWDIBTIME lpddtime);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* display profiling */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define PD_CAN_DRAW_DIB 0x0001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define PD_CAN_STRETCHDIB 0x0002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define PD_STRETCHDIB_1_1_OK 0x0004
af062818b47340eef15700d2f0211576ba3506eevboxsync#define PD_STRETCHDIB_1_2_OK 0x0008
af062818b47340eef15700d2f0211576ba3506eevboxsync#define PD_STRETCHDIB_1_N_OK 0x0010
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncDWORD VFWAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_HANDLE(HVIDEO);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef HVIDEO *LPHVIDEO;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncDWORD VFWAPI VideoForWindowsVersion(void);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncLONG VFWAPI InitVFW(void);
af062818b47340eef15700d2f0211576ba3506eevboxsyncLONG VFWAPI TermVFW(void);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_OK (0)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_BASE (1)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_NONSPECIFIC (DV_ERR_BASE)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_BADFORMAT (DV_ERR_BASE + 1)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_STILLPLAYING (DV_ERR_BASE + 2)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_UNPREPARED (DV_ERR_BASE + 3)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_SYNC (DV_ERR_BASE + 4)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_TOOMANYCHANNELS (DV_ERR_BASE + 5)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_NOTDETECTED (DV_ERR_BASE + 6)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_BADINSTALL (DV_ERR_BASE + 7)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_CREATEPALETTE (DV_ERR_BASE + 8)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_SIZEFIELD (DV_ERR_BASE + 9)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_PARAM1 (DV_ERR_BASE + 10)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_PARAM2 (DV_ERR_BASE + 11)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_CONFIG1 (DV_ERR_BASE + 12)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_CONFIG2 (DV_ERR_BASE + 13)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_FLAGS (DV_ERR_BASE + 14)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_13 (DV_ERR_BASE + 15)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_NOTSUPPORTED (DV_ERR_BASE + 16)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_NOMEM (DV_ERR_BASE + 17)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_ALLOCATED (DV_ERR_BASE + 18)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_BADDEVICEID (DV_ERR_BASE + 19)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_INVALHANDLE (DV_ERR_BASE + 20)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_BADERRNUM (DV_ERR_BASE + 21)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_NO_BUFFERS (DV_ERR_BASE + 22)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_MEM_CONFLICT (DV_ERR_BASE + 23)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_IO_CONFLICT (DV_ERR_BASE + 24)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_DMA_CONFLICT (DV_ERR_BASE + 25)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_INT_CONFLICT (DV_ERR_BASE + 26)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_PROTECT_ONLY (DV_ERR_BASE + 27)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_LASTERROR (DV_ERR_BASE + 27)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_ERR_USER_MSG (DV_ERR_BASE + 1000)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef MM_DRVM_OPEN
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MM_DRVM_OPEN 0x3D0
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MM_DRVM_CLOSE 0x3D1
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MM_DRVM_DATA 0x3D2
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MM_DRVM_ERROR 0x3D3
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_VM_OPEN MM_DRVM_OPEN
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_VM_CLOSE MM_DRVM_CLOSE
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_VM_DATA MM_DRVM_DATA
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DV_VM_ERROR MM_DRVM_ERROR
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct videohdr_tag {
af062818b47340eef15700d2f0211576ba3506eevboxsync LPBYTE lpData;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwBufferLength;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwBytesUsed;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwTimeCaptured;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync DWORD_PTR dwUser;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync DWORD_PTR dwReserved[4];
af062818b47340eef15700d2f0211576ba3506eevboxsync} VIDEOHDR, *PVIDEOHDR, *LPVIDEOHDR;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VHDR_DONE 0x00000001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VHDR_PREPARED 0x00000002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VHDR_INQUEUE 0x00000004
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VHDR_KEYFRAME 0x00000008
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct channel_caps_tag {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSrcRectXMod;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSrcRectYMod;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSrcRectWidthMod;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSrcRectHeightMod;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwDstRectXMod;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwDstRectYMod;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwDstRectWidthMod;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwDstRectHeightMod;
af062818b47340eef15700d2f0211576ba3506eevboxsync} CHANNEL_CAPS, *PCHANNEL_CAPS, *LPCHANNEL_CAPS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VCAPS_OVERLAY 0x00000001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VCAPS_SRC_CAN_CLIP 0x00000002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VCAPS_DST_CAN_CLIP 0x00000004
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VCAPS_CAN_SCALE 0x00000008
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_EXTERNALIN 0x0001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_EXTERNALOUT 0x0002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_IN 0x0004
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_OUT 0x0008
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_DLG_QUERY 0x0010
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_CONFIGURE_QUERY 0x8000
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_CONFIGURE_SET 0x1000
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_CONFIGURE_GET 0x2000
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_CONFIGURE_QUERYSIZE 0x0001
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_CONFIGURE_CURRENT 0x0010
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_CONFIGURE_NOMINAL 0x0020
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_CONFIGURE_MIN 0x0040
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VIDEO_CONFIGURE_MAX 0x0080
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DVM_USER 0x4000
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DVM_CONFIGURE_START 0x1000
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DVM_CONFIGURE_END 0x1FFF
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DVM_PALETTE (DVM_CONFIGURE_START + 1)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DVM_FORMAT (DVM_CONFIGURE_START + 2)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DVM_PALETTERGB555 (DVM_CONFIGURE_START + 3)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DVM_SRC_RECT (DVM_CONFIGURE_START + 4)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DVM_DST_RECT (DVM_CONFIGURE_START + 5)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define AVICapSM(hwnd,m,w,l) ((IsWindow(hwnd)) ? SendMessage(hwnd,m,w,l) : 0)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_START WM_USER
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_UNICODE_START WM_USER+100
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_GET_CAPSTREAMPTR (WM_CAP_START + 1)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_CALLBACK_ERRORW (WM_CAP_UNICODE_START + 2)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_CALLBACK_STATUSW (WM_CAP_UNICODE_START + 3)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_CALLBACK_ERRORA (WM_CAP_START + 2)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_CALLBACK_STATUSA (WM_CAP_START+ 3)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_CALLBACK_ERROR WINELIB_NAME_AW(WM_CAP_SET_CALLBACK_ERROR)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_CALLBACK_STATUS WINELIB_NAME_AW(WM_CAP_SET_CALLBACK_STATUS)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_CALLBACK_YIELD (WM_CAP_START + 4)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_CALLBACK_FRAME (WM_CAP_START + 5)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_CAP_START + 6)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_CALLBACK_WAVESTREAM (WM_CAP_START + 7)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_GET_USER_DATA (WM_CAP_START + 8)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_USER_DATA (WM_CAP_START + 9)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DRIVER_CONNECT (WM_CAP_START + 10)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DRIVER_DISCONNECT (WM_CAP_START + 11)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DRIVER_GET_NAMEA (WM_CAP_START + 12)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DRIVER_GET_VERSIONA (WM_CAP_START + 13)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DRIVER_GET_NAMEW (WM_CAP_UNICODE_START + 12)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DRIVER_GET_VERSIONW (WM_CAP_UNICODE_START + 13)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DRIVER_GET_NAME WINELIB_NAME_AW(WM_CAP_DRIVER_GET_NAME)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DRIVER_GET_VERSION WINELIB_NAME_AW(WM_CAP_DRIVER_GET_VERSION)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DRIVER_GET_CAPS (WM_CAP_START + 14)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_SET_CAPTURE_FILEA (WM_CAP_START + 20)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_GET_CAPTURE_FILEA (WM_CAP_START + 21)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_ALLOCATE (WM_CAP_START + 22)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_SAVEASA (WM_CAP_START + 23)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_SET_INFOCHUNK (WM_CAP_START + 24)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_SAVEDIBA (WM_CAP_START + 25)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_SET_CAPTURE_FILEW (WM_CAP_UNICODE_START + 20)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_GET_CAPTURE_FILEW (WM_CAP_UNICODE_START + 21)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_SAVEASW (WM_CAP_UNICODE_START + 23)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_SAVEDIBW (WM_CAP_UNICODE_START + 25)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_SET_CAPTURE_FILE WINELIB_NAME_AW(WM_CAP_FILE_SET_CAPTURE_FILE)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_GET_CAPTURE_FILE WINELIB_NAME_AW(WM_CAP_FILE_GET_CAPTURE_FILE)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_SAVEAS WINELIB_NAME_AW(WM_CAP_FILE_SAVEAS)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_FILE_SAVEDIB WINELIB_NAME_AW(WM_CAP_FILE_SAVEDIB)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_EDIT_COPY (WM_CAP_START + 30)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_AUDIOFORMAT (WM_CAP_START + 35)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_GET_AUDIOFORMAT (WM_CAP_START + 36)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DLG_VIDEOFORMAT (WM_CAP_START + 41)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DLG_VIDEOSOURCE (WM_CAP_START + 42)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DLG_VIDEODISPLAY (WM_CAP_START + 43)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_GET_VIDEOFORMAT (WM_CAP_START + 44)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_VIDEOFORMAT (WM_CAP_START + 45)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_DLG_VIDEOCOMPRESSION (WM_CAP_START + 46)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_PREVIEW (WM_CAP_START + 50)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_OVERLAY (WM_CAP_START + 51)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_PREVIEWRATE (WM_CAP_START + 52)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_SCALE (WM_CAP_START + 53)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_GET_STATUS (WM_CAP_START + 54)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_SCROLL (WM_CAP_START + 55)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_GRAB_FRAME (WM_CAP_START + 60)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_GRAB_FRAME_NOSTOP (WM_CAP_START + 61)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SEQUENCE (WM_CAP_START + 62)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SEQUENCE_NOFILE (WM_CAP_START + 63)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_SEQUENCE_SETUP (WM_CAP_START + 64)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_GET_SEQUENCE_SETUP (WM_CAP_START + 65)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_MCI_DEVICEA (WM_CAP_START + 66)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_GET_MCI_DEVICEA (WM_CAP_START + 67)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_MCI_DEVICEW (WM_CAP_UNICODE_START + 66)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_GET_MCI_DEVICEW (WM_CAP_UNICODE_START + 67)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_MCI_DEVICE WINELIB_NAME_AW(WM_CAP_SET_MCI_DEVICE)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_GET_MCI_DEVICE WINELIB_NAME_AW(WM_CAP_GET_MCI_DEVICE)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_STOP (WM_CAP_START + 68)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_ABORT (WM_CAP_START + 69)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SINGLE_FRAME_OPEN (WM_CAP_START + 70)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SINGLE_FRAME_CLOSE (WM_CAP_START + 71)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SINGLE_FRAME (WM_CAP_START + 72)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_PAL_OPENA (WM_CAP_START + 80)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_PAL_SAVEA (WM_CAP_START + 81)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_PAL_OPENW (WM_CAP_UNICODE_START + 80)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_PAL_SAVEW (WM_CAP_UNICODE_START + 81)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_PAL_OPEN WINELIB_NAME_AW(WM_CAP_PAL_OPEN)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_PAL_SAVE WINELIB_NAME_AW(WM_CAP_PAL_SAVE)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_PAL_PASTE (WM_CAP_START + 82)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_PAL_AUTOCREATE (WM_CAP_START + 83)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_PAL_MANUALCREATE (WM_CAP_START + 84)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_SET_CALLBACK_CAPCONTROL (WM_CAP_START + 85)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_UNICODE_END WM_CAP_PAL_SAVEW
af062818b47340eef15700d2f0211576ba3506eevboxsync#define WM_CAP_END WM_CAP_UNICODE_END
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct tagCapDriverCaps {
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT wDeviceIndex;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fHasOverlay;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fHasDlgVideoSource;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fHasDlgVideoFormat;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fHasDlgVideoDisplay;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fCaptureInitialized;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fDriverSuppliesPalettes;
af062818b47340eef15700d2f0211576ba3506eevboxsync HANDLE hVideoIn;
af062818b47340eef15700d2f0211576ba3506eevboxsync HANDLE hVideoOut;
af062818b47340eef15700d2f0211576ba3506eevboxsync HANDLE hVideoExtIn;
af062818b47340eef15700d2f0211576ba3506eevboxsync HANDLE hVideoExtOut;
af062818b47340eef15700d2f0211576ba3506eevboxsync} CAPDRIVERCAPS, *PCAPDRIVERCAPS, *LPCAPDRIVERCAPS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct tagCapStatus {
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT uiImageWidth;
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT uiImageHeight;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fLiveWindow;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fOverlayWindow;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fScale;
af062818b47340eef15700d2f0211576ba3506eevboxsync POINT ptScroll;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fUsingDefaultPalette;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fAudioHardware;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fCapFileExists;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwCurrentVideoFrame;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwCurrentVideoFramesDropped;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwCurrentWaveSamples;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwCurrentTimeElapsedMS;
af062818b47340eef15700d2f0211576ba3506eevboxsync HPALETTE hPalCurrent;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fCapturingNow;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwReturn;
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT wNumVideoAllocated;
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT wNumAudioAllocated;
af062818b47340eef15700d2f0211576ba3506eevboxsync} CAPSTATUS, *PCAPSTATUS, *LPCAPSTATUS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct tagCaptureParms {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwRequestMicroSecPerFrame;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fMakeUserHitOKToCapture;
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT wPercentDropForError;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fYield;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwIndexSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT wChunkGranularity;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fUsingDOSMemory;
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT wNumVideoRequested;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fCaptureAudio;
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT wNumAudioRequested;
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT vKeyAbort;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fAbortLeftMouse;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fAbortRightMouse;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fLimitEnabled;
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT wTimeLimit;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fMCIControl;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fStepMCIDevice;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwMCIStartTime;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwMCIStopTime;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fStepCaptureAt2x;
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT wStepCaptureAverageFrames;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwAudioBufferSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOL fDisableWriteCache;
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT AVStreamMaster;
af062818b47340eef15700d2f0211576ba3506eevboxsync} CAPTUREPARMS, *PCAPTUREPARMS, *LPCAPTUREPARMS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LRESULT (CALLBACK* CAPYIELDCALLBACK) (HWND hWnd);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LRESULT (CALLBACK* CAPSTATUSCALLBACKW) (HWND hWnd, int nID, LPCWSTR lpsz);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LRESULT (CALLBACK* CAPERRORCALLBACKW) (HWND hWnd, int nID, LPCWSTR lpsz);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LRESULT (CALLBACK* CAPSTATUSCALLBACKA) (HWND hWnd, int nID, LPCSTR lpsz);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LRESULT (CALLBACK* CAPERRORCALLBACKA) (HWND hWnd, int nID, LPCSTR lpsz);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LRESULT (CALLBACK* CAPVIDEOCALLBACK) (HWND hWnd, LPVIDEOHDR lpVHdr);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LRESULT (CALLBACK* CAPWAVECALLBACK) (HWND hWnd, LPWAVEHDR lpWHdr);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LRESULT (CALLBACK* CAPCONTROLCALLBACK)(HWND hWnd, int nState);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncHWND VFWAPI capCreateCaptureWindowA(LPCSTR,DWORD,INT,INT,INT,INT,HWND,INT);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHWND VFWAPI capCreateCaptureWindowW(LPCWSTR,DWORD,INT,INT,INT,INT,HWND,INT);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define capCreateCaptureWindow WINELIB_NAME_AW(capCreateCaptureWindow)
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI capGetDriverDescriptionA(WORD,LPSTR,INT,LPSTR,INT);
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL VFWAPI capGetDriverDescriptionW(WORD,LPWSTR,INT,LPWSTR,INT);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define capGetDriverDescription WINELIB_NAME_AW(capGetDriverDescription)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __cplusplus
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* __cplusplus */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* __WINE_VFW_H */