Hex Artifact Content

Not logged in

Artifact b5a6268e1454a5d65ac2f439876a90f1c34940a6:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0a 2a 20 20 20 20 20  ********\.*     
0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0060: 20 20 20 20 20 20 20 20 20 20 20 20 76 66 77 2e              vfw.
0070: 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  d               
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0090: 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20    *.*           
00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20              *.* 
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00f0: 20 20 20 20 20 20 57 69 6e 64 6f 77 73 20 41 50        Windows AP
0100: 49 20 68 65 61 64 65 72 20 6d 6f 64 75 6c 65 20  I header module 
0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0120: 20 20 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20        *.*       
0130: 20 20 20 20 20 20 20 20 20 20 77 72 69 74 74 65            writte
0140: 6e 20 69 6e 20 74 68 65 20 44 20 70 72 6f 67 72  n in the D progr
0150: 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61 67 65 20  amming language 
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0170: 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  *.*             
0180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01b0: 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 20            *.*   
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01d0: 20 20 20 20 50 6c 61 63 65 64 20 69 6e 74 6f 20      Placed into 
01e0: 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 20 20 20  public domain   
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0200: 20 20 20 20 2a 0a 5c 2a 2a 2a 2a 2a 2a 2a 2a 2a      *.\*********
0210: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0220: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0230: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0240: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a  **************/.
0250: 0a 6d 6f 64 75 6c 65 20 77 69 6e 33 32 2e 76 66  .module win32.vf
0260: 77 3b 0a 70 72 61 67 6d 61 28 6c 69 62 2c 20 22  w;.pragma(lib, "
0270: 76 66 77 33 32 2e 6c 69 62 22 29 3b 0a 0a 70 72  vfw32.lib");..pr
0280: 69 76 61 74 65 20 69 6d 70 6f 72 74 0a 09 77 69  ivate import..wi
0290: 6e 33 32 2e 63 6f 6d 6d 64 6c 67 2c 0a 09 77 69  n32.commdlg,..wi
02a0: 6e 33 32 2e 77 69 6e 67 64 69 2c 0a 09 77 69 6e  n32.wingdi,..win
02b0: 33 32 2e 6d 6d 73 79 73 74 65 6d 2c 0a 09 77 69  32.mmsystem,..wi
02c0: 6e 33 32 2e 75 6e 6b 6e 77 6e 2c 0a 09 77 69 6e  n32.unknwn,..win
02d0: 33 32 2e 77 33 32 61 70 69 2c 0a 09 77 69 6e 33  32.w32api,..win3
02e0: 32 2e 77 69 6e 64 65 66 2c 0a 09 77 69 6e 33 32  2.windef,..win32
02f0: 2e 77 69 6e 75 73 65 72 3b 0a 0a 65 78 74 65 72  .winuser;..exter
0300: 6e 28 57 69 6e 64 6f 77 73 29 20 7b 0a 09 44 57  n(Windows) {..DW
0310: 4f 52 44 20 56 69 64 65 6f 46 6f 72 57 69 6e 64  ORD VideoForWind
0320: 6f 77 73 56 65 72 73 69 6f 6e 28 29 3b 0a 09 4c  owsVersion();..L
0330: 4f 4e 47 20 49 6e 69 74 56 46 57 28 29 3b 0a 09  ONG InitVFW();..
0340: 4c 4f 4e 47 20 54 65 72 6d 56 46 57 28 29 3b 0a  LONG TermVFW();.
0350: 7d 0a 0a 44 57 4f 52 44 20 4d 4b 46 4f 55 52 43  }..DWORD MKFOURC
0360: 43 28 63 68 61 72 20 63 68 30 2c 20 63 68 61 72  C(char ch0, char
0370: 20 63 68 31 2c 20 63 68 61 72 20 63 68 32 2c 20   ch1, char ch2, 
0380: 63 68 61 72 20 63 68 33 29 20 7b 0a 09 72 65 74  char ch3) {..ret
0390: 75 72 6e 20 28 63 61 73 74 28 44 57 4f 52 44 29  urn (cast(DWORD)
03a0: 63 68 30 29 20 7c 20 28 28 63 61 73 74 28 44 57  ch0) | ((cast(DW
03b0: 4f 52 44 29 63 68 31 29 20 3c 3c 20 38 29 20 7c  ORD)ch1) << 8) |
03c0: 20 28 28 63 61 73 74 28 44 57 4f 52 44 29 63 68   ((cast(DWORD)ch
03d0: 32 29 20 3c 3c 20 31 36 29 20 7c 20 28 28 63 61  2) << 16) | ((ca
03e0: 73 74 28 44 57 4f 52 44 29 63 68 33 29 20 3c 3c  st(DWORD)ch3) <<
03f0: 20 32 34 29 3b 0a 7d 0a 0a 2f 2a 2a 0a 20 2a 20   24);.}../**. * 
0400: 43 4f 4d 50 4d 41 4e 20 2d 20 49 6e 73 74 61 6c  COMPMAN - Instal
0410: 6c 61 62 6c 65 20 43 6f 6d 70 72 65 73 73 69 6f  lable Compressio
0420: 6e 20 4d 61 6e 61 67 65 72 2e 0a 20 2a 2f 0a 0a  n Manager.. */..
0430: 63 6f 6e 73 74 20 49 43 56 45 52 53 49 4f 4e 20  const ICVERSION 
0440: 3d 20 30 78 30 31 30 34 3b 0a 0a 61 6c 69 61 73  = 0x0104;..alias
0450: 20 48 41 4e 44 4c 45 20 48 49 43 3b 0a 0a 63 6f   HANDLE HIC;..co
0460: 6e 73 74 20 42 49 5f 31 36 33 32 20 3d 20 30 78  nst BI_1632 = 0x
0470: 33 32 33 33 33 36 33 31 3b 0a 0a 74 65 6d 70 6c  32333631;..templ
0480: 61 74 65 20 61 76 69 54 57 4f 43 43 28 63 68 61  ate aviTWOCC(cha
0490: 72 20 63 30 2c 20 63 68 61 72 20 63 31 29 20 7b  r c0, char c1) {
04a0: 0a 09 63 6f 6e 73 74 20 57 4f 52 44 20 61 76 69  ..const WORD avi
04b0: 54 57 4f 43 43 20 3d 20 63 30 20 7c 20 28 63 31  TWOCC = c0 | (c1
04c0: 20 3c 3c 20 38 29 3b 0a 7d 0a 0a 63 6f 6e 73 74   << 8);.}..const
04d0: 20 49 43 54 59 50 45 5f 56 49 44 45 4f 09 3d 20   ICTYPE_VIDEO.= 
04e0: 6d 6d 69 6f 46 4f 55 52 43 43 21 28 27 76 27 2c  mmioFOURCC!('v',
04f0: 20 27 69 27 2c 20 27 64 27 2c 20 27 63 27 29 3b   'i', 'd', 'c');
0500: 0a 63 6f 6e 73 74 20 49 43 54 59 50 45 5f 41 55  .const ICTYPE_AU
0510: 44 49 4f 09 3d 20 6d 6d 69 6f 46 4f 55 52 43 43  DIO.= mmioFOURCC
0520: 21 28 27 61 27 2c 20 27 75 27 2c 20 27 64 27 2c  !('a', 'u', 'd',
0530: 20 27 63 27 29 3b 0a 0a 65 6e 75 6d 20 7b 0a 09   'c');..enum {..
0540: 49 43 45 52 52 5f 4f 4b 09 09 09 3d 20 30 2c 0a  ICERR_OK...= 0,.
0550: 09 49 43 45 52 52 5f 44 4f 4e 54 44 52 41 57 09  .ICERR_DONTDRAW.
0560: 09 3d 20 31 2c 0a 09 49 43 45 52 52 5f 4e 45 57  .= 1,..ICERR_NEW
0570: 50 41 4c 45 54 54 45 09 3d 20 32 2c 0a 09 49 43  PALETTE.= 2,..IC
0580: 45 52 52 5f 47 4f 54 4f 4b 45 59 46 52 41 4d 45  ERR_GOTOKEYFRAME
0590: 09 3d 20 33 2c 0a 09 49 43 45 52 52 5f 53 54 4f  .= 3,..ICERR_STO
05a0: 50 44 52 41 57 49 4e 47 09 3d 20 34 2c 0a 7d 0a  PDRAWING.= 4,.}.
05b0: 0a 63 6f 6e 73 74 20 49 43 45 52 52 5f 55 4e 53  .const ICERR_UNS
05c0: 55 50 50 4f 52 54 45 44 09 3d 20 2d 31 3b 0a 63  UPPORTED.= -1;.c
05d0: 6f 6e 73 74 20 49 43 45 52 52 5f 42 41 44 46 4f  onst ICERR_BADFO
05e0: 52 4d 41 54 09 3d 20 2d 32 3b 0a 63 6f 6e 73 74  RMAT.= -2;.const
05f0: 20 49 43 45 52 52 5f 4d 45 4d 4f 52 59 09 09 3d   ICERR_MEMORY..=
0600: 20 2d 33 3b 0a 63 6f 6e 73 74 20 49 43 45 52 52   -3;.const ICERR
0610: 5f 49 4e 54 45 52 4e 41 4c 09 3d 20 2d 34 3b 0a  _INTERNAL.= -4;.
0620: 63 6f 6e 73 74 20 49 43 45 52 52 5f 42 41 44 46  const ICERR_BADF
0630: 4c 41 47 53 09 3d 20 2d 35 3b 0a 63 6f 6e 73 74  LAGS.= -5;.const
0640: 20 49 43 45 52 52 5f 42 41 44 50 41 52 41 4d 09   ICERR_BADPARAM.
0650: 3d 20 2d 36 3b 0a 63 6f 6e 73 74 20 49 43 45 52  = -6;.const ICER
0660: 52 5f 42 41 44 53 49 5a 45 09 09 3d 20 2d 37 3b  R_BADSIZE..= -7;
0670: 0a 63 6f 6e 73 74 20 49 43 45 52 52 5f 42 41 44  .const ICERR_BAD
0680: 48 41 4e 44 4c 45 09 3d 20 2d 38 3b 0a 63 6f 6e  HANDLE.= -8;.con
0690: 73 74 20 49 43 45 52 52 5f 43 41 4e 54 55 50 44  st ICERR_CANTUPD
06a0: 41 54 45 09 3d 20 2d 39 3b 0a 63 6f 6e 73 74 20  ATE.= -9;.const 
06b0: 49 43 45 52 52 5f 41 42 4f 52 54 09 09 3d 20 2d  ICERR_ABORT..= -
06c0: 31 30 3b 0a 63 6f 6e 73 74 20 49 43 45 52 52 5f  10;.const ICERR_
06d0: 45 52 52 4f 52 09 09 3d 20 2d 31 30 30 3b 0a 63  ERROR..= -100;.c
06e0: 6f 6e 73 74 20 49 43 45 52 52 5f 42 41 44 42 49  onst ICERR_BADBI
06f0: 54 44 45 50 54 48 09 3d 20 2d 32 30 30 3b 0a 63  TDEPTH.= -200;.c
0700: 6f 6e 73 74 20 49 43 45 52 52 5f 42 41 44 49 4d  onst ICERR_BADIM
0710: 41 47 45 53 49 5a 45 20 3d 20 2d 32 30 31 3b 0a  AGESIZE = -201;.
0720: 0a 63 6f 6e 73 74 20 49 43 45 52 52 5f 43 55 53  .const ICERR_CUS
0730: 54 4f 4d 20 3d 20 2d 34 30 30 3b 0a 0a 65 6e 75  TOM = -400;..enu
0740: 6d 20 7b 0a 09 49 43 4d 4f 44 45 5f 43 4f 4d 50  m {..ICMODE_COMP
0750: 52 45 53 53 09 09 09 3d 20 31 2c 0a 09 49 43 4d  RESS...= 1,..ICM
0760: 4f 44 45 5f 44 45 43 4f 4d 50 52 45 53 53 2c 0a  ODE_DECOMPRESS,.
0770: 09 49 43 4d 4f 44 45 5f 46 41 53 54 44 45 43 4f  .ICMODE_FASTDECO
0780: 4d 50 52 45 53 53 2c 0a 09 49 43 4d 4f 44 45 5f  MPRESS,..ICMODE_
0790: 51 55 45 52 59 2c 0a 09 49 43 4d 4f 44 45 5f 46  QUERY,..ICMODE_F
07a0: 41 53 54 43 4f 4d 50 52 45 53 53 2c 0a 09 49 43  ASTCOMPRESS,..IC
07b0: 4d 4f 44 45 5f 44 52 41 57 09 09 09 09 3d 20 38  MODE_DRAW....= 8
07c0: 2c 0a 7d 0a 0a 63 6f 6e 73 74 20 49 43 4d 4f 44  ,.}..const ICMOD
07d0: 45 5f 49 4e 54 45 52 4e 41 4c 46 5f 46 55 4e 43  E_INTERNALF_FUNC
07e0: 54 49 4f 4e 33 32 09 3d 20 30 78 38 30 30 30 3b  TION32.= 0x8000;
07f0: 0a 63 6f 6e 73 74 20 49 43 4d 4f 44 45 5f 49 4e  .const ICMODE_IN
0800: 54 45 52 4e 41 4c 46 5f 4d 41 53 4b 09 09 09 3d  TERNALF_MASK...=
0810: 20 30 78 38 30 30 30 3b 0a 0a 65 6e 75 6d 20 7b   0x8000;..enum {
0820: 0a 09 41 56 49 49 46 5f 4c 49 53 54 09 09 3d 20  ..AVIIF_LIST..= 
0830: 30 78 30 30 30 30 30 30 30 31 2c 0a 09 41 56 49  0x00000001,..AVI
0840: 49 46 5f 54 57 4f 43 43 09 09 3d 20 30 78 30 30  IF_TWOCC..= 0x00
0850: 30 30 30 30 30 32 2c 0a 09 41 56 49 49 46 5f 4b  000002,..AVIIF_K
0860: 45 59 46 52 41 4d 45 09 3d 20 30 78 30 30 30 30  EYFRAME.= 0x0000
0870: 30 30 31 30 2c 0a 7d 0a 0a 63 6f 6e 73 74 20 49  0010,.}..const I
0880: 43 51 55 41 4c 49 54 59 5f 4c 4f 57 09 09 3d 20  CQUALITY_LOW..= 
0890: 30 3b 0a 63 6f 6e 73 74 20 49 43 51 55 41 4c 49  0;.const ICQUALI
08a0: 54 59 5f 48 49 47 48 09 3d 20 31 30 30 30 30 3b  TY_HIGH.= 10000;
08b0: 0a 63 6f 6e 73 74 20 49 43 51 55 41 4c 49 54 59  .const ICQUALITY
08c0: 5f 44 45 46 41 55 4c 54 20 3d 20 2d 31 3b 0a 0a  _DEFAULT = -1;..
08d0: 65 6e 75 6d 20 7b 0a 09 49 43 4d 5f 55 53 45 52  enum {..ICM_USER
08e0: 09 09 09 3d 20 44 52 56 5f 55 53 45 52 20 2b 20  ...= DRV_USER + 
08f0: 30 78 30 30 30 30 2c 0a 09 49 43 4d 5f 52 45 53  0x0000,..ICM_RES
0900: 45 52 56 45 44 5f 4c 4f 57 09 3d 20 44 52 56 5f  ERVED_LOW.= DRV_
0910: 55 53 45 52 20 2b 20 30 78 31 30 30 30 2c 0a 09  USER + 0x1000,..
0920: 49 43 4d 5f 52 45 53 45 52 56 45 44 5f 48 49 47  ICM_RESERVED_HIG
0930: 48 09 3d 20 44 52 56 5f 55 53 45 52 20 2b 20 30  H.= DRV_USER + 0
0940: 78 32 30 30 30 2c 0a 09 49 43 4d 5f 52 45 53 45  x2000,..ICM_RESE
0950: 52 56 45 44 09 09 3d 20 49 43 4d 5f 52 45 53 45  RVED..= ICM_RESE
0960: 52 56 45 44 5f 4c 4f 57 2c 0a 7d 0a 0a 2f 2f 20  RVED_LOW,.}..// 
0970: 6d 65 73 73 61 67 65 73 0a 0a 65 6e 75 6d 20 7b  messages..enum {
0980: 0a 09 49 43 4d 5f 47 45 54 53 54 41 54 45 09 09  ..ICM_GETSTATE..
0990: 09 3d 20 49 43 4d 5f 52 45 53 45 52 56 45 44 20  .= ICM_RESERVED 
09a0: 2b 20 30 2c 0a 09 49 43 4d 5f 53 45 54 53 54 41  + 0,..ICM_SETSTA
09b0: 54 45 09 09 09 3d 20 49 43 4d 5f 52 45 53 45 52  TE...= ICM_RESER
09c0: 56 45 44 20 2b 20 31 2c 0a 09 49 43 4d 5f 47 45  VED + 1,..ICM_GE
09d0: 54 49 4e 46 4f 09 09 09 09 3d 20 49 43 4d 5f 52  TINFO....= ICM_R
09e0: 45 53 45 52 56 45 44 20 2b 20 32 2c 0a 09 49 43  ESERVED + 2,..IC
09f0: 4d 5f 43 4f 4e 46 49 47 55 52 45 09 09 09 3d 20  M_CONFIGURE...= 
0a00: 49 43 4d 5f 52 45 53 45 52 56 45 44 20 2b 20 31  ICM_RESERVED + 1
0a10: 30 2c 0a 09 49 43 4d 5f 41 42 4f 55 54 09 09 09  0,..ICM_ABOUT...
0a20: 09 3d 20 49 43 4d 5f 52 45 53 45 52 56 45 44 20  .= ICM_RESERVED 
0a30: 2b 20 31 31 2c 0a 09 49 43 4d 5f 47 45 54 45 52  + 11,..ICM_GETER
0a40: 52 4f 52 54 45 58 54 09 09 3d 20 49 43 4d 5f 52  RORTEXT..= ICM_R
0a50: 45 53 45 52 56 45 44 20 2b 20 31 32 2c 0a 09 49  ESERVED + 12,..I
0a60: 43 4d 5f 47 45 54 46 4f 52 4d 41 54 4e 41 4d 45  CM_GETFORMATNAME
0a70: 09 09 3d 20 49 43 4d 5f 52 45 53 45 52 56 45 44  ..= ICM_RESERVED
0a80: 20 2b 20 32 30 2c 0a 09 49 43 4d 5f 45 4e 55 4d   + 20,..ICM_ENUM
0a90: 46 4f 52 4d 41 54 53 09 09 09 3d 20 49 43 4d 5f  FORMATS...= ICM_
0aa0: 52 45 53 45 52 56 45 44 20 2b 20 32 31 2c 0a 09  RESERVED + 21,..
0ab0: 49 43 4d 5f 47 45 54 44 45 46 41 55 4c 54 51 55  ICM_GETDEFAULTQU
0ac0: 41 4c 49 54 59 09 3d 20 49 43 4d 5f 52 45 53 45  ALITY.= ICM_RESE
0ad0: 52 56 45 44 20 2b 20 33 30 2c 0a 09 49 43 4d 5f  RVED + 30,..ICM_
0ae0: 47 45 54 51 55 41 4c 49 54 59 09 09 09 3d 20 49  GETQUALITY...= I
0af0: 43 4d 5f 52 45 53 45 52 56 45 44 20 2b 20 33 31  CM_RESERVED + 31
0b00: 2c 0a 09 49 43 4d 5f 53 45 54 51 55 41 4c 49 54  ,..ICM_SETQUALIT
0b10: 59 09 09 09 3d 20 49 43 4d 5f 52 45 53 45 52 56  Y...= ICM_RESERV
0b20: 45 44 20 2b 20 33 32 2c 0a 09 49 43 4d 5f 53 45  ED + 32,..ICM_SE
0b30: 54 09 09 09 09 09 3d 20 49 43 4d 5f 52 45 53 45  T.....= ICM_RESE
0b40: 52 56 45 44 20 2b 20 34 30 2c 0a 09 49 43 4d 5f  RVED + 40,..ICM_
0b50: 47 45 54 09 09 09 09 09 3d 20 49 43 4d 5f 52 45  GET.....= ICM_RE
0b60: 53 45 52 56 45 44 20 2b 20 34 31 2c 0a 7d 0a 0a  SERVED + 41,.}..
0b70: 63 6f 6e 73 74 20 49 43 4d 5f 46 52 41 4d 45 52  const ICM_FRAMER
0b80: 41 54 45 09 09 3d 20 6d 6d 69 6f 46 4f 55 52 43  ATE..= mmioFOURC
0b90: 43 21 28 27 46 27 2c 27 72 27 2c 27 6d 27 2c 27  C!('F','r','m','
0ba0: 52 27 29 3b 0a 63 6f 6e 73 74 20 49 43 4d 5f 4b  R');.const ICM_K
0bb0: 45 59 46 52 41 4d 45 52 41 54 45 09 3d 20 6d 6d  EYFRAMERATE.= mm
0bc0: 69 6f 46 4f 55 52 43 43 21 28 27 4b 27 2c 27 65  ioFOURCC!('K','e
0bd0: 27 2c 27 79 27 2c 27 52 27 29 3b 0a 0a 2f 2f 20  ','y','R');..// 
0be0: 49 43 4d 20 73 70 65 63 69 66 69 63 20 6d 65 73  ICM specific mes
0bf0: 73 61 67 65 73 2e 0a 0a 65 6e 75 6d 20 7b 0a 09  sages...enum {..
0c00: 49 43 4d 5f 43 4f 4d 50 52 45 53 53 5f 47 45 54  ICM_COMPRESS_GET
0c10: 5f 46 4f 52 4d 41 54 09 09 3d 20 49 43 4d 5f 55  _FORMAT..= ICM_U
0c20: 53 45 52 20 2b 20 34 2c 0a 09 49 43 4d 5f 43 4f  SER + 4,..ICM_CO
0c30: 4d 50 52 45 53 53 5f 47 45 54 5f 53 49 5a 45 09  MPRESS_GET_SIZE.
0c40: 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20 35 2c  .= ICM_USER + 5,
0c50: 0a 09 49 43 4d 5f 43 4f 4d 50 52 45 53 53 5f 51  ..ICM_COMPRESS_Q
0c60: 55 45 52 59 09 09 09 3d 20 49 43 4d 5f 55 53 45  UERY...= ICM_USE
0c70: 52 20 2b 20 36 2c 0a 09 49 43 4d 5f 43 4f 4d 50  R + 6,..ICM_COMP
0c80: 52 45 53 53 5f 42 45 47 49 4e 09 09 09 3d 20 49  RESS_BEGIN...= I
0c90: 43 4d 5f 55 53 45 52 20 2b 20 37 2c 0a 09 49 43  CM_USER + 7,..IC
0ca0: 4d 5f 43 4f 4d 50 52 45 53 53 09 09 09 09 3d 20  M_COMPRESS....= 
0cb0: 49 43 4d 5f 55 53 45 52 20 2b 20 38 2c 0a 09 49  ICM_USER + 8,..I
0cc0: 43 4d 5f 43 4f 4d 50 52 45 53 53 5f 45 4e 44 09  CM_COMPRESS_END.
0cd0: 09 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20 39  ..= ICM_USER + 9
0ce0: 2c 0a 09 49 43 4d 5f 44 45 43 4f 4d 50 52 45 53  ,..ICM_DECOMPRES
0cf0: 53 5f 47 45 54 5f 46 4f 52 4d 41 54 09 3d 20 49  S_GET_FORMAT.= I
0d00: 43 4d 5f 55 53 45 52 20 2b 20 31 30 2c 0a 09 49  CM_USER + 10,..I
0d10: 43 4d 5f 44 45 43 4f 4d 50 52 45 53 53 5f 51 55  CM_DECOMPRESS_QU
0d20: 45 52 59 09 09 3d 20 49 43 4d 5f 55 53 45 52 20  ERY..= ICM_USER 
0d30: 2b 20 31 31 2c 0a 09 49 43 4d 5f 44 45 43 4f 4d  + 11,..ICM_DECOM
0d40: 50 52 45 53 53 5f 42 45 47 49 4e 09 09 3d 20 49  PRESS_BEGIN..= I
0d50: 43 4d 5f 55 53 45 52 20 2b 20 31 32 2c 0a 09 49  CM_USER + 12,..I
0d60: 43 4d 5f 44 45 43 4f 4d 50 52 45 53 53 09 09 09  CM_DECOMPRESS...
0d70: 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20 31 33  .= ICM_USER + 13
0d80: 2c 0a 09 49 43 4d 5f 44 45 43 4f 4d 50 52 45 53  ,..ICM_DECOMPRES
0d90: 53 5f 45 4e 44 09 09 09 3d 20 49 43 4d 5f 55 53  S_END...= ICM_US
0da0: 45 52 20 2b 20 31 34 2c 0a 09 49 43 4d 5f 44 45  ER + 14,..ICM_DE
0db0: 43 4f 4d 50 52 45 53 53 5f 53 45 54 5f 50 41 4c  COMPRESS_SET_PAL
0dc0: 45 54 54 45 09 3d 20 49 43 4d 5f 55 53 45 52 20  ETTE.= ICM_USER 
0dd0: 2b 20 32 39 2c 0a 09 49 43 4d 5f 44 45 43 4f 4d  + 29,..ICM_DECOM
0de0: 50 52 45 53 53 5f 47 45 54 5f 50 41 4c 45 54 54  PRESS_GET_PALETT
0df0: 45 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20 33  E.= ICM_USER + 3
0e00: 30 2c 0a 09 49 43 4d 5f 44 52 41 57 5f 51 55 45  0,..ICM_DRAW_QUE
0e10: 52 59 09 09 09 09 3d 20 49 43 4d 5f 55 53 45 52  RY....= ICM_USER
0e20: 20 2b 20 33 31 2c 0a 09 49 43 4d 5f 44 52 41 57   + 31,..ICM_DRAW
0e30: 5f 42 45 47 49 4e 09 09 09 09 3d 20 49 43 4d 5f  _BEGIN....= ICM_
0e40: 55 53 45 52 20 2b 20 31 35 2c 0a 09 49 43 4d 5f  USER + 15,..ICM_
0e50: 44 52 41 57 5f 47 45 54 5f 50 41 4c 45 54 54 45  DRAW_GET_PALETTE
0e60: 09 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20 31  ..= ICM_USER + 1
0e70: 36 2c 0a 09 49 43 4d 5f 44 52 41 57 5f 55 50 44  6,..ICM_DRAW_UPD
0e80: 41 54 45 09 09 09 09 3d 20 49 43 4d 5f 55 53 45  ATE....= ICM_USE
0e90: 52 20 2b 20 31 37 2c 0a 09 49 43 4d 5f 44 52 41  R + 17,..ICM_DRA
0ea0: 57 5f 53 54 41 52 54 09 09 09 09 3d 20 49 43 4d  W_START....= ICM
0eb0: 5f 55 53 45 52 20 2b 20 31 38 2c 0a 09 49 43 4d  _USER + 18,..ICM
0ec0: 5f 44 52 41 57 5f 53 54 4f 50 09 09 09 09 3d 20  _DRAW_STOP....= 
0ed0: 49 43 4d 5f 55 53 45 52 20 2b 20 31 39 2c 0a 09  ICM_USER + 19,..
0ee0: 49 43 4d 5f 44 52 41 57 5f 42 49 54 53 09 09 09  ICM_DRAW_BITS...
0ef0: 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20 32 30  .= ICM_USER + 20
0f00: 2c 0a 09 49 43 4d 5f 44 52 41 57 5f 45 4e 44 09  ,..ICM_DRAW_END.
0f10: 09 09 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20  ...= ICM_USER + 
0f20: 32 31 2c 0a 09 49 43 4d 5f 44 52 41 57 5f 47 45  21,..ICM_DRAW_GE
0f30: 54 54 49 4d 45 09 09 09 3d 20 49 43 4d 5f 55 53  TTIME...= ICM_US
0f40: 45 52 20 2b 20 33 32 2c 0a 09 49 43 4d 5f 44 52  ER + 32,..ICM_DR
0f50: 41 57 09 09 09 09 09 3d 20 49 43 4d 5f 55 53 45  AW.....= ICM_USE
0f60: 52 20 2b 20 33 33 2c 0a 09 49 43 4d 5f 44 52 41  R + 33,..ICM_DRA
0f70: 57 5f 57 49 4e 44 4f 57 09 09 09 09 3d 20 49 43  W_WINDOW....= IC
0f80: 4d 5f 55 53 45 52 20 2b 20 33 34 2c 0a 09 49 43  M_USER + 34,..IC
0f90: 4d 5f 44 52 41 57 5f 53 45 54 54 49 4d 45 09 09  M_DRAW_SETTIME..
0fa0: 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20 33 35  .= ICM_USER + 35
0fb0: 2c 0a 09 49 43 4d 5f 44 52 41 57 5f 52 45 41 4c  ,..ICM_DRAW_REAL
0fc0: 49 5a 45 09 09 09 3d 20 49 43 4d 5f 55 53 45 52  IZE...= ICM_USER
0fd0: 20 2b 20 33 36 2c 0a 09 49 43 4d 5f 44 52 41 57   + 36,..ICM_DRAW
0fe0: 5f 46 4c 55 53 48 09 09 09 09 3d 20 49 43 4d 5f  _FLUSH....= ICM_
0ff0: 55 53 45 52 20 2b 20 33 37 2c 0a 09 49 43 4d 5f  USER + 37,..ICM_
1000: 44 52 41 57 5f 52 45 4e 44 45 52 42 55 46 46 45  DRAW_RENDERBUFFE
1010: 52 09 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20  R..= ICM_USER + 
1020: 33 38 2c 0a 09 49 43 4d 5f 44 52 41 57 5f 53 54  38,..ICM_DRAW_ST
1030: 41 52 54 5f 50 4c 41 59 09 09 09 3d 20 49 43 4d  ART_PLAY...= ICM
1040: 5f 55 53 45 52 20 2b 20 33 39 2c 0a 09 49 43 4d  _USER + 39,..ICM
1050: 5f 44 52 41 57 5f 53 54 4f 50 5f 50 4c 41 59 09  _DRAW_STOP_PLAY.
1060: 09 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20 34  ..= ICM_USER + 4
1070: 30 2c 0a 09 49 43 4d 5f 44 52 41 57 5f 53 55 47  0,..ICM_DRAW_SUG
1080: 47 45 53 54 46 4f 52 4d 41 54 09 09 3d 20 49 43  GESTFORMAT..= IC
1090: 4d 5f 55 53 45 52 20 2b 20 35 30 2c 0a 09 49 43  M_USER + 50,..IC
10a0: 4d 5f 44 52 41 57 5f 43 48 41 4e 47 45 50 41 4c  M_DRAW_CHANGEPAL
10b0: 45 54 54 45 09 09 3d 20 49 43 4d 5f 55 53 45 52  ETTE..= ICM_USER
10c0: 20 2b 20 35 31 2c 0a 09 49 43 4d 5f 44 52 41 57   + 51,..ICM_DRAW
10d0: 5f 49 44 4c 45 09 09 09 09 3d 20 49 43 4d 5f 55  _IDLE....= ICM_U
10e0: 53 45 52 20 2b 20 35 32 2c 0a 09 49 43 4d 5f 47  SER + 52,..ICM_G
10f0: 45 54 42 55 46 46 45 52 53 57 41 4e 54 45 44 09  ETBUFFERSWANTED.
1100: 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20 34 31  .= ICM_USER + 41
1110: 2c 0a 09 49 43 4d 5f 47 45 54 44 45 46 41 55 4c  ,..ICM_GETDEFAUL
1120: 54 4b 45 59 46 52 41 4d 45 52 41 54 45 09 3d 20  TKEYFRAMERATE.= 
1130: 49 43 4d 5f 55 53 45 52 20 2b 20 34 32 2c 0a 09  ICM_USER + 42,..
1140: 49 43 4d 5f 44 45 43 4f 4d 50 52 45 53 53 45 58  ICM_DECOMPRESSEX
1150: 5f 42 45 47 49 4e 09 09 3d 20 49 43 4d 5f 55 53  _BEGIN..= ICM_US
1160: 45 52 20 2b 20 36 30 2c 0a 09 49 43 4d 5f 44 45  ER + 60,..ICM_DE
1170: 43 4f 4d 50 52 45 53 53 45 58 5f 51 55 45 52 59  COMPRESSEX_QUERY
1180: 09 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20 36  ..= ICM_USER + 6
1190: 31 2c 0a 09 49 43 4d 5f 44 45 43 4f 4d 50 52 45  1,..ICM_DECOMPRE
11a0: 53 53 45 58 09 09 09 3d 20 49 43 4d 5f 55 53 45  SSEX...= ICM_USE
11b0: 52 20 2b 20 36 32 2c 0a 09 49 43 4d 5f 44 45 43  R + 62,..ICM_DEC
11c0: 4f 4d 50 52 45 53 53 45 58 5f 45 4e 44 09 09 3d  OMPRESSEX_END..=
11d0: 20 49 43 4d 5f 55 53 45 52 20 2b 20 36 33 2c 0a   ICM_USER + 63,.
11e0: 09 49 43 4d 5f 43 4f 4d 50 52 45 53 53 5f 46 52  .ICM_COMPRESS_FR
11f0: 41 4d 45 53 5f 49 4e 46 4f 09 3d 20 49 43 4d 5f  AMES_INFO.= ICM_
1200: 55 53 45 52 20 2b 20 37 30 2c 0a 09 49 43 4d 5f  USER + 70,..ICM_
1210: 43 4f 4d 50 52 45 53 53 5f 46 52 41 4d 45 53 09  COMPRESS_FRAMES.
1220: 09 09 3d 20 49 43 4d 5f 55 53 45 52 20 2b 20 37  ..= ICM_USER + 7
1230: 31 2c 0a 09 49 43 4d 5f 53 45 54 5f 53 54 41 54  1,..ICM_SET_STAT
1240: 55 53 5f 50 52 4f 43 09 09 09 3d 20 49 43 4d 5f  US_PROC...= ICM_
1250: 55 53 45 52 20 2b 20 37 32 2c 0a 7d 0a 0a 73 74  USER + 72,.}..st
1260: 72 75 63 74 20 49 43 4f 50 45 4e 20 7b 0a 09 44  ruct ICOPEN {..D
1270: 57 4f 52 44 09 64 77 53 69 7a 65 3b 0a 09 44 57  WORD.dwSize;..DW
1280: 4f 52 44 09 66 63 63 54 79 70 65 3b 0a 09 44 57  ORD.fccType;..DW
1290: 4f 52 44 09 66 63 63 48 61 6e 64 6c 65 72 3b 0a  ORD.fccHandler;.
12a0: 09 44 57 4f 52 44 09 64 77 56 65 72 73 69 6f 6e  .DWORD.dwVersion
12b0: 3b 0a 09 44 57 4f 52 44 09 64 77 46 6c 61 67 73  ;..DWORD.dwFlags
12c0: 3b 0a 09 4c 52 45 53 55 4c 54 09 64 77 45 72 72  ;..LRESULT.dwErr
12d0: 6f 72 3b 0a 09 4c 50 56 4f 49 44 09 70 56 31 52  or;..LPVOID.pV1R
12e0: 65 73 65 72 76 65 64 3b 0a 09 4c 50 56 4f 49 44  eserved;..LPVOID
12f0: 09 70 56 32 52 65 73 65 72 76 65 64 3b 0a 09 44  .pV2Reserved;..D
1300: 57 4f 52 44 09 64 6e 44 65 76 4e 6f 64 65 3b 0a  WORD.dnDevNode;.
1310: 7d 0a 0a 73 74 72 75 63 74 20 49 43 49 4e 46 4f  }..struct ICINFO
1320: 20 7b 0a 09 44 57 4f 52 44 09 64 77 53 69 7a 65   {..DWORD.dwSize
1330: 3b 0a 09 44 57 4f 52 44 09 66 63 63 54 79 70 65  ;..DWORD.fccType
1340: 3b 0a 09 44 57 4f 52 44 09 66 63 63 48 61 6e 64  ;..DWORD.fccHand
1350: 6c 65 72 3b 0a 09 44 57 4f 52 44 09 64 77 46 6c  ler;..DWORD.dwFl
1360: 61 67 73 3b 0a 09 44 57 4f 52 44 09 64 77 56 65  ags;..DWORD.dwVe
1370: 72 73 69 6f 6e 3b 0a 09 44 57 4f 52 44 09 64 77  rsion;..DWORD.dw
1380: 56 65 72 73 69 6f 6e 49 43 4d 3b 0a 09 57 43 48  VersionICM;..WCH
1390: 41 52 09 73 7a 4e 61 6d 65 5b 31 36 5d 3b 0a 09  AR.szName[16];..
13a0: 57 43 48 41 52 09 73 7a 44 65 73 63 72 69 70 74  WCHAR.szDescript
13b0: 69 6f 6e 5b 31 32 38 5d 3b 0a 09 57 43 48 41 52  ion[128];..WCHAR
13c0: 09 73 7a 44 72 69 76 65 72 5b 31 32 38 5d 3b 0a  .szDriver[128];.
13d0: 7d 0a 0a 65 6e 75 6d 20 7b 0a 09 56 49 44 43 46  }..enum {..VIDCF
13e0: 5f 51 55 41 4c 49 54 59 09 09 09 3d 20 30 78 30  _QUALITY...= 0x0
13f0: 30 30 31 2c 0a 09 56 49 44 43 46 5f 43 52 55 4e  001,..VIDCF_CRUN
1400: 43 48 09 09 09 3d 20 30 78 30 30 30 32 2c 0a 09  CH...= 0x0002,..
1410: 56 49 44 43 46 5f 54 45 4d 50 4f 52 41 4c 09 09  VIDCF_TEMPORAL..
1420: 09 3d 20 30 78 30 30 30 34 2c 0a 09 56 49 44 43  .= 0x0004,..VIDC
1430: 46 5f 43 4f 4d 50 52 45 53 53 46 52 41 4d 45 53  F_COMPRESSFRAMES
1440: 09 3d 20 30 78 30 30 30 38 2c 0a 09 56 49 44 43  .= 0x0008,..VIDC
1450: 46 5f 44 52 41 57 09 09 09 09 3d 20 30 78 30 30  F_DRAW....= 0x00
1460: 31 30 2c 0a 09 56 49 44 43 46 5f 46 41 53 54 54  10,..VIDCF_FASTT
1470: 45 4d 50 4f 52 41 4c 43 09 09 3d 20 30 78 30 30  EMPORALC..= 0x00
1480: 32 30 2c 0a 09 56 49 44 43 46 5f 46 41 53 54 54  20,..VIDCF_FASTT
1490: 45 4d 50 4f 52 41 4c 44 09 09 3d 20 30 78 30 30  EMPORALD..= 0x00
14a0: 38 30 2c 0a 7d 0a 0a 63 6f 6e 73 74 20 49 43 43  80,.}..const ICC
14b0: 4f 4d 50 52 45 53 53 5f 4b 45 59 46 52 41 4d 45  OMPRESS_KEYFRAME
14c0: 20 3d 20 30 78 30 30 30 30 30 30 30 31 4c 3b 0a   = 0x00000001L;.
14d0: 0a 73 74 72 75 63 74 20 49 43 43 4f 4d 50 52 45  .struct ICCOMPRE
14e0: 53 53 20 7b 0a 09 44 57 4f 52 44 09 09 09 09 64  SS {..DWORD....d
14f0: 77 46 6c 61 67 73 3b 0a 09 4c 50 42 49 54 4d 41  wFlags;..LPBITMA
1500: 50 49 4e 46 4f 48 45 41 44 45 52 09 6c 70 62 69  PINFOHEADER.lpbi
1510: 4f 75 74 70 75 74 3b 0a 09 4c 50 56 4f 49 44 09  Output;..LPVOID.
1520: 09 09 09 6c 70 4f 75 74 70 75 74 3b 0a 09 4c 50  ...lpOutput;..LP
1530: 42 49 54 4d 41 50 49 4e 46 4f 48 45 41 44 45 52  BITMAPINFOHEADER
1540: 09 6c 70 62 69 49 6e 70 75 74 3b 0a 09 4c 50 56  .lpbiInput;..LPV
1550: 4f 49 44 09 09 09 09 6c 70 49 6e 70 75 74 3b 0a  OID....lpInput;.
1560: 09 4c 50 44 57 4f 52 44 09 09 09 09 6c 70 63 6b  .LPDWORD....lpck
1570: 69 64 3b 0a 09 4c 50 44 57 4f 52 44 09 09 09 09  id;..LPDWORD....
1580: 6c 70 64 77 46 6c 61 67 73 3b 0a 09 4c 4f 4e 47  lpdwFlags;..LONG
1590: 09 09 09 09 6c 46 72 61 6d 65 4e 75 6d 3b 0a 09  ....lFrameNum;..
15a0: 44 57 4f 52 44 09 09 09 09 64 77 46 72 61 6d 65  DWORD....dwFrame
15b0: 53 69 7a 65 3b 0a 09 44 57 4f 52 44 09 09 09 09  Size;..DWORD....
15c0: 64 77 51 75 61 6c 69 74 79 3b 0a 09 4c 50 42 49  dwQuality;..LPBI
15d0: 54 4d 41 50 49 4e 46 4f 48 45 41 44 45 52 09 6c  TMAPINFOHEADER.l
15e0: 70 62 69 50 72 65 76 3b 0a 09 4c 50 56 4f 49 44  pbiPrev;..LPVOID
15f0: 09 09 09 09 6c 70 50 72 65 76 3b 0a 7d 0a 0a 63  ....lpPrev;.}..c
1600: 6f 6e 73 74 20 49 43 43 4f 4d 50 52 45 53 53 46  onst ICCOMPRESSF
1610: 52 41 4d 45 53 5f 50 41 44 44 49 4e 47 20 3d 20  RAMES_PADDING = 
1620: 30 78 30 30 30 30 30 30 30 31 3b 0a 0a 73 74 72  0x00000001;..str
1630: 75 63 74 20 49 43 43 4f 4d 50 52 45 53 53 46 52  uct ICCOMPRESSFR
1640: 41 4d 45 53 20 7b 0a 09 44 57 4f 52 44 09 09 09  AMES {..DWORD...
1650: 09 64 77 46 6c 61 67 73 3b 0a 09 4c 50 42 49 54  .dwFlags;..LPBIT
1660: 4d 41 50 49 4e 46 4f 48 45 41 44 45 52 09 6c 70  MAPINFOHEADER.lp
1670: 62 69 4f 75 74 70 75 74 3b 0a 09 4c 50 41 52 41  biOutput;..LPARA
1680: 4d 09 09 09 09 6c 4f 75 74 70 75 74 3b 0a 09 4c  M....lOutput;..L
1690: 50 42 49 54 4d 41 50 49 4e 46 4f 48 45 41 44 45  PBITMAPINFOHEADE
16a0: 52 09 6c 70 62 69 49 6e 70 75 74 3b 0a 09 4c 50  R.lpbiInput;..LP
16b0: 41 52 41 4d 09 09 09 09 6c 49 6e 70 75 74 3b 0a  ARAM....lInput;.
16c0: 09 4c 4f 4e 47 09 09 09 09 6c 53 74 61 72 74 46  .LONG....lStartF
16d0: 72 61 6d 65 3b 0a 09 4c 4f 4e 47 09 09 09 09 6c  rame;..LONG....l
16e0: 46 72 61 6d 65 43 6f 75 6e 74 3b 0a 09 4c 4f 4e  FrameCount;..LON
16f0: 47 09 09 09 09 6c 51 75 61 6c 69 74 79 3b 0a 09  G....lQuality;..
1700: 4c 4f 4e 47 09 09 09 09 6c 44 61 74 61 52 61 74  LONG....lDataRat
1710: 65 3b 0a 09 4c 4f 4e 47 09 09 09 09 6c 4b 65 79  e;..LONG....lKey
1720: 52 61 74 65 3b 0a 09 44 57 4f 52 44 09 09 09 09  Rate;..DWORD....
1730: 64 77 52 61 74 65 3b 0a 09 44 57 4f 52 44 09 09  dwRate;..DWORD..
1740: 09 09 64 77 53 63 61 6c 65 3b 20 20 20 20 44 57  ..dwScale;    DW
1750: 4f 52 44 09 09 64 77 4f 76 65 72 68 65 61 64 50  ORD..dwOverheadP
1760: 65 72 46 72 61 6d 65 3b 0a 09 44 57 4f 52 44 09  erFrame;..DWORD.
1770: 09 09 09 64 77 52 65 73 65 72 76 65 64 32 3b 0a  ...dwReserved2;.
1780: 0a 09 4c 4f 4e 47 20 66 75 6e 63 74 69 6f 6e 28  ..LONG function(
1790: 4c 50 41 52 41 4d 20 6c 49 6e 70 75 74 2c 20 4c  LPARAM lInput, L
17a0: 4f 4e 47 20 6c 46 72 61 6d 65 2c 20 4c 50 56 4f  ONG lFrame, LPVO
17b0: 49 44 20 6c 70 42 69 74 73 2c 20 4c 4f 4e 47 20  ID lpBits, LONG 
17c0: 6c 65 6e 29 20 47 65 74 44 61 74 61 3b 0a 09 4c  len) GetData;..L
17d0: 4f 4e 47 20 66 75 6e 63 74 69 6f 6e 28 4c 50 41  ONG function(LPA
17e0: 52 41 4d 20 6c 4f 75 74 70 75 74 2c 20 4c 4f 4e  RAM lOutput, LON
17f0: 47 20 6c 46 72 61 6d 65 2c 20 4c 50 56 4f 49 44  G lFrame, LPVOID
1800: 20 6c 70 42 69 74 73 2c 20 4c 4f 4e 47 20 6c 65   lpBits, LONG le
1810: 6e 29 20 50 75 74 44 61 74 61 3b 0a 7d 0a 0a 65  n) PutData;.}..e
1820: 6e 75 6d 20 7b 0a 09 49 43 53 54 41 54 55 53 5f  num {..ICSTATUS_
1830: 53 54 41 52 54 09 3d 20 30 2c 0a 09 49 43 53 54  START.= 0,..ICST
1840: 41 54 55 53 5f 53 54 41 54 55 53 09 3d 20 31 2c  ATUS_STATUS.= 1,
1850: 0a 09 49 43 53 54 41 54 55 53 5f 45 4e 44 09 3d  ..ICSTATUS_END.=
1860: 20 32 2c 0a 09 49 43 53 54 41 54 55 53 5f 45 52   2,..ICSTATUS_ER
1870: 52 4f 52 09 3d 20 33 2c 0a 09 49 43 53 54 41 54  ROR.= 3,..ICSTAT
1880: 55 53 5f 59 49 45 4c 44 09 3d 20 34 2c 0a 7d 0a  US_YIELD.= 4,.}.
1890: 0a 73 74 72 75 63 74 20 49 43 53 45 54 53 54 41  .struct ICSETSTA
18a0: 54 55 53 50 52 4f 43 20 7b 0a 09 44 57 4f 52 44  TUSPROC {..DWORD
18b0: 09 64 77 46 6c 61 67 73 3b 0a 09 4c 50 41 52 41  .dwFlags;..LPARA
18c0: 4d 09 6c 50 61 72 61 6d 3b 0a 09 4c 4f 4e 47 20  M.lParam;..LONG 
18d0: 66 75 6e 63 74 69 6f 6e 28 4c 50 41 52 41 4d 20  function(LPARAM 
18e0: 6c 50 61 72 61 6d 2c 20 55 49 4e 54 20 6d 65 73  lParam, UINT mes
18f0: 73 61 67 65 2c 20 4c 4f 4e 47 20 6c 29 20 53 74  sage, LONG l) St
1900: 61 74 75 73 3b 0a 7d 0a 0a 65 6e 75 6d 20 7b 0a  atus;.}..enum {.
1910: 09 49 43 44 45 43 4f 4d 50 52 45 53 53 5f 4e 4f  .ICDECOMPRESS_NO
1920: 54 4b 45 59 46 52 41 4d 45 09 3d 20 30 78 30 38  TKEYFRAME.= 0x08
1930: 30 30 30 30 30 30 2c 0a 09 49 43 44 45 43 4f 4d  000000,..ICDECOM
1940: 50 52 45 53 53 5f 4e 55 4c 4c 46 52 41 4d 45 09  PRESS_NULLFRAME.
1950: 09 3d 20 30 78 31 30 30 30 30 30 30 30 2c 0a 09  .= 0x10000000,..
1960: 49 43 44 45 43 4f 4d 50 52 45 53 53 5f 50 52 45  ICDECOMPRESS_PRE
1970: 52 4f 4c 4c 09 09 3d 20 30 78 32 30 30 30 30 30  ROLL..= 0x200000
1980: 30 30 2c 0a 09 49 43 44 45 43 4f 4d 50 52 45 53  00,..ICDECOMPRES
1990: 53 5f 55 50 44 41 54 45 09 09 09 3d 20 30 78 34  S_UPDATE...= 0x4
19a0: 30 30 30 30 30 30 30 2c 0a 09 49 43 44 45 43 4f  0000000,..ICDECO
19b0: 4d 50 52 45 53 53 5f 48 55 52 52 59 55 50 09 09  MPRESS_HURRYUP..
19c0: 3d 20 30 78 38 30 30 30 30 30 30 30 2c 0a 7d 0a  = 0x80000000,.}.
19d0: 0a 73 74 72 75 63 74 20 49 43 44 45 43 4f 4d 50  .struct ICDECOMP
19e0: 52 45 53 53 20 7b 0a 09 44 57 4f 52 44 09 09 09  RESS {..DWORD...
19f0: 09 64 77 46 6c 61 67 73 3b 0a 09 4c 50 42 49 54  .dwFlags;..LPBIT
1a00: 4d 41 50 49 4e 46 4f 48 45 41 44 45 52 09 6c 70  MAPINFOHEADER.lp
1a10: 62 69 49 6e 70 75 74 3b 0a 09 4c 50 56 4f 49 44  biInput;..LPVOID
1a20: 09 09 09 09 6c 70 49 6e 70 75 74 3b 0a 09 4c 50  ....lpInput;..LP
1a30: 42 49 54 4d 41 50 49 4e 46 4f 48 45 41 44 45 52  BITMAPINFOHEADER
1a40: 09 6c 70 62 69 4f 75 74 70 75 74 3b 0a 09 4c 50  .lpbiOutput;..LP
1a50: 56 4f 49 44 09 09 09 09 6c 70 4f 75 74 70 75 74  VOID....lpOutput
1a60: 3b 0a 09 44 57 4f 52 44 09 09 09 09 63 6b 69 64  ;..DWORD....ckid
1a70: 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 49 43 44 45  ;.}..struct ICDE
1a80: 43 4f 4d 50 52 45 53 53 45 58 20 7b 0a 09 44 57  COMPRESSEX {..DW
1a90: 4f 52 44 09 09 09 09 64 77 46 6c 61 67 73 3b 0a  ORD....dwFlags;.
1aa0: 09 4c 50 42 49 54 4d 41 50 49 4e 46 4f 48 45 41  .LPBITMAPINFOHEA
1ab0: 44 45 52 20 20 6c 70 62 69 53 72 63 3b 0a 09 4c  DER  lpbiSrc;..L
1ac0: 50 56 4f 49 44 09 09 09 09 6c 70 53 72 63 3b 0a  PVOID....lpSrc;.
1ad0: 09 4c 50 42 49 54 4d 41 50 49 4e 46 4f 48 45 41  .LPBITMAPINFOHEA
1ae0: 44 45 52 09 6c 70 62 69 44 73 74 3b 0a 09 4c 50  DER.lpbiDst;..LP
1af0: 56 4f 49 44 09 09 09 09 6c 70 44 73 74 3b 0a 09  VOID....lpDst;..
1b00: 69 6e 74 09 09 09 09 09 78 44 73 74 3b 0a 09 69  int.....xDst;..i
1b10: 6e 74 09 09 09 09 09 79 44 73 74 3b 0a 09 69 6e  nt.....yDst;..in
1b20: 74 09 09 09 09 09 64 78 44 73 74 3b 0a 09 69 6e  t.....dxDst;..in
1b30: 74 09 09 09 09 09 64 79 44 73 74 3b 0a 09 69 6e  t.....dyDst;..in
1b40: 74 09 09 09 09 09 78 53 72 63 3b 0a 09 69 6e 74  t.....xSrc;..int
1b50: 09 09 09 09 09 79 53 72 63 3b 0a 09 69 6e 74 09  .....ySrc;..int.
1b60: 09 09 09 09 64 78 53 72 63 3b 0a 09 69 6e 74 09  ....dxSrc;..int.
1b70: 09 09 09 09 64 79 53 72 63 3b 0a 7d 0a 0a 65 6e  ....dySrc;.}..en
1b80: 75 6d 20 7b 0a 09 49 43 44 52 41 57 5f 51 55 45  um {..ICDRAW_QUE
1b90: 52 59 09 09 3d 20 30 78 30 30 30 30 30 30 30 31  RY..= 0x00000001
1ba0: 2c 0a 09 49 43 44 52 41 57 5f 46 55 4c 4c 53 43  ,..ICDRAW_FULLSC
1bb0: 52 45 45 4e 09 3d 20 30 78 30 30 30 30 30 30 30  REEN.= 0x0000000
1bc0: 32 2c 0a 09 49 43 44 52 41 57 5f 48 44 43 09 09  2,..ICDRAW_HDC..
1bd0: 09 3d 20 30 78 30 30 30 30 30 30 30 34 2c 0a 09  .= 0x00000004,..
1be0: 49 43 44 52 41 57 5f 41 4e 49 4d 41 54 45 09 09  ICDRAW_ANIMATE..
1bf0: 3d 20 30 78 30 30 30 30 30 30 30 38 2c 0a 09 49  = 0x00000008,..I
1c00: 43 44 52 41 57 5f 43 4f 4e 54 49 4e 55 45 09 09  CDRAW_CONTINUE..
1c10: 3d 20 30 78 30 30 30 30 30 30 31 30 2c 0a 09 49  = 0x00000010,..I
1c20: 43 44 52 41 57 5f 4d 45 4d 4f 52 59 44 43 09 09  CDRAW_MEMORYDC..
1c30: 3d 20 30 78 30 30 30 30 30 30 32 30 2c 0a 09 49  = 0x00000020,..I
1c40: 43 44 52 41 57 5f 55 50 44 41 54 49 4e 47 09 09  CDRAW_UPDATING..
1c50: 3d 20 30 78 30 30 30 30 30 30 34 30 2c 0a 09 49  = 0x00000040,..I
1c60: 43 44 52 41 57 5f 52 45 4e 44 45 52 09 09 3d 20  CDRAW_RENDER..= 
1c70: 30 78 30 30 30 30 30 30 38 30 2c 0a 09 49 43 44  0x00000080,..ICD
1c80: 52 41 57 5f 42 55 46 46 45 52 09 09 3d 20 30 78  RAW_BUFFER..= 0x
1c90: 30 30 30 30 30 31 30 30 2c 0a 7d 0a 0a 73 74 72  00000100,.}..str
1ca0: 75 63 74 20 49 43 44 52 41 57 42 45 47 49 4e 20  uct ICDRAWBEGIN 
1cb0: 7b 0a 09 44 57 4f 52 44 09 09 09 09 64 77 46 6c  {..DWORD....dwFl
1cc0: 61 67 73 3b 0a 09 48 50 41 4c 45 54 54 45 09 09  ags;..HPALETTE..
1cd0: 09 68 70 61 6c 3b 0a 09 48 57 4e 44 09 09 09 09  .hpal;..HWND....
1ce0: 68 77 6e 64 3b 0a 09 48 44 43 09 09 09 09 09 68  hwnd;..HDC.....h
1cf0: 64 63 3b 0a 09 69 6e 74 09 09 09 09 09 78 44 73  dc;..int.....xDs
1d00: 74 3b 0a 09 69 6e 74 09 09 09 09 09 79 44 73 74  t;..int.....yDst
1d10: 3b 0a 09 69 6e 74 09 09 09 09 09 64 78 44 73 74  ;..int.....dxDst
1d20: 3b 0a 09 69 6e 74 09 09 09 09 09 64 79 44 73 74  ;..int.....dyDst
1d30: 3b 0a 09 4c 50 42 49 54 4d 41 50 49 4e 46 4f 48  ;..LPBITMAPINFOH
1d40: 45 41 44 45 52 09 6c 70 62 69 3b 0a 09 69 6e 74  EADER.lpbi;..int
1d50: 09 09 09 09 09 78 53 72 63 3b 0a 09 69 6e 74 09  .....xSrc;..int.
1d60: 09 09 09 09 79 53 72 63 3b 0a 09 69 6e 74 09 09  ....ySrc;..int..
1d70: 09 09 09 64 78 53 72 63 3b 0a 09 69 6e 74 09 09  ...dxSrc;..int..
1d80: 09 09 09 64 79 53 72 63 3b 0a 09 44 57 4f 52 44  ...dySrc;..DWORD
1d90: 09 09 09 09 64 77 52 61 74 65 3b 0a 09 44 57 4f  ....dwRate;..DWO
1da0: 52 44 09 09 09 09 64 77 53 63 61 6c 65 3b 0a 7d  RD....dwScale;.}
1db0: 0a 0a 65 6e 75 6d 20 7b 0a 09 49 43 44 52 41 57  ..enum {..ICDRAW
1dc0: 5f 4e 4f 54 4b 45 59 46 52 41 4d 45 09 3d 20 30  _NOTKEYFRAME.= 0
1dd0: 78 30 38 30 30 30 30 30 30 2c 0a 09 49 43 44 52  x08000000,..ICDR
1de0: 41 57 5f 4e 55 4c 4c 46 52 41 4d 45 09 3d 20 30  AW_NULLFRAME.= 0
1df0: 78 31 30 30 30 30 30 30 30 2c 0a 09 49 43 44 52  x10000000,..ICDR
1e00: 41 57 5f 50 52 45 52 4f 4c 4c 09 09 3d 20 30 78  AW_PREROLL..= 0x
1e10: 32 30 30 30 30 30 30 30 2c 0a 09 49 43 44 52 41  20000000,..ICDRA
1e20: 57 5f 55 50 44 41 54 45 09 09 3d 20 30 78 34 30  W_UPDATE..= 0x40
1e30: 30 30 30 30 30 30 2c 0a 09 49 43 44 52 41 57 5f  000000,..ICDRAW_
1e40: 48 55 52 52 59 55 50 09 09 3d 20 30 78 38 30 30  HURRYUP..= 0x800
1e50: 30 30 30 30 30 2c 0a 7d 0a 0a 73 74 72 75 63 74  00000,.}..struct
1e60: 20 49 43 44 52 41 57 20 7b 0a 09 44 57 4f 52 44   ICDRAW {..DWORD
1e70: 09 09 09 64 77 46 6c 61 67 73 3b 0a 09 4c 50 56  ...dwFlags;..LPV
1e80: 4f 49 44 09 09 09 6c 70 46 6f 72 6d 61 74 3b 0a  OID...lpFormat;.
1e90: 09 4c 50 56 4f 49 44 09 09 09 6c 70 44 61 74 61  .LPVOID...lpData
1ea0: 3b 0a 09 44 57 4f 52 44 09 09 09 63 62 44 61 74  ;..DWORD...cbDat
1eb0: 61 3b 0a 09 4c 4f 4e 47 09 09 09 6c 54 69 6d 65  a;..LONG...lTime
1ec0: 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 49 43 44 52  ;.}..struct ICDR
1ed0: 41 57 53 55 47 47 45 53 54 20 7b 0a 09 4c 50 42  AWSUGGEST {..LPB
1ee0: 49 54 4d 41 50 49 4e 46 4f 48 45 41 44 45 52 09  ITMAPINFOHEADER.
1ef0: 6c 70 62 69 49 6e 3b 0a 09 4c 50 42 49 54 4d 41  lpbiIn;..LPBITMA
1f00: 50 49 4e 46 4f 48 45 41 44 45 52 09 6c 70 62 69  PINFOHEADER.lpbi
1f10: 53 75 67 67 65 73 74 3b 0a 09 69 6e 74 09 09 09  Suggest;..int...
1f20: 09 09 64 78 53 72 63 3b 0a 09 69 6e 74 09 09 09  ..dxSrc;..int...
1f30: 09 09 64 79 53 72 63 3b 0a 09 69 6e 74 09 09 09  ..dySrc;..int...
1f40: 09 09 64 78 44 73 74 3b 0a 09 69 6e 74 09 09 09  ..dxDst;..int...
1f50: 09 09 64 79 44 73 74 3b 0a 09 48 49 43 09 09 09  ..dyDst;..HIC...
1f60: 09 09 68 69 63 44 65 63 6f 6d 70 72 65 73 73 6f  ..hicDecompresso
1f70: 72 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 49 43 50  r;.}..struct ICP
1f80: 41 4c 45 54 54 45 20 7b 0a 09 44 57 4f 52 44 09  ALETTE {..DWORD.
1f90: 09 09 64 77 46 6c 61 67 73 3b 0a 09 69 6e 74 09  ..dwFlags;..int.
1fa0: 09 09 09 69 53 74 61 72 74 3b 0a 09 69 6e 74 09  ...iStart;..int.
1fb0: 09 09 09 69 4c 65 6e 3b 0a 09 4c 50 50 41 4c 45  ...iLen;..LPPALE
1fc0: 54 54 45 45 4e 54 52 59 09 6c 70 70 65 3b 0a 7d  TTEENTRY.lppe;.}
1fd0: 0a 0a 0a 2f 2a 2a 0a 20 2a 20 49 43 4d 20 66 75  .../**. * ICM fu
1fe0: 6e 63 74 69 6f 6e 20 64 65 63 6c 61 72 61 74 69  nction declarati
1ff0: 6f 6e 73 0a 20 2a 2f 0a 0a 65 78 74 65 72 6e 20  ons. */..extern 
2000: 28 57 69 6e 64 6f 77 73 29 20 7b 0a 09 42 4f 4f  (Windows) {..BOO
2010: 4c 20 49 43 49 6e 66 6f 28 44 57 4f 52 44 20 66  L ICInfo(DWORD f
2020: 63 63 54 79 70 65 2c 20 44 57 4f 52 44 20 66 63  ccType, DWORD fc
2030: 63 48 61 6e 64 6c 65 72 2c 20 49 43 49 4e 46 4f  cHandler, ICINFO
2040: 20 2a 6c 70 69 63 69 6e 66 6f 29 3b 0a 09 42 4f   *lpicinfo);..BO
2050: 4f 4c 20 49 43 49 6e 73 74 61 6c 6c 28 44 57 4f  OL ICInstall(DWO
2060: 52 44 20 66 63 63 54 79 70 65 2c 20 44 57 4f 52  RD fccType, DWOR
2070: 44 20 66 63 63 48 61 6e 64 6c 65 72 2c 20 4c 50  D fccHandler, LP
2080: 41 52 41 4d 20 6c 50 61 72 61 6d 2c 20 4c 50 53  ARAM lParam, LPS
2090: 54 52 20 73 7a 44 65 73 63 2c 20 55 49 4e 54 20  TR szDesc, UINT 
20a0: 77 46 6c 61 67 73 29 3b 0a 09 42 4f 4f 4c 20 49  wFlags);..BOOL I
20b0: 43 52 65 6d 6f 76 65 28 44 57 4f 52 44 20 66 63  CRemove(DWORD fc
20c0: 63 54 79 70 65 2c 20 44 57 4f 52 44 20 66 63 63  cType, DWORD fcc
20d0: 48 61 6e 64 6c 65 72 2c 20 55 49 4e 54 20 77 46  Handler, UINT wF
20e0: 6c 61 67 73 29 3b 0a 09 4c 52 45 53 55 4c 54 20  lags);..LRESULT 
20f0: 49 43 47 65 74 49 6e 66 6f 28 48 49 43 20 68 69  ICGetInfo(HIC hi
2100: 63 2c 20 49 43 49 4e 46 4f 20 2a 70 69 63 69 6e  c, ICINFO *picin
2110: 66 6f 2c 20 44 57 4f 52 44 20 63 62 29 3b 0a 09  fo, DWORD cb);..
2120: 48 49 43 20 49 43 4f 70 65 6e 28 44 57 4f 52 44  HIC ICOpen(DWORD
2130: 20 66 63 63 54 79 70 65 2c 20 44 57 4f 52 44 20   fccType, DWORD 
2140: 66 63 63 48 61 6e 64 6c 65 72 2c 20 55 49 4e 54  fccHandler, UINT
2150: 20 77 4d 6f 64 65 29 3b 0a 09 48 49 43 20 49 43   wMode);..HIC IC
2160: 4f 70 65 6e 46 75 6e 63 74 69 6f 6e 28 44 57 4f  OpenFunction(DWO
2170: 52 44 20 66 63 63 54 79 70 65 2c 20 44 57 4f 52  RD fccType, DWOR
2180: 44 20 66 63 63 48 61 6e 64 6c 65 72 2c 20 55 49  D fccHandler, UI
2190: 4e 54 20 77 4d 6f 64 65 2c 20 46 41 52 50 52 4f  NT wMode, FARPRO
21a0: 43 20 6c 70 66 6e 48 61 6e 64 6c 65 72 29 3b 0a  C lpfnHandler);.
21b0: 09 4c 52 45 53 55 4c 54 20 49 43 43 6c 6f 73 65  .LRESULT ICClose
21c0: 28 48 49 43 20 68 69 63 29 3b 0a 09 4c 52 45 53  (HIC hic);..LRES
21d0: 55 4c 54 20 49 43 53 65 6e 64 4d 65 73 73 61 67  ULT ICSendMessag
21e0: 65 28 48 49 43 20 68 69 63 2c 20 55 49 4e 54 20  e(HIC hic, UINT 
21f0: 6d 73 67 2c 20 44 57 4f 52 44 5f 50 54 52 20 64  msg, DWORD_PTR d
2200: 77 31 2c 20 44 57 4f 52 44 5f 50 54 52 20 64 77  w1, DWORD_PTR dw
2210: 32 29 3b 0a 7d 0a 0a 65 6e 75 6d 20 7b 0a 09 49  2);.}..enum {..I
2220: 43 49 4e 53 54 41 4c 4c 5f 46 55 4e 43 54 49 4f  CINSTALL_FUNCTIO
2230: 4e 09 3d 20 30 78 30 30 30 31 2c 0a 09 49 43 49  N.= 0x0001,..ICI
2240: 4e 53 54 41 4c 4c 5f 44 52 49 56 45 52 09 3d 20  NSTALL_DRIVER.= 
2250: 30 78 30 30 30 32 2c 0a 09 49 43 49 4e 53 54 41  0x0002,..ICINSTA
2260: 4c 4c 5f 48 44 52 56 09 09 3d 20 30 78 30 30 30  LL_HDRV..= 0x000
2270: 34 2c 0a 09 49 43 49 4e 53 54 41 4c 4c 5f 55 4e  4,..ICINSTALL_UN
2280: 49 43 4f 44 45 09 3d 20 30 78 38 30 30 30 2c 0a  ICODE.= 0x8000,.
2290: 09 49 43 49 4e 53 54 41 4c 4c 5f 44 52 49 56 45  .ICINSTALL_DRIVE
22a0: 52 57 09 3d 20 30 78 38 30 30 32 2c 0a 7d 0a 0a  RW.= 0x8002,.}..
22b0: 2f 2f 20 71 75 65 72 79 20 6d 61 63 72 6f 73 0a  // query macros.
22c0: 0a 63 6f 6e 73 74 20 49 43 4d 46 5f 43 4f 4e 46  .const ICMF_CONF
22d0: 49 47 55 52 45 5f 51 55 45 52 59 09 3d 20 30 78  IGURE_QUERY.= 0x
22e0: 30 30 30 30 30 30 30 31 3b 0a 63 6f 6e 73 74 20  00000001;.const 
22f0: 49 43 4d 46 5f 41 42 4f 55 54 5f 51 55 45 52 59  ICMF_ABOUT_QUERY
2300: 09 09 3d 20 30 78 30 30 30 30 30 30 30 31 3b 0a  ..= 0x00000001;.
2310: 0a 44 57 4f 52 44 20 49 43 51 75 65 72 79 41 62  .DWORD ICQueryAb
2320: 6f 75 74 28 48 49 43 20 68 69 63 29 20 7b 0a 09  out(HIC hic) {..
2330: 72 65 74 75 72 6e 20 49 43 53 65 6e 64 4d 65 73  return ICSendMes
2340: 73 61 67 65 28 68 69 63 2c 20 49 43 4d 5f 41 42  sage(hic, ICM_AB
2350: 4f 55 54 2c 20 2d 31 2c 20 49 43 4d 46 5f 41 42  OUT, -1, ICMF_AB
2360: 4f 55 54 5f 51 55 45 52 59 29 20 3d 3d 20 49 43  OUT_QUERY) == IC
2370: 45 52 52 5f 4f 4b 3b 0a 7d 0a 0a 44 57 4f 52 44  ERR_OK;.}..DWORD
2380: 20 49 43 41 62 6f 75 74 28 48 49 43 20 68 69 63   ICAbout(HIC hic
2390: 2c 20 48 57 4e 44 20 68 77 6e 64 29 20 7b 0a 09  , HWND hwnd) {..
23a0: 72 65 74 75 72 6e 20 49 43 53 65 6e 64 4d 65 73  return ICSendMes
23b0: 73 61 67 65 28 68 69 63 2c 20 49 43 4d 5f 41 42  sage(hic, ICM_AB
23c0: 4f 55 54 2c 20 63 61 73 74 28 55 49 4e 54 29 68  OUT, cast(UINT)h
23d0: 77 6e 64 2c 20 30 29 3b 0a 7d 0a 0a 44 57 4f 52  wnd, 0);.}..DWOR
23e0: 44 20 49 43 51 75 65 72 79 43 6f 6e 66 69 67 75  D ICQueryConfigu
23f0: 72 65 28 48 49 43 20 68 69 63 29 20 7b 0a 09 72  re(HIC hic) {..r
2400: 65 74 75 72 6e 20 28 49 43 53 65 6e 64 4d 65 73  eturn (ICSendMes
2410: 73 61 67 65 28 68 69 63 2c 20 49 43 4d 5f 43 4f  sage(hic, ICM_CO
2420: 4e 46 49 47 55 52 45 2c 20 2d 31 2c 20 49 43 4d  NFIGURE, -1, ICM
2430: 46 5f 43 4f 4e 46 49 47 55 52 45 5f 51 55 45 52  F_CONFIGURE_QUER
2440: 59 29 20 3d 3d 20 49 43 45 52 52 5f 4f 4b 29 3b  Y) == ICERR_OK);
2450: 0a 7d 0a 0a 44 57 4f 52 44 20 49 43 43 6f 6e 66  .}..DWORD ICConf
2460: 69 67 75 72 65 28 48 49 43 20 68 69 63 2c 20 48  igure(HIC hic, H
2470: 57 4e 44 20 68 77 6e 64 29 20 7b 0a 09 72 65 74  WND hwnd) {..ret
2480: 75 72 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67  urn ICSendMessag
2490: 65 28 68 69 63 2c 20 49 43 4d 5f 43 4f 4e 46 49  e(hic, ICM_CONFI
24a0: 47 55 52 45 2c 20 63 61 73 74 28 55 49 4e 54 29  GURE, cast(UINT)
24b0: 68 77 6e 64 2c 20 30 29 3b 0a 7d 0a 0a 44 57 4f  hwnd, 0);.}..DWO
24c0: 52 44 20 49 43 47 65 74 53 74 61 74 65 28 48 49  RD ICGetState(HI
24d0: 43 20 68 69 63 2c 20 4c 50 56 4f 49 44 20 70 76  C hic, LPVOID pv
24e0: 2c 20 44 57 4f 52 44 5f 50 54 52 20 63 62 29 20  , DWORD_PTR cb) 
24f0: 7b 0a 09 72 65 74 75 72 6e 20 49 43 53 65 6e 64  {..return ICSend
2500: 4d 65 73 73 61 67 65 28 68 69 63 2c 20 49 43 4d  Message(hic, ICM
2510: 5f 47 45 54 53 54 41 54 45 2c 20 63 61 73 74 28  _GETSTATE, cast(
2520: 44 57 4f 52 44 29 70 76 2c 20 63 61 73 74 28 44  DWORD)pv, cast(D
2530: 57 4f 52 44 29 63 62 29 3b 0a 7d 0a 0a 44 57 4f  WORD)cb);.}..DWO
2540: 52 44 20 49 43 53 65 74 53 74 61 74 65 28 48 49  RD ICSetState(HI
2550: 43 20 68 69 63 2c 20 4c 50 56 4f 49 44 20 70 76  C hic, LPVOID pv
2560: 2c 20 44 57 4f 52 44 5f 50 54 52 20 63 62 29 20  , DWORD_PTR cb) 
2570: 7b 0a 09 72 65 74 75 72 6e 20 49 43 53 65 6e 64  {..return ICSend
2580: 4d 65 73 73 61 67 65 28 68 69 63 2c 20 49 43 4d  Message(hic, ICM
2590: 5f 53 45 54 53 54 41 54 45 2c 20 63 61 73 74 28  _SETSTATE, cast(
25a0: 44 57 4f 52 44 29 70 76 2c 20 63 61 73 74 28 44  DWORD)pv, cast(D
25b0: 57 4f 52 44 29 63 62 29 3b 0a 7d 0a 0a 44 57 4f  WORD)cb);.}..DWO
25c0: 52 44 20 49 43 47 65 74 53 74 61 74 65 53 69 7a  RD ICGetStateSiz
25d0: 65 28 48 49 43 20 68 69 63 29 20 7b 0a 09 72 65  e(HIC hic) {..re
25e0: 74 75 72 6e 20 49 43 47 65 74 53 74 61 74 65 28  turn ICGetState(
25f0: 68 69 63 2c 20 6e 75 6c 6c 2c 20 30 29 3b 0a 7d  hic, null, 0);.}
2600: 0a 0a 44 57 4f 52 44 20 64 77 49 43 56 61 6c 75  ..DWORD dwICValu
2610: 65 3b 0a 0a 44 57 4f 52 44 20 49 43 47 65 74 44  e;..DWORD ICGetD
2620: 65 66 61 75 6c 74 51 75 61 6c 69 74 79 28 48 49  efaultQuality(HI
2630: 43 20 68 69 63 29 20 7b 0a 09 49 43 53 65 6e 64  C hic) {..ICSend
2640: 4d 65 73 73 61 67 65 28 68 69 63 2c 20 49 43 4d  Message(hic, ICM
2650: 5f 47 45 54 44 45 46 41 55 4c 54 51 55 41 4c 49  _GETDEFAULTQUALI
2660: 54 59 2c 20 63 61 73 74 28 44 57 4f 52 44 5f 50  TY, cast(DWORD_P
2670: 54 52 29 26 64 77 49 43 56 61 6c 75 65 2c 20 44  TR)&dwICValue, D
2680: 57 4f 52 44 2e 73 69 7a 65 6f 66 29 3b 0a 09 72  WORD.sizeof);..r
2690: 65 74 75 72 6e 20 64 77 49 43 56 61 6c 75 65 3b  eturn dwICValue;
26a0: 0a 7d 0a 0a 44 57 4f 52 44 20 49 43 47 65 74 44  .}..DWORD ICGetD
26b0: 65 66 61 75 6c 74 4b 65 79 46 72 61 6d 65 52 61  efaultKeyFrameRa
26c0: 74 65 28 48 49 43 20 68 69 63 29 20 7b 0a 09 49  te(HIC hic) {..I
26d0: 43 53 65 6e 64 4d 65 73 73 61 67 65 28 68 69 63  CSendMessage(hic
26e0: 2c 20 49 43 4d 5f 47 45 54 44 45 46 41 55 4c 54  , ICM_GETDEFAULT
26f0: 4b 45 59 46 52 41 4d 45 52 41 54 45 2c 20 63 61  KEYFRAMERATE, ca
2700: 73 74 28 44 57 4f 52 44 5f 50 54 52 29 26 64 77  st(DWORD_PTR)&dw
2710: 49 43 56 61 6c 75 65 2c 20 44 57 4f 52 44 2e 73  ICValue, DWORD.s
2720: 69 7a 65 6f 66 29 3b 0a 09 72 65 74 75 72 6e 20  izeof);..return 
2730: 64 77 49 43 56 61 6c 75 65 3b 0a 7d 0a 0a 44 57  dwICValue;.}..DW
2740: 4f 52 44 20 49 43 44 72 61 77 57 69 6e 64 6f 77  ORD ICDrawWindow
2750: 28 48 49 43 20 68 69 63 2c 20 4c 50 56 4f 49 44  (HIC hic, LPVOID
2760: 20 70 72 63 29 20 7b 0a 09 72 65 74 75 72 6e 20   prc) {..return 
2770: 49 43 53 65 6e 64 4d 65 73 73 61 67 65 28 68 69  ICSendMessage(hi
2780: 63 2c 20 49 43 4d 5f 44 52 41 57 5f 57 49 4e 44  c, ICM_DRAW_WIND
2790: 4f 57 2c 20 63 61 73 74 28 44 57 4f 52 44 29 70  OW, cast(DWORD)p
27a0: 72 63 2c 20 52 45 43 54 2e 73 69 7a 65 6f 66 29  rc, RECT.sizeof)
27b0: 3b 0a 7d 0a 0a 65 78 74 65 72 6e 20 28 57 69 6e  ;.}..extern (Win
27c0: 64 6f 77 73 29 20 7b 0a 09 44 57 4f 52 44 20 49  dows) {..DWORD I
27d0: 43 43 6f 6d 70 72 65 73 73 28 48 49 43 20 68 69  CCompress(HIC hi
27e0: 63 2c 20 44 57 4f 52 44 20 64 77 46 6c 61 67 73  c, DWORD dwFlags
27f0: 2c 20 4c 50 42 49 54 4d 41 50 49 4e 46 4f 48 45  , LPBITMAPINFOHE
2800: 41 44 45 52 20 6c 70 62 69 4f 75 74 70 75 74 2c  ADER lpbiOutput,
2810: 20 4c 50 56 4f 49 44 20 6c 70 44 61 74 61 2c 0a   LPVOID lpData,.
2820: 09 09 4c 50 42 49 54 4d 41 50 49 4e 46 4f 48 45  ..LPBITMAPINFOHE
2830: 41 44 45 52 20 6c 70 62 69 49 6e 70 75 74 2c 20  ADER lpbiInput, 
2840: 4c 50 56 4f 49 44 20 6c 70 42 69 74 73 2c 20 4c  LPVOID lpBits, L
2850: 50 44 57 4f 52 44 20 6c 70 63 6b 69 64 2c 20 4c  PDWORD lpckid, L
2860: 50 44 57 4f 52 44 20 6c 70 64 77 46 6c 61 67 73  PDWORD lpdwFlags
2870: 2c 0a 09 09 4c 4f 4e 47 20 6c 46 72 61 6d 65 4e  ,...LONG lFrameN
2880: 75 6d 2c 20 44 57 4f 52 44 20 64 77 46 72 61 6d  um, DWORD dwFram
2890: 65 53 69 7a 65 2c 20 44 57 4f 52 44 20 64 77 51  eSize, DWORD dwQ
28a0: 75 61 6c 69 74 79 2c 20 4c 50 42 49 54 4d 41 50  uality, LPBITMAP
28b0: 49 4e 46 4f 48 45 41 44 45 52 20 6c 70 62 69 50  INFOHEADER lpbiP
28c0: 72 65 76 2c 20 4c 50 56 4f 49 44 20 6c 70 50 72  rev, LPVOID lpPr
28d0: 65 76 29 3b 0a 7d 0a 0a 4c 52 45 53 55 4c 54 20  ev);.}..LRESULT 
28e0: 49 43 43 6f 6d 70 72 65 73 73 42 65 67 69 6e 28  ICCompressBegin(
28f0: 48 49 43 20 68 69 63 2c 20 4c 50 56 4f 49 44 20  HIC hic, LPVOID 
2900: 6c 70 62 69 49 6e 70 75 74 2c 20 4c 50 56 4f 49  lpbiInput, LPVOI
2910: 44 20 6c 70 62 69 4f 75 74 70 75 74 29 20 7b 0a  D lpbiOutput) {.
2920: 09 72 65 74 75 72 6e 20 49 43 53 65 6e 64 4d 65  .return ICSendMe
2930: 73 73 61 67 65 28 68 69 63 2c 20 49 43 4d 5f 43  ssage(hic, ICM_C
2940: 4f 4d 50 52 45 53 53 5f 42 45 47 49 4e 2c 20 63  OMPRESS_BEGIN, c
2950: 61 73 74 28 44 57 4f 52 44 5f 50 54 52 29 6c 70  ast(DWORD_PTR)lp
2960: 62 69 49 6e 70 75 74 2c 20 63 61 73 74 28 44 57  biInput, cast(DW
2970: 4f 52 44 5f 50 54 52 29 6c 70 62 69 4f 75 74 70  ORD_PTR)lpbiOutp
2980: 75 74 29 3b 0a 7d 0a 4c 52 45 53 55 4c 54 20 49  ut);.}.LRESULT I
2990: 43 43 6f 6d 70 72 65 73 73 51 75 65 72 79 28 48  CCompressQuery(H
29a0: 49 43 20 68 69 63 2c 20 4c 50 56 4f 49 44 20 6c  IC hic, LPVOID l
29b0: 70 62 69 49 6e 70 75 74 2c 20 4c 50 56 4f 49 44  pbiInput, LPVOID
29c0: 20 6c 70 62 69 4f 75 74 70 75 74 29 20 7b 0a 09   lpbiOutput) {..
29d0: 72 65 74 75 72 6e 20 49 43 53 65 6e 64 4d 65 73  return ICSendMes
29e0: 73 61 67 65 28 68 69 63 2c 20 49 43 4d 5f 43 4f  sage(hic, ICM_CO
29f0: 4d 50 52 45 53 53 5f 51 55 45 52 59 2c 20 63 61  MPRESS_QUERY, ca
2a00: 73 74 28 44 57 4f 52 44 5f 50 54 52 29 6c 70 62  st(DWORD_PTR)lpb
2a10: 69 49 6e 70 75 74 2c 20 63 61 73 74 28 44 57 4f  iInput, cast(DWO
2a20: 52 44 5f 50 54 52 29 6c 70 62 69 4f 75 74 70 75  RD_PTR)lpbiOutpu
2a30: 74 29 3b 0a 7d 0a 4c 52 45 53 55 4c 54 20 49 43  t);.}.LRESULT IC
2a40: 43 6f 6d 70 72 65 73 73 47 65 74 46 6f 72 6d 61  CompressGetForma
2a50: 74 28 48 49 43 20 68 69 63 2c 20 4c 50 56 4f 49  t(HIC hic, LPVOI
2a60: 44 20 6c 70 62 69 49 6e 70 75 74 2c 20 4c 50 56  D lpbiInput, LPV
2a70: 4f 49 44 20 6c 70 62 69 4f 75 74 70 75 74 29 20  OID lpbiOutput) 
2a80: 7b 0a 09 72 65 74 75 72 6e 20 49 43 53 65 6e 64  {..return ICSend
2a90: 4d 65 73 73 61 67 65 28 68 69 63 2c 20 49 43 4d  Message(hic, ICM
2aa0: 5f 43 4f 4d 50 52 45 53 53 5f 47 45 54 5f 46 4f  _COMPRESS_GET_FO
2ab0: 52 4d 41 54 2c 20 63 61 73 74 28 44 57 4f 52 44  RMAT, cast(DWORD
2ac0: 5f 50 54 52 29 6c 70 62 69 49 6e 70 75 74 2c 20  _PTR)lpbiInput, 
2ad0: 63 61 73 74 28 44 57 4f 52 44 5f 50 54 52 29 6c  cast(DWORD_PTR)l
2ae0: 70 62 69 4f 75 74 70 75 74 29 3b 0a 7d 0a 44 57  pbiOutput);.}.DW
2af0: 4f 52 44 20 49 43 43 6f 6d 70 72 65 73 73 47 65  ORD ICCompressGe
2b00: 74 46 6f 72 6d 61 74 53 69 7a 65 28 48 49 43 20  tFormatSize(HIC 
2b10: 68 69 63 2c 20 4c 50 56 4f 49 44 20 6c 70 62 69  hic, LPVOID lpbi
2b20: 29 20 7b 0a 09 72 65 74 75 72 6e 20 63 61 73 74  ) {..return cast
2b30: 28 44 57 4f 52 44 29 49 43 43 6f 6d 70 72 65 73  (DWORD)ICCompres
2b40: 73 47 65 74 46 6f 72 6d 61 74 28 68 69 63 2c 20  sGetFormat(hic, 
2b50: 6c 70 62 69 2c 20 6e 75 6c 6c 29 3b 0a 7d 0a 44  lpbi, null);.}.D
2b60: 57 4f 52 44 20 49 43 43 6f 6d 70 72 65 73 73 47  WORD ICCompressG
2b70: 65 74 53 69 7a 65 28 48 49 43 20 68 69 63 2c 20  etSize(HIC hic, 
2b80: 4c 50 56 4f 49 44 20 6c 70 62 69 49 6e 70 75 74  LPVOID lpbiInput
2b90: 2c 20 4c 50 56 4f 49 44 20 6c 70 62 69 4f 75 74  , LPVOID lpbiOut
2ba0: 70 75 74 29 20 7b 0a 09 72 65 74 75 72 6e 20 63  put) {..return c
2bb0: 61 73 74 28 44 57 4f 52 44 29 49 43 53 65 6e 64  ast(DWORD)ICSend
2bc0: 4d 65 73 73 61 67 65 28 68 69 63 2c 20 49 43 4d  Message(hic, ICM
2bd0: 5f 43 4f 4d 50 52 45 53 53 5f 47 45 54 5f 53 49  _COMPRESS_GET_SI
2be0: 5a 45 2c 20 63 61 73 74 28 44 57 4f 52 44 5f 50  ZE, cast(DWORD_P
2bf0: 54 52 29 6c 70 62 69 49 6e 70 75 74 2c 20 63 61  TR)lpbiInput, ca
2c00: 73 74 28 44 57 4f 52 44 5f 50 54 52 29 6c 70 62  st(DWORD_PTR)lpb
2c10: 69 4f 75 74 70 75 74 29 3b 0a 7d 0a 4c 52 45 53  iOutput);.}.LRES
2c20: 55 4c 54 20 49 43 43 6f 6d 70 72 65 73 73 45 6e  ULT ICCompressEn
2c30: 64 28 48 49 43 20 68 69 63 29 20 7b 0a 09 72 65  d(HIC hic) {..re
2c40: 74 75 72 6e 20 49 43 53 65 6e 64 4d 65 73 73 61  turn ICSendMessa
2c50: 67 65 28 68 69 63 2c 20 49 43 4d 5f 43 4f 4d 50  ge(hic, ICM_COMP
2c60: 52 45 53 53 5f 45 4e 44 2c 20 30 2c 20 30 29 3b  RESS_END, 0, 0);
2c70: 0a 7d 0a 0a 65 78 74 65 72 6e 20 28 57 69 6e 64  .}..extern (Wind
2c80: 6f 77 73 29 20 7b 0a 09 44 57 4f 52 44 20 49 43  ows) {..DWORD IC
2c90: 44 65 63 6f 6d 70 72 65 73 73 28 48 49 43 20 68  Decompress(HIC h
2ca0: 69 63 2c 20 44 57 4f 52 44 20 64 77 46 6c 61 67  ic, DWORD dwFlag
2cb0: 73 2c 20 4c 50 42 49 54 4d 41 50 49 4e 46 4f 48  s, LPBITMAPINFOH
2cc0: 45 41 44 45 52 20 6c 70 62 69 46 6f 72 6d 61 74  EADER lpbiFormat
2cd0: 2c 20 4c 50 56 4f 49 44 20 6c 70 44 61 74 61 2c  , LPVOID lpData,
2ce0: 20 4c 50 42 49 54 4d 41 50 49 4e 46 4f 48 45 41   LPBITMAPINFOHEA
2cf0: 44 45 52 20 6c 70 62 69 2c 20 4c 50 56 4f 49 44  DER lpbi, LPVOID
2d00: 20 6c 70 42 69 74 73 29 3b 0a 7d 0a 0a 4c 52 45   lpBits);.}..LRE
2d10: 53 55 4c 54 20 49 43 44 65 63 6f 6d 70 72 65 73  SULT ICDecompres
2d20: 73 42 65 67 69 6e 28 48 49 43 20 68 69 63 2c 20  sBegin(HIC hic, 
2d30: 4c 50 56 4f 49 44 20 6c 70 62 69 49 6e 70 75 74  LPVOID lpbiInput
2d40: 2c 20 4c 50 56 4f 49 44 20 6c 70 62 69 4f 75 74  , LPVOID lpbiOut
2d50: 70 75 74 29 20 7b 0a 09 72 65 74 75 72 6e 20 49  put) {..return I
2d60: 43 53 65 6e 64 4d 65 73 73 61 67 65 28 68 69 63  CSendMessage(hic
2d70: 2c 20 49 43 4d 5f 44 45 43 4f 4d 50 52 45 53 53  , ICM_DECOMPRESS
2d80: 5f 42 45 47 49 4e 2c 20 63 61 73 74 28 44 57 4f  _BEGIN, cast(DWO
2d90: 52 44 5f 50 54 52 29 6c 70 62 69 49 6e 70 75 74  RD_PTR)lpbiInput
2da0: 2c 20 63 61 73 74 28 44 57 4f 52 44 5f 50 54 52  , cast(DWORD_PTR
2db0: 29 6c 70 62 69 4f 75 74 70 75 74 29 3b 0a 7d 0a  )lpbiOutput);.}.
2dc0: 4c 52 45 53 55 4c 54 20 49 43 44 65 63 6f 6d 70  LRESULT ICDecomp
2dd0: 72 65 73 73 51 75 65 72 79 28 48 49 43 20 68 69  ressQuery(HIC hi
2de0: 63 2c 20 4c 50 56 4f 49 44 20 6c 70 62 69 49 6e  c, LPVOID lpbiIn
2df0: 70 75 74 2c 20 4c 50 56 4f 49 44 20 6c 70 62 69  put, LPVOID lpbi
2e00: 4f 75 74 70 75 74 29 20 7b 0a 09 72 65 74 75 72  Output) {..retur
2e10: 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67 65 28  n ICSendMessage(
2e20: 68 69 63 2c 20 49 43 4d 5f 44 45 43 4f 4d 50 52  hic, ICM_DECOMPR
2e30: 45 53 53 5f 51 55 45 52 59 2c 20 63 61 73 74 28  ESS_QUERY, cast(
2e40: 44 57 4f 52 44 5f 50 54 52 29 6c 70 62 69 49 6e  DWORD_PTR)lpbiIn
2e50: 70 75 74 2c 20 63 61 73 74 28 44 57 4f 52 44 5f  put, cast(DWORD_
2e60: 50 54 52 29 6c 70 62 69 4f 75 74 70 75 74 29 3b  PTR)lpbiOutput);
2e70: 0a 7d 0a 4c 4f 4e 47 20 49 43 44 65 63 6f 6d 70  .}.LONG ICDecomp
2e80: 72 65 73 73 47 65 74 46 6f 72 6d 61 74 28 48 49  ressGetFormat(HI
2e90: 43 20 68 69 63 2c 20 4c 50 56 4f 49 44 20 6c 70  C hic, LPVOID lp
2ea0: 62 69 49 6e 70 75 74 2c 20 4c 50 56 4f 49 44 20  biInput, LPVOID 
2eb0: 6c 70 62 69 4f 75 74 70 75 74 29 20 7b 0a 09 72  lpbiOutput) {..r
2ec0: 65 74 75 72 6e 20 63 61 73 74 28 4c 4f 4e 47 29  eturn cast(LONG)
2ed0: 49 43 53 65 6e 64 4d 65 73 73 61 67 65 28 68 69  ICSendMessage(hi
2ee0: 63 2c 20 49 43 4d 5f 44 45 43 4f 4d 50 52 45 53  c, ICM_DECOMPRES
2ef0: 53 5f 47 45 54 5f 46 4f 52 4d 41 54 2c 20 63 61  S_GET_FORMAT, ca
2f00: 73 74 28 44 57 4f 52 44 5f 50 54 52 29 6c 70 62  st(DWORD_PTR)lpb
2f10: 69 49 6e 70 75 74 2c 20 63 61 73 74 28 44 57 4f  iInput, cast(DWO
2f20: 52 44 5f 50 54 52 29 6c 70 62 69 4f 75 74 70 75  RD_PTR)lpbiOutpu
2f30: 74 29 3b 0a 7d 0a 4c 4f 4e 47 20 49 43 44 65 63  t);.}.LONG ICDec
2f40: 6f 6d 70 72 65 73 73 47 65 74 46 6f 72 6d 61 74  ompressGetFormat
2f50: 53 69 7a 65 28 48 49 43 20 68 69 63 2c 20 4c 50  Size(HIC hic, LP
2f60: 56 4f 49 44 20 6c 70 62 69 29 20 7b 0a 09 72 65  VOID lpbi) {..re
2f70: 74 75 72 6e 20 49 43 44 65 63 6f 6d 70 72 65 73  turn ICDecompres
2f80: 73 47 65 74 46 6f 72 6d 61 74 28 68 69 63 2c 20  sGetFormat(hic, 
2f90: 6c 70 62 69 2c 20 6e 75 6c 6c 29 3b 0a 7d 0a 4c  lpbi, null);.}.L
2fa0: 52 45 53 55 4c 54 20 49 43 44 65 63 6f 6d 70 72  RESULT ICDecompr
2fb0: 65 73 73 47 65 74 50 61 6c 65 74 74 65 28 48 49  essGetPalette(HI
2fc0: 43 20 68 69 63 2c 20 4c 50 56 4f 49 44 20 6c 70  C hic, LPVOID lp
2fd0: 62 69 49 6e 70 75 74 2c 20 4c 50 56 4f 49 44 20  biInput, LPVOID 
2fe0: 6c 70 62 69 4f 75 74 70 75 74 29 20 7b 0a 09 72  lpbiOutput) {..r
2ff0: 65 74 75 72 6e 20 49 43 53 65 6e 64 4d 65 73 73  eturn ICSendMess
3000: 61 67 65 28 68 69 63 2c 20 49 43 4d 5f 44 45 43  age(hic, ICM_DEC
3010: 4f 4d 50 52 45 53 53 5f 47 45 54 5f 50 41 4c 45  OMPRESS_GET_PALE
3020: 54 54 45 2c 20 63 61 73 74 28 44 57 4f 52 44 5f  TTE, cast(DWORD_
3030: 50 54 52 29 6c 70 62 69 49 6e 70 75 74 2c 20 63  PTR)lpbiInput, c
3040: 61 73 74 28 44 57 4f 52 44 5f 50 54 52 29 6c 70  ast(DWORD_PTR)lp
3050: 62 69 4f 75 74 70 75 74 29 3b 0a 7d 0a 4c 52 45  biOutput);.}.LRE
3060: 53 55 4c 54 20 49 43 44 65 63 6f 6d 70 72 65 73  SULT ICDecompres
3070: 73 53 65 74 50 61 6c 65 74 74 65 28 48 49 43 20  sSetPalette(HIC 
3080: 68 69 63 2c 20 4c 50 56 4f 49 44 20 6c 70 62 69  hic, LPVOID lpbi
3090: 50 61 6c 65 74 74 65 29 20 7b 0a 09 72 65 74 75  Palette) {..retu
30a0: 72 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67 65  rn ICSendMessage
30b0: 28 68 69 63 2c 20 49 43 4d 5f 44 45 43 4f 4d 50  (hic, ICM_DECOMP
30c0: 52 45 53 53 5f 53 45 54 5f 50 41 4c 45 54 54 45  RESS_SET_PALETTE
30d0: 2c 20 63 61 73 74 28 44 57 4f 52 44 5f 50 54 52  , cast(DWORD_PTR
30e0: 29 6c 70 62 69 50 61 6c 65 74 74 65 2c 20 30 29  )lpbiPalette, 0)
30f0: 3b 0a 7d 0a 4c 52 45 53 55 4c 54 20 49 43 44 65  ;.}.LRESULT ICDe
3100: 63 6f 6d 70 72 65 73 73 45 6e 64 28 48 49 43 20  compressEnd(HIC 
3110: 68 69 63 29 20 7b 0a 09 72 65 74 75 72 6e 20 49  hic) {..return I
3120: 43 53 65 6e 64 4d 65 73 73 61 67 65 28 68 69 63  CSendMessage(hic
3130: 2c 20 49 43 4d 5f 44 45 43 4f 4d 50 52 45 53 53  , ICM_DECOMPRESS
3140: 5f 45 4e 44 2c 20 30 2c 20 30 29 3b 0a 7d 0a 0a  _END, 0, 0);.}..
3150: 4c 52 45 53 55 4c 54 20 49 43 44 65 63 6f 6d 70  LRESULT ICDecomp
3160: 72 65 73 73 45 78 28 48 49 43 20 68 69 63 2c 20  ressEx(HIC hic, 
3170: 44 57 4f 52 44 20 64 77 46 6c 61 67 73 2c 20 4c  DWORD dwFlags, L
3180: 50 42 49 54 4d 41 50 49 4e 46 4f 48 45 41 44 45  PBITMAPINFOHEADE
3190: 52 20 6c 70 62 69 53 72 63 2c 0a 09 4c 50 56 4f  R lpbiSrc,..LPVO
31a0: 49 44 20 6c 70 53 72 63 2c 20 69 6e 74 20 78 53  ID lpSrc, int xS
31b0: 72 63 2c 20 69 6e 74 20 79 53 72 63 2c 20 69 6e  rc, int ySrc, in
31c0: 74 20 64 78 53 72 63 2c 20 69 6e 74 20 64 79 53  t dxSrc, int dyS
31d0: 72 63 2c 09 4c 50 42 49 54 4d 41 50 49 4e 46 4f  rc,.LPBITMAPINFO
31e0: 48 45 41 44 45 52 20 6c 70 62 69 44 73 74 2c 0a  HEADER lpbiDst,.
31f0: 09 4c 50 56 4f 49 44 20 6c 70 44 73 74 2c 20 69  .LPVOID lpDst, i
3200: 6e 74 20 78 44 73 74 2c 20 69 6e 74 20 79 44 73  nt xDst, int yDs
3210: 74 2c 20 69 6e 74 20 64 78 44 73 74 2c 20 69 6e  t, int dxDst, in
3220: 74 20 64 79 44 73 74 29 20 7b 0a 09 49 43 44 45  t dyDst) {..ICDE
3230: 43 4f 4d 50 52 45 53 53 45 58 20 69 63 3b 0a 0a  COMPRESSEX ic;..
3240: 09 69 63 2e 64 77 46 6c 61 67 73 20 3d 20 64 77  .ic.dwFlags = dw
3250: 46 6c 61 67 73 3b 0a 09 69 63 2e 6c 70 62 69 53  Flags;..ic.lpbiS
3260: 72 63 20 3d 20 6c 70 62 69 53 72 63 3b 0a 09 69  rc = lpbiSrc;..i
3270: 63 2e 6c 70 53 72 63 20 3d 20 6c 70 53 72 63 3b  c.lpSrc = lpSrc;
3280: 0a 09 69 63 2e 78 53 72 63 20 3d 20 78 53 72 63  ..ic.xSrc = xSrc
3290: 3b 0a 09 69 63 2e 79 53 72 63 20 3d 20 79 53 72  ;..ic.ySrc = ySr
32a0: 63 3b 0a 09 69 63 2e 64 78 53 72 63 20 3d 20 64  c;..ic.dxSrc = d
32b0: 78 53 72 63 3b 0a 09 69 63 2e 64 79 53 72 63 20  xSrc;..ic.dySrc 
32c0: 3d 20 64 79 53 72 63 3b 0a 09 69 63 2e 6c 70 62  = dySrc;..ic.lpb
32d0: 69 44 73 74 20 3d 20 6c 70 62 69 44 73 74 3b 0a  iDst = lpbiDst;.
32e0: 09 69 63 2e 6c 70 44 73 74 20 3d 20 6c 70 44 73  .ic.lpDst = lpDs
32f0: 74 3b 0a 09 69 63 2e 78 44 73 74 20 3d 20 78 44  t;..ic.xDst = xD
3300: 73 74 3b 0a 09 69 63 2e 79 44 73 74 20 3d 20 79  st;..ic.yDst = y
3310: 44 73 74 3b 0a 09 69 63 2e 64 78 44 73 74 20 3d  Dst;..ic.dxDst =
3320: 20 64 78 44 73 74 3b 0a 09 69 63 2e 64 79 44 73   dxDst;..ic.dyDs
3330: 74 20 3d 20 64 79 44 73 74 3b 0a 0a 09 72 65 74  t = dyDst;...ret
3340: 75 72 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67  urn ICSendMessag
3350: 65 28 68 69 63 2c 20 49 43 4d 5f 44 45 43 4f 4d  e(hic, ICM_DECOM
3360: 50 52 45 53 53 45 58 2c 20 63 61 73 74 28 44 57  PRESSEX, cast(DW
3370: 4f 52 44 5f 50 54 52 29 26 69 63 2c 20 69 63 2e  ORD_PTR)&ic, ic.
3380: 73 69 7a 65 6f 66 29 3b 0a 7d 0a 0a 4c 52 45 53  sizeof);.}..LRES
3390: 55 4c 54 20 49 43 44 65 63 6f 6d 70 72 65 73 73  ULT ICDecompress
33a0: 45 78 42 65 67 69 6e 28 48 49 43 20 68 69 63 2c  ExBegin(HIC hic,
33b0: 20 44 57 4f 52 44 20 64 77 46 6c 61 67 73 2c 20   DWORD dwFlags, 
33c0: 4c 50 42 49 54 4d 41 50 49 4e 46 4f 48 45 41 44  LPBITMAPINFOHEAD
33d0: 45 52 20 6c 70 62 69 53 72 63 2c 0a 09 4c 50 56  ER lpbiSrc,..LPV
33e0: 4f 49 44 20 6c 70 53 72 63 2c 20 69 6e 74 20 78  OID lpSrc, int x
33f0: 53 72 63 2c 20 69 6e 74 20 79 53 72 63 2c 20 69  Src, int ySrc, i
3400: 6e 74 20 64 78 53 72 63 2c 20 69 6e 74 20 64 79  nt dxSrc, int dy
3410: 53 72 63 2c 20 4c 50 42 49 54 4d 41 50 49 4e 46  Src, LPBITMAPINF
3420: 4f 48 45 41 44 45 52 20 6c 70 62 69 44 73 74 2c  OHEADER lpbiDst,
3430: 0a 09 4c 50 56 4f 49 44 20 6c 70 44 73 74 2c 20  ..LPVOID lpDst, 
3440: 69 6e 74 20 78 44 73 74 2c 20 69 6e 74 20 79 44  int xDst, int yD
3450: 73 74 2c 20 69 6e 74 20 64 78 44 73 74 2c 20 69  st, int dxDst, i
3460: 6e 74 20 64 79 44 73 74 29 20 7b 0a 09 49 43 44  nt dyDst) {..ICD
3470: 45 43 4f 4d 50 52 45 53 53 45 58 20 69 63 3b 0a  ECOMPRESSEX ic;.
3480: 0a 09 69 63 2e 64 77 46 6c 61 67 73 20 3d 20 64  ..ic.dwFlags = d
3490: 77 46 6c 61 67 73 3b 0a 09 69 63 2e 6c 70 62 69  wFlags;..ic.lpbi
34a0: 53 72 63 20 3d 20 6c 70 62 69 53 72 63 3b 0a 09  Src = lpbiSrc;..
34b0: 69 63 2e 6c 70 53 72 63 20 3d 20 6c 70 53 72 63  ic.lpSrc = lpSrc
34c0: 3b 0a 09 69 63 2e 78 53 72 63 20 3d 20 78 53 72  ;..ic.xSrc = xSr
34d0: 63 3b 0a 09 69 63 2e 79 53 72 63 20 3d 20 79 53  c;..ic.ySrc = yS
34e0: 72 63 3b 0a 09 69 63 2e 64 78 53 72 63 20 3d 20  rc;..ic.dxSrc = 
34f0: 64 78 53 72 63 3b 0a 09 69 63 2e 64 79 53 72 63  dxSrc;..ic.dySrc
3500: 20 3d 20 64 79 53 72 63 3b 0a 09 69 63 2e 6c 70   = dySrc;..ic.lp
3510: 62 69 44 73 74 20 3d 20 6c 70 62 69 44 73 74 3b  biDst = lpbiDst;
3520: 0a 09 69 63 2e 6c 70 44 73 74 20 3d 20 6c 70 44  ..ic.lpDst = lpD
3530: 73 74 3b 0a 09 69 63 2e 78 44 73 74 20 3d 20 78  st;..ic.xDst = x
3540: 44 73 74 3b 0a 09 69 63 2e 79 44 73 74 20 3d 20  Dst;..ic.yDst = 
3550: 79 44 73 74 3b 0a 09 69 63 2e 64 78 44 73 74 20  yDst;..ic.dxDst 
3560: 3d 20 64 78 44 73 74 3b 0a 09 69 63 2e 64 79 44  = dxDst;..ic.dyD
3570: 73 74 20 3d 20 64 79 44 73 74 3b 0a 0a 09 72 65  st = dyDst;...re
3580: 74 75 72 6e 20 49 43 53 65 6e 64 4d 65 73 73 61  turn ICSendMessa
3590: 67 65 28 68 69 63 2c 20 49 43 4d 5f 44 45 43 4f  ge(hic, ICM_DECO
35a0: 4d 50 52 45 53 53 45 58 5f 42 45 47 49 4e 2c 20  MPRESSEX_BEGIN, 
35b0: 63 61 73 74 28 44 57 4f 52 44 5f 50 54 52 29 26  cast(DWORD_PTR)&
35c0: 69 63 2c 20 69 63 2e 73 69 7a 65 6f 66 29 3b 0a  ic, ic.sizeof);.
35d0: 7d 0a 0a 4c 52 45 53 55 4c 54 20 49 43 44 65 63  }..LRESULT ICDec
35e0: 6f 6d 70 72 65 73 73 45 78 51 75 65 72 79 28 48  ompressExQuery(H
35f0: 49 43 20 68 69 63 2c 20 44 57 4f 52 44 20 64 77  IC hic, DWORD dw
3600: 46 6c 61 67 73 2c 20 4c 50 42 49 54 4d 41 50 49  Flags, LPBITMAPI
3610: 4e 46 4f 48 45 41 44 45 52 20 6c 70 62 69 53 72  NFOHEADER lpbiSr
3620: 63 2c 0a 09 4c 50 56 4f 49 44 20 6c 70 53 72 63  c,..LPVOID lpSrc
3630: 2c 20 69 6e 74 20 78 53 72 63 2c 20 69 6e 74 20  , int xSrc, int 
3640: 79 53 72 63 2c 20 69 6e 74 20 64 78 53 72 63 2c  ySrc, int dxSrc,
3650: 20 69 6e 74 20 64 79 53 72 63 2c 20 4c 50 42 49   int dySrc, LPBI
3660: 54 4d 41 50 49 4e 46 4f 48 45 41 44 45 52 20 6c  TMAPINFOHEADER l
3670: 70 62 69 44 73 74 2c 0a 09 4c 50 56 4f 49 44 20  pbiDst,..LPVOID 
3680: 6c 70 44 73 74 2c 20 69 6e 74 20 78 44 73 74 2c  lpDst, int xDst,
3690: 20 69 6e 74 20 79 44 73 74 2c 20 69 6e 74 20 64   int yDst, int d
36a0: 78 44 73 74 2c 20 69 6e 74 20 64 79 44 73 74 29  xDst, int dyDst)
36b0: 20 7b 0a 09 49 43 44 45 43 4f 4d 50 52 45 53 53   {..ICDECOMPRESS
36c0: 45 58 20 69 63 3b 0a 0a 09 69 63 2e 64 77 46 6c  EX ic;...ic.dwFl
36d0: 61 67 73 20 3d 20 64 77 46 6c 61 67 73 3b 0a 09  ags = dwFlags;..
36e0: 69 63 2e 6c 70 62 69 53 72 63 20 3d 20 6c 70 62  ic.lpbiSrc = lpb
36f0: 69 53 72 63 3b 0a 09 69 63 2e 6c 70 53 72 63 20  iSrc;..ic.lpSrc 
3700: 3d 20 6c 70 53 72 63 3b 0a 09 69 63 2e 78 53 72  = lpSrc;..ic.xSr
3710: 63 20 3d 20 78 53 72 63 3b 0a 09 69 63 2e 79 53  c = xSrc;..ic.yS
3720: 72 63 20 3d 20 79 53 72 63 3b 0a 09 69 63 2e 64  rc = ySrc;..ic.d
3730: 78 53 72 63 20 3d 20 64 78 53 72 63 3b 0a 09 69  xSrc = dxSrc;..i
3740: 63 2e 64 79 53 72 63 20 3d 20 64 79 53 72 63 3b  c.dySrc = dySrc;
3750: 0a 09 69 63 2e 6c 70 62 69 44 73 74 20 3d 20 6c  ..ic.lpbiDst = l
3760: 70 62 69 44 73 74 3b 0a 09 69 63 2e 6c 70 44 73  pbiDst;..ic.lpDs
3770: 74 20 3d 20 6c 70 44 73 74 3b 0a 09 69 63 2e 78  t = lpDst;..ic.x
3780: 44 73 74 20 3d 20 78 44 73 74 3b 0a 09 69 63 2e  Dst = xDst;..ic.
3790: 79 44 73 74 20 3d 20 79 44 73 74 3b 0a 09 69 63  yDst = yDst;..ic
37a0: 2e 64 78 44 73 74 20 3d 20 64 78 44 73 74 3b 0a  .dxDst = dxDst;.
37b0: 09 69 63 2e 64 79 44 73 74 20 3d 20 64 79 44 73  .ic.dyDst = dyDs
37c0: 74 3b 0a 0a 09 72 65 74 75 72 6e 20 49 43 53 65  t;...return ICSe
37d0: 6e 64 4d 65 73 73 61 67 65 28 68 69 63 2c 20 49  ndMessage(hic, I
37e0: 43 4d 5f 44 45 43 4f 4d 50 52 45 53 53 45 58 5f  CM_DECOMPRESSEX_
37f0: 51 55 45 52 59 2c 20 63 61 73 74 28 44 57 4f 52  QUERY, cast(DWOR
3800: 44 5f 50 54 52 29 26 69 63 2c 20 69 63 2e 73 69  D_PTR)&ic, ic.si
3810: 7a 65 6f 66 29 3b 0a 7d 0a 0a 4c 52 45 53 55 4c  zeof);.}..LRESUL
3820: 54 20 49 43 44 65 63 6f 6d 70 72 65 73 73 45 78  T ICDecompressEx
3830: 45 6e 64 28 48 49 43 20 68 69 63 29 20 7b 0a 09  End(HIC hic) {..
3840: 72 65 74 75 72 6e 20 49 43 53 65 6e 64 4d 65 73  return ICSendMes
3850: 73 61 67 65 28 68 69 63 2c 20 49 43 4d 5f 44 45  sage(hic, ICM_DE
3860: 43 4f 4d 50 52 45 53 53 45 58 5f 45 4e 44 2c 20  COMPRESSEX_END, 
3870: 30 2c 20 30 29 3b 0a 7d 0a 0a 65 78 74 65 72 6e  0, 0);.}..extern
3880: 20 28 57 69 6e 64 6f 77 73 29 20 7b 0a 09 44 57   (Windows) {..DW
3890: 4f 52 44 20 49 43 44 72 61 77 42 65 67 69 6e 28  ORD ICDrawBegin(
38a0: 48 49 43 20 68 69 63 2c 20 44 57 4f 52 44 20 64  HIC hic, DWORD d
38b0: 77 46 6c 61 67 73 2c 20 48 50 41 4c 45 54 54 45  wFlags, HPALETTE
38c0: 20 68 70 61 6c 2c 20 48 57 4e 44 20 68 77 6e 64   hpal, HWND hwnd
38d0: 2c 20 48 44 43 20 68 64 63 2c 0a 09 09 69 6e 74  , HDC hdc,...int
38e0: 20 78 44 73 74 2c 20 69 6e 74 20 79 44 73 74 2c   xDst, int yDst,
38f0: 20 69 6e 74 20 64 78 44 73 74 2c 20 69 6e 74 20   int dxDst, int 
3900: 64 79 44 73 74 2c 20 4c 50 42 49 54 4d 41 50 49  dyDst, LPBITMAPI
3910: 4e 46 4f 48 45 41 44 45 52 20 6c 70 62 69 2c 0a  NFOHEADER lpbi,.
3920: 09 09 69 6e 74 20 78 53 72 63 2c 20 69 6e 74 20  ..int xSrc, int 
3930: 79 53 72 63 2c 20 69 6e 74 20 64 78 53 72 63 2c  ySrc, int dxSrc,
3940: 20 69 6e 74 20 64 79 53 72 63 2c 20 44 57 4f 52   int dySrc, DWOR
3950: 44 20 64 77 52 61 74 65 2c 20 44 57 4f 52 44 20  D dwRate, DWORD 
3960: 64 77 53 63 61 6c 65 29 3b 0a 7d 0a 0a 65 78 74  dwScale);.}..ext
3970: 65 72 6e 20 28 57 69 6e 64 6f 77 73 29 20 7b 0a  ern (Windows) {.
3980: 09 44 57 4f 52 44 20 49 43 44 72 61 77 28 48 49  .DWORD ICDraw(HI
3990: 43 20 68 69 63 2c 20 44 57 4f 52 44 20 64 77 46  C hic, DWORD dwF
39a0: 6c 61 67 73 2c 20 4c 50 56 4f 49 44 20 6c 70 46  lags, LPVOID lpF
39b0: 6f 72 6d 61 74 2c 20 4c 50 56 4f 49 44 20 6c 70  ormat, LPVOID lp
39c0: 44 61 74 61 2c 20 44 57 4f 52 44 20 63 62 44 61  Data, DWORD cbDa
39d0: 74 61 2c 20 4c 4f 4e 47 20 6c 54 69 6d 65 29 3b  ta, LONG lTime);
39e0: 0a 7d 0a 0a 4c 52 45 53 55 4c 54 20 49 43 44 72  .}..LRESULT ICDr
39f0: 61 77 53 75 67 67 65 73 74 46 6f 72 6d 61 74 28  awSuggestFormat(
3a00: 48 49 43 20 68 69 63 2c 20 4c 50 42 49 54 4d 41  HIC hic, LPBITMA
3a10: 50 49 4e 46 4f 48 45 41 44 45 52 20 6c 70 62 69  PINFOHEADER lpbi
3a20: 49 6e 2c 20 4c 50 42 49 54 4d 41 50 49 4e 46 4f  In, LPBITMAPINFO
3a30: 48 45 41 44 45 52 20 6c 70 62 69 4f 75 74 2c 0a  HEADER lpbiOut,.
3a40: 09 69 6e 74 20 64 78 53 72 63 2c 20 69 6e 74 20  .int dxSrc, int 
3a50: 64 79 53 72 63 2c 20 69 6e 74 20 64 78 44 73 74  dySrc, int dxDst
3a60: 2c 20 69 6e 74 20 64 79 44 73 74 2c 20 48 49 43  , int dyDst, HIC
3a70: 20 68 69 63 44 65 63 6f 6d 70 29 20 7b 0a 09 49   hicDecomp) {..I
3a80: 43 44 52 41 57 53 55 47 47 45 53 54 20 69 63 3b  CDRAWSUGGEST ic;
3a90: 0a 0a 09 69 63 2e 6c 70 62 69 49 6e 20 3d 20 6c  ...ic.lpbiIn = l
3aa0: 70 62 69 49 6e 3b 0a 09 69 63 2e 6c 70 62 69 53  pbiIn;..ic.lpbiS
3ab0: 75 67 67 65 73 74 20 3d 20 6c 70 62 69 4f 75 74  uggest = lpbiOut
3ac0: 3b 0a 09 69 63 2e 64 78 53 72 63 20 3d 20 64 78  ;..ic.dxSrc = dx
3ad0: 53 72 63 3b 0a 09 69 63 2e 64 79 53 72 63 20 3d  Src;..ic.dySrc =
3ae0: 20 64 79 53 72 63 3b 0a 09 69 63 2e 64 78 44 73   dySrc;..ic.dxDs
3af0: 74 20 3d 20 64 78 44 73 74 3b 0a 09 69 63 2e 64  t = dxDst;..ic.d
3b00: 79 44 73 74 20 3d 20 64 79 44 73 74 3b 0a 09 69  yDst = dyDst;..i
3b10: 63 2e 68 69 63 44 65 63 6f 6d 70 72 65 73 73 6f  c.hicDecompresso
3b20: 72 20 3d 20 68 69 63 44 65 63 6f 6d 70 3b 0a 0a  r = hicDecomp;..
3b30: 09 72 65 74 75 72 6e 20 49 43 53 65 6e 64 4d 65  .return ICSendMe
3b40: 73 73 61 67 65 28 68 69 63 2c 20 49 43 4d 5f 44  ssage(hic, ICM_D
3b50: 52 41 57 5f 53 55 47 47 45 53 54 46 4f 52 4d 41  RAW_SUGGESTFORMA
3b60: 54 2c 20 63 61 73 74 28 44 57 4f 52 44 5f 50 54  T, cast(DWORD_PT
3b70: 52 29 26 69 63 2c 20 69 63 2e 73 69 7a 65 6f 66  R)&ic, ic.sizeof
3b80: 29 3b 0a 7d 0a 0a 4c 52 45 53 55 4c 54 20 49 43  );.}..LRESULT IC
3b90: 44 72 61 77 51 75 65 72 79 28 48 49 43 20 68 69  DrawQuery(HIC hi
3ba0: 63 2c 20 4c 50 56 4f 49 44 20 6c 70 62 69 49 6e  c, LPVOID lpbiIn
3bb0: 70 75 74 29 20 7b 0a 09 72 65 74 75 72 6e 20 49  put) {..return I
3bc0: 43 53 65 6e 64 4d 65 73 73 61 67 65 28 68 69 63  CSendMessage(hic
3bd0: 2c 20 49 43 4d 5f 44 52 41 57 5f 51 55 45 52 59  , ICM_DRAW_QUERY
3be0: 2c 20 63 61 73 74 28 44 57 4f 52 44 5f 50 54 52  , cast(DWORD_PTR
3bf0: 29 6c 70 62 69 49 6e 70 75 74 2c 20 30 4c 29 3b  )lpbiInput, 0L);
3c00: 0a 7d 0a 4c 52 45 53 55 4c 54 20 49 43 44 72 61  .}.LRESULT ICDra
3c10: 77 43 68 61 6e 67 65 50 61 6c 65 74 74 65 28 48  wChangePalette(H
3c20: 49 43 20 68 69 63 2c 20 4c 50 56 4f 49 44 20 6c  IC hic, LPVOID l
3c30: 70 62 69 49 6e 70 75 74 29 20 7b 0a 09 72 65 74  pbiInput) {..ret
3c40: 75 72 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67  urn ICSendMessag
3c50: 65 28 68 69 63 2c 20 49 43 4d 5f 44 52 41 57 5f  e(hic, ICM_DRAW_
3c60: 43 48 41 4e 47 45 50 41 4c 45 54 54 45 2c 20 63  CHANGEPALETTE, c
3c70: 61 73 74 28 44 57 4f 52 44 5f 50 54 52 29 6c 70  ast(DWORD_PTR)lp
3c80: 62 69 49 6e 70 75 74 2c 20 30 4c 29 3b 0a 7d 0a  biInput, 0L);.}.
3c90: 4c 52 45 53 55 4c 54 20 49 43 47 65 74 42 75 66  LRESULT ICGetBuf
3ca0: 66 65 72 73 57 61 6e 74 65 64 28 48 49 43 20 68  fersWanted(HIC h
3cb0: 69 63 2c 20 4c 50 56 4f 49 44 20 6c 70 64 77 42  ic, LPVOID lpdwB
3cc0: 75 66 66 65 72 73 29 20 7b 0a 09 72 65 74 75 72  uffers) {..retur
3cd0: 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67 65 28  n ICSendMessage(
3ce0: 68 69 63 2c 20 49 43 4d 5f 47 45 54 42 55 46 46  hic, ICM_GETBUFF
3cf0: 45 52 53 57 41 4e 54 45 44 2c 20 63 61 73 74 28  ERSWANTED, cast(
3d00: 44 57 4f 52 44 5f 50 54 52 29 6c 70 64 77 42 75  DWORD_PTR)lpdwBu
3d10: 66 66 65 72 73 2c 20 30 29 3b 0a 7d 0a 4c 52 45  ffers, 0);.}.LRE
3d20: 53 55 4c 54 20 49 43 44 72 61 77 45 6e 64 28 48  SULT ICDrawEnd(H
3d30: 49 43 20 68 69 63 29 20 7b 0a 09 72 65 74 75 72  IC hic) {..retur
3d40: 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67 65 28  n ICSendMessage(
3d50: 68 69 63 2c 20 49 43 4d 5f 44 52 41 57 5f 45 4e  hic, ICM_DRAW_EN
3d60: 44 2c 20 30 2c 20 30 29 3b 0a 7d 0a 4c 52 45 53  D, 0, 0);.}.LRES
3d70: 55 4c 54 20 49 43 44 72 61 77 53 74 61 72 74 28  ULT ICDrawStart(
3d80: 48 49 43 20 68 69 63 29 20 7b 0a 09 72 65 74 75  HIC hic) {..retu
3d90: 72 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67 65  rn ICSendMessage
3da0: 28 68 69 63 2c 20 49 43 4d 5f 44 52 41 57 5f 53  (hic, ICM_DRAW_S
3db0: 54 41 52 54 2c 20 30 2c 20 30 29 3b 0a 7d 0a 4c  TART, 0, 0);.}.L
3dc0: 52 45 53 55 4c 54 20 49 43 44 72 61 77 53 74 61  RESULT ICDrawSta
3dd0: 72 74 50 6c 61 79 28 48 49 43 20 68 69 63 2c 20  rtPlay(HIC hic, 
3de0: 44 57 4f 52 44 20 6c 46 72 6f 6d 2c 20 44 57 4f  DWORD lFrom, DWO
3df0: 52 44 20 6c 54 6f 29 20 7b 0a 09 72 65 74 75 72  RD lTo) {..retur
3e00: 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67 65 28  n ICSendMessage(
3e10: 68 69 63 2c 20 49 43 4d 5f 44 52 41 57 5f 53 54  hic, ICM_DRAW_ST
3e20: 41 52 54 5f 50 4c 41 59 2c 20 63 61 73 74 28 44  ART_PLAY, cast(D
3e30: 57 4f 52 44 5f 50 54 52 29 6c 46 72 6f 6d 2c 20  WORD_PTR)lFrom, 
3e40: 63 61 73 74 28 44 57 4f 52 44 5f 50 54 52 29 6c  cast(DWORD_PTR)l
3e50: 54 6f 29 3b 0a 7d 0a 4c 52 45 53 55 4c 54 20 49  To);.}.LRESULT I
3e60: 43 44 72 61 77 53 74 6f 70 28 48 49 43 20 68 69  CDrawStop(HIC hi
3e70: 63 29 20 7b 0a 09 72 65 74 75 72 6e 20 49 43 53  c) {..return ICS
3e80: 65 6e 64 4d 65 73 73 61 67 65 28 68 69 63 2c 20  endMessage(hic, 
3e90: 49 43 4d 5f 44 52 41 57 5f 53 54 4f 50 2c 20 30  ICM_DRAW_STOP, 0
3ea0: 2c 20 30 29 3b 0a 7d 0a 4c 52 45 53 55 4c 54 20  , 0);.}.LRESULT 
3eb0: 49 43 44 72 61 77 53 74 6f 70 50 6c 61 79 28 48  ICDrawStopPlay(H
3ec0: 49 43 20 68 69 63 29 20 7b 0a 09 72 65 74 75 72  IC hic) {..retur
3ed0: 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67 65 28  n ICSendMessage(
3ee0: 68 69 63 2c 20 49 43 4d 5f 44 52 41 57 5f 53 54  hic, ICM_DRAW_ST
3ef0: 4f 50 5f 50 4c 41 59 2c 20 30 2c 20 30 29 3b 0a  OP_PLAY, 0, 0);.
3f00: 7d 0a 4c 52 45 53 55 4c 54 20 49 43 44 72 61 77  }.LRESULT ICDraw
3f10: 47 65 74 54 69 6d 65 28 48 49 43 20 68 69 63 2c  GetTime(HIC hic,
3f20: 20 4c 50 56 4f 49 44 20 6c 70 6c 54 69 6d 65 29   LPVOID lplTime)
3f30: 20 7b 0a 09 72 65 74 75 72 6e 20 49 43 53 65 6e   {..return ICSen
3f40: 64 4d 65 73 73 61 67 65 28 68 69 63 2c 20 49 43  dMessage(hic, IC
3f50: 4d 5f 44 52 41 57 5f 47 45 54 54 49 4d 45 2c 20  M_DRAW_GETTIME, 
3f60: 63 61 73 74 28 44 57 4f 52 44 5f 50 54 52 29 6c  cast(DWORD_PTR)l
3f70: 70 6c 54 69 6d 65 2c 20 30 29 3b 0a 7d 0a 4c 52  plTime, 0);.}.LR
3f80: 45 53 55 4c 54 20 49 43 44 72 61 77 53 65 74 54  ESULT ICDrawSetT
3f90: 69 6d 65 28 48 49 43 20 68 69 63 2c 20 44 57 4f  ime(HIC hic, DWO
3fa0: 52 44 20 6c 54 69 6d 65 29 20 7b 0a 09 72 65 74  RD lTime) {..ret
3fb0: 75 72 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67  urn ICSendMessag
3fc0: 65 28 68 69 63 2c 20 49 43 4d 5f 44 52 41 57 5f  e(hic, ICM_DRAW_
3fd0: 53 45 54 54 49 4d 45 2c 20 63 61 73 74 28 44 57  SETTIME, cast(DW
3fe0: 4f 52 44 5f 50 54 52 29 6c 54 69 6d 65 2c 20 30  ORD_PTR)lTime, 0
3ff0: 29 3b 0a 7d 0a 4c 52 45 53 55 4c 54 20 49 43 44  );.}.LRESULT ICD
4000: 72 61 77 52 65 61 6c 69 7a 65 28 48 49 43 20 68  rawRealize(HIC h
4010: 69 63 2c 20 48 44 43 20 68 64 63 2c 20 42 4f 4f  ic, HDC hdc, BOO
4020: 4c 20 66 42 61 63 6b 67 72 6f 75 6e 64 29 20 7b  L fBackground) {
4030: 0a 09 72 65 74 75 72 6e 20 49 43 53 65 6e 64 4d  ..return ICSendM
4040: 65 73 73 61 67 65 28 68 69 63 2c 20 49 43 4d 5f  essage(hic, ICM_
4050: 44 52 41 57 5f 52 45 41 4c 49 5a 45 2c 20 63 61  DRAW_REALIZE, ca
4060: 73 74 28 44 57 4f 52 44 5f 50 54 52 29 68 64 63  st(DWORD_PTR)hdc
4070: 2c 20 63 61 73 74 28 44 57 4f 52 44 5f 50 54 52  , cast(DWORD_PTR
4080: 29 66 42 61 63 6b 67 72 6f 75 6e 64 29 3b 0a 7d  )fBackground);.}
4090: 0a 4c 52 45 53 55 4c 54 20 49 43 44 72 61 77 46  .LRESULT ICDrawF
40a0: 6c 75 73 68 28 48 49 43 20 68 69 63 29 20 7b 0a  lush(HIC hic) {.
40b0: 09 72 65 74 75 72 6e 20 49 43 53 65 6e 64 4d 65  .return ICSendMe
40c0: 73 73 61 67 65 28 68 69 63 2c 20 49 43 4d 5f 44  ssage(hic, ICM_D
40d0: 52 41 57 5f 46 4c 55 53 48 2c 20 30 2c 20 30 29  RAW_FLUSH, 0, 0)
40e0: 3b 0a 7d 0a 4c 52 45 53 55 4c 54 20 49 43 44 72  ;.}.LRESULT ICDr
40f0: 61 77 52 65 6e 64 65 72 42 75 66 66 65 72 28 48  awRenderBuffer(H
4100: 49 43 20 68 69 63 29 20 7b 0a 09 72 65 74 75 72  IC hic) {..retur
4110: 6e 20 49 43 53 65 6e 64 4d 65 73 73 61 67 65 28  n ICSendMessage(
4120: 68 69 63 2c 20 49 43 4d 5f 44 52 41 57 5f 52 45  hic, ICM_DRAW_RE
4130: 4e 44 45 52 42 55 46 46 45 52 2c 20 30 2c 20 30  NDERBUFFER, 0, 0
4140: 29 3b 0a 7d 0a 0a 4c 52 45 53 55 4c 54 20 49 43  );.}..LRESULT IC
4150: 53 65 74 53 74 61 74 75 73 50 72 6f 63 28 48 49  SetStatusProc(HI
4160: 43 20 68 69 63 2c 20 44 57 4f 52 44 20 64 77 46  C hic, DWORD dwF
4170: 6c 61 67 73 2c 20 4c 52 45 53 55 4c 54 20 6c 50  lags, LRESULT lP
4180: 61 72 61 6d 2c 20 4c 4f 4e 47 20 66 75 6e 63 74  aram, LONG funct
4190: 69 6f 6e 28 4c 50 41 52 41 4d 2c 20 55 49 4e 54  ion(LPARAM, UINT
41a0: 2c 20 4c 4f 4e 47 29 20 66 70 66 6e 53 74 61 74  , LONG) fpfnStat
41b0: 75 73 29 20 7b 0a 09 49 43 53 45 54 53 54 41 54  us) {..ICSETSTAT
41c0: 55 53 50 52 4f 43 20 69 63 3b 0a 0a 09 69 63 2e  USPROC ic;...ic.
41d0: 64 77 46 6c 61 67 73 20 3d 20 64 77 46 6c 61 67  dwFlags = dwFlag
41e0: 73 3b 0a 09 69 63 2e 6c 50 61 72 61 6d 20 3d 20  s;..ic.lParam = 
41f0: 6c 50 61 72 61 6d 3b 0a 09 69 63 2e 53 74 61 74  lParam;..ic.Stat
4200: 75 73 20 3d 20 66 70 66 6e 53 74 61 74 75 73 3b  us = fpfnStatus;
4210: 0a 0a 09 72 65 74 75 72 6e 20 49 43 53 65 6e 64  ...return ICSend
4220: 4d 65 73 73 61 67 65 28 68 69 63 2c 20 49 43 4d  Message(hic, ICM
4230: 5f 53 45 54 5f 53 54 41 54 55 53 5f 50 52 4f 43  _SET_STATUS_PROC
4240: 2c 20 63 61 73 74 28 44 57 4f 52 44 5f 50 54 52  , cast(DWORD_PTR
4250: 29 26 69 63 2c 20 69 63 2e 73 69 7a 65 6f 66 29  )&ic, ic.sizeof)
4260: 3b 0a 7d 0a 0a 48 49 43 20 49 43 44 65 63 6f 6d  ;.}..HIC ICDecom
4270: 70 72 65 73 73 4f 70 65 6e 28 44 57 4f 52 44 20  pressOpen(DWORD 
4280: 66 63 63 54 79 70 65 2c 20 44 57 4f 52 44 20 66  fccType, DWORD f
4290: 63 63 48 61 6e 64 6c 65 72 2c 20 4c 50 42 49 54  ccHandler, LPBIT
42a0: 4d 41 50 49 4e 46 4f 48 45 41 44 45 52 20 6c 70  MAPINFOHEADER lp
42b0: 62 69 49 6e 2c 20 4c 50 42 49 54 4d 41 50 49 4e  biIn, LPBITMAPIN
42c0: 46 4f 48 45 41 44 45 52 20 6c 70 62 69 4f 75 74  FOHEADER lpbiOut
42d0: 29 20 7b 0a 09 72 65 74 75 72 6e 20 49 43 4c 6f  ) {..return ICLo
42e0: 63 61 74 65 28 66 63 63 54 79 70 65 2c 20 66 63  cate(fccType, fc
42f0: 63 48 61 6e 64 6c 65 72 2c 20 6c 70 62 69 49 6e  cHandler, lpbiIn
4300: 2c 20 6c 70 62 69 4f 75 74 2c 20 49 43 4d 4f 44  , lpbiOut, ICMOD
4310: 45 5f 44 45 43 4f 4d 50 52 45 53 53 29 3b 0a 7d  E_DECOMPRESS);.}
4320: 0a 0a 48 49 43 20 49 43 44 72 61 77 4f 70 65 6e  ..HIC ICDrawOpen
4330: 28 44 57 4f 52 44 20 66 63 63 54 79 70 65 2c 20  (DWORD fccType, 
4340: 44 57 4f 52 44 20 66 63 63 48 61 6e 64 6c 65 72  DWORD fccHandler
4350: 2c 20 4c 50 42 49 54 4d 41 50 49 4e 46 4f 48 45  , LPBITMAPINFOHE
4360: 41 44 45 52 20 6c 70 62 69 49 6e 29 20 7b 0a 09  ADER lpbiIn) {..
4370: 72 65 74 75 72 6e 20 49 43 4c 6f 63 61 74 65 28  return ICLocate(
4380: 66 63 63 54 79 70 65 2c 20 66 63 63 48 61 6e 64  fccType, fccHand
4390: 6c 65 72 2c 20 6c 70 62 69 49 6e 2c 20 6e 75 6c  ler, lpbiIn, nul
43a0: 6c 2c 20 49 43 4d 4f 44 45 5f 44 52 41 57 29 3b  l, ICMODE_DRAW);
43b0: 0a 7d 0a 0a 65 78 74 65 72 6e 20 28 57 69 6e 64  .}..extern (Wind
43c0: 6f 77 73 29 20 7b 0a 09 48 49 43 20 49 43 4c 6f  ows) {..HIC ICLo
43d0: 63 61 74 65 28 44 57 4f 52 44 20 66 63 63 54 79  cate(DWORD fccTy
43e0: 70 65 2c 20 44 57 4f 52 44 20 66 63 63 48 61 6e  pe, DWORD fccHan
43f0: 64 6c 65 72 2c 20 4c 50 42 49 54 4d 41 50 49 4e  dler, LPBITMAPIN
4400: 46 4f 48 45 41 44 45 52 20 6c 70 62 69 49 6e 2c  FOHEADER lpbiIn,
4410: 20 4c 50 42 49 54 4d 41 50 49 4e 46 4f 48 45 41   LPBITMAPINFOHEA
4420: 44 45 52 20 6c 70 62 69 4f 75 74 2c 20 57 4f 52  DER lpbiOut, WOR
4430: 44 20 77 46 6c 61 67 73 29 3b 0a 09 48 49 43 20  D wFlags);..HIC 
4440: 49 43 47 65 74 44 69 73 70 6c 61 79 46 6f 72 6d  ICGetDisplayForm
4450: 61 74 28 48 49 43 20 68 69 63 2c 20 4c 50 42 49  at(HIC hic, LPBI
4460: 54 4d 41 50 49 4e 46 4f 48 45 41 44 45 52 20 6c  TMAPINFOHEADER l
4470: 70 62 69 49 6e 2c 20 4c 50 42 49 54 4d 41 50 49  pbiIn, LPBITMAPI
4480: 4e 46 4f 48 45 41 44 45 52 20 6c 70 62 69 4f 75  NFOHEADER lpbiOu
4490: 74 2c 20 69 6e 74 20 42 69 74 44 65 70 74 68 2c  t, int BitDepth,
44a0: 20 69 6e 74 20 64 78 2c 20 69 6e 74 20 64 79 29   int dx, int dy)
44b0: 3b 0a 09 48 41 4e 44 4c 45 20 49 43 49 6d 61 67  ;..HANDLE ICImag
44c0: 65 43 6f 6d 70 72 65 73 73 28 48 49 43 20 68 69  eCompress(HIC hi
44d0: 63 2c 20 55 49 4e 54 20 75 69 46 6c 61 67 73 2c  c, UINT uiFlags,
44e0: 20 4c 50 42 49 54 4d 41 50 49 4e 46 4f 20 6c 70   LPBITMAPINFO lp
44f0: 62 69 49 6e 2c 20 4c 50 56 4f 49 44 20 6c 70 42  biIn, LPVOID lpB
4500: 69 74 73 2c 20 4c 50 42 49 54 4d 41 50 49 4e 46  its, LPBITMAPINF
4510: 4f 20 6c 70 62 69 4f 75 74 2c 20 4c 4f 4e 47 20  O lpbiOut, LONG 
4520: 6c 51 75 61 6c 69 74 79 2c 20 4c 4f 4e 47 2a 20  lQuality, LONG* 
4530: 70 6c 53 69 7a 65 29 3b 0a 09 48 41 4e 44 4c 45  plSize);..HANDLE
4540: 20 49 43 49 6d 61 67 65 44 65 63 6f 6d 70 72 65   ICImageDecompre
4550: 73 73 28 48 49 43 20 68 69 63 2c 20 55 49 4e 54  ss(HIC hic, UINT
4560: 20 75 69 46 6c 61 67 73 2c 20 4c 50 42 49 54 4d   uiFlags, LPBITM
4570: 41 50 49 4e 46 4f 20 6c 70 62 69 49 6e 2c 20 4c  APINFO lpbiIn, L
4580: 50 56 4f 49 44 20 6c 70 42 69 74 73 2c 20 4c 50  PVOID lpBits, LP
4590: 42 49 54 4d 41 50 49 4e 46 4f 20 6c 70 62 69 4f  BITMAPINFO lpbiO
45a0: 75 74 29 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 43  ut);.}..struct C
45b0: 4f 4d 50 56 41 52 53 20 7b 0a 09 4c 4f 4e 47 09  OMPVARS {..LONG.
45c0: 09 63 62 53 69 7a 65 20 3d 20 74 68 69 73 2e 73  .cbSize = this.s
45d0: 69 7a 65 6f 66 3b 0a 09 44 57 4f 52 44 09 09 64  izeof;..DWORD..d
45e0: 77 46 6c 61 67 73 3b 0a 09 48 49 43 09 09 09 68  wFlags;..HIC...h
45f0: 69 63 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20  ic;..DWORD      
4600: 20 20 20 20 20 20 20 20 20 66 63 63 54 79 70 65           fccType
4610: 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 20  ;..DWORD        
4620: 20 20 20 20 20 20 20 66 63 63 48 61 6e 64 6c 65         fccHandle
4630: 72 3b 0a 09 4c 50 42 49 54 4d 41 50 49 4e 46 4f  r;..LPBITMAPINFO
4640: 09 6c 70 62 69 49 6e 3b 0a 09 4c 50 42 49 54 4d  .lpbiIn;..LPBITM
4650: 41 50 49 4e 46 4f 09 6c 70 62 69 4f 75 74 3b 0a  APINFO.lpbiOut;.
4660: 09 4c 50 56 4f 49 44 09 09 6c 70 42 69 74 73 4f  .LPVOID..lpBitsO
4670: 75 74 3b 0a 09 4c 50 56 4f 49 44 09 09 6c 70 42  ut;..LPVOID..lpB
4680: 69 74 73 50 72 65 76 3b 0a 09 4c 4f 4e 47 09 09  itsPrev;..LONG..
4690: 6c 46 72 61 6d 65 3b 0a 09 4c 4f 4e 47 09 09 6c  lFrame;..LONG..l
46a0: 4b 65 79 3b 0a 09 4c 4f 4e 47 09 09 6c 44 61 74  Key;..LONG..lDat
46b0: 61 52 61 74 65 3b 0a 09 4c 4f 4e 47 09 09 6c 51  aRate;..LONG..lQ
46c0: 3b 0a 09 4c 4f 4e 47 09 09 6c 4b 65 79 43 6f 75  ;..LONG..lKeyCou
46d0: 6e 74 3b 0a 09 4c 50 56 4f 49 44 09 09 6c 70 53  nt;..LPVOID..lpS
46e0: 74 61 74 65 3b 0a 09 4c 4f 4e 47 09 09 63 62 53  tate;..LONG..cbS
46f0: 74 61 74 65 3b 0a 7d 0a 61 6c 69 61 73 20 43 4f  tate;.}.alias CO
4700: 4d 50 56 41 52 53 2a 20 50 43 4f 4d 50 56 41 52  MPVARS* PCOMPVAR
4710: 53 3b 0a 0a 63 6f 6e 73 74 20 49 43 4d 46 5f 43  S;..const ICMF_C
4720: 4f 4d 50 56 41 52 53 5f 56 41 4c 49 44 20 3d 20  OMPVARS_VALID = 
4730: 30 78 30 30 30 30 30 30 30 31 3b 0a 0a 65 78 74  0x00000001;..ext
4740: 65 72 6e 20 28 57 69 6e 64 6f 77 73 29 20 7b 0a  ern (Windows) {.
4750: 09 42 4f 4f 4c 20 49 43 43 6f 6d 70 72 65 73 73  .BOOL ICCompress
4760: 6f 72 43 68 6f 6f 73 65 28 48 57 4e 44 20 68 77  orChoose(HWND hw
4770: 6e 64 2c 20 55 49 4e 54 20 75 69 46 6c 61 67 73  nd, UINT uiFlags
4780: 2c 20 4c 50 56 4f 49 44 20 70 76 49 6e 2c 20 4c  , LPVOID pvIn, L
4790: 50 56 4f 49 44 20 6c 70 44 61 74 61 2c 20 50 43  PVOID lpData, PC
47a0: 4f 4d 50 56 41 52 53 20 70 63 2c 20 4c 50 53 54  OMPVARS pc, LPST
47b0: 52 20 6c 70 73 7a 54 69 74 6c 65 29 3b 0a 7d 0a  R lpszTitle);.}.
47c0: 0a 65 6e 75 6d 20 7b 0a 09 49 43 4d 46 5f 43 48  .enum {..ICMF_CH
47d0: 4f 4f 53 45 5f 4b 45 59 46 52 41 4d 45 09 09 3d  OOSE_KEYFRAME..=
47e0: 20 30 78 30 30 30 31 2c 0a 09 49 43 4d 46 5f 43   0x0001,..ICMF_C
47f0: 48 4f 4f 53 45 5f 44 41 54 41 52 41 54 45 09 09  HOOSE_DATARATE..
4800: 3d 20 30 78 30 30 30 32 2c 0a 09 49 43 4d 46 5f  = 0x0002,..ICMF_
4810: 43 48 4f 4f 53 45 5f 50 52 45 56 49 45 57 09 09  CHOOSE_PREVIEW..
4820: 09 3d 20 30 78 30 30 30 34 2c 0a 09 49 43 4d 46  .= 0x0004,..ICMF
4830: 5f 43 48 4f 4f 53 45 5f 41 4c 4c 43 4f 4d 50 52  _CHOOSE_ALLCOMPR
4840: 45 53 53 4f 52 53 09 3d 20 30 78 30 30 30 38 2c  ESSORS.= 0x0008,
4850: 0a 7d 0a 0a 65 78 74 65 72 6e 20 28 57 69 6e 64  .}..extern (Wind
4860: 6f 77 73 29 20 7b 0a 09 42 4f 4f 4c 20 49 43 53  ows) {..BOOL ICS
4870: 65 71 43 6f 6d 70 72 65 73 73 46 72 61 6d 65 53  eqCompressFrameS
4880: 74 61 72 74 28 50 43 4f 4d 50 56 41 52 53 20 70  tart(PCOMPVARS p
4890: 63 2c 20 4c 50 42 49 54 4d 41 50 49 4e 46 4f 20  c, LPBITMAPINFO 
48a0: 6c 70 62 69 49 6e 29 3b 0a 09 76 6f 69 64 20 49  lpbiIn);..void I
48b0: 43 53 65 71 43 6f 6d 70 72 65 73 73 46 72 61 6d  CSeqCompressFram
48c0: 65 45 6e 64 28 50 43 4f 4d 50 56 41 52 53 20 70  eEnd(PCOMPVARS p
48d0: 63 29 3b 0a 09 4c 50 56 4f 49 44 20 49 43 53 65  c);..LPVOID ICSe
48e0: 71 43 6f 6d 70 72 65 73 73 46 72 61 6d 65 28 50  qCompressFrame(P
48f0: 43 4f 4d 50 56 41 52 53 20 70 63 2c 20 55 49 4e  COMPVARS pc, UIN
4900: 54 20 75 69 46 6c 61 67 73 2c 20 4c 50 56 4f 49  T uiFlags, LPVOI
4910: 44 20 6c 70 42 69 74 73 2c 20 42 4f 4f 4c 2a 20  D lpBits, BOOL* 
4920: 70 66 4b 65 79 2c 20 4c 4f 4e 47 2a 20 70 6c 53  pfKey, LONG* plS
4930: 69 7a 65 29 3b 0a 09 76 6f 69 64 20 49 43 43 6f  ize);..void ICCo
4940: 6d 70 72 65 73 73 6f 72 46 72 65 65 28 50 43 4f  mpressorFree(PCO
4950: 4d 50 56 41 52 53 20 70 63 29 3b 0a 7d 0a 0a 61  MPVARS pc);.}..a
4960: 6c 69 61 73 20 48 41 4e 44 4c 45 20 48 44 52 41  lias HANDLE HDRA
4970: 57 44 49 42 3b 0a 0a 65 6e 75 6d 20 7b 0a 09 44  WDIB;..enum {..D
4980: 44 46 5f 30 30 30 31 09 09 09 3d 20 30 78 30 30  DF_0001...= 0x00
4990: 30 31 2c 0a 09 44 44 46 5f 55 50 44 41 54 45 09  01,..DDF_UPDATE.
49a0: 09 09 3d 20 30 78 30 30 30 32 2c 0a 09 44 44 46  ..= 0x0002,..DDF
49b0: 5f 53 41 4d 45 5f 48 44 43 09 09 3d 20 30 78 30  _SAME_HDC..= 0x0
49c0: 30 30 34 2c 0a 09 44 44 46 5f 53 41 4d 45 5f 44  004,..DDF_SAME_D
49d0: 52 41 57 09 09 3d 20 30 78 30 30 30 38 2c 0a 09  RAW..= 0x0008,..
49e0: 44 44 46 5f 44 4f 4e 54 44 52 41 57 09 09 3d 20  DDF_DONTDRAW..= 
49f0: 30 78 30 30 31 30 2c 0a 09 44 44 46 5f 41 4e 49  0x0010,..DDF_ANI
4a00: 4d 41 54 45 09 09 09 3d 20 30 78 30 30 32 30 2c  MATE...= 0x0020,
4a10: 0a 09 44 44 46 5f 42 55 46 46 45 52 09 09 09 3d  ..DDF_BUFFER...=
4a20: 20 30 78 30 30 34 30 2c 0a 09 44 44 46 5f 4a 55   0x0040,..DDF_JU
4a30: 53 54 44 52 41 57 49 54 09 09 3d 20 30 78 30 30  STDRAWIT..= 0x00
4a40: 38 30 2c 0a 09 44 44 46 5f 46 55 4c 4c 53 43 52  80,..DDF_FULLSCR
4a50: 45 45 4e 09 09 3d 20 30 78 30 31 30 30 2c 0a 09  EEN..= 0x0100,..
4a60: 44 44 46 5f 42 41 43 4b 47 52 4f 55 4e 44 50 41  DDF_BACKGROUNDPA
4a70: 4c 09 3d 20 30 78 30 32 30 30 2c 0a 09 44 44 46  L.= 0x0200,..DDF
4a80: 5f 4e 4f 54 4b 45 59 46 52 41 4d 45 09 09 3d 20  _NOTKEYFRAME..= 
4a90: 30 78 30 34 30 30 2c 0a 09 44 44 46 5f 48 55 52  0x0400,..DDF_HUR
4aa0: 52 59 55 50 09 09 09 3d 20 30 78 30 38 30 30 2c  RYUP...= 0x0800,
4ab0: 0a 09 44 44 46 5f 48 41 4c 46 54 4f 4e 45 09 09  ..DDF_HALFTONE..
4ac0: 3d 20 30 78 31 30 30 30 2c 0a 09 44 44 46 5f 32  = 0x1000,..DDF_2
4ad0: 30 30 30 09 09 09 3d 20 30 78 32 30 30 30 2c 0a  000...= 0x2000,.
4ae0: 09 44 44 46 5f 50 52 45 52 4f 4c 4c 09 09 09 3d  .DDF_PREROLL...=
4af0: 20 44 44 46 5f 44 4f 4e 54 44 52 41 57 2c 0a 09   DDF_DONTDRAW,..
4b00: 44 44 46 5f 53 41 4d 45 5f 44 49 42 09 09 3d 20  DDF_SAME_DIB..= 
4b10: 44 44 46 5f 53 41 4d 45 5f 44 52 41 57 2c 0a 09  DDF_SAME_DRAW,..
4b20: 44 44 46 5f 53 41 4d 45 5f 53 49 5a 45 09 09 3d  DDF_SAME_SIZE..=
4b30: 20 44 44 46 5f 53 41 4d 45 5f 44 52 41 57 2c 0a   DDF_SAME_DRAW,.
4b40: 7d 0a 0a 65 78 74 65 72 6e 20 28 57 69 6e 64 6f  }..extern (Windo
4b50: 77 73 29 20 7b 0a 09 42 4f 4f 4c 20 44 72 61 77  ws) {..BOOL Draw
4b60: 44 69 62 49 6e 69 74 28 29 3b 0a 09 48 44 52 41  DibInit();..HDRA
4b70: 57 44 49 42 20 44 72 61 77 44 69 62 4f 70 65 6e  WDIB DrawDibOpen
4b80: 28 29 3b 0a 09 42 4f 4f 4c 20 44 72 61 77 44 69  ();..BOOL DrawDi
4b90: 62 43 6c 6f 73 65 28 48 44 52 41 57 44 49 42 20  bClose(HDRAWDIB 
4ba0: 68 64 64 29 3b 0a 09 4c 50 56 4f 49 44 20 44 72  hdd);..LPVOID Dr
4bb0: 61 77 44 69 62 47 65 74 42 75 66 66 65 72 28 48  awDibGetBuffer(H
4bc0: 44 52 41 57 44 49 42 20 68 64 64 2c 20 4c 50 42  DRAWDIB hdd, LPB
4bd0: 49 54 4d 41 50 49 4e 46 4f 48 45 41 44 45 52 20  ITMAPINFOHEADER 
4be0: 6c 70 62 69 2c 20 44 57 4f 52 44 20 64 77 53 69  lpbi, DWORD dwSi
4bf0: 7a 65 2c 20 44 57 4f 52 44 20 64 77 46 6c 61 67  ze, DWORD dwFlag
4c00: 73 29 3b 0a 09 55 49 4e 54 20 44 72 61 77 44 69  s);..UINT DrawDi
4c10: 62 45 72 72 6f 72 28 48 44 52 41 57 44 49 42 20  bError(HDRAWDIB 
4c20: 68 64 64 29 3b 0a 09 48 50 41 4c 45 54 54 45 20  hdd);..HPALETTE 
4c30: 44 72 61 77 44 69 62 47 65 74 50 61 6c 65 74 74  DrawDibGetPalett
4c40: 65 28 48 44 52 41 57 44 49 42 20 68 64 64 29 3b  e(HDRAWDIB hdd);
4c50: 0a 09 42 4f 4f 4c 20 44 72 61 77 44 69 62 53 65  ..BOOL DrawDibSe
4c60: 74 50 61 6c 65 74 74 65 28 48 44 52 41 57 44 49  tPalette(HDRAWDI
4c70: 42 20 68 64 64 2c 20 48 50 41 4c 45 54 54 45 20  B hdd, HPALETTE 
4c80: 68 70 61 6c 29 3b 0a 09 42 4f 4f 4c 20 44 72 61  hpal);..BOOL Dra
4c90: 77 44 69 62 43 68 61 6e 67 65 50 61 6c 65 74 74  wDibChangePalett
4ca0: 65 28 48 44 52 41 57 44 49 42 20 68 64 64 2c 20  e(HDRAWDIB hdd, 
4cb0: 69 6e 74 20 69 53 74 61 72 74 2c 20 69 6e 74 20  int iStart, int 
4cc0: 69 4c 65 6e 2c 20 4c 50 50 41 4c 45 54 54 45 45  iLen, LPPALETTEE
4cd0: 4e 54 52 59 20 6c 70 70 65 29 3b 0a 09 55 49 4e  NTRY lppe);..UIN
4ce0: 54 20 44 72 61 77 44 69 62 52 65 61 6c 69 7a 65  T DrawDibRealize
4cf0: 28 48 44 52 41 57 44 49 42 20 68 64 64 2c 20 48  (HDRAWDIB hdd, H
4d00: 44 43 20 68 64 63 2c 20 42 4f 4f 4c 20 66 42 61  DC hdc, BOOL fBa
4d10: 63 6b 67 72 6f 75 6e 64 29 3b 0a 09 42 4f 4f 4c  ckground);..BOOL
4d20: 20 44 72 61 77 44 69 62 53 74 61 72 74 28 48 44   DrawDibStart(HD
4d30: 52 41 57 44 49 42 20 68 64 64 2c 20 44 57 4f 52  RAWDIB hdd, DWOR
4d40: 44 20 72 61 74 65 29 3b 0a 09 42 4f 4f 4c 20 44  D rate);..BOOL D
4d50: 72 61 77 44 69 62 53 74 6f 70 28 48 44 52 41 57  rawDibStop(HDRAW
4d60: 44 49 42 20 68 64 64 29 3b 0a 09 42 4f 4f 4c 20  DIB hdd);..BOOL 
4d70: 44 72 61 77 44 69 62 42 65 67 69 6e 28 48 44 52  DrawDibBegin(HDR
4d80: 41 57 44 49 42 20 68 64 64 2c 20 48 44 43 20 68  AWDIB hdd, HDC h
4d90: 64 63 2c 20 69 6e 74 20 64 78 44 73 74 2c 20 69  dc, int dxDst, i
4da0: 6e 74 20 64 79 44 73 74 2c 20 4c 50 42 49 54 4d  nt dyDst, LPBITM
4db0: 41 50 49 4e 46 4f 48 45 41 44 45 52 20 6c 70 62  APINFOHEADER lpb
4dc0: 69 2c 20 69 6e 74 20 64 78 53 72 63 2c 20 69 6e  i, int dxSrc, in
4dd0: 74 20 64 79 53 72 63 2c 20 55 49 4e 54 20 77 46  t dySrc, UINT wF
4de0: 6c 61 67 73 29 3b 0a 09 42 4f 4f 4c 20 44 72 61  lags);..BOOL Dra
4df0: 77 44 69 62 44 72 61 77 28 48 44 52 41 57 44 49  wDibDraw(HDRAWDI
4e00: 42 20 68 64 64 2c 20 48 44 43 20 68 64 63 2c 20  B hdd, HDC hdc, 
4e10: 69 6e 74 20 78 44 73 74 2c 20 69 6e 74 20 79 44  int xDst, int yD
4e20: 73 74 2c 20 69 6e 74 20 64 78 44 73 74 2c 20 69  st, int dxDst, i
4e30: 6e 74 20 64 79 44 73 74 2c 20 4c 50 42 49 54 4d  nt dyDst, LPBITM
4e40: 41 50 49 4e 46 4f 48 45 41 44 45 52 20 6c 70 62  APINFOHEADER lpb
4e50: 69 2c 0a 09 09 4c 50 56 4f 49 44 20 6c 70 42 69  i,...LPVOID lpBi
4e60: 74 73 2c 20 69 6e 74 20 78 53 72 63 2c 20 69 6e  ts, int xSrc, in
4e70: 74 20 79 53 72 63 2c 20 69 6e 74 20 64 78 53 72  t ySrc, int dxSr
4e80: 63 2c 20 69 6e 74 20 64 79 53 72 63 2c 20 55 49  c, int dySrc, UI
4e90: 4e 54 20 77 46 6c 61 67 73 29 3b 0a 7d 0a 0a 42  NT wFlags);.}..B
4ea0: 4f 4f 4c 20 44 72 61 77 44 69 62 55 70 64 61 74  OOL DrawDibUpdat
4eb0: 65 28 48 44 52 41 57 44 49 42 20 68 64 64 2c 20  e(HDRAWDIB hdd, 
4ec0: 48 44 43 20 68 64 63 2c 20 69 6e 74 20 78 2c 20  HDC hdc, int x, 
4ed0: 69 6e 74 20 79 29 20 7b 0a 09 72 65 74 75 72 6e  int y) {..return
4ee0: 20 44 72 61 77 44 69 62 44 72 61 77 28 68 64 64   DrawDibDraw(hdd
4ef0: 2c 20 68 64 63 2c 20 78 2c 20 79 2c 20 30 2c 20  , hdc, x, y, 0, 
4f00: 30 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 30  0, null, null, 0
4f10: 2c 20 30 2c 20 30 2c 20 30 2c 20 44 44 46 5f 55  , 0, 0, 0, DDF_U
4f20: 50 44 41 54 45 29 3b 0a 7d 0a 0a 65 78 74 65 72  PDATE);.}..exter
4f30: 6e 20 28 57 69 6e 64 6f 77 73 29 20 7b 0a 09 42  n (Windows) {..B
4f40: 4f 4f 4c 20 44 72 61 77 44 69 62 45 6e 64 28 48  OOL DrawDibEnd(H
4f50: 44 52 41 57 44 49 42 20 68 64 64 29 3b 0a 7d 0a  DRAWDIB hdd);.}.
4f60: 0a 73 74 72 75 63 74 20 44 52 41 57 44 49 42 54  .struct DRAWDIBT
4f70: 49 4d 45 20 7b 0a 20 20 20 20 4c 4f 4e 47 20 20  IME {.    LONG  
4f80: 20 20 74 69 6d 65 43 6f 75 6e 74 3b 0a 20 20 20    timeCount;.   
4f90: 20 4c 4f 4e 47 20 20 20 20 74 69 6d 65 44 72 61   LONG    timeDra
4fa0: 77 3b 0a 20 20 20 20 4c 4f 4e 47 20 20 20 20 74  w;.    LONG    t
4fb0: 69 6d 65 44 65 63 6f 6d 70 72 65 73 73 3b 0a 20  imeDecompress;. 
4fc0: 20 20 20 4c 4f 4e 47 20 20 20 20 74 69 6d 65 44     LONG    timeD
4fd0: 69 74 68 65 72 3b 0a 20 20 20 20 4c 4f 4e 47 20  ither;.    LONG 
4fe0: 20 20 20 74 69 6d 65 53 74 72 65 74 63 68 3b 0a     timeStretch;.
4ff0: 20 20 20 20 4c 4f 4e 47 20 20 20 20 74 69 6d 65      LONG    time
5000: 42 6c 74 3b 0a 20 20 20 20 4c 4f 4e 47 20 20 20  Blt;.    LONG   
5010: 20 74 69 6d 65 53 65 74 44 49 42 69 74 73 3b 0a   timeSetDIBits;.
5020: 7d 0a 61 6c 69 61 73 20 44 52 41 57 44 49 42 54  }.alias DRAWDIBT
5030: 49 4d 45 2a 20 4c 50 44 52 41 57 44 49 42 54 49  IME* LPDRAWDIBTI
5040: 4d 45 3b 0a 0a 65 78 74 65 72 6e 20 28 57 69 6e  ME;..extern (Win
5050: 64 6f 77 73 29 20 7b 0a 09 42 4f 4f 4c 20 44 72  dows) {..BOOL Dr
5060: 61 77 44 69 62 54 69 6d 65 28 48 44 52 41 57 44  awDibTime(HDRAWD
5070: 49 42 20 68 64 64 2c 20 4c 50 44 52 41 57 44 49  IB hdd, LPDRAWDI
5080: 42 54 49 4d 45 20 6c 70 64 64 74 69 6d 65 29 3b  BTIME lpddtime);
5090: 0a 7d 0a 0a 65 6e 75 6d 20 7b 0a 09 50 44 5f 43  .}..enum {..PD_C
50a0: 41 4e 5f 44 52 41 57 5f 44 49 42 09 09 09 3d 20  AN_DRAW_DIB...= 
50b0: 30 78 30 30 30 31 2c 0a 09 50 44 5f 43 41 4e 5f  0x0001,..PD_CAN_
50c0: 53 54 52 45 54 43 48 44 49 42 09 09 3d 20 30 78  STRETCHDIB..= 0x
50d0: 30 30 30 32 2c 0a 09 50 44 5f 53 54 52 45 54 43  0002,..PD_STRETC
50e0: 48 44 49 42 5f 31 5f 31 5f 4f 4b 09 3d 20 30 78  HDIB_1_1_OK.= 0x
50f0: 30 30 30 34 2c 0a 09 50 44 5f 53 54 52 45 54 43  0004,..PD_STRETC
5100: 48 44 49 42 5f 31 5f 32 5f 4f 4b 09 3d 20 30 78  HDIB_1_2_OK.= 0x
5110: 30 30 30 38 2c 0a 09 50 44 5f 53 54 52 45 54 43  0008,..PD_STRETC
5120: 48 44 49 42 5f 31 5f 4e 5f 4f 4b 09 3d 20 30 78  HDIB_1_N_OK.= 0x
5130: 30 30 31 30 2c 0a 7d 0a 0a 65 78 74 65 72 6e 20  0010,.}..extern 
5140: 28 57 69 6e 64 6f 77 73 29 20 7b 0a 09 4c 52 45  (Windows) {..LRE
5150: 53 55 4c 54 20 44 72 61 77 44 69 62 50 72 6f 66  SULT DrawDibProf
5160: 69 6c 65 44 69 73 70 6c 61 79 28 4c 50 42 49 54  ileDisplay(LPBIT
5170: 4d 41 50 49 4e 46 4f 48 45 41 44 45 52 20 6c 70  MAPINFOHEADER lp
5180: 62 69 29 3b 0a 09 76 6f 69 64 20 53 74 72 65 74  bi);..void Stret
5190: 63 68 44 49 42 28 4c 50 42 49 54 4d 41 50 49 4e  chDIB(LPBITMAPIN
51a0: 46 4f 48 45 41 44 45 52 20 62 69 44 73 74 2c 20  FOHEADER biDst, 
51b0: 4c 50 56 4f 49 44 20 6c 70 44 73 74 2c 20 69 6e  LPVOID lpDst, in
51c0: 74 09 44 73 74 58 2c 20 69 6e 74 20 44 73 74 59  t.DstX, int DstY
51d0: 2c 0a 09 09 69 6e 74 20 44 73 74 58 45 2c 20 69  ,...int DstXE, i
51e0: 6e 74 20 44 73 74 59 45 2c 20 4c 50 42 49 54 4d  nt DstYE, LPBITM
51f0: 41 50 49 4e 46 4f 48 45 41 44 45 52 20 62 69 53  APINFOHEADER biS
5200: 72 63 2c 20 4c 50 56 4f 49 44 20 6c 70 53 72 63  rc, LPVOID lpSrc
5210: 2c 0a 09 09 69 6e 74 20 53 72 63 58 2c 20 69 6e  ,...int SrcX, in
5220: 74 20 53 72 63 59 2c 20 69 6e 74 20 53 72 63 58  t SrcY, int SrcX
5230: 45 2c 20 69 6e 74 20 53 72 63 59 45 29 3b 0a 7d  E, int SrcYE);.}
5240: 20 09 0a 0a 61 6c 69 61 73 20 44 57 4f 52 44 20   ...alias DWORD 
5250: 46 4f 55 52 43 43 3b 0a 0a 61 6c 69 61 73 20 57  FOURCC;..alias W
5260: 4f 52 44 20 54 57 4f 43 43 3b 0a 0a 63 6f 6e 73  ORD TWOCC;..cons
5270: 74 20 66 6f 72 6d 74 79 70 65 41 56 49 09 09 09  t formtypeAVI...
5280: 3d 20 6d 6d 69 6f 46 4f 55 52 43 43 21 28 27 41  = mmioFOURCC!('A
5290: 27 2c 20 27 56 27 2c 20 27 49 27 2c 20 27 20 27  ', 'V', 'I', ' '
52a0: 29 3b 0a 63 6f 6e 73 74 20 6c 69 73 74 74 79 70  );.const listtyp
52b0: 65 41 56 49 48 45 41 44 45 52 09 09 3d 20 6d 6d  eAVIHEADER..= mm
52c0: 69 6f 46 4f 55 52 43 43 21 28 27 68 27 2c 20 27  ioFOURCC!('h', '
52d0: 64 27 2c 20 27 72 27 2c 20 27 6c 27 29 3b 0a 63  d', 'r', 'l');.c
52e0: 6f 6e 73 74 20 63 6b 69 64 41 56 49 4d 41 49 4e  onst ckidAVIMAIN
52f0: 48 44 52 09 09 3d 20 6d 6d 69 6f 46 4f 55 52 43  HDR..= mmioFOURC
5300: 43 21 28 27 61 27 2c 20 27 76 27 2c 20 27 69 27  C!('a', 'v', 'i'
5310: 2c 20 27 68 27 29 3b 0a 63 6f 6e 73 74 20 6c 69  , 'h');.const li
5320: 73 74 74 79 70 65 53 54 52 45 41 4d 48 45 41 44  sttypeSTREAMHEAD
5330: 45 52 09 3d 20 6d 6d 69 6f 46 4f 55 52 43 43 21  ER.= mmioFOURCC!
5340: 28 27 73 27 2c 20 27 74 27 2c 20 27 72 27 2c 20  ('s', 't', 'r', 
5350: 27 6c 27 29 3b 0a 63 6f 6e 73 74 20 63 6b 69 64  'l');.const ckid
5360: 53 54 52 45 41 4d 48 45 41 44 45 52 09 09 3d 20  STREAMHEADER..= 
5370: 6d 6d 69 6f 46 4f 55 52 43 43 21 28 27 73 27 2c  mmioFOURCC!('s',
5380: 20 27 74 27 2c 20 27 72 27 2c 20 27 68 27 29 3b   't', 'r', 'h');
5390: 0a 63 6f 6e 73 74 20 63 6b 69 64 53 54 52 45 41  .const ckidSTREA
53a0: 4d 46 4f 52 4d 41 54 09 09 3d 20 6d 6d 69 6f 46  MFORMAT..= mmioF
53b0: 4f 55 52 43 43 21 28 27 73 27 2c 20 27 74 27 2c  OURCC!('s', 't',
53c0: 20 27 72 27 2c 20 27 66 27 29 3b 0a 63 6f 6e 73   'r', 'f');.cons
53d0: 74 20 63 6b 69 64 53 54 52 45 41 4d 48 41 4e 44  t ckidSTREAMHAND
53e0: 4c 45 52 44 41 54 41 09 3d 20 6d 6d 69 6f 46 4f  LERDATA.= mmioFO
53f0: 55 52 43 43 21 28 27 73 27 2c 20 27 74 27 2c 20  URCC!('s', 't', 
5400: 27 72 27 2c 20 27 64 27 29 3b 0a 63 6f 6e 73 74  'r', 'd');.const
5410: 20 63 6b 69 64 53 54 52 45 41 4d 4e 41 4d 45 09   ckidSTREAMNAME.
5420: 09 3d 20 6d 6d 69 6f 46 4f 55 52 43 43 21 28 27  .= mmioFOURCC!('
5430: 73 27 2c 20 27 74 27 2c 20 27 72 27 2c 20 27 6e  s', 't', 'r', 'n
5440: 27 29 3b 0a 63 6f 6e 73 74 20 6c 69 73 74 74 79  ');.const listty
5450: 70 65 41 56 49 4d 4f 56 49 45 09 09 3d 20 6d 6d  peAVIMOVIE..= mm
5460: 69 6f 46 4f 55 52 43 43 21 28 27 6d 27 2c 20 27  ioFOURCC!('m', '
5470: 6f 27 2c 20 27 76 27 2c 20 27 69 27 29 3b 0a 63  o', 'v', 'i');.c
5480: 6f 6e 73 74 20 6c 69 73 74 74 79 70 65 41 56 49  onst listtypeAVI
5490: 52 45 43 4f 52 44 09 09 3d 20 6d 6d 69 6f 46 4f  RECORD..= mmioFO
54a0: 55 52 43 43 21 28 27 72 27 2c 20 27 65 27 2c 20  URCC!('r', 'e', 
54b0: 27 63 27 2c 20 27 20 27 29 3b 0a 63 6f 6e 73 74  'c', ' ');.const
54c0: 20 63 6b 69 64 41 56 49 4e 45 57 49 4e 44 45 58   ckidAVINEWINDEX
54d0: 09 09 3d 20 6d 6d 69 6f 46 4f 55 52 43 43 21 28  ..= mmioFOURCC!(
54e0: 27 69 27 2c 20 27 64 27 2c 20 27 78 27 2c 20 27  'i', 'd', 'x', '
54f0: 31 27 29 3b 0a 63 6f 6e 73 74 20 73 74 72 65 61  1');.const strea
5500: 6d 74 79 70 65 56 49 44 45 4f 09 09 3d 20 6d 6d  mtypeVIDEO..= mm
5510: 69 6f 46 4f 55 52 43 43 21 28 27 76 27 2c 20 27  ioFOURCC!('v', '
5520: 69 27 2c 20 27 64 27 2c 20 27 73 27 29 3b 0a 63  i', 'd', 's');.c
5530: 6f 6e 73 74 20 73 74 72 65 61 6d 74 79 70 65 41  onst streamtypeA
5540: 55 44 49 4f 09 09 3d 20 6d 6d 69 6f 46 4f 55 52  UDIO..= mmioFOUR
5550: 43 43 21 28 27 61 27 2c 20 27 75 27 2c 20 27 64  CC!('a', 'u', 'd
5560: 27 2c 20 27 73 27 29 3b 0a 63 6f 6e 73 74 20 73  ', 's');.const s
5570: 74 72 65 61 6d 74 79 70 65 4d 49 44 49 09 09 3d  treamtypeMIDI..=
5580: 20 6d 6d 69 6f 46 4f 55 52 43 43 21 28 27 6d 27   mmioFOURCC!('m'
5590: 2c 20 27 69 27 2c 20 27 64 27 2c 20 27 73 27 29  , 'i', 'd', 's')
55a0: 3b 0a 63 6f 6e 73 74 20 73 74 72 65 61 6d 74 79  ;.const streamty
55b0: 70 65 54 45 58 54 09 09 3d 20 6d 6d 69 6f 46 4f  peTEXT..= mmioFO
55c0: 55 52 43 43 21 28 27 74 27 2c 20 27 78 27 2c 20  URCC!('t', 'x', 
55d0: 27 74 27 2c 20 27 73 27 29 3b 0a 0a 63 6f 6e 73  't', 's');..cons
55e0: 74 20 63 6b 74 79 70 65 44 49 42 62 69 74 73 09  t cktypeDIBbits.
55f0: 09 09 3d 20 61 76 69 54 57 4f 43 43 21 28 27 64  ..= aviTWOCC!('d
5600: 27 2c 20 27 62 27 29 3b 0a 63 6f 6e 73 74 20 63  ', 'b');.const c
5610: 6b 74 79 70 65 44 49 42 63 6f 6d 70 72 65 73 73  ktypeDIBcompress
5620: 65 64 09 3d 20 61 76 69 54 57 4f 43 43 21 28 27  ed.= aviTWOCC!('
5630: 64 27 2c 20 27 63 27 29 3b 0a 63 6f 6e 73 74 20  d', 'c');.const 
5640: 63 6b 74 79 70 65 50 41 4c 63 68 61 6e 67 65 09  cktypePALchange.
5650: 09 3d 20 61 76 69 54 57 4f 43 43 21 28 27 70 27  .= aviTWOCC!('p'
5660: 2c 20 27 63 27 29 3b 0a 63 6f 6e 73 74 20 63 6b  , 'c');.const ck
5670: 74 79 70 65 57 41 56 45 62 79 74 65 73 09 09 3d  typeWAVEbytes..=
5680: 20 61 76 69 54 57 4f 43 43 21 28 27 77 27 2c 20   aviTWOCC!('w', 
5690: 27 62 27 29 3b 0a 0a 63 6f 6e 73 74 20 63 6b 69  'b');..const cki
56a0: 64 41 56 49 50 41 44 44 49 4e 47 09 09 3d 20 6d  dAVIPADDING..= m
56b0: 6d 69 6f 46 4f 55 52 43 43 21 28 27 4a 27 2c 20  mioFOURCC!('J', 
56c0: 27 55 27 2c 20 27 4e 27 2c 20 27 4b 27 29 3b 0a  'U', 'N', 'K');.
56d0: 0a 44 57 4f 52 44 20 46 72 6f 6d 48 65 78 28 63  .DWORD FromHex(c
56e0: 68 61 72 20 6e 29 20 7b 0a 09 72 65 74 75 72 6e  har n) {..return
56f0: 20 28 6e 20 3e 3d 20 27 41 27 29 20 3f 20 6e 20   (n >= 'A') ? n 
5700: 2b 20 31 30 20 2d 20 27 41 27 20 3a 20 6e 20 2d  + 10 - 'A' : n -
5710: 20 27 30 27 3b 0a 7d 0a 0a 57 4f 52 44 20 53 74   '0';.}..WORD St
5720: 72 65 61 6d 46 72 6f 6d 46 4f 55 52 43 43 28 44  reamFromFOURCC(D
5730: 57 4f 52 44 20 66 63 63 29 20 7b 0a 09 72 65 74  WORD fcc) {..ret
5740: 75 72 6e 20 63 61 73 74 28 57 4f 52 44 29 28 28  urn cast(WORD)((
5750: 46 72 6f 6d 48 65 78 28 4c 4f 42 59 54 45 28 4c  FromHex(LOBYTE(L
5760: 4f 57 4f 52 44 28 66 63 63 29 29 29 20 3c 3c 20  OWORD(fcc))) << 
5770: 34 29 20 2b 20 28 46 72 6f 6d 48 65 78 28 48 49  4) + (FromHex(HI
5780: 42 59 54 45 28 4c 4f 57 4f 52 44 28 66 63 63 29  BYTE(LOWORD(fcc)
5790: 29 29 29 29 3b 0a 7d 0a 0a 57 4f 52 44 20 54 57  ))));.}..WORD TW
57a0: 4f 43 43 46 72 6f 6d 46 4f 55 52 43 43 28 44 57  OCCFromFOURCC(DW
57b0: 4f 52 44 20 66 63 63 29 20 7b 0a 09 72 65 74 75  ORD fcc) {..retu
57c0: 72 6e 20 48 49 57 4f 52 44 28 66 63 63 29 3b 0a  rn HIWORD(fcc);.
57d0: 7d 0a 0a 42 59 54 45 20 54 6f 48 65 78 28 44 57  }..BYTE ToHex(DW
57e0: 4f 52 44 20 6e 29 20 7b 0a 09 72 65 74 75 72 6e  ORD n) {..return
57f0: 20 63 61 73 74 28 42 59 54 45 29 28 28 6e 20 3e   cast(BYTE)((n >
5800: 20 39 29 20 3f 20 6e 20 2d 20 31 30 20 2b 20 27   9) ? n - 10 + '
5810: 41 27 20 3a 20 6e 20 2b 20 27 30 27 29 3b 0a 7d  A' : n + '0');.}
5820: 0a 0a 44 57 4f 52 44 20 4d 41 4b 45 41 56 49 43  ..DWORD MAKEAVIC
5830: 4b 49 44 28 57 4f 52 44 20 74 63 63 2c 20 57 4f  KID(WORD tcc, WO
5840: 52 44 20 73 74 72 65 61 6d 29 20 7b 0a 09 72 65  RD stream) {..re
5850: 74 75 72 6e 20 4d 41 4b 45 4c 4f 4e 47 28 63 61  turn MAKELONG(ca
5860: 73 74 28 57 4f 52 44 29 28 28 54 6f 48 65 78 28  st(WORD)((ToHex(
5870: 73 74 72 65 61 6d 20 26 20 30 78 30 66 29 20 3c  stream & 0x0f) <
5880: 3c 20 38 29 20 7c 20 28 54 6f 48 65 78 28 28 73  < 8) | (ToHex((s
5890: 74 72 65 61 6d 20 26 20 30 78 66 30 29 20 3e 3e  tream & 0xf0) >>
58a0: 20 34 29 29 29 2c 20 74 63 63 29 3b 0a 7d 0a 0a   4))), tcc);.}..
58b0: 65 6e 75 6d 20 7b 0a 09 41 56 49 46 5f 48 41 53  enum {..AVIF_HAS
58c0: 49 4e 44 45 58 09 09 3d 20 30 78 30 30 30 30 30  INDEX..= 0x00000
58d0: 30 31 30 2c 0a 09 41 56 49 46 5f 4d 55 53 54 55  010,..AVIF_MUSTU
58e0: 53 45 49 4e 44 45 58 09 3d 20 30 78 30 30 30 30  SEINDEX.= 0x0000
58f0: 30 30 32 30 2c 0a 09 41 56 49 46 5f 49 53 49 4e  0020,..AVIF_ISIN
5900: 54 45 52 4c 45 41 56 45 44 09 3d 20 30 78 30 30  TERLEAVED.= 0x00
5910: 30 30 30 31 30 30 2c 0a 09 41 56 49 46 5f 57 41  000100,..AVIF_WA
5920: 53 43 41 50 54 55 52 45 46 49 4c 45 09 3d 20 30  SCAPTUREFILE.= 0
5930: 78 30 30 30 31 30 30 30 30 2c 0a 09 41 56 49 46  x00010000,..AVIF
5940: 5f 43 4f 50 59 52 49 47 48 54 45 44 09 3d 20 30  _COPYRIGHTED.= 0
5950: 78 30 30 30 32 30 30 30 30 2c 0a 7d 0a 0a 63 6f  x00020000,.}..co
5960: 6e 73 74 20 41 56 49 5f 48 45 41 44 45 52 53 49  nst AVI_HEADERSI
5970: 5a 45 20 3d 20 32 30 34 38 3b 0a 0a 73 74 72 75  ZE = 2048;..stru
5980: 63 74 20 4d 61 69 6e 41 56 49 48 65 61 64 65 72  ct MainAVIHeader
5990: 20 7b 0a 09 44 57 4f 52 44 20 64 77 4d 69 63 72   {..DWORD dwMicr
59a0: 6f 53 65 63 50 65 72 46 72 61 6d 65 3b 0a 09 44  oSecPerFrame;..D
59b0: 57 4f 52 44 20 64 77 4d 61 78 42 79 74 65 73 50  WORD dwMaxBytesP
59c0: 65 72 53 65 63 3b 0a 09 44 57 4f 52 44 20 64 77  erSec;..DWORD dw
59d0: 50 61 64 64 69 6e 67 47 72 61 6e 75 6c 61 72 69  PaddingGranulari
59e0: 74 79 3b 0a 09 44 57 4f 52 44 20 64 77 46 6c 61  ty;..DWORD dwFla
59f0: 67 73 3b 0a 09 44 57 4f 52 44 20 64 77 54 6f 74  gs;..DWORD dwTot
5a00: 61 6c 46 72 61 6d 65 73 3b 0a 09 44 57 4f 52 44  alFrames;..DWORD
5a10: 20 64 77 49 6e 69 74 69 61 6c 46 72 61 6d 65 73   dwInitialFrames
5a20: 3b 0a 09 44 57 4f 52 44 20 64 77 53 74 72 65 61  ;..DWORD dwStrea
5a30: 6d 73 3b 0a 09 44 57 4f 52 44 20 64 77 53 75 67  ms;..DWORD dwSug
5a40: 67 65 73 74 65 64 42 75 66 66 65 72 53 69 7a 65  gestedBufferSize
5a50: 3b 0a 09 44 57 4f 52 44 20 64 77 57 69 64 74 68  ;..DWORD dwWidth
5a60: 3b 0a 09 44 57 4f 52 44 20 64 77 48 65 69 67 68  ;..DWORD dwHeigh
5a70: 74 3b 0a 09 44 57 4f 52 44 20 64 77 52 65 73 65  t;..DWORD dwRese
5a80: 72 76 65 64 5b 34 5d 3b 0a 7d 0a 0a 63 6f 6e 73  rved[4];.}..cons
5a90: 74 20 41 56 49 53 46 5f 44 49 53 41 42 4c 45 44  t AVISF_DISABLED
5aa0: 20 3d 20 30 78 30 30 30 30 30 30 30 31 3b 0a 0a   = 0x00000001;..
5ab0: 63 6f 6e 73 74 20 41 56 49 53 46 5f 56 49 44 45  const AVISF_VIDE
5ac0: 4f 5f 50 41 4c 43 48 41 4e 47 45 53 20 3d 20 30  O_PALCHANGES = 0
5ad0: 78 30 30 30 31 30 30 30 30 3b 0a 0a 73 74 72 75  x00010000;..stru
5ae0: 63 74 20 41 56 49 53 74 72 65 61 6d 48 65 61 64  ct AVIStreamHead
5af0: 65 72 20 7b 0a 09 46 4f 55 52 43 43 09 09 66 63  er {..FOURCC..fc
5b00: 63 54 79 70 65 3b 0a 09 46 4f 55 52 43 43 09 09  cType;..FOURCC..
5b10: 66 63 63 48 61 6e 64 6c 65 72 3b 0a 09 44 57 4f  fccHandler;..DWO
5b20: 52 44 09 09 64 77 46 6c 61 67 73 3b 0a 09 57 4f  RD..dwFlags;..WO
5b30: 52 44 09 09 77 50 72 69 6f 72 69 74 79 3b 0a 09  RD..wPriority;..
5b40: 57 4f 52 44 09 09 77 4c 61 6e 67 75 61 67 65 3b  WORD..wLanguage;
5b50: 0a 09 44 57 4f 52 44 09 09 64 77 49 6e 69 74 69  ..DWORD..dwIniti
5b60: 61 6c 46 72 61 6d 65 73 3b 0a 09 44 57 4f 52 44  alFrames;..DWORD
5b70: 09 09 64 77 53 63 61 6c 65 3b 09 0a 09 44 57 4f  ..dwScale;...DWO
5b80: 52 44 09 09 64 77 52 61 74 65 3b 0a 09 44 57 4f  RD..dwRate;..DWO
5b90: 52 44 09 09 64 77 53 74 61 72 74 3b 0a 09 44 57  RD..dwStart;..DW
5ba0: 4f 52 44 09 09 64 77 4c 65 6e 67 74 68 3b 0a 09  ORD..dwLength;..
5bb0: 44 57 4f 52 44 09 09 64 77 53 75 67 67 65 73 74  DWORD..dwSuggest
5bc0: 65 64 42 75 66 66 65 72 53 69 7a 65 3b 0a 09 44  edBufferSize;..D
5bd0: 57 4f 52 44 09 09 64 77 51 75 61 6c 69 74 79 3b  WORD..dwQuality;
5be0: 0a 09 44 57 4f 52 44 09 09 64 77 53 61 6d 70 6c  ..DWORD..dwSampl
5bf0: 65 53 69 7a 65 3b 0a 09 52 45 43 54 09 09 72 63  eSize;..RECT..rc
5c00: 46 72 61 6d 65 3b 0a 7d 0a 0a 65 6e 75 6d 20 7b  Frame;.}..enum {
5c10: 0a 09 41 56 49 49 46 5f 46 49 52 53 54 50 41 52  ..AVIIF_FIRSTPAR
5c20: 54 09 3d 20 30 78 30 30 30 30 30 30 32 30 4c 2c  T.= 0x00000020L,
5c30: 0a 09 41 56 49 49 46 5f 4c 41 53 54 50 41 52 54  ..AVIIF_LASTPART
5c40: 09 3d 20 30 78 30 30 30 30 30 30 34 30 4c 2c 0a  .= 0x00000040L,.
5c50: 09 41 56 49 49 46 5f 4d 49 44 50 41 52 54 09 3d  .AVIIF_MIDPART.=
5c60: 20 28 41 56 49 49 46 5f 4c 41 53 54 50 41 52 54   (AVIIF_LASTPART
5c70: 7c 41 56 49 49 46 5f 46 49 52 53 54 50 41 52 54  |AVIIF_FIRSTPART
5c80: 29 2c 0a 09 41 56 49 49 46 5f 4e 4f 54 49 4d 45  ),..AVIIF_NOTIME
5c90: 09 3d 20 30 78 30 30 30 30 30 31 30 30 4c 2c 0a  .= 0x00000100L,.
5ca0: 09 41 56 49 49 46 5f 43 4f 4d 50 55 53 45 09 3d  .AVIIF_COMPUSE.=
5cb0: 20 30 78 30 46 46 46 30 30 30 30 4c 2c 0a 7d 0a   0x0FFF0000L,.}.
5cc0: 0a 73 74 72 75 63 74 20 41 56 49 49 4e 44 45 58  .struct AVIINDEX
5cd0: 45 4e 54 52 59 20 7b 0a 09 44 57 4f 52 44 09 09  ENTRY {..DWORD..
5ce0: 63 6b 69 64 3b 0a 09 44 57 4f 52 44 09 09 64 77  ckid;..DWORD..dw
5cf0: 46 6c 61 67 73 3b 0a 09 44 57 4f 52 44 09 09 64  Flags;..DWORD..d
5d00: 77 43 68 75 6e 6b 4f 66 66 73 65 74 3b 0a 09 44  wChunkOffset;..D
5d10: 57 4f 52 44 09 09 64 77 43 68 75 6e 6b 4c 65 6e  WORD..dwChunkLen
5d20: 67 74 68 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 41  gth;.}..struct A
5d30: 56 49 50 41 4c 43 48 41 4e 47 45 20 7b 0a 09 42  VIPALCHANGE {..B
5d40: 59 54 45 09 09 62 46 69 72 73 74 45 6e 74 72 79  YTE..bFirstEntry
5d50: 3b 0a 09 42 59 54 45 09 09 62 4e 75 6d 45 6e 74  ;..BYTE..bNumEnt
5d60: 72 69 65 73 3b 0a 09 57 4f 52 44 09 09 77 46 6c  ries;..WORD..wFl
5d70: 61 67 73 3b 0a 09 50 41 4c 45 54 54 45 45 4e 54  ags;..PALETTEENT
5d80: 52 59 09 70 65 4e 65 77 5b 5d 3b 0a 7d 0a 0a 63  RY.peNew[];.}..c
5d90: 6f 6e 73 74 20 41 56 49 47 45 54 46 52 41 4d 45  onst AVIGETFRAME
5da0: 46 5f 42 45 53 54 44 49 53 50 4c 41 59 46 4d 54  F_BESTDISPLAYFMT
5db0: 20 3d 20 31 3b 0a 0a 73 74 72 75 63 74 20 41 56   = 1;..struct AV
5dc0: 49 53 54 52 45 41 4d 49 4e 46 4f 57 20 7b 0a 09  ISTREAMINFOW {..
5dd0: 44 57 4f 52 44 09 66 63 63 54 79 70 65 3b 0a 09  DWORD.fccType;..
5de0: 44 57 4f 52 44 09 66 63 63 48 61 6e 64 6c 65 72  DWORD.fccHandler
5df0: 3b 0a 09 44 57 4f 52 44 09 64 77 46 6c 61 67 73  ;..DWORD.dwFlags
5e00: 3b 0a 09 44 57 4f 52 44 09 64 77 43 61 70 73 3b  ;..DWORD.dwCaps;
5e10: 0a 09 57 4f 52 44 09 77 50 72 69 6f 72 69 74 79  ..WORD.wPriority
5e20: 3b 0a 09 57 4f 52 44 09 77 4c 61 6e 67 75 61 67  ;..WORD.wLanguag
5e30: 65 3b 0a 09 44 57 4f 52 44 09 64 77 53 63 61 6c  e;..DWORD.dwScal
5e40: 65 3b 0a 09 44 57 4f 52 44 09 64 77 52 61 74 65  e;..DWORD.dwRate
5e50: 3b 0a 09 44 57 4f 52 44 09 64 77 53 74 61 72 74  ;..DWORD.dwStart
5e60: 3b 0a 09 44 57 4f 52 44 09 64 77 4c 65 6e 67 74  ;..DWORD.dwLengt
5e70: 68 3b 0a 09 44 57 4f 52 44 09 64 77 49 6e 69 74  h;..DWORD.dwInit
5e80: 69 61 6c 46 72 61 6d 65 73 3b 0a 09 44 57 4f 52  ialFrames;..DWOR
5e90: 44 09 64 77 53 75 67 67 65 73 74 65 64 42 75 66  D.dwSuggestedBuf
5ea0: 66 65 72 53 69 7a 65 3b 0a 09 44 57 4f 52 44 09  ferSize;..DWORD.
5eb0: 64 77 51 75 61 6c 69 74 79 3b 0a 09 44 57 4f 52  dwQuality;..DWOR
5ec0: 44 09 64 77 53 61 6d 70 6c 65 53 69 7a 65 3b 0a  D.dwSampleSize;.
5ed0: 09 52 45 43 54 09 72 63 46 72 61 6d 65 3b 0a 09  .RECT.rcFrame;..
5ee0: 44 57 4f 52 44 09 64 77 45 64 69 74 43 6f 75 6e  DWORD.dwEditCoun
5ef0: 74 3b 0a 09 44 57 4f 52 44 09 64 77 46 6f 72 6d  t;..DWORD.dwForm
5f00: 61 74 43 68 61 6e 67 65 43 6f 75 6e 74 3b 0a 09  atChangeCount;..
5f10: 57 43 48 41 52 09 73 7a 4e 61 6d 65 5b 36 34 5d  WCHAR.szName[64]
5f20: 3b 0a 7d 0a 61 6c 69 61 73 20 41 56 49 53 54 52  ;.}.alias AVISTR
5f30: 45 41 4d 49 4e 46 4f 57 2a 20 4c 50 41 56 49 53  EAMINFOW* LPAVIS
5f40: 54 52 45 41 4d 49 4e 46 4f 57 3b 0a 0a 73 74 72  TREAMINFOW;..str
5f50: 75 63 74 20 41 56 49 53 54 52 45 41 4d 49 4e 46  uct AVISTREAMINF
5f60: 4f 41 20 7b 0a 09 44 57 4f 52 44 09 66 63 63 54  OA {..DWORD.fccT
5f70: 79 70 65 3b 0a 09 44 57 4f 52 44 09 66 63 63 48  ype;..DWORD.fccH
5f80: 61 6e 64 6c 65 72 3b 0a 09 44 57 4f 52 44 09 64  andler;..DWORD.d
5f90: 77 46 6c 61 67 73 3b 0a 09 44 57 4f 52 44 09 64  wFlags;..DWORD.d
5fa0: 77 43 61 70 73 3b 0a 09 57 4f 52 44 09 77 50 72  wCaps;..WORD.wPr
5fb0: 69 6f 72 69 74 79 3b 0a 09 57 4f 52 44 09 77 4c  iority;..WORD.wL
5fc0: 61 6e 67 75 61 67 65 3b 0a 09 44 57 4f 52 44 09  anguage;..DWORD.
5fd0: 64 77 53 63 61 6c 65 3b 0a 09 44 57 4f 52 44 09  dwScale;..DWORD.
5fe0: 64 77 52 61 74 65 3b 0a 09 44 57 4f 52 44 09 64  dwRate;..DWORD.d
5ff0: 77 53 74 61 72 74 3b 0a 09 44 57 4f 52 44 09 64  wStart;..DWORD.d
6000: 77 4c 65 6e 67 74 68 3b 0a 09 44 57 4f 52 44 09  wLength;..DWORD.
6010: 64 77 49 6e 69 74 69 61 6c 46 72 61 6d 65 73 3b  dwInitialFrames;
6020: 0a 09 44 57 4f 52 44 09 64 77 53 75 67 67 65 73  ..DWORD.dwSugges
6030: 74 65 64 42 75 66 66 65 72 53 69 7a 65 3b 0a 09  tedBufferSize;..
6040: 44 57 4f 52 44 09 64 77 51 75 61 6c 69 74 79 3b  DWORD.dwQuality;
6050: 0a 09 44 57 4f 52 44 09 64 77 53 61 6d 70 6c 65  ..DWORD.dwSample
6060: 53 69 7a 65 3b 0a 09 52 45 43 54 09 72 63 46 72  Size;..RECT.rcFr
6070: 61 6d 65 3b 0a 09 44 57 4f 52 44 09 64 77 45 64  ame;..DWORD.dwEd
6080: 69 74 43 6f 75 6e 74 3b 0a 09 44 57 4f 52 44 09  itCount;..DWORD.
6090: 64 77 46 6f 72 6d 61 74 43 68 61 6e 67 65 43 6f  dwFormatChangeCo
60a0: 75 6e 74 3b 0a 09 63 68 61 72 09 73 7a 4e 61 6d  unt;..char.szNam
60b0: 65 5b 36 34 5d 3b 0a 7d 0a 61 6c 69 61 73 20 41  e[64];.}.alias A
60c0: 56 49 53 54 52 45 41 4d 49 4e 46 4f 41 2a 20 4c  VISTREAMINFOA* L
60d0: 50 41 56 49 53 54 52 45 41 4d 49 4e 46 4f 41 3b  PAVISTREAMINFOA;
60e0: 0a 0a 76 65 72 73 69 6f 6e 28 55 6e 69 63 6f 64  ..version(Unicod
60f0: 65 29 20 7b 0a 09 61 6c 69 61 73 20 41 56 49 53  e) {..alias AVIS
6100: 54 52 45 41 4d 49 4e 46 4f 57 09 41 56 49 53 54  TREAMINFOW.AVIST
6110: 52 45 41 4d 49 4e 46 4f 3b 0a 09 61 6c 69 61 73  REAMINFO;..alias
6120: 20 4c 50 41 56 49 53 54 52 45 41 4d 49 4e 46 4f   LPAVISTREAMINFO
6130: 57 09 4c 50 41 56 49 53 54 52 45 41 4d 49 4e 46  W.LPAVISTREAMINF
6140: 4f 3b 0a 7d 20 65 6c 73 65 20 7b 20 2f 2f 20 55  O;.} else { // U
6150: 6e 69 63 6f 64 65 0a 09 61 6c 69 61 73 20 41 56  nicode..alias AV
6160: 49 53 54 52 45 41 4d 49 4e 46 4f 41 09 41 56 49  ISTREAMINFOA.AVI
6170: 53 54 52 45 41 4d 49 4e 46 4f 3b 0a 09 61 6c 69  STREAMINFO;..ali
6180: 61 73 20 4c 50 41 56 49 53 54 52 45 41 4d 49 4e  as LPAVISTREAMIN
6190: 46 4f 41 09 4c 50 41 56 49 53 54 52 45 41 4d 49  FOA.LPAVISTREAMI
61a0: 4e 46 4f 3b 0a 7d 0a 0a 63 6f 6e 73 74 20 41 56  NFO;.}..const AV
61b0: 49 53 54 52 45 41 4d 49 4e 46 4f 5f 44 49 53 41  ISTREAMINFO_DISA
61c0: 42 4c 45 44 09 09 3d 20 30 78 30 30 30 30 30 30  BLED..= 0x000000
61d0: 30 31 3b 0a 63 6f 6e 73 74 20 41 56 49 53 54 52  01;.const AVISTR
61e0: 45 41 4d 49 4e 46 4f 5f 46 4f 52 4d 41 54 43 48  EAMINFO_FORMATCH
61f0: 41 4e 47 45 53 09 3d 20 30 78 30 30 30 31 30 30  ANGES.= 0x000100
6200: 30 30 3b 0a 0a 73 74 72 75 63 74 20 41 56 49 46  00;..struct AVIF
6210: 49 4c 45 49 4e 46 4f 57 20 7b 0a 09 44 57 4f 52  ILEINFOW {..DWOR
6220: 44 09 64 77 4d 61 78 42 79 74 65 73 50 65 72 53  D.dwMaxBytesPerS
6230: 65 63 3b 0a 09 44 57 4f 52 44 09 64 77 46 6c 61  ec;..DWORD.dwFla
6240: 67 73 3b 0a 09 44 57 4f 52 44 09 64 77 43 61 70  gs;..DWORD.dwCap
6250: 73 3b 0a 09 44 57 4f 52 44 09 64 77 53 74 72 65  s;..DWORD.dwStre
6260: 61 6d 73 3b 0a 09 44 57 4f 52 44 09 64 77 53 75  ams;..DWORD.dwSu
6270: 67 67 65 73 74 65 64 42 75 66 66 65 72 53 69 7a  ggestedBufferSiz
6280: 65 3b 0a 09 44 57 4f 52 44 09 64 77 57 69 64 74  e;..DWORD.dwWidt
6290: 68 3b 0a 09 44 57 4f 52 44 09 64 77 48 65 69 67  h;..DWORD.dwHeig
62a0: 68 74 3b 0a 09 44 57 4f 52 44 09 64 77 53 63 61  ht;..DWORD.dwSca
62b0: 6c 65 3b 09 0a 09 44 57 4f 52 44 09 64 77 52 61  le;...DWORD.dwRa
62c0: 74 65 3b 0a 09 44 57 4f 52 44 09 64 77 4c 65 6e  te;..DWORD.dwLen
62d0: 67 74 68 3b 0a 09 44 57 4f 52 44 09 64 77 45 64  gth;..DWORD.dwEd
62e0: 69 74 43 6f 75 6e 74 3b 0a 09 57 43 48 41 52 09  itCount;..WCHAR.
62f0: 73 7a 46 69 6c 65 54 79 70 65 5b 36 34 5d 3b 0a  szFileType[64];.
6300: 7d 0a 61 6c 69 61 73 20 41 56 49 46 49 4c 45 49  }.alias AVIFILEI
6310: 4e 46 4f 57 2a 20 4c 50 41 56 49 46 49 4c 45 49  NFOW* LPAVIFILEI
6320: 4e 46 4f 57 3b 0a 0a 73 74 72 75 63 74 20 41 56  NFOW;..struct AV
6330: 49 46 49 4c 45 49 4e 46 4f 41 20 7b 0a 09 44 57  IFILEINFOA {..DW
6340: 4f 52 44 09 64 77 4d 61 78 42 79 74 65 73 50 65  ORD.dwMaxBytesPe
6350: 72 53 65 63 3b 0a 09 44 57 4f 52 44 09 64 77 46  rSec;..DWORD.dwF
6360: 6c 61 67 73 3b 0a 09 44 57 4f 52 44 09 64 77 43  lags;..DWORD.dwC
6370: 61 70 73 3b 0a 09 44 57 4f 52 44 09 64 77 53 74  aps;..DWORD.dwSt
6380: 72 65 61 6d 73 3b 0a 09 44 57 4f 52 44 09 64 77  reams;..DWORD.dw
6390: 53 75 67 67 65 73 74 65 64 42 75 66 66 65 72 53  SuggestedBufferS
63a0: 69 7a 65 3b 0a 09 44 57 4f 52 44 09 64 77 57 69  ize;..DWORD.dwWi
63b0: 64 74 68 3b 0a 09 44 57 4f 52 44 09 64 77 48 65  dth;..DWORD.dwHe
63c0: 69 67 68 74 3b 0a 09 44 57 4f 52 44 09 64 77 53  ight;..DWORD.dwS
63d0: 63 61 6c 65 3b 09 0a 09 44 57 4f 52 44 09 64 77  cale;...DWORD.dw
63e0: 52 61 74 65 3b 0a 09 44 57 4f 52 44 09 64 77 4c  Rate;..DWORD.dwL
63f0: 65 6e 67 74 68 3b 0a 09 44 57 4f 52 44 09 64 77  ength;..DWORD.dw
6400: 45 64 69 74 43 6f 75 6e 74 3b 0a 09 63 68 61 72  EditCount;..char
6410: 09 73 7a 46 69 6c 65 54 79 70 65 5b 36 34 5d 3b  .szFileType[64];
6420: 0a 7d 0a 61 6c 69 61 73 20 41 56 49 46 49 4c 45  .}.alias AVIFILE
6430: 49 4e 46 4f 41 2a 20 4c 50 41 56 49 46 49 4c 45  INFOA* LPAVIFILE
6440: 49 4e 46 4f 41 3b 0a 0a 76 65 72 73 69 6f 6e 28  INFOA;..version(
6450: 55 6e 69 63 6f 64 65 29 20 7b 0a 09 61 6c 69 61  Unicode) {..alia
6460: 73 20 41 56 49 46 49 4c 45 49 4e 46 4f 57 09 41  s AVIFILEINFOW.A
6470: 56 49 46 49 4c 45 49 4e 46 4f 3b 0a 09 61 6c 69  VIFILEINFO;..ali
6480: 61 73 20 4c 50 41 56 49 46 49 4c 45 49 4e 46 4f  as LPAVIFILEINFO
6490: 57 09 4c 50 41 56 49 46 49 4c 45 49 4e 46 4f 3b  W.LPAVIFILEINFO;
64a0: 0a 7d 20 65 6c 73 65 20 7b 20 2f 2f 20 55 6e 69  .} else { // Uni
64b0: 63 6f 64 65 0a 09 61 6c 69 61 73 20 41 56 49 46  code..alias AVIF
64c0: 49 4c 45 49 4e 46 4f 41 09 41 56 49 46 49 4c 45  ILEINFOA.AVIFILE
64d0: 49 4e 46 4f 3b 0a 09 61 6c 69 61 73 20 4c 50 41  INFO;..alias LPA
64e0: 56 49 46 49 4c 45 49 4e 46 4f 41 09 4c 50 41 56  VIFILEINFOA.LPAV
64f0: 49 46 49 4c 45 49 4e 46 4f 3b 0a 7d 0a 0a 65 6e  IFILEINFO;.}..en
6500: 75 6d 20 7b 0a 09 41 56 49 46 49 4c 45 49 4e 46  um {..AVIFILEINF
6510: 4f 5f 48 41 53 49 4e 44 45 58 09 09 3d 20 30 78  O_HASINDEX..= 0x
6520: 30 30 30 30 30 30 31 30 2c 0a 09 41 56 49 46 49  00000010,..AVIFI
6530: 4c 45 49 4e 46 4f 5f 4d 55 53 54 55 53 45 49 4e  LEINFO_MUSTUSEIN
6540: 44 45 58 09 3d 20 30 78 30 30 30 30 30 30 32 30  DEX.= 0x00000020
6550: 2c 0a 09 41 56 49 46 49 4c 45 49 4e 46 4f 5f 49  ,..AVIFILEINFO_I
6560: 53 49 4e 54 45 52 4c 45 41 56 45 44 09 3d 20 30  SINTERLEAVED.= 0
6570: 78 30 30 30 30 30 31 30 30 2c 0a 09 41 56 49 46  x00000100,..AVIF
6580: 49 4c 45 49 4e 46 4f 5f 57 41 53 43 41 50 54 55  ILEINFO_WASCAPTU
6590: 52 45 46 49 4c 45 09 3d 20 30 78 30 30 30 31 30  REFILE.= 0x00010
65a0: 30 30 30 2c 0a 09 41 56 49 46 49 4c 45 49 4e 46  000,..AVIFILEINF
65b0: 4f 5f 43 4f 50 59 52 49 47 48 54 45 44 09 09 3d  O_COPYRIGHTED..=
65c0: 20 30 78 30 30 30 32 30 30 30 30 2c 0a 7d 0a 0a   0x00020000,.}..
65d0: 65 6e 75 6d 20 7b 0a 09 41 56 49 46 49 4c 45 43  enum {..AVIFILEC
65e0: 41 50 53 5f 43 41 4e 52 45 41 44 09 09 09 3d 20  APS_CANREAD...= 
65f0: 30 78 30 30 30 30 30 30 30 31 2c 0a 09 41 56 49  0x00000001,..AVI
6600: 46 49 4c 45 43 41 50 53 5f 43 41 4e 57 52 49 54  FILECAPS_CANWRIT
6610: 45 09 09 3d 20 30 78 30 30 30 30 30 30 30 32 2c  E..= 0x00000002,
6620: 0a 09 41 56 49 46 49 4c 45 43 41 50 53 5f 41 4c  ..AVIFILECAPS_AL
6630: 4c 4b 45 59 46 52 41 4d 45 53 09 3d 20 30 78 30  LKEYFRAMES.= 0x0
6640: 30 30 30 30 30 31 30 2c 0a 09 41 56 49 46 49 4c  0000010,..AVIFIL
6650: 45 43 41 50 53 5f 4e 4f 43 4f 4d 50 52 45 53 53  ECAPS_NOCOMPRESS
6660: 49 4f 4e 09 3d 20 30 78 30 30 30 30 30 30 32 30  ION.= 0x00000020
6670: 2c 0a 7d 0a 0a 65 78 74 65 72 6e 20 28 57 69 6e  ,.}..extern (Win
6680: 64 6f 77 73 29 20 7b 0a 09 61 6c 69 61 73 20 42  dows) {..alias B
6690: 4f 4f 4c 20 66 75 6e 63 74 69 6f 6e 28 69 6e 74  OOL function(int
66a0: 29 20 41 56 49 53 41 56 45 43 41 4c 4c 42 41 43  ) AVISAVECALLBAC
66b0: 4b 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 41 56 49  K;.}..struct AVI
66c0: 43 4f 4d 50 52 45 53 53 4f 50 54 49 4f 4e 53 20  COMPRESSOPTIONS 
66d0: 7b 0a 09 44 57 4f 52 44 09 66 63 63 54 79 70 65  {..DWORD.fccType
66e0: 3b 0a 09 44 57 4f 52 44 09 66 63 63 48 61 6e 64  ;..DWORD.fccHand
66f0: 6c 65 72 3b 0a 09 44 57 4f 52 44 09 64 77 4b 65  ler;..DWORD.dwKe
6700: 79 46 72 61 6d 65 45 76 65 72 79 3b 0a 09 44 57  yFrameEvery;..DW
6710: 4f 52 44 09 64 77 51 75 61 6c 69 74 79 3b 0a 09  ORD.dwQuality;..
6720: 44 57 4f 52 44 09 64 77 42 79 74 65 73 50 65 72  DWORD.dwBytesPer
6730: 53 65 63 6f 6e 64 3b 0a 09 44 57 4f 52 44 09 64  Second;..DWORD.d
6740: 77 46 6c 61 67 73 3b 0a 09 4c 50 56 4f 49 44 09  wFlags;..LPVOID.
6750: 6c 70 46 6f 72 6d 61 74 3b 0a 09 44 57 4f 52 44  lpFormat;..DWORD
6760: 09 63 62 46 6f 72 6d 61 74 3b 0a 09 4c 50 56 4f  .cbFormat;..LPVO
6770: 49 44 09 6c 70 50 61 72 6d 73 3b 0a 09 44 57 4f  ID.lpParms;..DWO
6780: 52 44 09 63 62 50 61 72 6d 73 3b 0a 09 44 57 4f  RD.cbParms;..DWO
6790: 52 44 09 64 77 49 6e 74 65 72 6c 65 61 76 65 45  RD.dwInterleaveE
67a0: 76 65 72 79 3b 0a 7d 0a 61 6c 69 61 73 20 41 56  very;.}.alias AV
67b0: 49 43 4f 4d 50 52 45 53 53 4f 50 54 49 4f 4e 53  ICOMPRESSOPTIONS
67c0: 2a 20 4c 50 41 56 49 43 4f 4d 50 52 45 53 53 4f  * LPAVICOMPRESSO
67d0: 50 54 49 4f 4e 53 3b 0a 0a 65 6e 75 6d 20 7b 0a  PTIONS;..enum {.
67e0: 09 41 56 49 43 4f 4d 50 52 45 53 53 46 5f 49 4e  .AVICOMPRESSF_IN
67f0: 54 45 52 4c 45 41 56 45 09 3d 20 30 78 30 30 30  TERLEAVE.= 0x000
6800: 30 30 30 30 31 2c 0a 09 41 56 49 43 4f 4d 50 52  00001,..AVICOMPR
6810: 45 53 53 46 5f 44 41 54 41 52 41 54 45 09 3d 20  ESSF_DATARATE.= 
6820: 30 78 30 30 30 30 30 30 30 32 2c 0a 09 41 56 49  0x00000002,..AVI
6830: 43 4f 4d 50 52 45 53 53 46 5f 4b 45 59 46 52 41  COMPRESSF_KEYFRA
6840: 4d 45 53 09 3d 20 30 78 30 30 30 30 30 30 30 34  MES.= 0x00000004
6850: 2c 0a 09 41 56 49 43 4f 4d 50 52 45 53 53 46 5f  ,..AVICOMPRESSF_
6860: 56 41 4c 49 44 09 09 3d 20 30 78 30 30 30 30 30  VALID..= 0x00000
6870: 30 30 38 2c 0a 7d 0a 0a 2f 2b 20 54 4f 44 4f 3a  008,.}../+ TODO:
6880: 0a 44 45 43 4c 41 52 45 5f 49 4e 54 45 52 46 41  .DECLARE_INTERFA
6890: 43 45 5f 28 49 41 56 49 53 74 72 65 61 6d 2c 20  CE_(IAVIStream, 
68a0: 49 55 6e 6b 6e 6f 77 6e 29 0a 7b 0a 20 20 20 20  IUnknown).{.    
68b0: 53 54 44 4d 45 54 48 4f 44 28 51 75 65 72 79 49  STDMETHOD(QueryI
68c0: 6e 74 65 72 66 61 63 65 29 20 28 54 48 49 53 5f  nterface) (THIS_
68d0: 20 52 45 46 49 49 44 20 72 69 69 64 2c 20 4c 50   REFIID riid, LP
68e0: 56 4f 49 44 20 46 41 52 2a 20 70 70 76 4f 62 6a  VOID FAR* ppvObj
68f0: 29 20 50 55 52 45 3b 0a 20 20 20 20 53 54 44 4d  ) PURE;.    STDM
6900: 45 54 48 4f 44 5f 28 55 4c 4f 4e 47 2c 41 64 64  ETHOD_(ULONG,Add
6910: 52 65 66 29 20 28 54 48 49 53 29 20 20 50 55 52  Ref) (THIS)  PUR
6920: 45 3b 0a 20 20 20 20 53 54 44 4d 45 54 48 4f 44  E;.    STDMETHOD
6930: 5f 28 55 4c 4f 4e 47 2c 52 65 6c 65 61 73 65 29  _(ULONG,Release)
6940: 20 28 54 48 49 53 29 20 50 55 52 45 3b 0a 0a 20   (THIS) PURE;.. 
6950: 20 20 20 53 54 44 4d 45 54 48 4f 44 28 43 72 65     STDMETHOD(Cre
6960: 61 74 65 29 20 20 20 20 20 20 28 54 48 49 53 5f  ate)      (THIS_
6970: 20 4c 50 41 52 41 4d 20 6c 50 61 72 61 6d 31 2c   LPARAM lParam1,
6980: 20 4c 50 41 52 41 4d 20 6c 50 61 72 61 6d 32 29   LPARAM lParam2)
6990: 20 50 55 52 45 20 3b 0a 20 20 20 20 53 54 44 4d   PURE ;.    STDM
69a0: 45 54 48 4f 44 28 49 6e 66 6f 29 20 20 20 20 20  ETHOD(Info)     
69b0: 20 20 20 28 54 48 49 53 5f 20 41 56 49 53 54 52     (THIS_ AVISTR
69c0: 45 41 4d 49 4e 46 4f 57 20 46 41 52 20 2a 20 70  EAMINFOW FAR * p
69d0: 73 69 2c 20 4c 4f 4e 47 20 6c 53 69 7a 65 29 20  si, LONG lSize) 
69e0: 50 55 52 45 20 3b 0a 20 20 20 20 53 54 44 4d 45  PURE ;.    STDME
69f0: 54 48 4f 44 5f 28 4c 4f 4e 47 2c 20 46 69 6e 64  THOD_(LONG, Find
6a00: 53 61 6d 70 6c 65 29 28 54 48 49 53 5f 20 4c 4f  Sample)(THIS_ LO
6a10: 4e 47 20 6c 50 6f 73 2c 20 4c 4f 4e 47 20 6c 46  NG lPos, LONG lF
6a20: 6c 61 67 73 29 20 50 55 52 45 20 3b 0a 20 20 20  lags) PURE ;.   
6a30: 20 53 54 44 4d 45 54 48 4f 44 28 52 65 61 64 46   STDMETHOD(ReadF
6a40: 6f 72 6d 61 74 29 20 20 28 54 48 49 53 5f 20 4c  ormat)  (THIS_ L
6a50: 4f 4e 47 20 6c 50 6f 73 2c 0a 09 09 09 20 20 20  ONG lPos,....   
6a60: 20 4c 50 56 4f 49 44 20 6c 70 46 6f 72 6d 61 74   LPVOID lpFormat
6a70: 2c 20 4c 4f 4e 47 20 46 41 52 20 2a 6c 70 63 62  , LONG FAR *lpcb
6a80: 46 6f 72 6d 61 74 29 20 50 55 52 45 20 3b 0a 20  Format) PURE ;. 
6a90: 20 20 20 53 54 44 4d 45 54 48 4f 44 28 53 65 74     STDMETHOD(Set
6aa0: 46 6f 72 6d 61 74 29 20 20 20 28 54 48 49 53 5f  Format)   (THIS_
6ab0: 20 4c 4f 4e 47 20 6c 50 6f 73 2c 0a 09 09 09 20   LONG lPos,.... 
6ac0: 20 20 20 4c 50 56 4f 49 44 20 6c 70 46 6f 72 6d     LPVOID lpForm
6ad0: 61 74 2c 20 4c 4f 4e 47 20 63 62 46 6f 72 6d 61  at, LONG cbForma
6ae0: 74 29 20 50 55 52 45 20 3b 0a 20 20 20 20 53 54  t) PURE ;.    ST
6af0: 44 4d 45 54 48 4f 44 28 52 65 61 64 29 20 20 20  DMETHOD(Read)   
6b00: 20 20 20 20 20 28 54 48 49 53 5f 20 4c 4f 4e 47       (THIS_ LONG
6b10: 20 6c 53 74 61 72 74 2c 20 4c 4f 4e 47 20 6c 53   lStart, LONG lS
6b20: 61 6d 70 6c 65 73 2c 0a 09 09 09 20 20 20 20 4c  amples,....    L
6b30: 50 56 4f 49 44 20 6c 70 42 75 66 66 65 72 2c 20  PVOID lpBuffer, 
6b40: 4c 4f 4e 47 20 63 62 42 75 66 66 65 72 2c 0a 09  LONG cbBuffer,..
6b50: 09 09 20 20 20 20 4c 4f 4e 47 20 46 41 52 20 2a  ..    LONG FAR *
6b60: 20 70 6c 42 79 74 65 73 2c 20 4c 4f 4e 47 20 46   plBytes, LONG F
6b70: 41 52 20 2a 20 70 6c 53 61 6d 70 6c 65 73 29 20  AR * plSamples) 
6b80: 50 55 52 45 20 3b 0a 20 20 20 20 53 54 44 4d 45  PURE ;.    STDME
6b90: 54 48 4f 44 28 57 72 69 74 65 29 20 20 20 20 20  THOD(Write)     
6ba0: 20 20 28 54 48 49 53 5f 20 4c 4f 4e 47 20 6c 53    (THIS_ LONG lS
6bb0: 74 61 72 74 2c 20 4c 4f 4e 47 20 6c 53 61 6d 70  tart, LONG lSamp
6bc0: 6c 65 73 2c 0a 09 09 09 20 20 20 20 4c 50 56 4f  les,....    LPVO
6bd0: 49 44 20 6c 70 42 75 66 66 65 72 2c 20 4c 4f 4e  ID lpBuffer, LON
6be0: 47 20 63 62 42 75 66 66 65 72 2c 0a 09 09 09 20  G cbBuffer,.... 
6bf0: 20 20 20 44 57 4f 52 44 20 64 77 46 6c 61 67 73     DWORD dwFlags
6c00: 2c 0a 09 09 09 20 20 20 20 4c 4f 4e 47 20 46 41  ,....    LONG FA
6c10: 52 20 2a 70 6c 53 61 6d 70 57 72 69 74 74 65 6e  R *plSampWritten
6c20: 2c 0a 09 09 09 20 20 20 20 4c 4f 4e 47 20 46 41  ,....    LONG FA
6c30: 52 20 2a 70 6c 42 79 74 65 73 57 72 69 74 74 65  R *plBytesWritte
6c40: 6e 29 20 50 55 52 45 20 3b 0a 20 20 20 20 53 54  n) PURE ;.    ST
6c50: 44 4d 45 54 48 4f 44 28 44 65 6c 65 74 65 29 20  DMETHOD(Delete) 
6c60: 20 20 20 20 20 28 54 48 49 53 5f 20 4c 4f 4e 47       (THIS_ LONG
6c70: 20 6c 53 74 61 72 74 2c 20 4c 4f 4e 47 20 6c 53   lStart, LONG lS
6c80: 61 6d 70 6c 65 73 29 20 50 55 52 45 3b 0a 20 20  amples) PURE;.  
6c90: 20 20 53 54 44 4d 45 54 48 4f 44 28 52 65 61 64    STDMETHOD(Read
6ca0: 44 61 74 61 29 20 20 20 20 28 54 48 49 53 5f 20  Data)    (THIS_ 
6cb0: 44 57 4f 52 44 20 66 63 63 2c 20 4c 50 56 4f 49  DWORD fcc, LPVOI
6cc0: 44 20 6c 70 2c 20 4c 4f 4e 47 20 46 41 52 20 2a  D lp, LONG FAR *
6cd0: 6c 70 63 62 29 20 50 55 52 45 20 3b 0a 20 20 20  lpcb) PURE ;.   
6ce0: 20 53 54 44 4d 45 54 48 4f 44 28 57 72 69 74 65   STDMETHOD(Write
6cf0: 44 61 74 61 29 20 20 20 28 54 48 49 53 5f 20 44  Data)   (THIS_ D
6d00: 57 4f 52 44 20 66 63 63 2c 20 4c 50 56 4f 49 44  WORD fcc, LPVOID
6d10: 20 6c 70 2c 20 4c 4f 4e 47 20 63 62 29 20 50 55   lp, LONG cb) PU
6d20: 52 45 20 3b 0a 23 69 66 64 65 66 20 5f 57 49 4e  RE ;.#ifdef _WIN
6d30: 33 32 0a 20 20 20 20 53 54 44 4d 45 54 48 4f 44  32.    STDMETHOD
6d40: 28 53 65 74 49 6e 66 6f 29 20 28 54 48 49 53 5f  (SetInfo) (THIS_
6d50: 20 41 56 49 53 54 52 45 41 4d 49 4e 46 4f 57 20   AVISTREAMINFOW 
6d60: 46 41 52 20 2a 20 6c 70 49 6e 66 6f 2c 0a 09 09  FAR * lpInfo,...
6d70: 09 20 20 20 20 4c 4f 4e 47 20 63 62 49 6e 66 6f  .    LONG cbInfo
6d80: 29 20 50 55 52 45 3b 0a 23 65 6c 73 65 0a 20 20  ) PURE;.#else.  
6d90: 20 20 53 54 44 4d 45 54 48 4f 44 28 52 65 73 65    STDMETHOD(Rese
6da0: 72 76 65 64 31 29 20 20 20 20 20 20 20 20 20 20  rved1)          
6db0: 20 20 28 54 48 49 53 29 20 50 55 52 45 3b 0a 20    (THIS) PURE;. 
6dc0: 20 20 20 53 54 44 4d 45 54 48 4f 44 28 52 65 73     STDMETHOD(Res
6dd0: 65 72 76 65 64 32 29 20 20 20 20 20 20 20 20 20  erved2)         
6de0: 20 20 20 28 54 48 49 53 29 20 50 55 52 45 3b 0a     (THIS) PURE;.
6df0: 20 20 20 20 53 54 44 4d 45 54 48 4f 44 28 52 65      STDMETHOD(Re
6e00: 73 65 72 76 65 64 33 29 20 20 20 20 20 20 20 20  served3)        
6e10: 20 20 20 20 28 54 48 49 53 29 20 50 55 52 45 3b      (THIS) PURE;
6e20: 0a 20 20 20 20 53 54 44 4d 45 54 48 4f 44 28 52  .    STDMETHOD(R
6e30: 65 73 65 72 76 65 64 34 29 20 20 20 20 20 20 20  eserved4)       
6e40: 20 20 20 20 20 28 54 48 49 53 29 20 50 55 52 45       (THIS) PURE
6e50: 3b 0a 20 20 20 20 53 54 44 4d 45 54 48 4f 44 28  ;.    STDMETHOD(
6e60: 52 65 73 65 72 76 65 64 35 29 20 20 20 20 20 20  Reserved5)      
6e70: 20 20 20 20 20 20 28 54 48 49 53 29 20 50 55 52        (THIS) PUR
6e80: 45 3b 0a 23 65 6e 64 69 66 0a 7d 3b 0a 0a 74 79  E;.#endif.};..ty
6e90: 70 65 64 65 66 20 20 20 20 20 20 20 49 41 56 49  pedef       IAVI
6ea0: 53 74 72 65 61 6d 20 46 41 52 2a 20 50 41 56 49  Stream FAR* PAVI
6eb0: 53 54 52 45 41 4d 3b 0a 0a 23 75 6e 64 65 66 20  STREAM;..#undef 
6ec0: 20 49 4e 54 45 52 46 41 43 45 0a 23 64 65 66 69   INTERFACE.#defi
6ed0: 6e 65 20 49 4e 54 45 52 46 41 43 45 20 20 20 49  ne INTERFACE   I
6ee0: 41 56 49 53 74 72 65 61 6d 69 6e 67 0a 0a 44 45  AVIStreaming..DE
6ef0: 43 4c 41 52 45 5f 49 4e 54 45 52 46 41 43 45 5f  CLARE_INTERFACE_
6f00: 28 49 41 56 49 53 74 72 65 61 6d 69 6e 67 2c 20  (IAVIStreaming, 
6f10: 49 55 6e 6b 6e 6f 77 6e 29 0a 7b 0a 20 20 20 20  IUnknown).{.    
6f20: 53 54 44 4d 45 54 48 4f 44 28 51 75 65 72 79 49  STDMETHOD(QueryI
6f30: 6e 74 65 72 66 61 63 65 29 20 28 54 48 49 53 5f  nterface) (THIS_
6f40: 20 52 45 46 49 49 44 20 72 69 69 64 2c 20 4c 50   REFIID riid, LP
6f50: 56 4f 49 44 20 46 41 52 2a 20 70 70 76 4f 62 6a  VOID FAR* ppvObj
6f60: 29 20 50 55 52 45 3b 0a 20 20 20 20 53 54 44 4d  ) PURE;.    STDM
6f70: 45 54 48 4f 44 5f 28 55 4c 4f 4e 47 2c 41 64 64  ETHOD_(ULONG,Add
6f80: 52 65 66 29 20 28 54 48 49 53 29 20 20 50 55 52  Ref) (THIS)  PUR
6f90: 45 3b 0a 20 20 20 20 53 54 44 4d 45 54 48 4f 44  E;.    STDMETHOD
6fa0: 5f 28 55 4c 4f 4e 47 2c 52 65 6c 65 61 73 65 29  _(ULONG,Release)
6fb0: 20 28 54 48 49 53 29 20 50 55 52 45 3b 0a 0a 20   (THIS) PURE;.. 
6fc0: 20 20 20 53 54 44 4d 45 54 48 4f 44 28 42 65 67     STDMETHOD(Beg
6fd0: 69 6e 29 20 28 54 48 49 53 5f 0a 09 09 20 20 20  in) (THIS_...   
6fe0: 20 20 20 4c 4f 4e 47 20 20 6c 53 74 61 72 74 2c     LONG  lStart,
6ff0: 0a 09 09 20 20 20 20 20 20 4c 4f 4e 47 20 20 6c  ...      LONG  l
7000: 45 6e 64 2c 0a 09 09 20 20 20 20 20 20 4c 4f 4e  End,...      LON
7010: 47 20 20 6c 52 61 74 65 29 20 50 55 52 45 3b 0a  G  lRate) PURE;.
7020: 20 20 20 20 53 54 44 4d 45 54 48 4f 44 28 45 6e      STDMETHOD(En
7030: 64 29 20 20 20 28 54 48 49 53 29 20 50 55 52 45  d)   (THIS) PURE
7040: 3b 0a 7d 3b 0a 0a 74 79 70 65 64 65 66 20 20 20  ;.};..typedef   
7050: 20 20 20 20 49 41 56 49 53 74 72 65 61 6d 69 6e      IAVIStreamin
7060: 67 20 46 41 52 2a 20 50 41 56 49 53 54 52 45 41  g FAR* PAVISTREA
7070: 4d 49 4e 47 3b 0a 0a 0a 23 75 6e 64 65 66 20 20  MING;...#undef  
7080: 49 4e 54 45 52 46 41 43 45 0a 23 64 65 66 69 6e  INTERFACE.#defin
7090: 65 20 49 4e 54 45 52 46 41 43 45 20 20 20 49 41  e INTERFACE   IA
70a0: 56 49 45 64 69 74 53 74 72 65 61 6d 0a 0a 44 45  VIEditStream..DE
70b0: 43 4c 41 52 45 5f 49 4e 54 45 52 46 41 43 45 5f  CLARE_INTERFACE_
70c0: 28 49 41 56 49 45 64 69 74 53 74 72 65 61 6d 2c  (IAVIEditStream,
70d0: 20 49 55 6e 6b 6e 6f 77 6e 29 0a 7b 0a 20 20 20   IUnknown).{.   
70e0: 20 53 54 44 4d 45 54 48 4f 44 28 51 75 65 72 79   STDMETHOD(Query
70f0: 49 6e 74 65 72 66 61 63 65 29 20 28 54 48 49 53  Interface) (THIS
7100: 5f 20 52 45 46 49 49 44 20 72 69 69 64 2c 20 4c  _ REFIID riid, L
7110: 50 56 4f 49 44 20 46 41 52 2a 20 70 70 76 4f 62  PVOID FAR* ppvOb
7120: 6a 29 20 50 55 52 45 3b 0a 20 20 20 20 53 54 44  j) PURE;.    STD
7130: 4d 45 54 48 4f 44 5f 28 55 4c 4f 4e 47 2c 41 64  METHOD_(ULONG,Ad
7140: 64 52 65 66 29 20 28 54 48 49 53 29 20 20 50 55  dRef) (THIS)  PU
7150: 52 45 3b 0a 20 20 20 20 53 54 44 4d 45 54 48 4f  RE;.    STDMETHO
7160: 44 5f 28 55 4c 4f 4e 47 2c 52 65 6c 65 61 73 65  D_(ULONG,Release
7170: 29 20 28 54 48 49 53 29 20 50 55 52 45 3b 0a 0a  ) (THIS) PURE;..
7180: 20 20 20 20 53 54 44 4d 45 54 48 4f 44 28 43 75      STDMETHOD(Cu
7190: 74 29 20 28 54 48 49 53 5f 20 4c 4f 4e 47 20 46  t) (THIS_ LONG F
71a0: 41 52 20 2a 70 6c 53 74 61 72 74 2c 0a 09 09 09  AR *plStart,....
71b0: 20 20 4c 4f 4e 47 20 46 41 52 20 2a 70 6c 4c 65    LONG FAR *plLe
71c0: 6e 67 74 68 2c 0a 09 09 09 20 20 50 41 56 49 53  ngth,....  PAVIS
71d0: 54 52 45 41 4d 20 46 41 52 20 2a 20 70 70 52 65  TREAM FAR * ppRe
71e0: 73 75 6c 74 29 20 50 55 52 45 3b 0a 20 20 20 20  sult) PURE;.    
71f0: 53 54 44 4d 45 54 48 4f 44 28 43 6f 70 79 29 20  STDMETHOD(Copy) 
7200: 28 54 48 49 53 5f 20 4c 4f 4e 47 20 46 41 52 20  (THIS_ LONG FAR 
7210: 2a 70 6c 53 74 61 72 74 2c 0a 09 09 09 20 20 20  *plStart,....   
7220: 4c 4f 4e 47 20 46 41 52 20 2a 70 6c 4c 65 6e 67  LONG FAR *plLeng
7230: 74 68 2c 0a 09 09 09 20 20 20 50 41 56 49 53 54  th,....   PAVIST
7240: 52 45 41 4d 20 46 41 52 20 2a 20 70 70 52 65 73  REAM FAR * ppRes
7250: 75 6c 74 29 20 50 55 52 45 3b 0a 20 20 20 20 53  ult) PURE;.    S
7260: 54 44 4d 45 54 48 4f 44 28 50 61 73 74 65 29 20  TDMETHOD(Paste) 
7270: 28 54 48 49 53 5f 20 4c 4f 4e 47 20 46 41 52 20  (THIS_ LONG FAR 
7280: 2a 70 6c 50 6f 73 2c 0a 09 09 09 20 20 20 20 4c  *plPos,....    L
7290: 4f 4e 47 20 46 41 52 20 2a 70 6c 4c 65 6e 67 74  ONG FAR *plLengt
72a0: 68 2c 0a 09 09 09 20 20 20 20 50 41 56 49 53 54  h,....    PAVIST
72b0: 52 45 41 4d 20 70 73 74 72 65 61 6d 2c 0a 09 09  REAM pstream,...
72c0: 09 20 20 20 20 4c 4f 4e 47 20 6c 53 74 61 72 74  .    LONG lStart
72d0: 2c 0a 09 09 09 20 20 20 20 4c 4f 4e 47 20 6c 45  ,....    LONG lE
72e0: 6e 64 29 20 50 55 52 45 3b 0a 20 20 20 20 53 54  nd) PURE;.    ST
72f0: 44 4d 45 54 48 4f 44 28 43 6c 6f 6e 65 29 20 28  DMETHOD(Clone) (
7300: 54 48 49 53 5f 20 50 41 56 49 53 54 52 45 41 4d  THIS_ PAVISTREAM
7310: 20 46 41 52 20 2a 70 70 52 65 73 75 6c 74 29 20   FAR *ppResult) 
7320: 50 55 52 45 3b 0a 20 20 20 20 53 54 44 4d 45 54  PURE;.    STDMET
7330: 48 4f 44 28 53 65 74 49 6e 66 6f 29 20 28 54 48  HOD(SetInfo) (TH
7340: 49 53 5f 20 41 56 49 53 54 52 45 41 4d 49 4e 46  IS_ AVISTREAMINF
7350: 4f 57 20 46 41 52 20 2a 20 6c 70 49 6e 66 6f 2c  OW FAR * lpInfo,
7360: 0a 09 09 09 20 20 20 20 4c 4f 4e 47 20 63 62 49  ....    LONG cbI
7370: 6e 66 6f 29 20 50 55 52 45 3b 0a 7d 3b 0a 0a 74  nfo) PURE;.};..t
7380: 79 70 65 64 65 66 20 20 20 20 20 20 20 49 41 56  ypedef       IAV
7390: 49 45 64 69 74 53 74 72 65 61 6d 20 46 41 52 2a  IEditStream FAR*
73a0: 20 50 41 56 49 45 44 49 54 53 54 52 45 41 4d 3b   PAVIEDITSTREAM;
73b0: 0a 0a 23 75 6e 64 65 66 20 20 49 4e 54 45 52 46  ..#undef  INTERF
73c0: 41 43 45 0a 23 64 65 66 69 6e 65 20 49 4e 54 45  ACE.#define INTE
73d0: 52 46 41 43 45 20 20 20 49 41 56 49 50 65 72 73  RFACE   IAVIPers
73e0: 69 73 74 46 69 6c 65 0a 0a 44 45 43 4c 41 52 45  istFile..DECLARE
73f0: 5f 49 4e 54 45 52 46 41 43 45 5f 28 49 41 56 49  _INTERFACE_(IAVI
7400: 50 65 72 73 69 73 74 46 69 6c 65 2c 20 49 50 65  PersistFile, IPe
7410: 72 73 69 73 74 46 69 6c 65 29 0a 7b 0a 20 20 20  rsistFile).{.   
7420: 20 53 54 44 4d 45 54 48 4f 44 28 52 65 73 65 72   STDMETHOD(Reser
7430: 76 65 64 31 29 28 54 48 49 53 29 20 50 55 52 45  ved1)(THIS) PURE
7440: 3b 0a 7d 3b 0a 0a 74 79 70 65 64 65 66 20 49 41  ;.};..typedef IA
7450: 56 49 50 65 72 73 69 73 74 46 69 6c 65 20 46 41  VIPersistFile FA
7460: 52 2a 20 50 41 56 49 50 45 52 53 49 53 54 46 49  R* PAVIPERSISTFI
7470: 4c 45 3b 0a 0a 23 75 6e 64 65 66 20 20 49 4e 54  LE;..#undef  INT
7480: 45 52 46 41 43 45 0a 23 64 65 66 69 6e 65 20 49  ERFACE.#define I
7490: 4e 54 45 52 46 41 43 45 20 20 20 49 41 56 49 46  NTERFACE   IAVIF
74a0: 69 6c 65 0a 23 64 65 66 69 6e 65 20 50 41 56 49  ile.#define PAVI
74b0: 46 49 4c 45 20 49 41 56 49 46 69 6c 65 20 46 41  FILE IAVIFile FA
74c0: 52 2a 0a 0a 44 45 43 4c 41 52 45 5f 49 4e 54 45  R*..DECLARE_INTE
74d0: 52 46 41 43 45 5f 28 49 41 56 49 46 69 6c 65 2c  RFACE_(IAVIFile,
74e0: 20 49 55 6e 6b 6e 6f 77 6e 29 0a 7b 0a 20 20 20   IUnknown).{.   
74f0: 20 53 54 44 4d 45 54 48 4f 44 28 51 75 65 72 79   STDMETHOD(Query
7500: 49 6e 74 65 72 66 61 63 65 29 20 28 54 48 49 53  Interface) (THIS
7510: 5f 20 52 45 46 49 49 44 20 72 69 69 64 2c 20 4c  _ REFIID riid, L
7520: 50 56 4f 49 44 20 46 41 52 2a 20 70 70 76 4f 62  PVOID FAR* ppvOb
7530: 6a 29 20 50 55 52 45 3b 0a 20 20 20 20 53 54 44  j) PURE;.    STD
7540: 4d 45 54 48 4f 44 5f 28 55 4c 4f 4e 47 2c 41 64  METHOD_(ULONG,Ad
7550: 64 52 65 66 29 20 28 54 48 49 53 29 20 20 50 55  dRef) (THIS)  PU
7560: 52 45 3b 0a 20 20 20 20 53 54 44 4d 45 54 48 4f  RE;.    STDMETHO
7570: 44 5f 28 55 4c 4f 4e 47 2c 52 65 6c 65 61 73 65  D_(ULONG,Release
7580: 29 20 28 54 48 49 53 29 20 50 55 52 45 3b 0a 0a  ) (THIS) PURE;..
7590: 20 20 20 20 53 54 44 4d 45 54 48 4f 44 28 49 6e      STDMETHOD(In
75a0: 66 6f 29 20 20 20 20 20 20 20 20 20 20 20 20 20  fo)             
75b0: 20 20 20 20 28 54 48 49 53 5f 0a 20 20 20 20 20      (THIS_.     
75c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75e0: 41 56 49 46 49 4c 45 49 4e 46 4f 57 20 46 41 52  AVIFILEINFOW FAR
75f0: 20 2a 20 70 66 69 2c 0a 20 20 20 20 20 20 20 20   * pfi,.        
7600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7610: 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 4f 4e               LON
7620: 47 20 6c 53 69 7a 65 29 20 50 55 52 45 3b 0a 20  G lSize) PURE;. 
7630: 20 20 20 53 54 44 4d 45 54 48 4f 44 28 47 65 74     STDMETHOD(Get
7640: 53 74 72 65 61 6d 29 20 20 20 20 20 20 20 20 20  Stream)         
7650: 20 20 20 28 54 48 49 53 5f 0a 20 20 20 20 20 20     (THIS_.      
7660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
7680: 41 56 49 53 54 52 45 41 4d 20 46 41 52 20 2a 20  AVISTREAM FAR * 
7690: 70 70 53 74 72 65 61 6d 2c 0a 09 09 09 09 20 20  ppStream,.....  
76a0: 20 20 20 44 57 4f 52 44 20 66 63 63 54 79 70 65     DWORD fccType
76b0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
76c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76d0: 20 20 20 20 20 20 20 4c 4f 4e 47 20 6c 50 61 72         LONG lPar
76e0: 61 6d 29 20 50 55 52 45 3b 0a 20 20 20 20 53 54  am) PURE;.    ST
76f0: 44 4d 45 54 48 4f 44 28 43 72 65 61 74 65 53 74  DMETHOD(CreateSt
7700: 72 65 61 6d 29 20 20 20 20 20 20 20 20 20 28 54  ream)         (T
7710: 48 49 53 5f 0a 20 20 20 20 20 20 20 20 20 20 20  HIS_.           
7720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7730: 20 20 20 20 20 20 20 20 20 20 50 41 56 49 53 54            PAVIST
7740: 52 45 41 4d 20 46 41 52 20 2a 20 70 70 53 74 72  REAM FAR * ppStr
7750: 65 61 6d 2c 0a 20 20 20 20 20 20 20 20 20 20 20  eam,.           
7760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7770: 20 20 20 20 20 20 20 20 20 20 41 56 49 53 54 52            AVISTR
7780: 45 41 4d 49 4e 46 4f 57 20 46 41 52 20 2a 20 70  EAMINFOW FAR * p
7790: 73 69 29 20 50 55 52 45 3b 0a 20 20 20 20 53 54  si) PURE;.    ST
77a0: 44 4d 45 54 48 4f 44 28 57 72 69 74 65 44 61 74  DMETHOD(WriteDat
77b0: 61 29 20 20 20 20 20 20 20 20 20 20 20 20 28 54  a)            (T
77c0: 48 49 53 5f 0a 20 20 20 20 20 20 20 20 20 20 20  HIS_.           
77d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77e0: 20 20 20 20 20 20 20 20 20 20 44 57 4f 52 44 20            DWORD 
77f0: 63 6b 69 64 2c 0a 20 20 20 20 20 20 20 20 20 20  ckid,.          
7800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7810: 20 20 20 20 20 20 20 20 20 20 20 4c 50 56 4f 49             LPVOI
7820: 44 20 6c 70 44 61 74 61 2c 0a 20 20 20 20 20 20  D lpData,.      
7830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c                 L
7850: 4f 4e 47 20 63 62 44 61 74 61 29 20 50 55 52 45  ONG cbData) PURE
7860: 3b 0a 20 20 20 20 53 54 44 4d 45 54 48 4f 44 28  ;.    STDMETHOD(
7870: 52 65 61 64 44 61 74 61 29 20 20 20 20 20 20 20  ReadData)       
7880: 20 20 20 20 20 20 28 54 48 49 53 5f 0a 20 20 20        (THIS_.   
7890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78b0: 20 20 44 57 4f 52 44 20 63 6b 69 64 2c 0a 20 20    DWORD ckid,.  
78c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78e0: 20 20 20 4c 50 56 4f 49 44 20 6c 70 44 61 74 61     LPVOID lpData
78f0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
7900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7910: 20 20 20 20 20 20 20 4c 4f 4e 47 20 46 41 52 20         LONG FAR 
7920: 2a 6c 70 63 62 44 61 74 61 29 20 50 55 52 45 3b  *lpcbData) PURE;
7930: 0a 20 20 20 20 53 54 44 4d 45 54 48 4f 44 28 45  .    STDMETHOD(E
7940: 6e 64 52 65 63 6f 72 64 29 20 20 20 20 20 20 20  ndRecord)       
7950: 20 20 20 20 20 28 54 48 49 53 29 20 50 55 52 45       (THIS) PURE
7960: 3b 0a 20 20 20 20 53 54 44 4d 45 54 48 4f 44 28  ;.    STDMETHOD(
7970: 44 65 6c 65 74 65 53 74 72 65 61 6d 29 20 20 20  DeleteStream)   
7980: 20 20 20 20 20 20 28 54 48 49 53 5f 0a 09 09 09        (THIS_....
7990: 09 20 20 20 20 20 44 57 4f 52 44 20 66 63 63 54  .     DWORD fccT
79a0: 79 70 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ype,.           
79b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79c0: 20 20 20 20 20 20 20 20 20 20 4c 4f 4e 47 20 6c            LONG l
79d0: 50 61 72 61 6d 29 20 50 55 52 45 3b 0a 7d 3b 0a  Param) PURE;.};.
79e0: 0a 23 75 6e 64 65 66 20 50 41 56 49 46 49 4c 45  .#undef PAVIFILE
79f0: 0a 74 79 70 65 64 65 66 20 20 20 20 20 20 20 49  .typedef       I
7a00: 41 56 49 46 69 6c 65 20 46 41 52 2a 20 50 41 56  AVIFile FAR* PAV
7a10: 49 46 49 4c 45 3b 0a 0a 23 75 6e 64 65 66 20 20  IFILE;..#undef  
7a20: 49 4e 54 45 52 46 41 43 45 0a 23 64 65 66 69 6e  INTERFACE.#defin
7a30: 65 20 49 4e 54 45 52 46 41 43 45 20 20 20 49 47  e INTERFACE   IG
7a40: 65 74 46 72 61 6d 65 0a 23 64 65 66 69 6e 65 20  etFrame.#define 
7a50: 50 47 45 54 46 52 41 4d 45 20 20 20 49 47 65 74  PGETFRAME   IGet
7a60: 46 72 61 6d 65 20 46 41 52 2a 0a 0a 44 45 43 4c  Frame FAR*..DECL
7a70: 41 52 45 5f 49 4e 54 45 52 46 41 43 45 5f 28 49  ARE_INTERFACE_(I
7a80: 47 65 74 46 72 61 6d 65 2c 20 49 55 6e 6b 6e 6f  GetFrame, IUnkno
7a90: 77 6e 29 0a 7b 0a 20 20 20 20 53 54 44 4d 45 54  wn).{.    STDMET
7aa0: 48 4f 44 28 51 75 65 72 79 49 6e 74 65 72 66 61  HOD(QueryInterfa
7ab0: 63 65 29 20 28 54 48 49 53 5f 20 52 45 46 49 49  ce) (THIS_ REFII
7ac0: 44 20 72 69 69 64 2c 20 4c 50 56 4f 49 44 20 46  D riid, LPVOID F
7ad0: 41 52 2a 20 70 70 76 4f 62 6a 29 20 50 55 52 45  AR* ppvObj) PURE
7ae0: 3b 0a 20 20 20 20 53 54 44 4d 45 54 48 4f 44 5f  ;.    STDMETHOD_
7af0: 28 55 4c 4f 4e 47 2c 41 64 64 52 65 66 29 20 28  (ULONG,AddRef) (
7b00: 54 48 49 53 29 20 20 50 55 52 45 3b 0a 20 20 20  THIS)  PURE;.   
7b10: 20 53 54 44 4d 45 54 48 4f 44 5f 28 55 4c 4f 4e   STDMETHOD_(ULON
7b20: 47 2c 52 65 6c 65 61 73 65 29 20 28 54 48 49 53  G,Release) (THIS
7b30: 29 20 50 55 52 45 3b 0a 0a 20 20 20 20 53 54 44  ) PURE;..    STD
7b40: 4d 45 54 48 4f 44 5f 28 4c 50 56 4f 49 44 2c 47  METHOD_(LPVOID,G
7b50: 65 74 46 72 61 6d 65 29 20 28 54 48 49 53 5f 20  etFrame) (THIS_ 
7b60: 4c 4f 4e 47 20 6c 50 6f 73 29 20 50 55 52 45 3b  LONG lPos) PURE;
7b70: 0a 0a 20 20 20 20 53 54 44 4d 45 54 48 4f 44 28  ..    STDMETHOD(
7b80: 42 65 67 69 6e 29 20 28 54 48 49 53 5f 20 4c 4f  Begin) (THIS_ LO
7b90: 4e 47 20 6c 53 74 61 72 74 2c 20 4c 4f 4e 47 20  NG lStart, LONG 
7ba0: 6c 45 6e 64 2c 20 4c 4f 4e 47 20 6c 52 61 74 65  lEnd, LONG lRate
7bb0: 29 20 50 55 52 45 3b 0a 20 20 20 20 53 54 44 4d  ) PURE;.    STDM
7bc0: 45 54 48 4f 44 28 45 6e 64 29 20 28 54 48 49 53  ETHOD(End) (THIS
7bd0: 29 20 50 55 52 45 3b 0a 0a 20 20 20 20 53 54 44  ) PURE;..    STD
7be0: 4d 45 54 48 4f 44 28 53 65 74 46 6f 72 6d 61 74  METHOD(SetFormat
7bf0: 29 20 28 54 48 49 53 5f 20 4c 50 42 49 54 4d 41  ) (THIS_ LPBITMA
7c00: 50 49 4e 46 4f 48 45 41 44 45 52 20 6c 70 62 69  PINFOHEADER lpbi
7c10: 2c 20 4c 50 56 4f 49 44 20 6c 70 42 69 74 73 2c  , LPVOID lpBits,
7c20: 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 69   int x, int y, i
7c30: 6e 74 20 64 78 2c 20 69 6e 74 20 64 79 29 20 50  nt dx, int dy) P
7c40: 55 52 45 3b 0a 7d 3b 0a 0a 23 75 6e 64 65 66 20  URE;.};..#undef 
7c50: 50 47 45 54 46 52 41 4d 45 0a 74 79 70 65 64 65  PGETFRAME.typede
7c60: 66 20 49 47 65 74 46 72 61 6d 65 20 46 41 52 2a  f IGetFrame FAR*
7c70: 20 50 47 45 54 46 52 41 4d 45 3b 0a 0a 23 64 65   PGETFRAME;..#de
7c80: 66 69 6e 65 20 44 45 46 49 4e 45 5f 41 56 49 47  fine DEFINE_AVIG
7c90: 55 49 44 28 6e 61 6d 65 2c 20 6c 2c 20 77 31 2c  UID(name, l, w1,
7ca0: 20 77 32 29 20 20 20 20 44 45 46 49 4e 45 5f 47   w2)    DEFINE_G
7cb0: 55 49 44 28 6e 61 6d 65 2c 20 6c 2c 20 77 31 2c  UID(name, l, w1,
7cc0: 20 77 32 2c 20 30 78 43 30 2c 30 2c 30 2c 30 2c   w2, 0xC0,0,0,0,
7cd0: 30 2c 30 2c 30 2c 30 78 34 36 29 0a 0a 44 45 46  0,0,0,0x46)..DEF
7ce0: 49 4e 45 5f 41 56 49 47 55 49 44 28 49 49 44 5f  INE_AVIGUID(IID_
7cf0: 49 41 56 49 46 69 6c 65 2c 20 20 20 20 20 20 20  IAVIFile,       
7d00: 20 20 20 20 20 30 78 30 30 30 32 30 30 32 30 2c       0x00020020,
7d10: 20 30 2c 20 30 29 3b 0a 44 45 46 49 4e 45 5f 41   0, 0);.DEFINE_A
7d20: 56 49 47 55 49 44 28 49 49 44 5f 49 41 56 49 53  VIGUID(IID_IAVIS
7d30: 74 72 65 61 6d 2c 20 20 20 20 20 20 20 20 20 20  tream,          
7d40: 30 78 30 30 30 32 30 30 32 31 2c 20 30 2c 20 30  0x00020021, 0, 0
7d50: 29 3b 0a 44 45 46 49 4e 45 5f 41 56 49 47 55 49  );.DEFINE_AVIGUI
7d60: 44 28 49 49 44 5f 49 41 56 49 53 74 72 65 61 6d  D(IID_IAVIStream
7d70: 69 6e 67 2c 20 20 20 20 20 20 20 30 78 30 30 30  ing,       0x000
7d80: 32 30 30 32 32 2c 20 30 2c 20 30 29 3b 0a 44 45  20022, 0, 0);.DE
7d90: 46 49 4e 45 5f 41 56 49 47 55 49 44 28 49 49 44  FINE_AVIGUID(IID
7da0: 5f 49 47 65 74 46 72 61 6d 65 2c 20 20 20 20 20  _IGetFrame,     
7db0: 20 20 20 20 20 20 30 78 30 30 30 32 30 30 32 33        0x00020023
7dc0: 2c 20 30 2c 20 30 29 3b 0a 44 45 46 49 4e 45 5f  , 0, 0);.DEFINE_
7dd0: 41 56 49 47 55 49 44 28 49 49 44 5f 49 41 56 49  AVIGUID(IID_IAVI
7de0: 45 64 69 74 53 74 72 65 61 6d 2c 20 20 20 20 20  EditStream,     
7df0: 20 30 78 30 30 30 32 30 30 32 34 2c 20 30 2c 20   0x00020024, 0, 
7e00: 30 29 3b 0a 44 45 46 49 4e 45 5f 41 56 49 47 55  0);.DEFINE_AVIGU
7e10: 49 44 28 49 49 44 5f 49 41 56 49 50 65 72 73 69  ID(IID_IAVIPersi
7e20: 73 74 46 69 6c 65 2c 20 20 20 20 20 30 78 30 30  stFile,     0x00
7e30: 30 32 30 30 32 35 2c 20 30 2c 20 30 29 3b 0a 23  020025, 0, 0);.#
7e40: 69 66 6e 64 65 66 20 55 4e 49 43 4f 44 45 0a 44  ifndef UNICODE.D
7e50: 45 46 49 4e 45 5f 41 56 49 47 55 49 44 28 43 4c  EFINE_AVIGUID(CL
7e60: 53 49 44 5f 41 56 49 53 69 6d 70 6c 65 55 6e 4d  SID_AVISimpleUnM
7e70: 61 72 73 68 61 6c 2c 20 20 20 20 20 20 20 20 30  arshal,        0
7e80: 78 30 30 30 32 30 30 30 39 2c 20 30 2c 20 30 29  x00020009, 0, 0)
7e90: 3b 0a 23 65 6e 64 69 66 0a 0a 44 45 46 49 4e 45  ;.#endif..DEFINE
7ea0: 5f 41 56 49 47 55 49 44 28 43 4c 53 49 44 5f 41  _AVIGUID(CLSID_A
7eb0: 56 49 46 69 6c 65 2c 20 20 20 20 20 20 20 20 20  VIFile,         
7ec0: 20 20 30 78 30 30 30 32 30 30 30 30 2c 20 30 2c    0x00020000, 0,
7ed0: 20 30 29 3b 0a 0a 23 64 65 66 69 6e 65 09 41 56   0);..#define.AV
7ee0: 49 46 49 4c 45 48 41 4e 44 4c 45 52 5f 43 41 4e  IFILEHANDLER_CAN
7ef0: 52 45 41 44 09 09 30 78 30 30 30 31 0a 23 64 65  READ..0x0001.#de
7f00: 66 69 6e 65 09 41 56 49 46 49 4c 45 48 41 4e 44  fine.AVIFILEHAND
7f10: 4c 45 52 5f 43 41 4e 57 52 49 54 45 09 09 30 78  LER_CANWRITE..0x
7f20: 30 30 30 32 0a 23 64 65 66 69 6e 65 09 41 56 49  0002.#define.AVI
7f30: 46 49 4c 45 48 41 4e 44 4c 45 52 5f 43 41 4e 41  FILEHANDLER_CANA
7f40: 43 43 45 50 54 4e 4f 4e 52 47 42 09 30 78 30 30  CCEPTNONRGB.0x00
7f50: 30 34 0a 0a 53 54 44 41 50 49 5f 28 76 6f 69 64  04..STDAPI_(void
7f60: 29 20 41 56 49 46 69 6c 65 49 6e 69 74 28 76 6f  ) AVIFileInit(vo
7f70: 69 64 29 3b 0a 53 54 44 41 50 49 5f 28 76 6f 69  id);.STDAPI_(voi
7f80: 64 29 20 41 56 49 46 69 6c 65 45 78 69 74 28 76  d) AVIFileExit(v
7f90: 6f 69 64 29 3b 0a 0a 53 54 44 41 50 49 5f 28 55  oid);..STDAPI_(U
7fa0: 4c 4f 4e 47 29 20 41 56 49 46 69 6c 65 41 64 64  LONG) AVIFileAdd
7fb0: 52 65 66 20 20 20 20 20 20 20 28 50 41 56 49 46  Ref       (PAVIF
7fc0: 49 4c 45 20 70 66 69 6c 65 29 3b 0a 53 54 44 41  ILE pfile);.STDA
7fd0: 50 49 5f 28 55 4c 4f 4e 47 29 20 41 56 49 46 69  PI_(ULONG) AVIFi
7fe0: 6c 65 52 65 6c 65 61 73 65 20 20 20 20 20 20 28  leRelease      (
7ff0: 50 41 56 49 46 49 4c 45 20 70 66 69 6c 65 29 3b  PAVIFILE pfile);
8000: 0a 0a 23 69 66 64 65 66 20 5f 57 49 4e 33 32 0a  ..#ifdef _WIN32.
8010: 53 54 44 41 50 49 20 41 56 49 46 69 6c 65 4f 70  STDAPI AVIFileOp
8020: 65 6e 41 20 20 20 20 20 20 20 28 50 41 56 49 46  enA       (PAVIF
8030: 49 4c 45 20 46 41 52 20 2a 20 70 70 66 69 6c 65  ILE FAR * ppfile
8040: 2c 20 4c 50 43 53 54 52 20 73 7a 46 69 6c 65 2c  , LPCSTR szFile,
8050: 0a 09 09 09 20 20 55 49 4e 54 20 75 4d 6f 64 65  ....  UINT uMode
8060: 2c 20 4c 50 43 4c 53 49 44 20 6c 70 48 61 6e 64  , LPCLSID lpHand
8070: 6c 65 72 29 3b 0a 53 54 44 41 50 49 20 41 56 49  ler);.STDAPI AVI
8080: 46 69 6c 65 4f 70 65 6e 57 20 20 20 20 20 20 20  FileOpenW       
8090: 28 50 41 56 49 46 49 4c 45 20 46 41 52 20 2a 20  (PAVIFILE FAR * 
80a0: 70 70 66 69 6c 65 2c 20 4c 50 43 57 53 54 52 20  ppfile, LPCWSTR 
80b0: 73 7a 46 69 6c 65 2c 0a 09 09 09 20 20 55 49 4e  szFile,....  UIN
80c0: 54 20 75 4d 6f 64 65 2c 20 4c 50 43 4c 53 49 44  T uMode, LPCLSID
80d0: 20 6c 70 48 61 6e 64 6c 65 72 29 3b 0a 23 69 66   lpHandler);.#if
80e0: 64 65 66 20 55 4e 49 43 4f 44 45 0a 23 64 65 66  def UNICODE.#def
80f0: 69 6e 65 20 41 56 49 46 69 6c 65 4f 70 65 6e 09  ine AVIFileOpen.
8100: 20 20 41 56 49 46 69 6c 65 4f 70 65 6e 57 09 0a    AVIFileOpenW..
8110: 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 41 56  #else.#define AV
8120: 49 46 69 6c 65 4f 70 65 6e 09 20 20 41 56 49 46  IFileOpen.  AVIF
8130: 69 6c 65 4f 70 65 6e 41 09 0a 23 65 6e 64 69 66  ileOpenA..#endif
8140: 0a 23 65 6c 73 65 0a 53 54 44 41 50 49 20 41 56  .#else.STDAPI AV
8150: 49 46 69 6c 65 4f 70 65 6e 20 20 20 20 20 20 20  IFileOpen       
8160: 28 50 41 56 49 46 49 4c 45 20 46 41 52 20 2a 20  (PAVIFILE FAR * 
8170: 70 70 66 69 6c 65 2c 20 4c 50 43 53 54 52 20 73  ppfile, LPCSTR s
8180: 7a 46 69 6c 65 2c 0a 09 09 09 20 20 55 49 4e 54  zFile,....  UINT
8190: 20 75 4d 6f 64 65 2c 20 4c 50 43 4c 53 49 44 20   uMode, LPCLSID 
81a0: 6c 70 48 61 6e 64 6c 65 72 29 3b 0a 23 64 65 66  lpHandler);.#def
81b0: 69 6e 65 20 41 56 49 46 69 6c 65 4f 70 65 6e 57  ine AVIFileOpenW
81c0: 09 41 56 49 46 69 6c 65 4f 70 65 6e 0a 23 65 6e  .AVIFileOpen.#en
81d0: 64 69 66 0a 0a 23 69 66 64 65 66 20 5f 57 49 4e  dif..#ifdef _WIN
81e0: 33 32 0a 53 54 44 41 50 49 20 41 56 49 46 69 6c  32.STDAPI AVIFil
81f0: 65 49 6e 66 6f 57 20 28 50 41 56 49 46 49 4c 45  eInfoW (PAVIFILE
8200: 20 70 66 69 6c 65 2c 20 4c 50 41 56 49 46 49 4c   pfile, LPAVIFIL
8210: 45 49 4e 46 4f 57 20 70 66 69 2c 20 4c 4f 4e 47  EINFOW pfi, LONG
8220: 20 6c 53 69 7a 65 29 3b 0a 53 54 44 41 50 49 20   lSize);.STDAPI 
8230: 41 56 49 46 69 6c 65 49 6e 66 6f 41 20 28 50 41  AVIFileInfoA (PA
8240: 56 49 46 49 4c 45 20 70 66 69 6c 65 2c 20 4c 50  VIFILE pfile, LP
8250: 41 56 49 46 49 4c 45 49 4e 46 4f 41 20 70 66 69  AVIFILEINFOA pfi
8260: 2c 20 4c 4f 4e 47 20 6c 53 69 7a 65 29 3b 0a 23  , LONG lSize);.#
8270: 69 66 64 65 66 20 55 4e 49 43 4f 44 45 0a 23 64  ifdef UNICODE.#d
8280: 65 66 69 6e 65 20 41 56 49 46 69 6c 65 49 6e 66  efine AVIFileInf
8290: 6f 09 41 56 49 46 69 6c 65 49 6e 66 6f 57 0a 23  o.AVIFileInfoW.#
82a0: 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 41 56 49  else.#define AVI
82b0: 46 69 6c 65 49 6e 66 6f 09 41 56 49 46 69 6c 65  FileInfo.AVIFile
82c0: 49 6e 66 6f 41 0a 23 65 6e 64 69 66 0a 23 65 6c  InfoA.#endif.#el
82d0: 73 65 0a 53 54 44 41 50 49 20 41 56 49 46 69 6c  se.STDAPI AVIFil
82e0: 65 49 6e 66 6f 20 28 50 41 56 49 46 49 4c 45 20  eInfo (PAVIFILE 
82f0: 70 66 69 6c 65 2c 20 4c 50 41 56 49 46 49 4c 45  pfile, LPAVIFILE
8300: 49 4e 46 4f 20 70 66 69 2c 20 4c 4f 4e 47 20 6c  INFO pfi, LONG l
8310: 53 69 7a 65 29 3b 0a 23 64 65 66 69 6e 65 20 41  Size);.#define A
8320: 56 49 46 69 6c 65 49 6e 66 6f 57 20 41 56 49 46  VIFileInfoW AVIF
8330: 69 6c 65 49 6e 66 6f 0a 23 65 6e 64 69 66 0a 0a  ileInfo.#endif..
8340: 0a 53 54 44 41 50 49 20 41 56 49 46 69 6c 65 47  .STDAPI AVIFileG
8350: 65 74 53 74 72 65 61 6d 20 20 20 20 20 28 50 41  etStream     (PA
8360: 56 49 46 49 4c 45 20 70 66 69 6c 65 2c 20 50 41  VIFILE pfile, PA
8370: 56 49 53 54 52 45 41 4d 20 46 41 52 20 2a 20 70  VISTREAM FAR * p
8380: 70 61 76 69 2c 20 44 57 4f 52 44 20 66 63 63 54  pavi, DWORD fccT
8390: 79 70 65 2c 20 4c 4f 4e 47 20 6c 50 61 72 61 6d  ype, LONG lParam
83a0: 29 3b 0a 0a 0a 23 69 66 64 65 66 20 5f 57 49 4e  );...#ifdef _WIN
83b0: 33 32 0a 53 54 44 41 50 49 20 41 56 49 46 69 6c  32.STDAPI AVIFil
83c0: 65 43 72 65 61 74 65 53 74 72 65 61 6d 57 20 28  eCreateStreamW (
83d0: 50 41 56 49 46 49 4c 45 20 70 66 69 6c 65 2c 20  PAVIFILE pfile, 
83e0: 50 41 56 49 53 54 52 45 41 4d 20 46 41 52 20 2a  PAVISTREAM FAR *
83f0: 70 70 61 76 69 2c 20 41 56 49 53 54 52 45 41 4d  ppavi, AVISTREAM
8400: 49 4e 46 4f 57 20 46 41 52 20 2a 20 70 73 69 29  INFOW FAR * psi)
8410: 3b 0a 53 54 44 41 50 49 20 41 56 49 46 69 6c 65  ;.STDAPI AVIFile
8420: 43 72 65 61 74 65 53 74 72 65 61 6d 41 20 28 50  CreateStreamA (P
8430: 41 56 49 46 49 4c 45 20 70 66 69 6c 65 2c 20 50  AVIFILE pfile, P
8440: 41 56 49 53 54 52 45 41 4d 20 46 41 52 20 2a 70  AVISTREAM FAR *p
8450: 70 61 76 69 2c 20 41 56 49 53 54 52 45 41 4d 49  pavi, AVISTREAMI
8460: 4e 46 4f 41 20 46 41 52 20 2a 20 70 73 69 29 3b  NFOA FAR * psi);
8470: 0a 23 69 66 64 65 66 20 55 4e 49 43 4f 44 45 0a  .#ifdef UNICODE.
8480: 23 64 65 66 69 6e 65 20 41 56 49 46 69 6c 65 43  #define AVIFileC
8490: 72 65 61 74 65 53 74 72 65 61 6d 09 41 56 49 46  reateStream.AVIF
84a0: 69 6c 65 43 72 65 61 74 65 53 74 72 65 61 6d 57  ileCreateStreamW
84b0: 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 41  .#else.#define A
84c0: 56 49 46 69 6c 65 43 72 65 61 74 65 53 74 72 65  VIFileCreateStre
84d0: 61 6d 09 41 56 49 46 69 6c 65 43 72 65 61 74 65  am.AVIFileCreate
84e0: 53 74 72 65 61 6d 41 0a 23 65 6e 64 69 66 0a 23  StreamA.#endif.#
84f0: 65 6c 73 65 0a 53 54 44 41 50 49 20 41 56 49 46  else.STDAPI AVIF
8500: 69 6c 65 43 72 65 61 74 65 53 74 72 65 61 6d 28  ileCreateStream(
8510: 50 41 56 49 46 49 4c 45 20 70 66 69 6c 65 2c 20  PAVIFILE pfile, 
8520: 50 41 56 49 53 54 52 45 41 4d 20 46 41 52 20 2a  PAVISTREAM FAR *
8530: 70 70 61 76 69 2c 20 41 56 49 53 54 52 45 41 4d  ppavi, AVISTREAM
8540: 49 4e 46 4f 20 46 41 52 20 2a 20 70 73 69 29 3b  INFO FAR * psi);
8550: 0a 23 64 65 66 69 6e 65 20 41 56 49 46 69 6c 65  .#define AVIFile
8560: 43 72 65 61 74 65 53 74 72 65 61 6d 57 20 41 56  CreateStreamW AV
8570: 49 46 69 6c 65 43 72 65 61 74 65 53 74 72 65 61  IFileCreateStrea
8580: 6d 0a 23 65 6e 64 69 66 0a 0a 53 54 44 41 50 49  m.#endif..STDAPI
8590: 20 41 56 49 46 69 6c 65 57 72 69 74 65 44 61 74   AVIFileWriteDat
85a0: 61 09 28 50 41 56 49 46 49 4c 45 20 70 66 69 6c  a.(PAVIFILE pfil
85b0: 65 2c 0a 09 09 09 09 09 20 44 57 4f 52 44 20 63  e,...... DWORD c
85c0: 6b 69 64 2c 0a 09 09 09 09 09 20 4c 50 56 4f 49  kid,...... LPVOI
85d0: 44 20 6c 70 44 61 74 61 2c 0a 09 09 09 09 09 20  D lpData,...... 
85e0: 4c 4f 4e 47 20 63 62 44 61 74 61 29 3b 0a 53 54  LONG cbData);.ST
85f0: 44 41 50 49 20 41 56 49 46 69 6c 65 52 65 61 64  DAPI AVIFileRead
8600: 44 61 74 61 09 28 50 41 56 49 46 49 4c 45 20 70  Data.(PAVIFILE p
8610: 66 69 6c 65 2c 0a 09 09 09 09 09 20 44 57 4f 52  file,...... DWOR
8620: 44 20 63 6b 69 64 2c 0a 09 09 09 09 09 20 4c 50  D ckid,...... LP
8630: 56 4f 49 44 20 6c 70 44 61 74 61 2c 0a 09 09 09  VOID lpData,....
8640: 09 09 20 4c 4f 4e 47 20 46 41 52 20 2a 6c 70 63  .. LONG FAR *lpc
8650: 62 44 61 74 61 29 3b 0a 53 54 44 41 50 49 20 41  bData);.STDAPI A
8660: 56 49 46 69 6c 65 45 6e 64 52 65 63 6f 72 64 09  VIFileEndRecord.
8670: 28 50 41 56 49 46 49 4c 45 20 70 66 69 6c 65 29  (PAVIFILE pfile)
8680: 3b 0a 0a 53 54 44 41 50 49 5f 28 55 4c 4f 4e 47  ;..STDAPI_(ULONG
8690: 29 20 41 56 49 53 74 72 65 61 6d 41 64 64 52 65  ) AVIStreamAddRe
86a0: 66 20 20 20 20 20 20 20 28 50 41 56 49 53 54 52  f       (PAVISTR
86b0: 45 41 4d 20 70 61 76 69 29 3b 0a 53 54 44 41 50  EAM pavi);.STDAP
86c0: 49 5f 28 55 4c 4f 4e 47 29 20 41 56 49 53 74 72  I_(ULONG) AVIStr
86d0: 65 61 6d 52 65 6c 65 61 73 65 20 20 20 20 20 20  eamRelease      
86e0: 28 50 41 56 49 53 54 52 45 41 4d 20 70 61 76 69  (PAVISTREAM pavi
86f0: 29 3b 0a 0a 53 54 44 41 50 49 20 41 56 49 53 74  );..STDAPI AVISt
8700: 72 65 61 6d 49 6e 66 6f 57 20 28 50 41 56 49 53  reamInfoW (PAVIS
8710: 54 52 45 41 4d 20 70 61 76 69 2c 20 4c 50 41 56  TREAM pavi, LPAV
8720: 49 53 54 52 45 41 4d 49 4e 46 4f 57 20 70 73 69  ISTREAMINFOW psi
8730: 2c 20 4c 4f 4e 47 20 6c 53 69 7a 65 29 3b 0a 53  , LONG lSize);.S
8740: 54 44 41 50 49 20 41 56 49 53 74 72 65 61 6d 49  TDAPI AVIStreamI
8750: 6e 66 6f 41 20 28 50 41 56 49 53 54 52 45 41 4d  nfoA (PAVISTREAM
8760: 20 70 61 76 69 2c 20 4c 50 41 56 49 53 54 52 45   pavi, LPAVISTRE
8770: 41 4d 49 4e 46 4f 41 20 70 73 69 2c 20 4c 4f 4e  AMINFOA psi, LON
8780: 47 20 6c 53 69 7a 65 29 3b 0a 23 69 66 64 65 66  G lSize);.#ifdef
8790: 20 55 4e 49 43 4f 44 45 0a 23 64 65 66 69 6e 65   UNICODE.#define
87a0: 20 41 56 49 53 74 72 65 61 6d 49 6e 66 6f 09 41   AVIStreamInfo.A
87b0: 56 49 53 74 72 65 61 6d 49 6e 66 6f 57 0a 23 65  VIStreamInfoW.#e
87c0: 6c 73 65 0a 23 64 65 66 69 6e 65 20 41 56 49 53  lse.#define AVIS
87d0: 74 72 65 61 6d 49 6e 66 6f 09 41 56 49 53 74 72  treamInfo.AVIStr
87e0: 65 61 6d 49 6e 66 6f 41 0a 23 65 6e 64 69 66 0a  eamInfoA.#endif.
87f0: 0a 53 54 44 41 50 49 5f 28 4c 4f 4e 47 29 20 41  .STDAPI_(LONG) A
8800: 56 49 53 74 72 65 61 6d 46 69 6e 64 53 61 6d 70  VIStreamFindSamp
8810: 6c 65 28 50 41 56 49 53 54 52 45 41 4d 20 70 61  le(PAVISTREAM pa
8820: 76 69 2c 20 4c 4f 4e 47 20 6c 50 6f 73 2c 20 4c  vi, LONG lPos, L
8830: 4f 4e 47 20 6c 46 6c 61 67 73 29 3b 0a 53 54 44  ONG lFlags);.STD
8840: 41 50 49 20 41 56 49 53 74 72 65 61 6d 52 65 61  API AVIStreamRea
8850: 64 46 6f 72 6d 61 74 20 20 20 28 50 41 56 49 53  dFormat   (PAVIS
8860: 54 52 45 41 4d 20 70 61 76 69 2c 20 4c 4f 4e 47  TREAM pavi, LONG
8870: 20 6c 50 6f 73 2c 4c 50 56 4f 49 44 20 6c 70 46   lPos,LPVOID lpF
8880: 6f 72 6d 61 74 2c 4c 4f 4e 47 20 46 41 52 20 2a  ormat,LONG FAR *
8890: 6c 70 63 62 46 6f 72 6d 61 74 29 3b 0a 53 54 44  lpcbFormat);.STD
88a0: 41 50 49 20 41 56 49 53 74 72 65 61 6d 53 65 74  API AVIStreamSet
88b0: 46 6f 72 6d 61 74 20 20 20 20 28 50 41 56 49 53  Format    (PAVIS
88c0: 54 52 45 41 4d 20 70 61 76 69 2c 20 4c 4f 4e 47  TREAM pavi, LONG
88d0: 20 6c 50 6f 73 2c 4c 50 56 4f 49 44 20 6c 70 46   lPos,LPVOID lpF
88e0: 6f 72 6d 61 74 2c 4c 4f 4e 47 20 63 62 46 6f 72  ormat,LONG cbFor
88f0: 6d 61 74 29 3b 0a 53 54 44 41 50 49 20 41 56 49  mat);.STDAPI AVI
8900: 53 74 72 65 61 6d 52 65 61 64 44 61 74 61 20 20  StreamReadData  
8910: 20 20 20 28 50 41 56 49 53 54 52 45 41 4d 20 70     (PAVISTREAM p
8920: 61 76 69 2c 20 44 57 4f 52 44 20 66 63 63 2c 20  avi, DWORD fcc, 
8930: 4c 50 56 4f 49 44 20 6c 70 2c 20 4c 4f 4e 47 20  LPVOID lp, LONG 
8940: 46 41 52 20 2a 6c 70 63 62 29 3b 0a 53 54 44 41  FAR *lpcb);.STDA
8950: 50 49 20 41 56 49 53 74 72 65 61 6d 57 72 69 74  PI AVIStreamWrit
8960: 65 44 61 74 61 20 20 20 20 28 50 41 56 49 53 54  eData    (PAVIST
8970: 52 45 41 4d 20 70 61 76 69 2c 20 44 57 4f 52 44  REAM pavi, DWORD
8980: 20 66 63 63 2c 20 4c 50 56 4f 49 44 20 6c 70 2c   fcc, LPVOID lp,
8990: 20 4c 4f 4e 47 20 63 62 29 3b 0a 0a 53 54 44 41   LONG cb);..STDA
89a0: 50 49 20 41 56 49 53 74 72 65 61 6d 52 65 61 64  PI AVIStreamRead
89b0: 20 20 20 20 20 20 20 20 20 28 50 41 56 49 53 54           (PAVIST
89c0: 52 45 41 4d 20 70 61 76 69 2c 0a 09 09 09 20 20  REAM pavi,....  
89d0: 20 20 20 20 4c 4f 4e 47 20 6c 53 74 61 72 74 2c      LONG lStart,
89e0: 0a 09 09 09 20 20 20 20 20 20 4c 4f 4e 47 20 6c  ....      LONG l
89f0: 53 61 6d 70 6c 65 73 2c 0a 09 09 09 20 20 20 20  Samples,....    
8a00: 20 20 4c 50 56 4f 49 44 20 6c 70 42 75 66 66 65    LPVOID lpBuffe
8a10: 72 2c 0a 09 09 09 20 20 20 20 20 20 4c 4f 4e 47  r,....      LONG
8a20: 20 63 62 42 75 66 66 65 72 2c 0a 09 09 09 20 20   cbBuffer,....  
8a30: 20 20 20 20 4c 4f 4e 47 20 46 41 52 20 2a 20 70      LONG FAR * p
8a40: 6c 42 79 74 65 73 2c 0a 09 09 09 20 20 20 20 20  lBytes,....     
8a50: 20 4c 4f 4e 47 20 46 41 52 20 2a 20 70 6c 53 61   LONG FAR * plSa
8a60: 6d 70 6c 65 73 29 3b 0a 23 64 65 66 69 6e 65 20  mples);.#define 
8a70: 41 56 49 53 54 52 45 41 4d 52 45 41 44 5f 43 4f  AVISTREAMREAD_CO
8a80: 4e 56 45 4e 49 45 4e 54 09 28 2d 31 4c 29 0a 0a  NVENIENT.(-1L)..
8a90: 53 54 44 41 50 49 20 41 56 49 53 74 72 65 61 6d  STDAPI AVIStream
8aa0: 57 72 69 74 65 20 20 20 20 20 20 20 20 28 50 41  Write        (PA
8ab0: 56 49 53 54 52 45 41 4d 20 70 61 76 69 2c 0a 09  VISTREAM pavi,..
8ac0: 09 09 20 20 20 20 20 20 4c 4f 4e 47 20 6c 53 74  ..      LONG lSt
8ad0: 61 72 74 2c 20 4c 4f 4e 47 20 6c 53 61 6d 70 6c  art, LONG lSampl
8ae0: 65 73 2c 0a 09 09 09 20 20 20 20 20 20 4c 50 56  es,....      LPV
8af0: 4f 49 44 20 6c 70 42 75 66 66 65 72 2c 20 4c 4f  OID lpBuffer, LO
8b00: 4e 47 20 63 62 42 75 66 66 65 72 2c 20 44 57 4f  NG cbBuffer, DWO
8b10: 52 44 20 64 77 46 6c 61 67 73 2c 0a 09 09 09 20  RD dwFlags,.... 
8b20: 20 20 20 20 20 4c 4f 4e 47 20 46 41 52 20 2a 70       LONG FAR *p
8b30: 6c 53 61 6d 70 57 72 69 74 74 65 6e 2c 0a 09 09  lSampWritten,...
8b40: 09 20 20 20 20 20 20 4c 4f 4e 47 20 46 41 52 20  .      LONG FAR 
8b50: 2a 70 6c 42 79 74 65 73 57 72 69 74 74 65 6e 29  *plBytesWritten)
8b60: 3b 0a 0a 53 54 44 41 50 49 5f 28 4c 4f 4e 47 29  ;..STDAPI_(LONG)
8b70: 20 41 56 49 53 74 72 65 61 6d 53 74 61 72 74 20   AVIStreamStart 
8b80: 20 20 20 20 20 20 20 28 50 41 56 49 53 54 52 45         (PAVISTRE
8b90: 41 4d 20 70 61 76 69 29 3b 0a 53 54 44 41 50 49  AM pavi);.STDAPI
8ba0: 5f 28 4c 4f 4e 47 29 20 41 56 49 53 74 72 65 61  _(LONG) AVIStrea
8bb0: 6d 4c 65 6e 67 74 68 20 20 20 20 20 20 20 28 50  mLength       (P
8bc0: 41 56 49 53 54 52 45 41 4d 20 70 61 76 69 29 3b  AVISTREAM pavi);
8bd0: 0a 53 54 44 41 50 49 5f 28 4c 4f 4e 47 29 20 41  .STDAPI_(LONG) A
8be0: 56 49 53 74 72 65 61 6d 54 69 6d 65 54 6f 53 61  VIStreamTimeToSa
8bf0: 6d 70 6c 65 20 28 50 41 56 49 53 54 52 45 41 4d  mple (PAVISTREAM
8c00: 20 70 61 76 69 2c 20 4c 4f 4e 47 20 6c 54 69 6d   pavi, LONG lTim
8c10: 65 29 3b 0a 53 54 44 41 50 49 5f 28 4c 4f 4e 47  e);.STDAPI_(LONG
8c20: 29 20 41 56 49 53 74 72 65 61 6d 53 61 6d 70 6c  ) AVIStreamSampl
8c30: 65 54 6f 54 69 6d 65 20 28 50 41 56 49 53 54 52  eToTime (PAVISTR
8c40: 45 41 4d 20 70 61 76 69 2c 20 4c 4f 4e 47 20 6c  EAM pavi, LONG l
8c50: 53 61 6d 70 6c 65 29 3b 0a 0a 0a 53 54 44 41 50  Sample);...STDAP
8c60: 49 20 41 56 49 53 74 72 65 61 6d 42 65 67 69 6e  I AVIStreamBegin
8c70: 53 74 72 65 61 6d 69 6e 67 28 50 41 56 49 53 54  Streaming(PAVIST
8c80: 52 45 41 4d 20 70 61 76 69 2c 20 4c 4f 4e 47 20  REAM pavi, LONG 
8c90: 6c 53 74 61 72 74 2c 20 4c 4f 4e 47 20 6c 45 6e  lStart, LONG lEn
8ca0: 64 2c 20 4c 4f 4e 47 20 6c 52 61 74 65 29 3b 0a  d, LONG lRate);.
8cb0: 53 54 44 41 50 49 20 41 56 49 53 74 72 65 61 6d  STDAPI AVIStream
8cc0: 45 6e 64 53 74 72 65 61 6d 69 6e 67 28 50 41 56  EndStreaming(PAV
8cd0: 49 53 54 52 45 41 4d 20 70 61 76 69 29 3b 0a 0a  ISTREAM pavi);..
8ce0: 53 54 44 41 50 49 5f 28 50 47 45 54 46 52 41 4d  STDAPI_(PGETFRAM
8cf0: 45 29 20 41 56 49 53 74 72 65 61 6d 47 65 74 46  E) AVIStreamGetF
8d00: 72 61 6d 65 4f 70 65 6e 28 50 41 56 49 53 54 52  rameOpen(PAVISTR
8d10: 45 41 4d 20 70 61 76 69 2c 0a 09 09 09 09 09 20  EAM pavi,...... 
8d20: 4c 50 42 49 54 4d 41 50 49 4e 46 4f 48 45 41 44  LPBITMAPINFOHEAD
8d30: 45 52 20 6c 70 62 69 57 61 6e 74 65 64 29 3b 0a  ER lpbiWanted);.
8d40: 53 54 44 41 50 49 5f 28 4c 50 56 4f 49 44 29 20  STDAPI_(LPVOID) 
8d50: 41 56 49 53 74 72 65 61 6d 47 65 74 46 72 61 6d  AVIStreamGetFram
8d60: 65 28 50 47 45 54 46 52 41 4d 45 20 70 67 2c 20  e(PGETFRAME pg, 
8d70: 4c 4f 4e 47 20 6c 50 6f 73 29 3b 0a 53 54 44 41  LONG lPos);.STDA
8d80: 50 49 20 41 56 49 53 74 72 65 61 6d 47 65 74 46  PI AVIStreamGetF
8d90: 72 61 6d 65 43 6c 6f 73 65 28 50 47 45 54 46 52  rameClose(PGETFR
8da0: 41 4d 45 20 70 67 29 3b 0a 0a 53 54 44 41 50 49  AME pg);..STDAPI
8db0: 20 41 56 49 53 74 72 65 61 6d 4f 70 65 6e 46 72   AVIStreamOpenFr
8dc0: 6f 6d 46 69 6c 65 41 28 50 41 56 49 53 54 52 45  omFileA(PAVISTRE
8dd0: 41 4d 20 46 41 52 20 2a 70 70 61 76 69 2c 20 4c  AM FAR *ppavi, L
8de0: 50 43 53 54 52 20 73 7a 46 69 6c 65 2c 0a 09 09  PCSTR szFile,...
8df0: 09 20 20 20 20 20 44 57 4f 52 44 20 66 63 63 54  .     DWORD fccT
8e00: 79 70 65 2c 20 4c 4f 4e 47 20 6c 50 61 72 61 6d  ype, LONG lParam
8e10: 2c 0a 09 09 09 20 20 20 20 20 55 49 4e 54 20 6d  ,....     UINT m
8e20: 6f 64 65 2c 20 43 4c 53 49 44 20 46 41 52 20 2a  ode, CLSID FAR *
8e30: 70 63 6c 73 69 64 48 61 6e 64 6c 65 72 29 3b 0a  pclsidHandler);.
8e40: 53 54 44 41 50 49 20 41 56 49 53 74 72 65 61 6d  STDAPI AVIStream
8e50: 4f 70 65 6e 46 72 6f 6d 46 69 6c 65 57 28 50 41  OpenFromFileW(PA
8e60: 56 49 53 54 52 45 41 4d 20 46 41 52 20 2a 70 70  VISTREAM FAR *pp
8e70: 61 76 69 2c 20 4c 50 43 57 53 54 52 20 73 7a 46  avi, LPCWSTR szF
8e80: 69 6c 65 2c 0a 09 09 09 20 20 20 20 20 44 57 4f  ile,....     DWO
8e90: 52 44 20 66 63 63 54 79 70 65 2c 20 4c 4f 4e 47  RD fccType, LONG
8ea0: 20 6c 50 61 72 61 6d 2c 0a 09 09 09 20 20 20 20   lParam,....    
8eb0: 20 55 49 4e 54 20 6d 6f 64 65 2c 20 43 4c 53 49   UINT mode, CLSI
8ec0: 44 20 46 41 52 20 2a 70 63 6c 73 69 64 48 61 6e  D FAR *pclsidHan
8ed0: 64 6c 65 72 29 3b 0a 23 69 66 64 65 66 20 55 4e  dler);.#ifdef UN
8ee0: 49 43 4f 44 45 0a 23 64 65 66 69 6e 65 20 41 56  ICODE.#define AV
8ef0: 49 53 74 72 65 61 6d 4f 70 65 6e 46 72 6f 6d 46  IStreamOpenFromF
8f00: 69 6c 65 09 41 56 49 53 74 72 65 61 6d 4f 70 65  ile.AVIStreamOpe
8f10: 6e 46 72 6f 6d 46 69 6c 65 57 0a 23 65 6c 73 65  nFromFileW.#else
8f20: 0a 23 64 65 66 69 6e 65 20 41 56 49 53 74 72 65  .#define AVIStre
8f30: 61 6d 4f 70 65 6e 46 72 6f 6d 46 69 6c 65 09 41  amOpenFromFile.A
8f40: 56 49 53 74 72 65 61 6d 4f 70 65 6e 46 72 6f 6d  VIStreamOpenFrom
8f50: 46 69 6c 65 41 0a 23 65 6e 64 69 66 0a 0a 53 54  FileA.#endif..ST
8f60: 44 41 50 49 20 41 56 49 53 74 72 65 61 6d 43 72  DAPI AVIStreamCr
8f70: 65 61 74 65 28 50 41 56 49 53 54 52 45 41 4d 20  eate(PAVISTREAM 
8f80: 46 41 52 20 2a 70 70 61 76 69 2c 20 4c 4f 4e 47  FAR *ppavi, LONG
8f90: 20 6c 50 61 72 61 6d 31 2c 20 4c 4f 4e 47 20 6c   lParam1, LONG l
8fa0: 50 61 72 61 6d 32 2c 0a 09 09 20 20 20 20 20 20  Param2,...      
8fb0: 20 43 4c 53 49 44 20 46 41 52 20 2a 70 63 6c 73   CLSID FAR *pcls
8fc0: 69 64 48 61 6e 64 6c 65 72 29 3b 0a 0a 0a 0a 23  idHandler);....#
8fd0: 64 65 66 69 6e 65 20 46 49 4e 44 5f 44 49 52 20  define FIND_DIR 
8fe0: 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30 30         0x0000000
8ff0: 46 4c 0a 23 64 65 66 69 6e 65 20 46 49 4e 44 5f  FL.#define FIND_
9000: 4e 45 58 54 20 20 20 20 20 20 20 30 78 30 30 30  NEXT       0x000
9010: 30 30 30 30 31 4c 0a 23 64 65 66 69 6e 65 20 46  00001L.#define F
9020: 49 4e 44 5f 50 52 45 56 20 20 20 20 20 20 20 30  IND_PREV       0
9030: 78 30 30 30 30 30 30 30 34 4c 0a 23 64 65 66 69  x00000004L.#defi
9040: 6e 65 20 46 49 4e 44 5f 46 52 4f 4d 5f 53 54 41  ne FIND_FROM_STA
9050: 52 54 20 30 78 30 30 30 30 30 30 30 38 4c 0a 0a  RT 0x00000008L..
9060: 23 64 65 66 69 6e 65 20 46 49 4e 44 5f 54 59 50  #define FIND_TYP
9070: 45 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30  E       0x000000
9080: 46 30 4c 0a 23 64 65 66 69 6e 65 20 46 49 4e 44  F0L.#define FIND
9090: 5f 4b 45 59 20 20 20 20 20 20 20 20 30 78 30 30  _KEY        0x00
90a0: 30 30 30 30 31 30 4c 0a 23 64 65 66 69 6e 65 20  000010L.#define 
90b0: 46 49 4e 44 5f 41 4e 59 20 20 20 20 20 20 20 20  FIND_ANY        
90c0: 30 78 30 30 30 30 30 30 32 30 4c 0a 23 64 65 66  0x00000020L.#def
90d0: 69 6e 65 20 46 49 4e 44 5f 46 4f 52 4d 41 54 20  ine FIND_FORMAT 
90e0: 20 20 20 20 30 78 30 30 30 30 30 30 34 30 4c 0a      0x00000040L.
90f0: 0a 23 64 65 66 69 6e 65 20 46 49 4e 44 5f 52 45  .#define FIND_RE
9100: 54 20 20 20 20 20 20 20 20 30 78 30 30 30 30 46  T        0x0000F
9110: 30 30 30 4c 0a 23 64 65 66 69 6e 65 20 46 49 4e  000L.#define FIN
9120: 44 5f 50 4f 53 20 20 20 20 20 20 20 20 30 78 30  D_POS        0x0
9130: 30 30 30 30 30 30 30 4c 0a 23 64 65 66 69 6e 65  0000000L.#define
9140: 20 46 49 4e 44 5f 4c 45 4e 47 54 48 20 20 20 20   FIND_LENGTH    
9150: 20 30 78 30 30 30 30 31 30 30 30 4c 0a 23 64 65   0x00001000L.#de
9160: 66 69 6e 65 20 46 49 4e 44 5f 4f 46 46 53 45 54  fine FIND_OFFSET
9170: 20 20 20 20 20 30 78 30 30 30 30 32 30 30 30 4c       0x00002000L
9180: 0a 23 64 65 66 69 6e 65 20 46 49 4e 44 5f 53 49  .#define FIND_SI
9190: 5a 45 20 20 20 20 20 20 20 30 78 30 30 30 30 33  ZE       0x00003
91a0: 30 30 30 4c 0a 23 64 65 66 69 6e 65 20 46 49 4e  000L.#define FIN
91b0: 44 5f 49 4e 44 45 58 20 20 20 20 20 20 30 78 30  D_INDEX      0x0
91c0: 30 30 30 34 30 30 30 4c 0a 0a 23 64 65 66 69 6e  0004000L..#defin
91d0: 65 20 41 56 49 53 74 72 65 61 6d 46 69 6e 64 4b  e AVIStreamFindK
91e0: 65 79 46 72 61 6d 65 20 41 56 49 53 74 72 65 61  eyFrame AVIStrea
91f0: 6d 46 69 6e 64 53 61 6d 70 6c 65 0a 23 64 65 66  mFindSample.#def
9200: 69 6e 65 20 46 69 6e 64 4b 65 79 46 72 61 6d 65  ine FindKeyFrame
9210: 09 46 69 6e 64 53 61 6d 70 6c 65 0a 0a 23 64 65  .FindSample..#de
9220: 66 69 6e 65 20 41 56 49 53 74 72 65 61 6d 43 6c  fine AVIStreamCl
9230: 6f 73 65 20 41 56 49 53 74 72 65 61 6d 52 65 6c  ose AVIStreamRel
9240: 65 61 73 65 0a 23 64 65 66 69 6e 65 20 41 56 49  ease.#define AVI
9250: 46 69 6c 65 43 6c 6f 73 65 20 20 20 41 56 49 46  FileClose   AVIF
9260: 69 6c 65 52 65 6c 65 61 73 65 0a 23 64 65 66 69  ileRelease.#defi
9270: 6e 65 20 41 56 49 53 74 72 65 61 6d 49 6e 69 74  ne AVIStreamInit
9280: 20 20 41 56 49 46 69 6c 65 49 6e 69 74 0a 23 64    AVIFileInit.#d
9290: 65 66 69 6e 65 20 41 56 49 53 74 72 65 61 6d 45  efine AVIStreamE
92a0: 78 69 74 20 20 41 56 49 46 69 6c 65 45 78 69 74  xit  AVIFileExit
92b0: 0a 0a 23 64 65 66 69 6e 65 20 53 45 41 52 43 48  ..#define SEARCH
92c0: 5f 4e 45 41 52 45 53 54 20 20 46 49 4e 44 5f 50  _NEAREST  FIND_P
92d0: 52 45 56 0a 23 64 65 66 69 6e 65 20 53 45 41 52  REV.#define SEAR
92e0: 43 48 5f 42 41 43 4b 57 41 52 44 20 46 49 4e 44  CH_BACKWARD FIND
92f0: 5f 50 52 45 56 0a 23 64 65 66 69 6e 65 20 53 45  _PREV.#define SE
9300: 41 52 43 48 5f 46 4f 52 57 41 52 44 20 20 46 49  ARCH_FORWARD  FI
9310: 4e 44 5f 4e 45 58 54 0a 23 64 65 66 69 6e 65 20  ND_NEXT.#define 
9320: 53 45 41 52 43 48 5f 4b 45 59 20 20 20 20 20 20  SEARCH_KEY      
9330: 46 49 4e 44 5f 4b 45 59 0a 23 64 65 66 69 6e 65  FIND_KEY.#define
9340: 20 53 45 41 52 43 48 5f 41 4e 59 20 20 20 20 20   SEARCH_ANY     
9350: 20 46 49 4e 44 5f 41 4e 59 0a 0a 23 64 65 66 69   FIND_ANY..#defi
9360: 6e 65 20 20 20 20 20 41 56 49 53 74 72 65 61 6d  ne     AVIStream
9370: 53 61 6d 70 6c 65 54 6f 53 61 6d 70 6c 65 28 70  SampleToSample(p
9380: 61 76 69 31 2c 20 70 61 76 69 32 2c 20 6c 29 20  avi1, pavi2, l) 
9390: 20 20 20 20 20 20 20 20 20 20 20 41 56 49 53 74             AVISt
93a0: 72 65 61 6d 54 69 6d 65 54 6f 53 61 6d 70 6c 65  reamTimeToSample
93b0: 28 70 61 76 69 31 2c 41 56 49 53 74 72 65 61 6d  (pavi1,AVIStream
93c0: 53 61 6d 70 6c 65 54 6f 54 69 6d 65 28 70 61 76  SampleToTime(pav
93d0: 69 32 2c 20 6c 29 29 0a 0a 23 64 65 66 69 6e 65  i2, l))..#define
93e0: 20 20 20 20 20 41 56 49 53 74 72 65 61 6d 4e 65       AVIStreamNe
93f0: 78 74 53 61 6d 70 6c 65 28 70 61 76 69 2c 20 6c  xtSample(pavi, l
9400: 29 20 20 20 20 20 20 20 20 20 20 20 20 41 56 49  )            AVI
9410: 53 74 72 65 61 6d 46 69 6e 64 53 61 6d 70 6c 65  StreamFindSample
9420: 28 70 61 76 69 2c 6c 2b 31 2c 46 49 4e 44 5f 4e  (pavi,l+1,FIND_N
9430: 45 58 54 7c 46 49 4e 44 5f 41 4e 59 29 0a 0a 23  EXT|FIND_ANY)..#
9440: 64 65 66 69 6e 65 20 20 20 20 20 41 56 49 53 74  define     AVISt
9450: 72 65 61 6d 50 72 65 76 53 61 6d 70 6c 65 28 70  reamPrevSample(p
9460: 61 76 69 2c 20 6c 29 20 20 20 20 20 20 20 20 20  avi, l)         
9470: 20 20 20 41 56 49 53 74 72 65 61 6d 46 69 6e 64     AVIStreamFind
9480: 53 61 6d 70 6c 65 28 70 61 76 69 2c 6c 2d 31 2c  Sample(pavi,l-1,
9490: 46 49 4e 44 5f 50 52 45 56 7c 46 49 4e 44 5f 41  FIND_PREV|FIND_A
94a0: 4e 59 29 0a 0a 23 64 65 66 69 6e 65 20 20 20 20  NY)..#define    
94b0: 20 41 56 49 53 74 72 65 61 6d 4e 65 61 72 65 73   AVIStreamNeares
94c0: 74 53 61 6d 70 6c 65 28 70 61 76 69 2c 20 6c 29  tSample(pavi, l)
94d0: 20 20 20 20 20 20 20 20 20 20 20 20 41 56 49 53              AVIS
94e0: 74 72 65 61 6d 46 69 6e 64 53 61 6d 70 6c 65 28  treamFindSample(
94f0: 70 61 76 69 2c 6c 2c 46 49 4e 44 5f 50 52 45 56  pavi,l,FIND_PREV
9500: 7c 46 49 4e 44 5f 41 4e 59 29 0a 0a 23 64 65 66  |FIND_ANY)..#def
9510: 69 6e 65 20 20 20 20 20 41 56 49 53 74 72 65 61  ine     AVIStrea
9520: 6d 4e 65 78 74 4b 65 79 46 72 61 6d 65 28 70 61  mNextKeyFrame(pa
9530: 76 69 2c 6c 29 20 20 20 20 20 20 20 20 20 20 20  vi,l)           
9540: 20 41 56 49 53 74 72 65 61 6d 46 69 6e 64 53 61   AVIStreamFindSa
9550: 6d 70 6c 65 28 70 61 76 69 2c 6c 2b 31 2c 46 49  mple(pavi,l+1,FI
9560: 4e 44 5f 4e 45 58 54 7c 46 49 4e 44 5f 4b 45 59  ND_NEXT|FIND_KEY
9570: 29 0a 0a 23 64 65 66 69 6e 65 20 20 20 20 20 41  )..#define     A
9580: 56 49 53 74 72 65 61 6d 50 72 65 76 4b 65 79 46  VIStreamPrevKeyF
9590: 72 61 6d 65 28 70 61 76 69 2c 20 6c 29 20 20 20  rame(pavi, l)   
95a0: 20 20 20 20 20 20 20 20 20 41 56 49 53 74 72 65           AVIStre
95b0: 61 6d 46 69 6e 64 53 61 6d 70 6c 65 28 70 61 76  amFindSample(pav
95c0: 69 2c 6c 2d 31 2c 46 49 4e 44 5f 50 52 45 56 7c  i,l-1,FIND_PREV|
95d0: 46 49 4e 44 5f 4b 45 59 29 0a 0a 23 64 65 66 69  FIND_KEY)..#defi
95e0: 6e 65 20 20 20 20 20 41 56 49 53 74 72 65 61 6d  ne     AVIStream
95f0: 4e 65 61 72 65 73 74 4b 65 79 46 72 61 6d 65 28  NearestKeyFrame(
9600: 70 61 76 69 2c 20 6c 29 20 20 20 20 20 20 20 20  pavi, l)        
9610: 20 20 20 20 41 56 49 53 74 72 65 61 6d 46 69 6e      AVIStreamFin
9620: 64 53 61 6d 70 6c 65 28 70 61 76 69 2c 6c 2c 46  dSample(pavi,l,F
9630: 49 4e 44 5f 50 52 45 56 7c 46 49 4e 44 5f 4b 45  IND_PREV|FIND_KE
9640: 59 29 0a 0a 23 64 65 66 69 6e 65 20 20 20 20 20  Y)..#define     
9650: 41 56 49 53 74 72 65 61 6d 49 73 4b 65 79 46 72  AVIStreamIsKeyFr
9660: 61 6d 65 28 70 61 76 69 2c 20 6c 29 20 20 20 20  ame(pavi, l)    
9670: 20 20 20 20 20 20 20 20 28 41 56 49 53 74 72 65          (AVIStre
9680: 61 6d 4e 65 61 72 65 73 74 4b 65 79 46 72 61 6d  amNearestKeyFram
9690: 65 28 70 61 76 69 2c 6c 29 20 3d 3d 20 6c 29 0a  e(pavi,l) == l).
96a0: 0a 23 64 65 66 69 6e 65 20 20 20 20 20 41 56 49  .#define     AVI
96b0: 53 74 72 65 61 6d 50 72 65 76 53 61 6d 70 6c 65  StreamPrevSample
96c0: 54 69 6d 65 28 70 61 76 69 2c 20 74 29 20 20 20  Time(pavi, t)   
96d0: 20 20 20 20 20 20 20 20 20 41 56 49 53 74 72 65           AVIStre
96e0: 61 6d 53 61 6d 70 6c 65 54 6f 54 69 6d 65 28 70  amSampleToTime(p
96f0: 61 76 69 2c 20 41 56 49 53 74 72 65 61 6d 50 72  avi, AVIStreamPr
9700: 65 76 53 61 6d 70 6c 65 28 70 61 76 69 2c 41 56  evSample(pavi,AV
9710: 49 53 74 72 65 61 6d 54 69 6d 65 54 6f 53 61 6d  IStreamTimeToSam
9720: 70 6c 65 28 70 61 76 69 2c 74 29 29 29 0a 0a 23  ple(pavi,t)))..#
9730: 64 65 66 69 6e 65 20 20 20 20 20 41 56 49 53 74  define     AVISt
9740: 72 65 61 6d 4e 65 78 74 53 61 6d 70 6c 65 54 69  reamNextSampleTi
9750: 6d 65 28 70 61 76 69 2c 20 74 29 20 20 20 20 20  me(pavi, t)     
9760: 20 20 20 20 20 20 20 41 56 49 53 74 72 65 61 6d         AVIStream
9770: 53 61 6d 70 6c 65 54 6f 54 69 6d 65 28 70 61 76  SampleToTime(pav
9780: 69 2c 20 41 56 49 53 74 72 65 61 6d 4e 65 78 74  i, AVIStreamNext
9790: 53 61 6d 70 6c 65 28 70 61 76 69 2c 41 56 49 53  Sample(pavi,AVIS
97a0: 74 72 65 61 6d 54 69 6d 65 54 6f 53 61 6d 70 6c  treamTimeToSampl
97b0: 65 28 70 61 76 69 2c 74 29 29 29 0a 0a 23 64 65  e(pavi,t)))..#de
97c0: 66 69 6e 65 20 20 20 20 20 41 56 49 53 74 72 65  fine     AVIStre
97d0: 61 6d 4e 65 61 72 65 73 74 53 61 6d 70 6c 65 54  amNearestSampleT
97e0: 69 6d 65 28 70 61 76 69 2c 20 74 29 20 20 20 20  ime(pavi, t)    
97f0: 20 20 20 20 20 20 20 20 41 56 49 53 74 72 65 61          AVIStrea
9800: 6d 53 61 6d 70 6c 65 54 6f 54 69 6d 65 28 70 61  mSampleToTime(pa
9810: 76 69 2c 20 41 56 49 53 74 72 65 61 6d 4e 65 61  vi, AVIStreamNea
9820: 72 65 73 74 53 61 6d 70 6c 65 28 70 61 76 69 2c  restSample(pavi,
9830: 41 56 49 53 74 72 65 61 6d 54 69 6d 65 54 6f 53  AVIStreamTimeToS
9840: 61 6d 70 6c 65 28 70 61 76 69 2c 74 29 29 29 0a  ample(pavi,t))).
9850: 0a 23 64 65 66 69 6e 65 20 20 20 20 20 41 56 49  .#define     AVI
9860: 53 74 72 65 61 6d 4e 65 78 74 4b 65 79 46 72 61  StreamNextKeyFra
9870: 6d 65 54 69 6d 65 28 70 61 76 69 2c 20 74 29 20  meTime(pavi, t) 
9880: 20 20 20 20 20 20 20 20 20 20 20 41 56 49 53 74             AVISt
9890: 72 65 61 6d 53 61 6d 70 6c 65 54 6f 54 69 6d 65  reamSampleToTime
98a0: 28 70 61 76 69 2c 20 41 56 49 53 74 72 65 61 6d  (pavi, AVIStream
98b0: 4e 65 78 74 4b 65 79 46 72 61 6d 65 28 70 61 76  NextKeyFrame(pav
98c0: 69 2c 41 56 49 53 74 72 65 61 6d 54 69 6d 65 54  i,AVIStreamTimeT
98d0: 6f 53 61 6d 70 6c 65 28 70 61 76 69 2c 20 74 29  oSample(pavi, t)
98e0: 29 29 0a 0a 23 64 65 66 69 6e 65 20 20 20 20 20  ))..#define     
98f0: 41 56 49 53 74 72 65 61 6d 50 72 65 76 4b 65 79  AVIStreamPrevKey
9900: 46 72 61 6d 65 54 69 6d 65 28 70 61 76 69 2c 20  FrameTime(pavi, 
9910: 74 29 20 20 20 20 20 20 20 20 20 20 20 20 41 56  t)            AV
9920: 49 53 74 72 65 61 6d 53 61 6d 70 6c 65 54 6f 54  IStreamSampleToT
9930: 69 6d 65 28 70 61 76 69 2c 20 41 56 49 53 74 72  ime(pavi, AVIStr
9940: 65 61 6d 50 72 65 76 4b 65 79 46 72 61 6d 65 28  eamPrevKeyFrame(
9950: 70 61 76 69 2c 41 56 49 53 74 72 65 61 6d 54 69  pavi,AVIStreamTi
9960: 6d 65 54 6f 53 61 6d 70 6c 65 28 70 61 76 69 2c  meToSample(pavi,
9970: 20 74 29 29 29 0a 0a 23 64 65 66 69 6e 65 20 20   t)))..#define  
9980: 20 20 20 41 56 49 53 74 72 65 61 6d 4e 65 61 72     AVIStreamNear
9990: 65 73 74 4b 65 79 46 72 61 6d 65 54 69 6d 65 28  estKeyFrameTime(
99a0: 70 61 76 69 2c 20 74 29 20 20 20 20 20 20 20 20  pavi, t)        
99b0: 20 20 20 20 41 56 49 53 74 72 65 61 6d 53 61 6d      AVIStreamSam
99c0: 70 6c 65 54 6f 54 69 6d 65 28 70 61 76 69 2c 20  pleToTime(pavi, 
99d0: 41 56 49 53 74 72 65 61 6d 4e 65 61 72 65 73 74  AVIStreamNearest
99e0: 4b 65 79 46 72 61 6d 65 28 70 61 76 69 2c 41 56  KeyFrame(pavi,AV
99f0: 49 53 74 72 65 61 6d 54 69 6d 65 54 6f 53 61 6d  IStreamTimeToSam
9a00: 70 6c 65 28 70 61 76 69 2c 20 74 29 29 29 0a 0a  ple(pavi, t)))..
9a10: 23 64 65 66 69 6e 65 20 20 20 20 20 41 56 49 53  #define     AVIS
9a20: 74 72 65 61 6d 53 74 61 72 74 54 69 6d 65 28 70  treamStartTime(p
9a30: 61 76 69 29 20 20 20 20 20 20 20 20 20 20 20 20  avi)            
9a40: 41 56 49 53 74 72 65 61 6d 53 61 6d 70 6c 65 54  AVIStreamSampleT
9a50: 6f 54 69 6d 65 28 70 61 76 69 2c 20 41 56 49 53  oTime(pavi, AVIS
9a60: 74 72 65 61 6d 53 74 61 72 74 28 70 61 76 69 29  treamStart(pavi)
9a70: 29 0a 0a 23 64 65 66 69 6e 65 20 20 20 20 20 41  )..#define     A
9a80: 56 49 53 74 72 65 61 6d 4c 65 6e 67 74 68 54 69  VIStreamLengthTi
9a90: 6d 65 28 70 61 76 69 29 20 20 20 20 20 20 20 20  me(pavi)        
9aa0: 20 20 20 20 41 56 49 53 74 72 65 61 6d 53 61 6d      AVIStreamSam
9ab0: 70 6c 65 54 6f 54 69 6d 65 28 70 61 76 69 2c 20  pleToTime(pavi, 
9ac0: 41 56 49 53 74 72 65 61 6d 4c 65 6e 67 74 68 28  AVIStreamLength(
9ad0: 70 61 76 69 29 29 0a 0a 23 64 65 66 69 6e 65 20  pavi))..#define 
9ae0: 20 20 20 20 41 56 49 53 74 72 65 61 6d 45 6e 64      AVIStreamEnd
9af0: 28 70 61 76 69 29 20 20 20 20 20 20 20 20 20 20  (pavi)          
9b00: 20 20 28 41 56 49 53 74 72 65 61 6d 53 74 61 72    (AVIStreamStar
9b10: 74 28 70 61 76 69 29 20 2b 20 41 56 49 53 74 72  t(pavi) + AVIStr
9b20: 65 61 6d 4c 65 6e 67 74 68 28 70 61 76 69 29 29  eamLength(pavi))
9b30: 0a 0a 23 64 65 66 69 6e 65 20 20 20 20 20 41 56  ..#define     AV
9b40: 49 53 74 72 65 61 6d 45 6e 64 54 69 6d 65 28 70  IStreamEndTime(p
9b50: 61 76 69 29 20 20 20 20 20 20 20 20 20 20 20 20  avi)            
9b60: 41 56 49 53 74 72 65 61 6d 53 61 6d 70 6c 65 54  AVIStreamSampleT
9b70: 6f 54 69 6d 65 28 70 61 76 69 2c 20 41 56 49 53  oTime(pavi, AVIS
9b80: 74 72 65 61 6d 45 6e 64 28 70 61 76 69 29 29 0a  treamEnd(pavi)).
9b90: 0a 23 64 65 66 69 6e 65 20 20 20 20 20 41 56 49  .#define     AVI
9ba0: 53 74 72 65 61 6d 53 61 6d 70 6c 65 53 69 7a 65  StreamSampleSize
9bb0: 28 70 61 76 69 2c 20 6c 50 6f 73 2c 20 70 6c 53  (pavi, lPos, plS
9bc0: 69 7a 65 29 09 20 20 20 20 41 56 49 53 74 72 65  ize).    AVIStre
9bd0: 61 6d 52 65 61 64 28 70 61 76 69 2c 6c 50 6f 73  amRead(pavi,lPos
9be0: 2c 31 2c 4e 55 4c 4c 2c 30 2c 70 6c 53 69 7a 65  ,1,NULL,0,plSize
9bf0: 2c 4e 55 4c 4c 29 0a 0a 23 64 65 66 69 6e 65 20  ,NULL)..#define 
9c00: 20 20 20 20 41 56 49 53 74 72 65 61 6d 46 6f 72      AVIStreamFor
9c10: 6d 61 74 53 69 7a 65 28 70 61 76 69 2c 20 6c 50  matSize(pavi, lP
9c20: 6f 73 2c 20 70 6c 53 69 7a 65 29 20 20 20 20 20  os, plSize)     
9c30: 20 20 20 20 20 20 20 41 56 49 53 74 72 65 61 6d         AVIStream
9c40: 52 65 61 64 46 6f 72 6d 61 74 28 70 61 76 69 2c  ReadFormat(pavi,
9c50: 6c 50 6f 73 2c 4e 55 4c 4c 2c 70 6c 53 69 7a 65  lPos,NULL,plSize
9c60: 29 0a 0a 23 64 65 66 69 6e 65 20 20 20 20 20 41  )..#define     A
9c70: 56 49 53 74 72 65 61 6d 44 61 74 61 53 69 7a 65  VIStreamDataSize
9c80: 28 70 61 76 69 2c 20 66 63 63 2c 20 70 6c 53 69  (pavi, fcc, plSi
9c90: 7a 65 29 20 20 20 20 20 20 20 20 20 20 20 20 41  ze)            A
9ca0: 56 49 53 74 72 65 61 6d 52 65 61 64 44 61 74 61  VIStreamReadData
9cb0: 28 70 61 76 69 2c 66 63 63 2c 4e 55 4c 4c 2c 70  (pavi,fcc,NULL,p
9cc0: 6c 53 69 7a 65 29 0a 0a 23 69 66 6e 64 65 66 20  lSize)..#ifndef 
9cd0: 63 6f 6d 70 74 79 70 65 44 49 42 0a 23 64 65 66  comptypeDIB.#def
9ce0: 69 6e 65 20 63 6f 6d 70 74 79 70 65 44 49 42 20  ine comptypeDIB 
9cf0: 20 20 20 20 20 20 20 20 6d 6d 69 6f 46 4f 55 52          mmioFOUR
9d00: 43 43 28 27 44 27 2c 20 27 49 27 2c 20 27 42 27  CC('D', 'I', 'B'
9d10: 2c 20 27 20 27 29 0a 23 65 6e 64 69 66 0a 0a 53  , ' ').#endif..S
9d20: 54 44 41 50 49 20 41 56 49 4d 61 6b 65 43 6f 6d  TDAPI AVIMakeCom
9d30: 70 72 65 73 73 65 64 53 74 72 65 61 6d 28 0a 09  pressedStream(..
9d40: 09 50 41 56 49 53 54 52 45 41 4d 20 46 41 52 20  .PAVISTREAM FAR 
9d50: 2a 09 20 20 20 20 70 70 73 43 6f 6d 70 72 65 73  *.    ppsCompres
9d60: 73 65 64 2c 0a 09 09 50 41 56 49 53 54 52 45 41  sed,...PAVISTREA
9d70: 4d 09 09 20 20 20 20 70 70 73 53 6f 75 72 63 65  M..    ppsSource
9d80: 2c 0a 09 09 41 56 49 43 4f 4d 50 52 45 53 53 4f  ,...AVICOMPRESSO
9d90: 50 54 49 4f 4e 53 20 46 41 52 20 2a 20 20 20 20  PTIONS FAR *    
9da0: 6c 70 4f 70 74 69 6f 6e 73 2c 0a 09 09 43 4c 53  lpOptions,...CLS
9db0: 49 44 20 46 41 52 20 2a 70 63 6c 73 69 64 48 61  ID FAR *pclsidHa
9dc0: 6e 64 6c 65 72 29 3b 0a 0a 45 58 54 45 52 4e 5f  ndler);..EXTERN_
9dd0: 43 20 48 52 45 53 55 4c 54 20 43 44 45 43 4c 20  C HRESULT CDECL 
9de0: 41 56 49 53 61 76 65 41 20 28 4c 50 43 53 54 52  AVISaveA (LPCSTR
9df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
9e00: 7a 46 69 6c 65 2c 0a 09 09 43 4c 53 49 44 20 46  zFile,...CLSID F
9e10: 41 52 20 2a 70 63 6c 73 69 64 48 61 6e 64 6c 65  AR *pclsidHandle
9e20: 72 2c 0a 09 09 41 56 49 53 41 56 45 43 41 4c 4c  r,...AVISAVECALL
9e30: 42 41 43 4b 20 20 20 20 20 6c 70 66 6e 43 61 6c  BACK     lpfnCal
9e40: 6c 62 61 63 6b 2c 0a 09 09 69 6e 74 20 20 20 20  lback,...int    
9e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 53 74               nSt
9e60: 72 65 61 6d 73 2c 0a 09 09 50 41 56 49 53 54 52  reams,...PAVISTR
9e70: 45 41 4d 09 20 20 20 20 70 66 69 6c 65 2c 0a 09  EAM.    pfile,..
9e80: 09 4c 50 41 56 49 43 4f 4d 50 52 45 53 53 4f 50  .LPAVICOMPRESSOP
9e90: 54 49 4f 4e 53 20 6c 70 4f 70 74 69 6f 6e 73 2c  TIONS lpOptions,
9ea0: 0a 09 09 2e 2e 2e 29 3b 0a 0a 53 54 44 41 50 49  ......);..STDAPI
9eb0: 20 41 56 49 53 61 76 65 56 41 28 4c 50 43 53 54   AVISaveVA(LPCST
9ec0: 52 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  R               
9ed0: 73 7a 46 69 6c 65 2c 0a 09 09 43 4c 53 49 44 20  szFile,...CLSID 
9ee0: 46 41 52 20 2a 70 63 6c 73 69 64 48 61 6e 64 6c  FAR *pclsidHandl
9ef0: 65 72 2c 0a 09 09 41 56 49 53 41 56 45 43 41 4c  er,...AVISAVECAL
9f00: 4c 42 41 43 4b 20 20 20 20 20 6c 70 66 6e 43 61  LBACK     lpfnCa
9f10: 6c 6c 62 61 63 6b 2c 0a 09 09 69 6e 74 20 20 20  llback,...int   
9f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 53                nS
9f30: 74 72 65 61 6d 73 2c 0a 09 09 50 41 56 49 53 54  treams,...PAVIST
9f40: 52 45 41 4d 20 46 41 52 20 2a 20 20 20 20 70 70  REAM FAR *    pp
9f50: 61 76 69 2c 0a 09 09 4c 50 41 56 49 43 4f 4d 50  avi,...LPAVICOMP
9f60: 52 45 53 53 4f 50 54 49 4f 4e 53 20 46 41 52 20  RESSOPTIONS FAR 
9f70: 2a 70 6c 70 4f 70 74 69 6f 6e 73 29 3b 0a 45 58  *plpOptions);.EX
9f80: 54 45 52 4e 5f 43 20 48 52 45 53 55 4c 54 20 43  TERN_C HRESULT C
9f90: 44 45 43 4c 20 41 56 49 53 61 76 65 57 20 28 4c  DECL AVISaveW (L
9fa0: 50 43 57 53 54 52 20 20 20 20 20 20 20 20 20 20  PCWSTR          
9fb0: 20 20 20 20 20 73 7a 46 69 6c 65 2c 0a 09 09 43       szFile,...C
9fc0: 4c 53 49 44 20 46 41 52 20 2a 70 63 6c 73 69 64  LSID FAR *pclsid
9fd0: 48 61 6e 64 6c 65 72 2c 0a 09 09 41 56 49 53 41  Handler,...AVISA
9fe0: 56 45 43 41 4c 4c 42 41 43 4b 20 20 20 20 20 6c  VECALLBACK     l
9ff0: 70 66 6e 43 61 6c 6c 62 61 63 6b 2c 0a 09 09 69  pfnCallback,...i
a000: 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  nt              
a010: 20 20 20 6e 53 74 72 65 61 6d 73 2c 0a 09 09 50     nStreams,...P
a020: 41 56 49 53 54 52 45 41 4d 09 20 20 20 20 70 66  AVISTREAM.    pf
a030: 69 6c 65 2c 0a 09 09 4c 50 41 56 49 43 4f 4d 50  ile,...LPAVICOMP
a040: 52 45 53 53 4f 50 54 49 4f 4e 53 20 6c 70 4f 70  RESSOPTIONS lpOp
a050: 74 69 6f 6e 73 2c 0a 09 09 2e 2e 2e 29 3b 0a 0a  tions,......);..
a060: 53 54 44 41 50 49 20 41 56 49 53 61 76 65 56 57  STDAPI AVISaveVW
a070: 28 4c 50 43 57 53 54 52 20 20 20 20 20 20 20 20  (LPCWSTR        
a080: 20 20 20 20 20 20 20 73 7a 46 69 6c 65 2c 0a 09         szFile,..
a090: 09 43 4c 53 49 44 20 46 41 52 20 2a 70 63 6c 73  .CLSID FAR *pcls
a0a0: 69 64 48 61 6e 64 6c 65 72 2c 0a 09 09 41 56 49  idHandler,...AVI
a0b0: 53 41 56 45 43 41 4c 4c 42 41 43 4b 20 20 20 20  SAVECALLBACK    
a0c0: 20 6c 70 66 6e 43 61 6c 6c 62 61 63 6b 2c 0a 09   lpfnCallback,..
a0d0: 09 69 6e 74 20 20 20 20 20 20 20 20 20 20 20 20  .int            
a0e0: 20 20 20 20 20 6e 53 74 72 65 61 6d 73 2c 0a 09       nStreams,..
a0f0: 09 50 41 56 49 53 54 52 45 41 4d 20 46 41 52 20  .PAVISTREAM FAR 
a100: 2a 20 20 20 20 70 70 61 76 69 2c 0a 09 09 4c 50  *    ppavi,...LP
a110: 41 56 49 43 4f 4d 50 52 45 53 53 4f 50 54 49 4f  AVICOMPRESSOPTIO
a120: 4e 53 20 46 41 52 20 2a 70 6c 70 4f 70 74 69 6f  NS FAR *plpOptio
a130: 6e 73 29 3b 0a 23 69 66 64 65 66 20 55 4e 49 43  ns);.#ifdef UNIC
a140: 4f 44 45 0a 23 64 65 66 69 6e 65 20 41 56 49 53  ODE.#define AVIS
a150: 61 76 65 09 09 41 56 49 53 61 76 65 57 0a 23 64  ave..AVISaveW.#d
a160: 65 66 69 6e 65 20 41 56 49 53 61 76 65 56 09 41  efine AVISaveV.A
a170: 56 49 53 61 76 65 56 57 0a 23 65 6c 73 65 0a 23  VISaveVW.#else.#
a180: 64 65 66 69 6e 65 20 41 56 49 53 61 76 65 09 09  define AVISave..
a190: 41 56 49 53 61 76 65 41 0a 23 64 65 66 69 6e 65  AVISaveA.#define
a1a0: 20 41 56 49 53 61 76 65 56 09 41 56 49 53 61 76   AVISaveV.AVISav
a1b0: 65 56 41 0a 23 65 6e 64 69 66 0a 0a 0a 0a 53 54  eVA.#endif....ST
a1c0: 44 41 50 49 5f 28 49 4e 54 5f 50 54 52 29 20 41  DAPI_(INT_PTR) A
a1d0: 56 49 53 61 76 65 4f 70 74 69 6f 6e 73 28 48 57  VISaveOptions(HW
a1e0: 4e 44 20 68 77 6e 64 2c 0a 09 09 09 20 20 20 20  ND hwnd,....    
a1f0: 20 55 49 4e 54 09 75 69 46 6c 61 67 73 2c 0a 09   UINT.uiFlags,..
a200: 09 09 20 20 20 20 20 69 6e 74 09 6e 53 74 72 65  ..     int.nStre
a210: 61 6d 73 2c 0a 09 09 09 20 20 20 20 20 50 41 56  ams,....     PAV
a220: 49 53 54 52 45 41 4d 20 46 41 52 20 2a 70 70 61  ISTREAM FAR *ppa
a230: 76 69 2c 0a 09 09 09 20 20 20 20 20 4c 50 41 56  vi,....     LPAV
a240: 49 43 4f 4d 50 52 45 53 53 4f 50 54 49 4f 4e 53  ICOMPRESSOPTIONS
a250: 20 46 41 52 20 2a 70 6c 70 4f 70 74 69 6f 6e 73   FAR *plpOptions
a260: 29 3b 0a 0a 53 54 44 41 50 49 20 41 56 49 53 61  );..STDAPI AVISa
a270: 76 65 4f 70 74 69 6f 6e 73 46 72 65 65 28 69 6e  veOptionsFree(in
a280: 74 20 6e 53 74 72 65 61 6d 73 2c 0a 09 09 09 20  t nStreams,.... 
a290: 20 20 20 20 4c 50 41 56 49 43 4f 4d 50 52 45 53      LPAVICOMPRES
a2a0: 53 4f 50 54 49 4f 4e 53 20 46 41 52 20 2a 70 6c  SOPTIONS FAR *pl
a2b0: 70 4f 70 74 69 6f 6e 73 29 3b 0a 0a 53 54 44 41  pOptions);..STDA
a2c0: 50 49 20 41 56 49 42 75 69 6c 64 46 69 6c 74 65  PI AVIBuildFilte
a2d0: 72 57 28 4c 50 57 53 54 52 20 6c 70 73 7a 46 69  rW(LPWSTR lpszFi
a2e0: 6c 74 65 72 2c 20 4c 4f 4e 47 20 63 62 46 69 6c  lter, LONG cbFil
a2f0: 74 65 72 2c 20 42 4f 4f 4c 20 66 53 61 76 69 6e  ter, BOOL fSavin
a300: 67 29 3b 0a 53 54 44 41 50 49 20 41 56 49 42 75  g);.STDAPI AVIBu
a310: 69 6c 64 46 69 6c 74 65 72 41 28 4c 50 53 54 52  ildFilterA(LPSTR
a320: 20 6c 70 73 7a 46 69 6c 74 65 72 2c 20 4c 4f 4e   lpszFilter, LON
a330: 47 20 63 62 46 69 6c 74 65 72 2c 20 42 4f 4f 4c  G cbFilter, BOOL
a340: 20 66 53 61 76 69 6e 67 29 3b 0a 23 69 66 64 65   fSaving);.#ifde
a350: 66 20 55 4e 49 43 4f 44 45 0a 23 64 65 66 69 6e  f UNICODE.#defin
a360: 65 20 41 56 49 42 75 69 6c 64 46 69 6c 74 65 72  e AVIBuildFilter
a370: 09 41 56 49 42 75 69 6c 64 46 69 6c 74 65 72 57  .AVIBuildFilterW
a380: 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 41  .#else.#define A
a390: 56 49 42 75 69 6c 64 46 69 6c 74 65 72 09 41 56  VIBuildFilter.AV
a3a0: 49 42 75 69 6c 64 46 69 6c 74 65 72 41 0a 23 65  IBuildFilterA.#e
a3b0: 6e 64 69 66 0a 53 54 44 41 50 49 20 41 56 49 4d  ndif.STDAPI AVIM
a3c0: 61 6b 65 46 69 6c 65 46 72 6f 6d 53 74 72 65 61  akeFileFromStrea
a3d0: 6d 73 28 50 41 56 49 46 49 4c 45 20 46 41 52 20  ms(PAVIFILE FAR 
a3e0: 2a 09 70 70 66 69 6c 65 2c 0a 09 09 09 20 20 20  *.ppfile,....   
a3f0: 20 20 20 20 69 6e 74 09 09 6e 53 74 72 65 61 6d      int..nStream
a400: 73 2c 0a 09 09 09 20 20 20 20 20 20 20 50 41 56  s,....       PAV
a410: 49 53 54 52 45 41 4d 20 46 41 52 20 2a 09 70 61  ISTREAM FAR *.pa
a420: 70 53 74 72 65 61 6d 73 29 3b 0a 0a 53 54 44 41  pStreams);..STDA
a430: 50 49 20 41 56 49 4d 61 6b 65 53 74 72 65 61 6d  PI AVIMakeStream
a440: 46 72 6f 6d 43 6c 69 70 62 6f 61 72 64 28 55 49  FromClipboard(UI
a450: 4e 54 20 63 66 46 6f 72 6d 61 74 2c 20 48 41 4e  NT cfFormat, HAN
a460: 44 4c 45 20 68 47 6c 6f 62 61 6c 2c 20 50 41 56  DLE hGlobal, PAV
a470: 49 53 54 52 45 41 4d 20 46 41 52 20 2a 70 70 73  ISTREAM FAR *pps
a480: 74 72 65 61 6d 29 3b 0a 0a 53 54 44 41 50 49 20  tream);..STDAPI 
a490: 41 56 49 50 75 74 46 69 6c 65 4f 6e 43 6c 69 70  AVIPutFileOnClip
a4a0: 62 6f 61 72 64 28 50 41 56 49 46 49 4c 45 20 70  board(PAVIFILE p
a4b0: 66 29 3b 0a 0a 53 54 44 41 50 49 20 41 56 49 47  f);..STDAPI AVIG
a4c0: 65 74 46 72 6f 6d 43 6c 69 70 62 6f 61 72 64 28  etFromClipboard(
a4d0: 50 41 56 49 46 49 4c 45 20 46 41 52 20 2a 20 6c  PAVIFILE FAR * l
a4e0: 70 70 66 29 3b 0a 0a 53 54 44 41 50 49 20 41 56  ppf);..STDAPI AV
a4f0: 49 43 6c 65 61 72 43 6c 69 70 62 6f 61 72 64 28  IClearClipboard(
a500: 76 6f 69 64 29 3b 0a 0a 53 54 44 41 50 49 20 43  void);..STDAPI C
a510: 72 65 61 74 65 45 64 69 74 61 62 6c 65 53 74 72  reateEditableStr
a520: 65 61 6d 28 0a 09 09 50 41 56 49 53 54 52 45 41  eam(...PAVISTREA
a530: 4d 20 46 41 52 20 2a 09 20 20 20 20 70 70 73 45  M FAR *.    ppsE
a540: 64 69 74 61 62 6c 65 2c 0a 09 09 50 41 56 49 53  ditable,...PAVIS
a550: 54 52 45 41 4d 09 09 20 20 20 20 70 73 53 6f 75  TREAM..    psSou
a560: 72 63 65 29 3b 0a 0a 53 54 44 41 50 49 20 45 64  rce);..STDAPI Ed
a570: 69 74 53 74 72 65 61 6d 43 75 74 28 50 41 56 49  itStreamCut(PAVI
a580: 53 54 52 45 41 4d 20 70 61 76 69 2c 20 4c 4f 4e  STREAM pavi, LON
a590: 47 20 46 41 52 20 2a 70 6c 53 74 61 72 74 2c 20  G FAR *plStart, 
a5a0: 4c 4f 4e 47 20 46 41 52 20 2a 70 6c 4c 65 6e 67  LONG FAR *plLeng
a5b0: 74 68 2c 20 50 41 56 49 53 54 52 45 41 4d 20 46  th, PAVISTREAM F
a5c0: 41 52 20 2a 20 70 70 52 65 73 75 6c 74 29 3b 0a  AR * ppResult);.
a5d0: 0a 53 54 44 41 50 49 20 45 64 69 74 53 74 72 65  .STDAPI EditStre
a5e0: 61 6d 43 6f 70 79 28 50 41 56 49 53 54 52 45 41  amCopy(PAVISTREA
a5f0: 4d 20 70 61 76 69 2c 20 4c 4f 4e 47 20 46 41 52  M pavi, LONG FAR
a600: 20 2a 70 6c 53 74 61 72 74 2c 20 4c 4f 4e 47 20   *plStart, LONG 
a610: 46 41 52 20 2a 70 6c 4c 65 6e 67 74 68 2c 20 50  FAR *plLength, P
a620: 41 56 49 53 54 52 45 41 4d 20 46 41 52 20 2a 20  AVISTREAM FAR * 
a630: 70 70 52 65 73 75 6c 74 29 3b 0a 0a 53 54 44 41  ppResult);..STDA
a640: 50 49 20 45 64 69 74 53 74 72 65 61 6d 50 61 73  PI EditStreamPas
a650: 74 65 28 50 41 56 49 53 54 52 45 41 4d 20 70 61  te(PAVISTREAM pa
a660: 76 69 2c 20 4c 4f 4e 47 20 46 41 52 20 2a 70 6c  vi, LONG FAR *pl
a670: 50 6f 73 2c 20 4c 4f 4e 47 20 46 41 52 20 2a 70  Pos, LONG FAR *p
a680: 6c 4c 65 6e 67 74 68 2c 20 50 41 56 49 53 54 52  lLength, PAVISTR
a690: 45 41 4d 20 70 73 74 72 65 61 6d 2c 20 4c 4f 4e  EAM pstream, LON
a6a0: 47 20 6c 53 74 61 72 74 2c 20 4c 4f 4e 47 20 6c  G lStart, LONG l
a6b0: 45 6e 64 29 3b 0a 0a 53 54 44 41 50 49 20 45 64  End);..STDAPI Ed
a6c0: 69 74 53 74 72 65 61 6d 43 6c 6f 6e 65 28 50 41  itStreamClone(PA
a6d0: 56 49 53 54 52 45 41 4d 20 70 61 76 69 2c 20 50  VISTREAM pavi, P
a6e0: 41 56 49 53 54 52 45 41 4d 20 46 41 52 20 2a 70  AVISTREAM FAR *p
a6f0: 70 52 65 73 75 6c 74 29 3b 0a 0a 0a 53 54 44 41  pResult);...STDA
a700: 50 49 20 45 64 69 74 53 74 72 65 61 6d 53 65 74  PI EditStreamSet
a710: 4e 61 6d 65 41 28 50 41 56 49 53 54 52 45 41 4d  NameA(PAVISTREAM
a720: 20 70 61 76 69 2c 20 4c 50 43 53 54 52 20 6c 70   pavi, LPCSTR lp
a730: 73 7a 4e 61 6d 65 29 3b 0a 53 54 44 41 50 49 20  szName);.STDAPI 
a740: 45 64 69 74 53 74 72 65 61 6d 53 65 74 4e 61 6d  EditStreamSetNam
a750: 65 57 28 50 41 56 49 53 54 52 45 41 4d 20 70 61  eW(PAVISTREAM pa
a760: 76 69 2c 20 4c 50 43 57 53 54 52 20 6c 70 73 7a  vi, LPCWSTR lpsz
a770: 4e 61 6d 65 29 3b 0a 53 54 44 41 50 49 20 45 64  Name);.STDAPI Ed
a780: 69 74 53 74 72 65 61 6d 53 65 74 49 6e 66 6f 57  itStreamSetInfoW
a790: 28 50 41 56 49 53 54 52 45 41 4d 20 70 61 76 69  (PAVISTREAM pavi
a7a0: 2c 20 4c 50 41 56 49 53 54 52 45 41 4d 49 4e 46  , LPAVISTREAMINF
a7b0: 4f 57 20 6c 70 49 6e 66 6f 2c 20 4c 4f 4e 47 20  OW lpInfo, LONG 
a7c0: 63 62 49 6e 66 6f 29 3b 0a 53 54 44 41 50 49 20  cbInfo);.STDAPI 
a7d0: 45 64 69 74 53 74 72 65 61 6d 53 65 74 49 6e 66  EditStreamSetInf
a7e0: 6f 41 28 50 41 56 49 53 54 52 45 41 4d 20 70 61  oA(PAVISTREAM pa
a7f0: 76 69 2c 20 4c 50 41 56 49 53 54 52 45 41 4d 49  vi, LPAVISTREAMI
a800: 4e 46 4f 41 20 6c 70 49 6e 66 6f 2c 20 4c 4f 4e  NFOA lpInfo, LON
a810: 47 20 63 62 49 6e 66 6f 29 3b 0a 23 69 66 64 65  G cbInfo);.#ifde
a820: 66 20 55 4e 49 43 4f 44 45 0a 23 64 65 66 69 6e  f UNICODE.#defin
a830: 65 20 45 64 69 74 53 74 72 65 61 6d 53 65 74 49  e EditStreamSetI
a840: 6e 66 6f 09 45 64 69 74 53 74 72 65 61 6d 53 65  nfo.EditStreamSe
a850: 74 49 6e 66 6f 57 0a 23 64 65 66 69 6e 65 20 45  tInfoW.#define E
a860: 64 69 74 53 74 72 65 61 6d 53 65 74 4e 61 6d 65  ditStreamSetName
a870: 09 45 64 69 74 53 74 72 65 61 6d 53 65 74 4e 61  .EditStreamSetNa
a880: 6d 65 57 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e  meW.#else.#defin
a890: 65 20 45 64 69 74 53 74 72 65 61 6d 53 65 74 49  e EditStreamSetI
a8a0: 6e 66 6f 09 45 64 69 74 53 74 72 65 61 6d 53 65  nfo.EditStreamSe
a8b0: 74 49 6e 66 6f 41 0a 23 64 65 66 69 6e 65 20 45  tInfoA.#define E
a8c0: 64 69 74 53 74 72 65 61 6d 53 65 74 4e 61 6d 65  ditStreamSetName
a8d0: 09 45 64 69 74 53 74 72 65 61 6d 53 65 74 4e 61  .EditStreamSetNa
a8e0: 6d 65 41 0a 23 65 6e 64 69 66 0a 2b 2f 0a 63 6f  meA.#endif.+/.co
a8f0: 6e 73 74 20 41 56 49 45 52 52 5f 4f 4b 20 3d 20  nst AVIERR_OK = 
a900: 30 4c 3b 0a 0a 53 43 4f 44 45 20 4d 41 4b 45 5f  0L;..SCODE MAKE_
a910: 41 56 49 45 52 52 28 44 57 4f 52 44 20 65 72 72  AVIERR(DWORD err
a920: 6f 72 29 20 7b 0a 09 72 65 74 75 72 6e 20 4d 41  or) {..return MA
a930: 4b 45 5f 53 43 4f 44 45 28 53 45 56 45 52 49 54  KE_SCODE(SEVERIT
a940: 59 5f 45 52 52 4f 52 2c 20 46 41 43 49 4c 49 54  Y_ERROR, FACILIT
a950: 59 5f 49 54 46 2c 20 30 78 34 30 30 30 20 2b 20  Y_ITF, 0x4000 + 
a960: 65 72 72 6f 72 29 3b 0a 7d 0a 0a 63 6f 6e 73 74  error);.}..const
a970: 20 41 56 49 45 52 52 5f 55 4e 53 55 50 50 4f 52   AVIERR_UNSUPPOR
a980: 54 45 44 09 3d 20 4d 41 4b 45 5f 41 56 49 45 52  TED.= MAKE_AVIER
a990: 52 28 31 30 31 29 3b 0a 63 6f 6e 73 74 20 41 56  R(101);.const AV
a9a0: 49 45 52 52 5f 42 41 44 46 4f 52 4d 41 54 09 09  IERR_BADFORMAT..
a9b0: 3d 20 4d 41 4b 45 5f 41 56 49 45 52 52 28 31 30  = MAKE_AVIERR(10
a9c0: 32 29 3b 0a 63 6f 6e 73 74 20 41 56 49 45 52 52  2);.const AVIERR
a9d0: 5f 4d 45 4d 4f 52 59 09 09 09 3d 20 4d 41 4b 45  _MEMORY...= MAKE
a9e0: 5f 41 56 49 45 52 52 28 31 30 33 29 3b 0a 63 6f  _AVIERR(103);.co
a9f0: 6e 73 74 20 41 56 49 45 52 52 5f 49 4e 54 45 52  nst AVIERR_INTER
aa00: 4e 41 4c 09 09 3d 20 4d 41 4b 45 5f 41 56 49 45  NAL..= MAKE_AVIE
aa10: 52 52 28 31 30 34 29 3b 0a 63 6f 6e 73 74 20 41  RR(104);.const A
aa20: 56 49 45 52 52 5f 42 41 44 46 4c 41 47 53 09 09  VIERR_BADFLAGS..
aa30: 3d 20 4d 41 4b 45 5f 41 56 49 45 52 52 28 31 30  = MAKE_AVIERR(10
aa40: 35 29 3b 0a 63 6f 6e 73 74 20 41 56 49 45 52 52  5);.const AVIERR
aa50: 5f 42 41 44 50 41 52 41 4d 09 09 3d 20 4d 41 4b  _BADPARAM..= MAK
aa60: 45 5f 41 56 49 45 52 52 28 31 30 36 29 3b 0a 63  E_AVIERR(106);.c
aa70: 6f 6e 73 74 20 41 56 49 45 52 52 5f 42 41 44 53  onst AVIERR_BADS
aa80: 49 5a 45 09 09 3d 20 4d 41 4b 45 5f 41 56 49 45  IZE..= MAKE_AVIE
aa90: 52 52 28 31 30 37 29 3b 0a 63 6f 6e 73 74 20 41  RR(107);.const A
aaa0: 56 49 45 52 52 5f 42 41 44 48 41 4e 44 4c 45 09  VIERR_BADHANDLE.
aab0: 09 3d 20 4d 41 4b 45 5f 41 56 49 45 52 52 28 31  .= MAKE_AVIERR(1
aac0: 30 38 29 3b 0a 63 6f 6e 73 74 20 41 56 49 45 52  08);.const AVIER
aad0: 52 5f 46 49 4c 45 52 45 41 44 09 09 3d 20 4d 41  R_FILEREAD..= MA
aae0: 4b 45 5f 41 56 49 45 52 52 28 31 30 39 29 3b 0a  KE_AVIERR(109);.
aaf0: 63 6f 6e 73 74 20 41 56 49 45 52 52 5f 46 49 4c  const AVIERR_FIL
ab00: 45 57 52 49 54 45 09 09 3d 20 4d 41 4b 45 5f 41  EWRITE..= MAKE_A
ab10: 56 49 45 52 52 28 31 31 30 29 3b 0a 63 6f 6e 73  VIERR(110);.cons
ab20: 74 20 41 56 49 45 52 52 5f 46 49 4c 45 4f 50 45  t AVIERR_FILEOPE
ab30: 4e 09 09 3d 20 4d 41 4b 45 5f 41 56 49 45 52 52  N..= MAKE_AVIERR
ab40: 28 31 31 31 29 3b 0a 63 6f 6e 73 74 20 41 56 49  (111);.const AVI
ab50: 45 52 52 5f 43 4f 4d 50 52 45 53 53 4f 52 09 09  ERR_COMPRESSOR..
ab60: 3d 20 4d 41 4b 45 5f 41 56 49 45 52 52 28 31 31  = MAKE_AVIERR(11
ab70: 32 29 3b 0a 63 6f 6e 73 74 20 41 56 49 45 52 52  2);.const AVIERR
ab80: 5f 4e 4f 43 4f 4d 50 52 45 53 53 4f 52 09 3d 20  _NOCOMPRESSOR.= 
ab90: 4d 41 4b 45 5f 41 56 49 45 52 52 28 31 31 33 29  MAKE_AVIERR(113)
aba0: 3b 0a 63 6f 6e 73 74 20 41 56 49 45 52 52 5f 52  ;.const AVIERR_R
abb0: 45 41 44 4f 4e 4c 59 09 09 3d 20 4d 41 4b 45 5f  EADONLY..= MAKE_
abc0: 41 56 49 45 52 52 28 31 31 34 29 3b 0a 63 6f 6e  AVIERR(114);.con
abd0: 73 74 20 41 56 49 45 52 52 5f 4e 4f 44 41 54 41  st AVIERR_NODATA
abe0: 09 09 09 3d 20 4d 41 4b 45 5f 41 56 49 45 52 52  ...= MAKE_AVIERR
abf0: 28 31 31 35 29 3b 0a 63 6f 6e 73 74 20 41 56 49  (115);.const AVI
ac00: 45 52 52 5f 42 55 46 46 45 52 54 4f 4f 53 4d 41  ERR_BUFFERTOOSMA
ac10: 4c 4c 09 3d 20 4d 41 4b 45 5f 41 56 49 45 52 52  LL.= MAKE_AVIERR
ac20: 28 31 31 36 29 3b 0a 63 6f 6e 73 74 20 41 56 49  (116);.const AVI
ac30: 45 52 52 5f 43 41 4e 54 43 4f 4d 50 52 45 53 53  ERR_CANTCOMPRESS
ac40: 09 3d 20 4d 41 4b 45 5f 41 56 49 45 52 52 28 31  .= MAKE_AVIERR(1
ac50: 31 37 29 3b 0a 63 6f 6e 73 74 20 41 56 49 45 52  17);.const AVIER
ac60: 52 5f 55 53 45 52 41 42 4f 52 54 09 09 3d 20 4d  R_USERABORT..= M
ac70: 41 4b 45 5f 41 56 49 45 52 52 28 31 39 38 29 3b  AKE_AVIERR(198);
ac80: 0a 63 6f 6e 73 74 20 41 56 49 45 52 52 5f 45 52  .const AVIERR_ER
ac90: 52 4f 52 09 09 09 3d 20 4d 41 4b 45 5f 41 56 49  ROR...= MAKE_AVI
aca0: 45 52 52 28 31 39 39 29 3b 0a 0a 63 6f 6e 73 74  ERR(199);..const
acb0: 20 54 43 48 41 52 5b 5d 20 4d 43 49 57 4e 44 5f   TCHAR[] MCIWND_
acc0: 57 49 4e 44 4f 57 5f 43 4c 41 53 53 20 3d 20 22  WINDOW_CLASS = "
acd0: 4d 43 49 57 6e 64 43 6c 61 73 73 22 3b 0a 0a 65  MCIWndClass";..e
ace0: 78 74 65 72 6e 20 28 57 69 6e 64 6f 77 73 29 20  xtern (Windows) 
acf0: 7b 0a 09 48 57 4e 44 20 4d 43 49 57 6e 64 43 72  {..HWND MCIWndCr
ad00: 65 61 74 65 41 28 48 57 4e 44 20 68 77 6e 64 50  eateA(HWND hwndP
ad10: 61 72 65 6e 74 2c 20 48 49 4e 53 54 41 4e 43 45  arent, HINSTANCE
ad20: 20 68 49 6e 73 74 61 6e 63 65 2c 20 44 57 4f 52   hInstance, DWOR
ad30: 44 20 64 77 53 74 79 6c 65 2c 20 4c 50 43 53 54  D dwStyle, LPCST
ad40: 52 20 73 7a 46 69 6c 65 29 3b 0a 09 48 57 4e 44  R szFile);..HWND
ad50: 20 4d 43 49 57 6e 64 43 72 65 61 74 65 57 28 48   MCIWndCreateW(H
ad60: 57 4e 44 20 68 77 6e 64 50 61 72 65 6e 74 2c 20  WND hwndParent, 
ad70: 48 49 4e 53 54 41 4e 43 45 20 68 49 6e 73 74 61  HINSTANCE hInsta
ad80: 6e 63 65 2c 20 44 57 4f 52 44 20 64 77 53 74 79  nce, DWORD dwSty
ad90: 6c 65 2c 20 4c 50 43 57 53 54 52 20 73 7a 46 69  le, LPCWSTR szFi
ada0: 6c 65 29 3b 0a 7d 0a 0a 76 65 72 73 69 6f 6e 28  le);.}..version(
adb0: 55 6e 69 63 6f 64 65 29 20 7b 0a 09 61 6c 69 61  Unicode) {..alia
adc0: 73 20 4d 43 49 57 6e 64 43 72 65 61 74 65 57 09  s MCIWndCreateW.
add0: 4d 43 49 57 6e 64 43 72 65 61 74 65 3b 0a 7d 20  MCIWndCreate;.} 
ade0: 65 6c 73 65 20 7b 20 2f 2f 20 55 6e 69 63 6f 64  else { // Unicod
adf0: 65 0a 09 61 6c 69 61 73 20 4d 43 49 57 6e 64 43  e..alias MCIWndC
ae00: 72 65 61 74 65 41 09 4d 43 49 57 6e 64 43 72 65  reateA.MCIWndCre
ae10: 61 74 65 3b 0a 7d 0a 0a 65 78 74 65 72 6e 28 57  ate;.}..extern(W
ae20: 69 6e 64 6f 77 73 29 20 7b 0a 09 42 4f 4f 4c 20  indows) {..BOOL 
ae30: 4d 43 49 57 6e 64 52 65 67 69 73 74 65 72 43 6c  MCIWndRegisterCl
ae40: 61 73 73 28 29 3b 0a 7d 0a 0a 65 6e 75 6d 20 7b  ass();.}..enum {
ae50: 0a 09 4d 43 49 57 4e 44 4f 50 45 4e 46 5f 4e 45  ..MCIWNDOPENF_NE
ae60: 57 09 09 09 09 3d 20 30 78 30 30 30 31 2c 0a 09  W....= 0x0001,..
ae70: 4d 43 49 57 4e 44 46 5f 4e 4f 41 55 54 4f 53 49  MCIWNDF_NOAUTOSI
ae80: 5a 45 57 49 4e 44 4f 57 09 3d 20 30 78 30 30 30  ZEWINDOW.= 0x000
ae90: 31 2c 0a 09 4d 43 49 57 4e 44 46 5f 4e 4f 50 4c  1,..MCIWNDF_NOPL
aea0: 41 59 42 41 52 09 09 09 3d 20 30 78 30 30 30 32  AYBAR...= 0x0002
aeb0: 2c 0a 09 4d 43 49 57 4e 44 46 5f 4e 4f 41 55 54  ,..MCIWNDF_NOAUT
aec0: 4f 53 49 5a 45 4d 4f 56 49 45 09 09 3d 20 30 78  OSIZEMOVIE..= 0x
aed0: 30 30 30 34 2c 0a 09 4d 43 49 57 4e 44 46 5f 4e  0004,..MCIWNDF_N
aee0: 4f 4d 45 4e 55 09 09 09 09 3d 20 30 78 30 30 30  OMENU....= 0x000
aef0: 38 2c 0a 09 4d 43 49 57 4e 44 46 5f 53 48 4f 57  8,..MCIWNDF_SHOW
af00: 4e 41 4d 45 09 09 09 3d 20 30 78 30 30 31 30 2c  NAME...= 0x0010,
af10: 0a 09 4d 43 49 57 4e 44 46 5f 53 48 4f 57 50 4f  ..MCIWNDF_SHOWPO
af20: 53 09 09 09 09 3d 20 30 78 30 30 32 30 2c 0a 09  S....= 0x0020,..
af30: 4d 43 49 57 4e 44 46 5f 53 48 4f 57 4d 4f 44 45  MCIWNDF_SHOWMODE
af40: 09 09 09 3d 20 30 78 30 30 34 30 2c 0a 09 4d 43  ...= 0x0040,..MC
af50: 49 57 4e 44 46 5f 53 48 4f 57 41 4c 4c 09 09 09  IWNDF_SHOWALL...
af60: 09 3d 20 30 78 30 30 37 30 2c 0a 09 4d 43 49 57  .= 0x0070,..MCIW
af70: 4e 44 46 5f 4e 4f 54 49 46 59 4d 4f 44 45 09 09  NDF_NOTIFYMODE..
af80: 09 3d 20 30 78 30 31 30 30 2c 0a 09 4d 43 49 57  .= 0x0100,..MCIW
af90: 4e 44 46 5f 4e 4f 54 49 46 59 50 4f 53 09 09 09  NDF_NOTIFYPOS...
afa0: 3d 20 30 78 30 32 30 30 2c 0a 09 4d 43 49 57 4e  = 0x0200,..MCIWN
afb0: 44 46 5f 4e 4f 54 49 46 59 53 49 5a 45 09 09 09  DF_NOTIFYSIZE...
afc0: 3d 20 30 78 30 34 30 30 2c 0a 09 4d 43 49 57 4e  = 0x0400,..MCIWN
afd0: 44 46 5f 4e 4f 54 49 46 59 45 52 52 4f 52 09 09  DF_NOTIFYERROR..
afe0: 09 3d 20 30 78 31 30 30 30 2c 0a 09 4d 43 49 57  .= 0x1000,..MCIW
aff0: 4e 44 46 5f 4e 4f 54 49 46 59 41 4c 4c 09 09 09  NDF_NOTIFYALL...
b000: 3d 20 30 78 31 46 30 30 2c 0a 09 4d 43 49 57 4e  = 0x1F00,..MCIWN
b010: 44 46 5f 4e 4f 54 49 46 59 41 4e 53 49 09 09 09  DF_NOTIFYANSI...
b020: 3d 20 30 78 30 30 38 30 2c 0a 09 4d 43 49 57 4e  = 0x0080,..MCIWN
b030: 44 46 5f 4e 4f 54 49 46 59 4d 45 44 49 41 41 09  DF_NOTIFYMEDIAA.
b040: 09 3d 20 30 78 30 38 38 30 2c 0a 09 4d 43 49 57  .= 0x0880,..MCIW
b050: 4e 44 46 5f 4e 4f 54 49 46 59 4d 45 44 49 41 57  NDF_NOTIFYMEDIAW
b060: 09 09 3d 20 30 78 30 38 30 30 2c 0a 7d 0a 0a 76  ..= 0x0800,.}..v
b070: 65 72 73 69 6f 6e 28 55 6e 69 63 6f 64 65 29 20  ersion(Unicode) 
b080: 7b 0a 09 61 6c 69 61 73 20 4d 43 49 57 4e 44 46  {..alias MCIWNDF
b090: 5f 4e 4f 54 49 46 59 4d 45 44 49 41 57 09 4d 43  _NOTIFYMEDIAW.MC
b0a0: 49 57 4e 44 46 5f 4e 4f 54 49 46 59 4d 45 44 49  IWNDF_NOTIFYMEDI
b0b0: 41 3b 0a 7d 20 65 6c 73 65 20 7b 20 2f 2f 20 55  A;.} else { // U
b0c0: 6e 69 63 6f 64 65 0a 09 61 6c 69 61 73 20 4d 43  nicode..alias MC
b0d0: 49 57 4e 44 46 5f 4e 4f 54 49 46 59 4d 45 44 49  IWNDF_NOTIFYMEDI
b0e0: 41 41 09 4d 43 49 57 4e 44 46 5f 4e 4f 54 49 46  AA.MCIWNDF_NOTIF
b0f0: 59 4d 45 44 49 41 3b 0a 7d 0a 0a 65 6e 75 6d 20  YMEDIA;.}..enum 
b100: 7b 0a 09 4d 43 49 57 4e 44 46 5f 52 45 43 4f 52  {..MCIWNDF_RECOR
b110: 44 09 09 3d 20 30 78 32 30 30 30 2c 0a 09 4d 43  D..= 0x2000,..MC
b120: 49 57 4e 44 46 5f 4e 4f 45 52 52 4f 52 44 4c 47  IWNDF_NOERRORDLG
b130: 09 3d 20 30 78 34 30 30 30 2c 0a 09 4d 43 49 57  .= 0x4000,..MCIW
b140: 4e 44 46 5f 4e 4f 4f 50 45 4e 09 09 3d 20 30 78  NDF_NOOPEN..= 0x
b150: 38 30 30 30 2c 0a 7d 0a 0a 2f 2f 20 63 61 6e 20  8000,.}..// can 
b160: 6d 61 63 72 6f 73 0a 0a 42 4f 4f 4c 20 4d 43 49  macros..BOOL MCI
b170: 57 6e 64 43 61 6e 50 6c 61 79 28 48 57 4e 44 20  WndCanPlay(HWND 
b180: 68 77 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20  hwnd)..{ return 
b190: 63 61 73 74 28 42 4f 4f 4c 29 53 65 6e 64 4d 65  cast(BOOL)SendMe
b1a0: 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 57  ssage(hwnd, MCIW
b1b0: 4e 44 4d 5f 43 41 4e 5f 50 4c 41 59 2c 20 30 2c  NDM_CAN_PLAY, 0,
b1c0: 20 30 29 3b 20 7d 0a 42 4f 4f 4c 20 4d 43 49 57   0); }.BOOL MCIW
b1d0: 6e 64 43 61 6e 52 65 63 6f 72 64 28 48 57 4e 44  ndCanRecord(HWND
b1e0: 20 68 77 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e   hwnd)..{ return
b1f0: 20 63 61 73 74 28 42 4f 4f 4c 29 53 65 6e 64 4d   cast(BOOL)SendM
b200: 65 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49  essage(hwnd, MCI
b210: 57 4e 44 4d 5f 43 41 4e 5f 52 45 43 4f 52 44 2c  WNDM_CAN_RECORD,
b220: 20 30 2c 20 30 29 3b 20 7d 0a 42 4f 4f 4c 20 4d   0, 0); }.BOOL M
b230: 43 49 57 6e 64 43 61 6e 53 61 76 65 28 48 57 4e  CIWndCanSave(HWN
b240: 44 20 68 77 6e 64 29 0a 09 7b 20 72 65 74 75 72  D hwnd)..{ retur
b250: 6e 20 63 61 73 74 28 42 4f 4f 4c 29 53 65 6e 64  n cast(BOOL)Send
b260: 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43  Message(hwnd, MC
b270: 49 57 4e 44 4d 5f 43 41 4e 5f 53 41 56 45 2c 20  IWNDM_CAN_SAVE, 
b280: 30 2c 20 30 29 3b 20 7d 0a 42 4f 4f 4c 20 4d 43  0, 0); }.BOOL MC
b290: 49 57 6e 64 43 61 6e 57 69 6e 64 6f 77 28 48 57  IWndCanWindow(HW
b2a0: 4e 44 20 68 77 6e 64 29 0a 09 7b 20 72 65 74 75  ND hwnd)..{ retu
b2b0: 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 53 65 6e  rn cast(BOOL)Sen
b2c0: 64 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20 4d  dMessage(hwnd, M
b2d0: 43 49 57 4e 44 4d 5f 43 41 4e 5f 57 49 4e 44 4f  CIWNDM_CAN_WINDO
b2e0: 57 2c 20 30 2c 20 30 29 3b 20 7d 0a 42 4f 4f 4c  W, 0, 0); }.BOOL
b2f0: 20 4d 43 49 57 6e 64 43 61 6e 45 6a 65 63 74 28   MCIWndCanEject(
b300: 48 57 4e 44 20 68 77 6e 64 29 0a 09 7b 20 72 65  HWND hwnd)..{ re
b310: 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 53  turn cast(BOOL)S
b320: 65 6e 64 4d 65 73 73 61 67 65 28 68 77 6e 64 2c  endMessage(hwnd,
b330: 20 4d 43 49 57 4e 44 4d 5f 43 41 4e 5f 45 4a 45   MCIWNDM_CAN_EJE
b340: 43 54 2c 20 30 2c 20 30 29 3b 20 7d 0a 42 4f 4f  CT, 0, 0); }.BOO
b350: 4c 20 4d 43 49 57 6e 64 43 61 6e 43 6f 6e 66 69  L MCIWndCanConfi
b360: 67 28 48 57 4e 44 20 68 77 6e 64 29 0a 09 7b 20  g(HWND hwnd)..{ 
b370: 72 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c  return cast(BOOL
b380: 29 53 65 6e 64 4d 65 73 73 61 67 65 28 68 77 6e  )SendMessage(hwn
b390: 64 2c 20 4d 43 49 57 4e 44 4d 5f 43 41 4e 5f 43  d, MCIWNDM_CAN_C
b3a0: 4f 4e 46 49 47 2c 20 30 2c 20 30 29 3b 20 7d 0a  ONFIG, 0, 0); }.
b3b0: 42 4f 4f 4c 20 4d 43 49 57 6e 64 50 61 6c 65 74  BOOL MCIWndPalet
b3c0: 74 65 4b 69 63 6b 28 48 57 4e 44 20 68 77 6e 64  teKick(HWND hwnd
b3d0: 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74  )..{ return cast
b3e0: 28 42 4f 4f 4c 29 53 65 6e 64 4d 65 73 73 61 67  (BOOL)SendMessag
b3f0: 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f  e(hwnd, MCIWNDM_
b400: 50 41 4c 45 54 54 45 4b 49 43 4b 2c 20 30 2c 20  PALETTEKICK, 0, 
b410: 30 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e  0); }.LONG MCIWn
b420: 64 53 61 76 65 28 48 57 4e 44 20 68 77 6e 64 2c  dSave(HWND hwnd,
b430: 20 4c 50 56 4f 49 44 20 73 7a 46 69 6c 65 29 0a   LPVOID szFile).
b440: 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 4c  .{ return cast(L
b450: 4f 4e 47 29 53 65 6e 64 4d 65 73 73 61 67 65 28  ONG)SendMessage(
b460: 68 77 6e 64 2c 20 4d 43 49 5f 53 41 56 45 2c 20  hwnd, MCI_SAVE, 
b470: 30 2c 20 63 61 73 74 28 4c 50 41 52 41 4d 29 73  0, cast(LPARAM)s
b480: 7a 46 69 6c 65 29 3b 20 7d 0a 4c 4f 4e 47 20 4d  zFile); }.LONG M
b490: 43 49 57 6e 64 53 61 76 65 44 69 61 6c 6f 67 28  CIWndSaveDialog(
b4a0: 48 57 4e 44 20 68 77 6e 64 29 0a 09 7b 20 72 65  HWND hwnd)..{ re
b4b0: 74 75 72 6e 20 4d 43 49 57 6e 64 53 61 76 65 28  turn MCIWndSave(
b4c0: 68 77 6e 64 2c 20 63 61 73 74 28 4c 50 56 4f 49  hwnd, cast(LPVOI
b4d0: 44 29 2d 31 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43  D)-1); }.LONG MC
b4e0: 49 57 6e 64 4e 65 77 28 48 57 4e 44 20 68 77 6e  IWndNew(HWND hwn
b4f0: 64 2c 20 4c 50 56 4f 49 44 20 6c 70 29 0a 09 7b  d, LPVOID lp)..{
b500: 20 72 65 74 75 72 6e 20 63 61 73 74 28 4c 4f 4e   return cast(LON
b510: 47 29 53 65 6e 64 4d 65 73 73 61 67 65 28 68 77  G)SendMessage(hw
b520: 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 4e 45 57 2c  nd, MCIWNDM_NEW,
b530: 20 30 2c 20 63 61 73 74 28 4c 50 41 52 41 4d 29   0, cast(LPARAM)
b540: 6c 70 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57  lp); }.LONG MCIW
b550: 6e 64 52 65 63 6f 72 64 28 48 57 4e 44 20 68 77  ndRecord(HWND hw
b560: 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61  nd)..{ return ca
b570: 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73  st(LONG)SendMess
b580: 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 5f 52 45  age(hwnd, MCI_RE
b590: 43 4f 52 44 2c 20 30 2c 20 30 29 3b 20 7d 0a 4c  CORD, 0, 0); }.L
b5a0: 4f 4e 47 20 4d 43 49 57 6e 64 4f 70 65 6e 28 48  ONG MCIWndOpen(H
b5b0: 57 4e 44 20 68 77 6e 64 2c 20 4c 50 56 4f 49 44  WND hwnd, LPVOID
b5c0: 20 73 7a 2c 20 55 49 4e 54 20 66 29 0a 09 7b 20   sz, UINT f)..{ 
b5d0: 72 65 74 75 72 6e 20 63 61 73 74 28 4c 4f 4e 47  return cast(LONG
b5e0: 29 53 65 6e 64 4d 65 73 73 61 67 65 28 68 77 6e  )SendMessage(hwn
b5f0: 64 2c 20 4d 43 49 57 4e 44 4d 5f 4f 50 45 4e 2c  d, MCIWNDM_OPEN,
b600: 20 63 61 73 74 28 57 50 41 52 41 4d 29 66 2c 20   cast(WPARAM)f, 
b610: 63 61 73 74 28 4c 50 41 52 41 4d 29 73 7a 29 3b  cast(LPARAM)sz);
b620: 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 4f 70   }.LONG MCIWndOp
b630: 65 6e 44 69 61 6c 6f 67 28 48 57 4e 44 20 68 77  enDialog(HWND hw
b640: 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20 4d 43  nd)..{ return MC
b650: 49 57 6e 64 4f 70 65 6e 28 68 77 6e 64 2c 20 63  IWndOpen(hwnd, c
b660: 61 73 74 28 4c 50 56 4f 49 44 29 2d 31 2c 20 30  ast(LPVOID)-1, 0
b670: 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64  ); }.LONG MCIWnd
b680: 43 6c 6f 73 65 28 48 57 4e 44 20 68 77 6e 64 29  Close(HWND hwnd)
b690: 0a 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28  ..{ return cast(
b6a0: 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73 61 67 65  LONG)SendMessage
b6b0: 28 68 77 6e 64 2c 20 4d 43 49 5f 43 4c 4f 53 45  (hwnd, MCI_CLOSE
b6c0: 2c 20 30 2c 20 30 29 3b 20 7d 0a 4c 4f 4e 47 20  , 0, 0); }.LONG 
b6d0: 4d 43 49 57 6e 64 50 6c 61 79 28 48 57 4e 44 20  MCIWndPlay(HWND 
b6e0: 68 77 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20  hwnd)..{ return 
b6f0: 63 61 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65  cast(LONG)SendMe
b700: 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 5f  ssage(hwnd, MCI_
b710: 50 4c 41 59 2c 20 30 2c 20 30 29 3b 20 7d 0a 4c  PLAY, 0, 0); }.L
b720: 4f 4e 47 20 4d 43 49 57 6e 64 53 74 6f 70 28 48  ONG MCIWndStop(H
b730: 57 4e 44 20 68 77 6e 64 29 0a 09 7b 20 72 65 74  WND hwnd)..{ ret
b740: 75 72 6e 20 63 61 73 74 28 4c 4f 4e 47 29 53 65  urn cast(LONG)Se
b750: 6e 64 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20  ndMessage(hwnd, 
b760: 4d 43 49 5f 53 54 4f 50 2c 20 30 2c 20 30 29 3b  MCI_STOP, 0, 0);
b770: 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 50 61   }.LONG MCIWndPa
b780: 75 73 65 28 48 57 4e 44 20 68 77 6e 64 29 0a 09  use(HWND hwnd)..
b790: 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 4c 4f  { return cast(LO
b7a0: 4e 47 29 53 65 6e 64 4d 65 73 73 61 67 65 28 68  NG)SendMessage(h
b7b0: 77 6e 64 2c 20 4d 43 49 5f 50 41 55 53 45 2c 20  wnd, MCI_PAUSE, 
b7c0: 30 2c 20 30 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43  0, 0); }.LONG MC
b7d0: 49 57 6e 64 52 65 73 75 6d 65 28 48 57 4e 44 20  IWndResume(HWND 
b7e0: 68 77 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20  hwnd)..{ return 
b7f0: 63 61 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65  cast(LONG)SendMe
b800: 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 5f  ssage(hwnd, MCI_
b810: 52 45 53 55 4d 45 2c 20 30 2c 20 30 29 3b 20 7d  RESUME, 0, 0); }
b820: 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 53 65 65 6b  .LONG MCIWndSeek
b830: 28 48 57 4e 44 20 68 77 6e 64 2c 20 4c 4f 4e 47  (HWND hwnd, LONG
b840: 20 6c 50 6f 73 29 0a 09 7b 20 72 65 74 75 72 6e   lPos)..{ return
b850: 20 63 61 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d   cast(LONG)SendM
b860: 65 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49  essage(hwnd, MCI
b870: 5f 53 45 45 4b 2c 20 30 2c 20 63 61 73 74 28 4c  _SEEK, 0, cast(L
b880: 50 41 52 41 4d 29 6c 50 6f 73 29 3b 20 7d 0a 4c  PARAM)lPos); }.L
b890: 4f 4e 47 20 4d 43 49 57 6e 64 48 6f 6d 65 28 48  ONG MCIWndHome(H
b8a0: 57 4e 44 20 68 77 6e 64 29 0a 09 7b 20 72 65 74  WND hwnd)..{ ret
b8b0: 75 72 6e 20 4d 43 49 57 6e 64 53 65 65 6b 28 68  urn MCIWndSeek(h
b8c0: 77 6e 64 2c 20 4d 43 49 57 4e 44 5f 53 54 41 52  wnd, MCIWND_STAR
b8d0: 54 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e  T); }.LONG MCIWn
b8e0: 64 45 6e 64 28 48 57 4e 44 20 68 77 6e 64 29 0a  dEnd(HWND hwnd).
b8f0: 09 7b 20 72 65 74 75 72 6e 20 4d 43 49 57 6e 64  .{ return MCIWnd
b900: 53 65 65 6b 28 68 77 6e 64 2c 20 4d 43 49 57 4e  Seek(hwnd, MCIWN
b910: 44 5f 45 4e 44 29 3b 20 7d 0a 4c 4f 4e 47 20 4d  D_END); }.LONG M
b920: 43 49 57 6e 64 45 6a 65 63 74 28 48 57 4e 44 20  CIWndEject(HWND 
b930: 68 77 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20  hwnd)..{ return 
b940: 63 61 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65  cast(LONG)SendMe
b950: 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 57  ssage(hwnd, MCIW
b960: 4e 44 4d 5f 45 4a 45 43 54 2c 20 30 2c 20 30 29  NDM_EJECT, 0, 0)
b970: 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 47  ; }.LONG MCIWndG
b980: 65 74 53 6f 75 72 63 65 28 48 57 4e 44 20 68 77  etSource(HWND hw
b990: 6e 64 2c 20 4c 50 52 45 43 54 20 70 72 63 29 0a  nd, LPRECT prc).
b9a0: 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 4c  .{ return cast(L
b9b0: 4f 4e 47 29 53 65 6e 64 4d 65 73 73 61 67 65 28  ONG)SendMessage(
b9c0: 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 47 45  hwnd, MCIWNDM_GE
b9d0: 54 5f 53 4f 55 52 43 45 2c 20 30 2c 20 63 61 73  T_SOURCE, 0, cas
b9e0: 74 28 4c 50 41 52 41 4d 29 70 72 63 29 3b 20 7d  t(LPARAM)prc); }
b9f0: 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 50 75 74 53  .LONG MCIWndPutS
ba00: 6f 75 72 63 65 28 48 57 4e 44 20 68 77 6e 64 2c  ource(HWND hwnd,
ba10: 20 4c 50 52 45 43 54 20 70 72 63 29 0a 09 7b 20   LPRECT prc)..{ 
ba20: 72 65 74 75 72 6e 20 63 61 73 74 28 4c 4f 4e 47  return cast(LONG
ba30: 29 53 65 6e 64 4d 65 73 73 61 67 65 28 68 77 6e  )SendMessage(hwn
ba40: 64 2c 20 4d 43 49 57 4e 44 4d 5f 50 55 54 5f 53  d, MCIWNDM_PUT_S
ba50: 4f 55 52 43 45 2c 20 30 2c 20 63 61 73 74 28 4c  OURCE, 0, cast(L
ba60: 50 41 52 41 4d 29 70 72 63 29 3b 20 7d 0a 4c 4f  PARAM)prc); }.LO
ba70: 4e 47 20 4d 43 49 57 6e 64 47 65 74 44 65 73 74  NG MCIWndGetDest
ba80: 28 48 57 4e 44 20 68 77 6e 64 2c 20 4c 50 52 45  (HWND hwnd, LPRE
ba90: 43 54 20 70 72 63 29 0a 09 7b 20 72 65 74 75 72  CT prc)..{ retur
baa0: 6e 20 63 61 73 74 28 4c 4f 4e 47 29 53 65 6e 64  n cast(LONG)Send
bab0: 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43  Message(hwnd, MC
bac0: 49 57 4e 44 4d 5f 47 45 54 5f 44 45 53 54 2c 20  IWNDM_GET_DEST, 
bad0: 30 2c 20 63 61 73 74 28 4c 50 41 52 41 4d 29 70  0, cast(LPARAM)p
bae0: 72 63 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57  rc); }.LONG MCIW
baf0: 6e 64 50 75 74 44 65 73 74 28 48 57 4e 44 20 68  ndPutDest(HWND h
bb00: 77 6e 64 2c 20 4c 50 52 45 43 54 20 70 72 63 29  wnd, LPRECT prc)
bb10: 0a 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28  ..{ return cast(
bb20: 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73 61 67 65  LONG)SendMessage
bb30: 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 50  (hwnd, MCIWNDM_P
bb40: 55 54 5f 44 45 53 54 2c 20 30 2c 20 63 61 73 74  UT_DEST, 0, cast
bb50: 28 4c 50 41 52 41 4d 29 70 72 63 29 3b 20 7d 0a  (LPARAM)prc); }.
bb60: 4c 4f 4e 47 20 4d 43 49 57 6e 64 50 6c 61 79 52  LONG MCIWndPlayR
bb70: 65 76 65 72 73 65 28 48 57 4e 44 20 68 77 6e 64  everse(HWND hwnd
bb80: 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74  )..{ return cast
bb90: 28 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73 61 67  (LONG)SendMessag
bba0: 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f  e(hwnd, MCIWNDM_
bbb0: 50 4c 41 59 52 45 56 45 52 53 45 2c 20 30 2c 20  PLAYREVERSE, 0, 
bbc0: 30 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e  0); }.LONG MCIWn
bbd0: 64 50 6c 61 79 46 72 6f 6d 28 48 57 4e 44 20 68  dPlayFrom(HWND h
bbe0: 77 6e 64 2c 20 4c 4f 4e 47 20 6c 50 6f 73 29 0a  wnd, LONG lPos).
bbf0: 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 4c  .{ return cast(L
bc00: 4f 4e 47 29 53 65 6e 64 4d 65 73 73 61 67 65 28  ONG)SendMessage(
bc10: 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 50 4c  hwnd, MCIWNDM_PL
bc20: 41 59 46 52 4f 4d 2c 20 30 2c 20 63 61 73 74 28  AYFROM, 0, cast(
bc30: 4c 50 41 52 41 4d 29 6c 50 6f 73 29 3b 20 7d 0a  LPARAM)lPos); }.
bc40: 4c 4f 4e 47 20 4d 43 49 57 6e 64 50 6c 61 79 54  LONG MCIWndPlayT
bc50: 6f 28 48 57 4e 44 20 68 77 6e 64 2c 20 4c 4f 4e  o(HWND hwnd, LON
bc60: 47 20 6c 50 6f 73 29 0a 09 7b 20 72 65 74 75 72  G lPos)..{ retur
bc70: 6e 20 63 61 73 74 28 4c 4f 4e 47 29 53 65 6e 64  n cast(LONG)Send
bc80: 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43  Message(hwnd, MC
bc90: 49 57 4e 44 4d 5f 50 4c 41 59 54 4f 2c 20 30 2c  IWNDM_PLAYTO, 0,
bca0: 20 63 61 73 74 28 4c 50 41 52 41 4d 29 6c 50 6f   cast(LPARAM)lPo
bcb0: 73 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e  s); }.LONG MCIWn
bcc0: 64 50 6c 61 79 46 72 6f 6d 54 6f 28 48 57 4e 44  dPlayFromTo(HWND
bcd0: 20 68 77 6e 64 2c 20 4c 4f 4e 47 20 6c 53 74 61   hwnd, LONG lSta
bce0: 72 74 2c 20 4c 4f 4e 47 20 6c 45 6e 64 29 0a 09  rt, LONG lEnd)..
bcf0: 7b 20 4d 43 49 57 6e 64 53 65 65 6b 28 68 77 6e  { MCIWndSeek(hwn
bd00: 64 2c 20 6c 53 74 61 72 74 29 3b 20 72 65 74 75  d, lStart); retu
bd10: 72 6e 20 4d 43 49 57 6e 64 50 6c 61 79 54 6f 28  rn MCIWndPlayTo(
bd20: 68 77 6e 64 2c 20 6c 45 6e 64 29 3b 20 7d 0a 55  hwnd, lEnd); }.U
bd30: 49 4e 54 20 4d 43 49 57 6e 64 47 65 74 44 65 76  INT MCIWndGetDev
bd40: 69 63 65 49 44 28 48 57 4e 44 20 68 77 6e 64 29  iceID(HWND hwnd)
bd50: 0a 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28  ..{ return cast(
bd60: 55 49 4e 54 29 53 65 6e 64 4d 65 73 73 61 67 65  UINT)SendMessage
bd70: 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 47  (hwnd, MCIWNDM_G
bd80: 45 54 44 45 56 49 43 45 49 44 2c 20 30 2c 20 30  ETDEVICEID, 0, 0
bd90: 29 3b 20 7d 0a 55 49 4e 54 20 4d 43 49 57 6e 64  ); }.UINT MCIWnd
bda0: 47 65 74 41 6c 69 61 73 28 48 57 4e 44 20 68 77  GetAlias(HWND hw
bdb0: 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61  nd)..{ return ca
bdc0: 73 74 28 55 49 4e 54 29 53 65 6e 64 4d 65 73 73  st(UINT)SendMess
bdd0: 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44  age(hwnd, MCIWND
bde0: 4d 5f 47 45 54 41 4c 49 41 53 2c 20 30 2c 20 30  M_GETALIAS, 0, 0
bdf0: 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64  ); }.LONG MCIWnd
be00: 47 65 74 4d 6f 64 65 28 48 57 4e 44 20 68 77 6e  GetMode(HWND hwn
be10: 64 2c 20 4c 50 54 53 54 52 20 6c 70 2c 20 55 49  d, LPTSTR lp, UI
be20: 4e 54 20 6c 65 6e 29 0a 09 7b 20 72 65 74 75 72  NT len)..{ retur
be30: 6e 20 63 61 73 74 28 4c 4f 4e 47 29 53 65 6e 64  n cast(LONG)Send
be40: 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43  Message(hwnd, MC
be50: 49 57 4e 44 4d 5f 47 45 54 4d 4f 44 45 2c 20 63  IWNDM_GETMODE, c
be60: 61 73 74 28 57 50 41 52 41 4d 29 6c 65 6e 2c 20  ast(WPARAM)len, 
be70: 63 61 73 74 28 4c 50 41 52 41 4d 29 6c 70 29 3b  cast(LPARAM)lp);
be80: 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 47 65   }.LONG MCIWndGe
be90: 74 50 6f 73 69 74 69 6f 6e 28 48 57 4e 44 20 68  tPosition(HWND h
bea0: 77 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20 63  wnd)..{ return c
beb0: 61 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65 73  ast(LONG)SendMes
bec0: 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e  sage(hwnd, MCIWN
bed0: 44 4d 5f 47 45 54 50 4f 53 49 54 49 4f 4e 2c 20  DM_GETPOSITION, 
bee0: 30 2c 20 30 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43  0, 0); }.LONG MC
bef0: 49 57 6e 64 47 65 74 50 6f 73 69 74 69 6f 6e 53  IWndGetPositionS
bf00: 74 72 69 6e 67 28 48 57 4e 44 20 68 77 6e 64 2c  tring(HWND hwnd,
bf10: 20 4c 50 54 53 54 52 20 6c 70 2c 20 55 49 4e 54   LPTSTR lp, UINT
bf20: 20 6c 65 6e 29 0a 09 7b 20 72 65 74 75 72 6e 20   len)..{ return 
bf30: 63 61 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65  cast(LONG)SendMe
bf40: 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 57  ssage(hwnd, MCIW
bf50: 4e 44 4d 5f 47 45 54 50 4f 53 49 54 49 4f 4e 2c  NDM_GETPOSITION,
bf60: 20 63 61 73 74 28 57 50 41 52 41 4d 29 6c 65 6e   cast(WPARAM)len
bf70: 2c 20 63 61 73 74 28 4c 50 41 52 41 4d 29 6c 70  , cast(LPARAM)lp
bf80: 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64  ); }.LONG MCIWnd
bf90: 47 65 74 53 74 61 72 74 28 48 57 4e 44 20 68 77  GetStart(HWND hw
bfa0: 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61  nd)..{ return ca
bfb0: 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73  st(LONG)SendMess
bfc0: 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44  age(hwnd, MCIWND
bfd0: 4d 5f 47 45 54 53 54 41 52 54 2c 20 30 2c 20 30  M_GETSTART, 0, 0
bfe0: 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64  ); }.LONG MCIWnd
bff0: 47 65 74 4c 65 6e 67 74 68 28 48 57 4e 44 20 68  GetLength(HWND h
c000: 77 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20 63  wnd)..{ return c
c010: 61 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65 73  ast(LONG)SendMes
c020: 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e  sage(hwnd, MCIWN
c030: 44 4d 5f 47 45 54 4c 45 4e 47 54 48 2c 20 30 2c  DM_GETLENGTH, 0,
c040: 20 30 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57   0); }.LONG MCIW
c050: 6e 64 47 65 74 45 6e 64 28 48 57 4e 44 20 68 77  ndGetEnd(HWND hw
c060: 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61  nd)..{ return ca
c070: 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73  st(LONG)SendMess
c080: 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44  age(hwnd, MCIWND
c090: 4d 5f 47 45 54 45 4e 44 2c 20 30 2c 20 30 29 3b  M_GETEND, 0, 0);
c0a0: 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 53 74   }.LONG MCIWndSt
c0b0: 65 70 28 48 57 4e 44 20 68 77 6e 64 2c 20 4c 4f  ep(HWND hwnd, LO
c0c0: 4e 47 20 6e 29 0a 09 7b 20 72 65 74 75 72 6e 20  NG n)..{ return 
c0d0: 63 61 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65  cast(LONG)SendMe
c0e0: 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 5f  ssage(hwnd, MCI_
c0f0: 53 54 45 50 2c 20 30 2c 20 63 61 73 74 28 4c 50  STEP, 0, cast(LP
c100: 41 52 41 4d 29 6e 29 3b 20 7d 0a 76 6f 69 64 20  ARAM)n); }.void 
c110: 4d 43 49 57 6e 64 44 65 73 74 72 6f 79 28 48 57  MCIWndDestroy(HW
c120: 4e 44 20 68 77 6e 64 29 0a 09 7b 20 53 65 6e 64  ND hwnd)..{ Send
c130: 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20 57 4d  Message(hwnd, WM
c140: 5f 43 4c 4f 53 45 2c 20 30 2c 20 30 29 3b 20 7d  _CLOSE, 0, 0); }
c150: 0a 76 6f 69 64 20 4d 43 49 57 6e 64 53 65 74 5a  .void MCIWndSetZ
c160: 6f 6f 6d 28 48 57 4e 44 20 68 77 6e 64 2c 20 55  oom(HWND hwnd, U
c170: 49 4e 54 20 69 5a 6f 6f 6d 29 0a 09 7b 20 53 65  INT iZoom)..{ Se
c180: 6e 64 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20  ndMessage(hwnd, 
c190: 4d 43 49 57 4e 44 4d 5f 53 45 54 5a 4f 4f 4d 2c  MCIWNDM_SETZOOM,
c1a0: 20 30 2c 20 63 61 73 74 28 4c 50 41 52 41 4d 29   0, cast(LPARAM)
c1b0: 69 5a 6f 6f 6d 29 3b 20 7d 0a 55 49 4e 54 20 4d  iZoom); }.UINT M
c1c0: 43 49 57 6e 64 47 65 74 5a 6f 6f 6d 28 48 57 4e  CIWndGetZoom(HWN
c1d0: 44 20 68 77 6e 64 29 0a 09 7b 20 72 65 74 75 72  D hwnd)..{ retur
c1e0: 6e 20 63 61 73 74 28 55 49 4e 54 29 53 65 6e 64  n cast(UINT)Send
c1f0: 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43  Message(hwnd, MC
c200: 49 57 4e 44 4d 5f 47 45 54 5a 4f 4f 4d 2c 20 30  IWNDM_GETZOOM, 0
c210: 2c 20 30 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49  , 0); }.LONG MCI
c220: 57 6e 64 53 65 74 56 6f 6c 75 6d 65 28 48 57 4e  WndSetVolume(HWN
c230: 44 20 68 77 6e 64 2c 20 55 49 4e 54 20 69 56 6f  D hwnd, UINT iVo
c240: 6c 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61 73  l)..{ return cas
c250: 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73 61  t(LONG)SendMessa
c260: 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d  ge(hwnd, MCIWNDM
c270: 5f 53 45 54 56 4f 4c 55 4d 45 2c 20 30 2c 20 63  _SETVOLUME, 0, c
c280: 61 73 74 28 4c 50 41 52 41 4d 29 69 56 6f 6c 29  ast(LPARAM)iVol)
c290: 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 47  ; }.LONG MCIWndG
c2a0: 65 74 56 6f 6c 75 6d 65 28 48 57 4e 44 20 68 77  etVolume(HWND hw
c2b0: 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61  nd)..{ return ca
c2c0: 73 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73  st(LONG)SendMess
c2d0: 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44  age(hwnd, MCIWND
c2e0: 4d 5f 47 45 54 56 4f 4c 55 4d 45 2c 20 30 2c 20  M_GETVOLUME, 0, 
c2f0: 30 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e  0); }.LONG MCIWn
c300: 64 53 65 74 53 70 65 65 64 28 48 57 4e 44 20 68  dSetSpeed(HWND h
c310: 77 6e 64 2c 20 55 49 4e 54 20 69 53 70 65 65 64  wnd, UINT iSpeed
c320: 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74  )..{ return cast
c330: 28 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73 61 67  (LONG)SendMessag
c340: 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f  e(hwnd, MCIWNDM_
c350: 53 45 54 53 50 45 45 44 2c 20 30 2c 20 63 61 73  SETSPEED, 0, cas
c360: 74 28 4c 50 41 52 41 4d 29 69 53 70 65 65 64 29  t(LPARAM)iSpeed)
c370: 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 47  ; }.LONG MCIWndG
c380: 65 74 53 70 65 65 64 28 48 57 4e 44 20 68 77 6e  etSpeed(HWND hwn
c390: 64 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61 73  d)..{ return cas
c3a0: 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73 61  t(LONG)SendMessa
c3b0: 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d  ge(hwnd, MCIWNDM
c3c0: 5f 47 45 54 53 50 45 45 44 2c 20 30 2c 20 30 29  _GETSPEED, 0, 0)
c3d0: 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 53  ; }.LONG MCIWndS
c3e0: 65 74 54 69 6d 65 46 6f 72 6d 61 74 28 48 57 4e  etTimeFormat(HWN
c3f0: 44 20 68 77 6e 64 2c 20 4c 50 54 53 54 52 20 6c  D hwnd, LPTSTR l
c400: 70 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61 73  p)..{ return cas
c410: 74 28 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73 61  t(LONG)SendMessa
c420: 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d  ge(hwnd, MCIWNDM
c430: 5f 53 45 54 54 49 4d 45 46 4f 52 4d 41 54 2c 20  _SETTIMEFORMAT, 
c440: 30 2c 20 63 61 73 74 28 4c 50 41 52 41 4d 29 6c  0, cast(LPARAM)l
c450: 70 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e  p); }.LONG MCIWn
c460: 64 55 73 65 46 72 61 6d 65 73 28 48 57 4e 44 20  dUseFrames(HWND 
c470: 68 77 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20  hwnd)..{ return 
c480: 4d 43 49 57 6e 64 53 65 74 54 69 6d 65 46 6f 72  MCIWndSetTimeFor
c490: 6d 61 74 28 68 77 6e 64 2c 20 28 63 61 73 74 28  mat(hwnd, (cast(
c4a0: 54 43 48 41 52 5b 5d 29 22 66 72 61 6d 65 73 22  TCHAR[])"frames"
c4b0: 29 2e 70 74 72 29 3b 20 7d 0a 4c 4f 4e 47 20 4d  ).ptr); }.LONG M
c4c0: 43 49 57 6e 64 55 73 65 54 69 6d 65 28 48 57 4e  CIWndUseTime(HWN
c4d0: 44 20 68 77 6e 64 29 0a 09 7b 20 72 65 74 75 72  D hwnd)..{ retur
c4e0: 6e 20 4d 43 49 57 6e 64 53 65 74 54 69 6d 65 46  n MCIWndSetTimeF
c4f0: 6f 72 6d 61 74 28 68 77 6e 64 2c 20 28 63 61 73  ormat(hwnd, (cas
c500: 74 28 54 43 48 41 52 5b 5d 29 22 6d 73 22 29 2e  t(TCHAR[])"ms").
c510: 70 74 72 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49  ptr); }.LONG MCI
c520: 57 6e 64 47 65 74 54 69 6d 65 46 6f 72 6d 61 74  WndGetTimeFormat
c530: 28 48 57 4e 44 20 68 77 6e 64 2c 20 4c 50 54 53  (HWND hwnd, LPTS
c540: 54 52 20 6c 70 2c 20 55 49 4e 54 20 6c 65 6e 29  TR lp, UINT len)
c550: 0a 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28  ..{ return cast(
c560: 4c 4f 4e 47 29 53 65 6e 64 4d 65 73 73 61 67 65  LONG)SendMessage
c570: 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 47  (hwnd, MCIWNDM_G
c580: 45 54 54 49 4d 45 46 4f 52 4d 41 54 2c 20 63 61  ETTIMEFORMAT, ca
c590: 73 74 28 57 50 41 52 41 4d 29 6c 65 6e 2c 20 63  st(WPARAM)len, c
c5a0: 61 73 74 28 4c 50 41 52 41 4d 29 6c 70 29 3b 20  ast(LPARAM)lp); 
c5b0: 7d 0a 76 6f 69 64 20 4d 43 49 57 6e 64 56 61 6c  }.void MCIWndVal
c5c0: 69 64 61 74 65 4d 65 64 69 61 28 48 57 4e 44 20  idateMedia(HWND 
c5d0: 68 77 6e 64 29 0a 09 7b 20 53 65 6e 64 4d 65 73  hwnd)..{ SendMes
c5e0: 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e  sage(hwnd, MCIWN
c5f0: 44 4d 5f 56 41 4c 49 44 41 54 45 4d 45 44 49 41  DM_VALIDATEMEDIA
c600: 2c 20 30 2c 20 30 29 3b 20 7d 0a 76 6f 69 64 20  , 0, 0); }.void 
c610: 4d 43 49 57 6e 64 53 65 74 52 65 70 65 61 74 28  MCIWndSetRepeat(
c620: 48 57 4e 44 20 68 77 6e 64 2c 20 42 4f 4f 4c 20  HWND hwnd, BOOL 
c630: 66 29 0a 09 7b 20 53 65 6e 64 4d 65 73 73 61 67  f)..{ SendMessag
c640: 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f  e(hwnd, MCIWNDM_
c650: 53 45 54 52 45 50 45 41 54 2c 20 30 2c 20 63 61  SETREPEAT, 0, ca
c660: 73 74 28 4c 50 41 52 41 4d 29 66 29 3b 20 7d 0a  st(LPARAM)f); }.
c670: 42 4f 4f 4c 20 4d 43 49 57 6e 64 47 65 74 52 65  BOOL MCIWndGetRe
c680: 70 65 61 74 28 48 57 4e 44 20 68 77 6e 64 29 0a  peat(HWND hwnd).
c690: 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 42  .{ return cast(B
c6a0: 4f 4f 4c 29 53 65 6e 64 4d 65 73 73 61 67 65 28  OOL)SendMessage(
c6b0: 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 47 45  hwnd, MCIWNDM_GE
c6c0: 54 52 45 50 45 41 54 2c 20 30 2c 20 30 29 3b 20  TREPEAT, 0, 0); 
c6d0: 7d 0a 76 6f 69 64 20 4d 43 49 57 6e 64 53 65 74  }.void MCIWndSet
c6e0: 41 63 74 69 76 65 54 69 6d 65 72 28 48 57 4e 44  ActiveTimer(HWND
c6f0: 20 68 77 6e 64 2c 20 55 49 4e 54 20 61 63 74 69   hwnd, UINT acti
c700: 76 65 29 0a 09 7b 20 53 65 6e 64 4d 65 73 73 61  ve)..{ SendMessa
c710: 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d  ge(hwnd, MCIWNDM
c720: 5f 53 45 54 41 43 54 49 56 45 54 49 4d 45 52 2c  _SETACTIVETIMER,
c730: 20 63 61 73 74 28 57 50 41 52 41 4d 29 61 63 74   cast(WPARAM)act
c740: 69 76 65 2c 20 30 29 3b 20 7d 0a 76 6f 69 64 20  ive, 0); }.void 
c750: 4d 43 49 57 6e 64 53 65 74 49 6e 61 63 74 69 76  MCIWndSetInactiv
c760: 65 54 69 6d 65 72 28 48 57 4e 44 20 68 77 6e 64  eTimer(HWND hwnd
c770: 2c 20 55 49 4e 54 20 69 6e 61 63 74 69 76 65 29  , UINT inactive)
c780: 0a 09 7b 20 53 65 6e 64 4d 65 73 73 61 67 65 28  ..{ SendMessage(
c790: 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 53 45  hwnd, MCIWNDM_SE
c7a0: 54 49 4e 41 43 54 49 56 45 54 49 4d 45 52 2c 20  TINACTIVETIMER, 
c7b0: 63 61 73 74 28 57 50 41 52 41 4d 29 69 6e 61 63  cast(WPARAM)inac
c7c0: 74 69 76 65 2c 20 30 29 3b 20 7d 0a 76 6f 69 64  tive, 0); }.void
c7d0: 20 4d 43 49 57 6e 64 53 65 74 54 69 6d 65 72 73   MCIWndSetTimers
c7e0: 28 48 57 4e 44 20 68 77 6e 64 2c 20 55 49 4e 54  (HWND hwnd, UINT
c7f0: 20 61 63 74 69 76 65 2c 20 55 49 4e 54 20 69 6e   active, UINT in
c800: 61 63 74 69 76 65 29 0a 09 7b 20 53 65 6e 64 4d  active)..{ SendM
c810: 65 73 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49  essage(hwnd, MCI
c820: 57 4e 44 4d 5f 53 45 54 54 49 4d 45 52 53 2c 20  WNDM_SETTIMERS, 
c830: 63 61 73 74 28 57 50 41 52 41 4d 29 61 63 74 69  cast(WPARAM)acti
c840: 76 65 2c 20 63 61 73 74 28 4c 50 41 52 41 4d 29  ve, cast(LPARAM)
c850: 69 6e 61 63 74 69 76 65 29 3b 20 7d 0a 55 49 4e  inactive); }.UIN
c860: 54 20 4d 43 49 57 6e 64 47 65 74 41 63 74 69 76  T MCIWndGetActiv
c870: 65 54 69 6d 65 72 28 48 57 4e 44 20 68 77 6e 64  eTimer(HWND hwnd
c880: 29 0a 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74  )..{ return cast
c890: 28 55 49 4e 54 29 53 65 6e 64 4d 65 73 73 61 67  (UINT)SendMessag
c8a0: 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f  e(hwnd, MCIWNDM_
c8b0: 47 45 54 41 43 54 49 56 45 54 49 4d 45 52 2c 20  GETACTIVETIMER, 
c8c0: 30 2c 20 30 29 3b 20 7d 0a 55 49 4e 54 20 4d 43  0, 0); }.UINT MC
c8d0: 49 57 6e 64 47 65 74 49 6e 61 63 74 69 76 65 54  IWndGetInactiveT
c8e0: 69 6d 65 72 28 48 57 4e 44 20 68 77 6e 64 29 0a  imer(HWND hwnd).
c8f0: 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 55  .{ return cast(U
c900: 49 4e 54 29 53 65 6e 64 4d 65 73 73 61 67 65 28  INT)SendMessage(
c910: 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 47 45  hwnd, MCIWNDM_GE
c920: 54 49 4e 41 43 54 49 56 45 54 49 4d 45 52 2c 20  TINACTIVETIMER, 
c930: 30 2c 20 30 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43  0, 0); }.LONG MC
c940: 49 57 6e 64 52 65 61 6c 69 7a 65 28 48 57 4e 44  IWndRealize(HWND
c950: 20 68 77 6e 64 2c 20 42 4f 4f 4c 20 66 42 6b 67   hwnd, BOOL fBkg
c960: 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20 53 65  nd)..{ return Se
c970: 6e 64 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20  ndMessage(hwnd, 
c980: 4d 43 49 57 4e 44 4d 5f 52 45 41 4c 49 5a 45 2c  MCIWNDM_REALIZE,
c990: 20 63 61 73 74 28 57 50 41 52 41 4d 29 66 42 6b   cast(WPARAM)fBk
c9a0: 67 6e 64 2c 20 30 29 3b 20 7d 0a 4c 4f 4e 47 20  gnd, 0); }.LONG 
c9b0: 4d 43 49 57 6e 64 53 65 6e 64 53 74 72 69 6e 67  MCIWndSendString
c9c0: 28 48 57 4e 44 20 68 77 6e 64 2c 20 4c 50 54 53  (HWND hwnd, LPTS
c9d0: 54 52 20 73 7a 29 0a 09 7b 20 72 65 74 75 72 6e  TR sz)..{ return
c9e0: 20 53 65 6e 64 4d 65 73 73 61 67 65 28 68 77 6e   SendMessage(hwn
c9f0: 64 2c 20 4d 43 49 57 4e 44 4d 5f 53 45 4e 44 53  d, MCIWNDM_SENDS
ca00: 54 52 49 4e 47 2c 20 30 2c 20 63 61 73 74 28 4c  TRING, 0, cast(L
ca10: 50 41 52 41 4d 29 73 7a 29 3b 20 7d 0a 4c 4f 4e  PARAM)sz); }.LON
ca20: 47 20 4d 43 49 57 6e 64 52 65 74 75 72 6e 53 74  G MCIWndReturnSt
ca30: 72 69 6e 67 28 48 57 4e 44 20 68 77 6e 64 2c 20  ring(HWND hwnd, 
ca40: 4c 50 56 4f 49 44 20 6c 70 2c 20 55 49 4e 54 20  LPVOID lp, UINT 
ca50: 6c 65 6e 29 0a 09 7b 20 72 65 74 75 72 6e 20 53  len)..{ return S
ca60: 65 6e 64 4d 65 73 73 61 67 65 28 68 77 6e 64 2c  endMessage(hwnd,
ca70: 20 4d 43 49 57 4e 44 4d 5f 52 45 54 55 52 4e 53   MCIWNDM_RETURNS
ca80: 54 52 49 4e 47 2c 20 63 61 73 74 28 57 50 41 52  TRING, cast(WPAR
ca90: 41 4d 29 6c 65 6e 2c 20 63 61 73 74 28 4c 50 41  AM)len, cast(LPA
caa0: 52 41 4d 29 6c 70 29 3b 20 7d 0a 4c 4f 4e 47 20  RAM)lp); }.LONG 
cab0: 4d 43 49 57 6e 64 47 65 74 45 72 72 6f 72 28 48  MCIWndGetError(H
cac0: 57 4e 44 20 68 77 6e 64 2c 20 4c 50 56 4f 49 44  WND hwnd, LPVOID
cad0: 20 6c 70 2c 20 55 49 4e 54 20 6c 65 6e 29 0a 09   lp, UINT len)..
cae0: 7b 20 72 65 74 75 72 6e 20 53 65 6e 64 4d 65 73  { return SendMes
caf0: 73 61 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e  sage(hwnd, MCIWN
cb00: 44 4d 5f 47 45 54 45 52 52 4f 52 2c 20 63 61 73  DM_GETERROR, cas
cb10: 74 28 57 50 41 52 41 4d 29 6c 65 6e 2c 20 63 61  t(WPARAM)len, ca
cb20: 73 74 28 4c 50 41 52 41 4d 29 6c 70 29 3b 20 7d  st(LPARAM)lp); }
cb30: 0a 48 50 41 4c 45 54 54 45 20 4d 43 49 57 6e 64  .HPALETTE MCIWnd
cb40: 47 65 74 50 61 6c 65 74 74 65 28 48 57 4e 44 20  GetPalette(HWND 
cb50: 68 77 6e 64 29 0a 09 7b 20 72 65 74 75 72 6e 20  hwnd)..{ return 
cb60: 63 61 73 74 28 48 50 41 4c 45 54 54 45 29 53 65  cast(HPALETTE)Se
cb70: 6e 64 4d 65 73 73 61 67 65 28 68 77 6e 64 2c 20  ndMessage(hwnd, 
cb80: 4d 43 49 57 4e 44 4d 5f 47 45 54 50 41 4c 45 54  MCIWNDM_GETPALET
cb90: 54 45 2c 20 30 2c 20 30 29 3b 20 7d 0a 4c 4f 4e  TE, 0, 0); }.LON
cba0: 47 20 4d 43 49 57 6e 64 53 65 74 50 61 6c 65 74  G MCIWndSetPalet
cbb0: 74 65 28 48 57 4e 44 20 68 77 6e 64 2c 20 48 50  te(HWND hwnd, HP
cbc0: 41 4c 45 54 54 45 20 68 70 61 6c 29 0a 09 7b 20  ALETTE hpal)..{ 
cbd0: 72 65 74 75 72 6e 20 53 65 6e 64 4d 65 73 73 61  return SendMessa
cbe0: 67 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d  ge(hwnd, MCIWNDM
cbf0: 5f 53 45 54 50 41 4c 45 54 54 45 2c 20 63 61 73  _SETPALETTE, cas
cc00: 74 28 57 50 41 52 41 4d 29 68 70 61 6c 2c 20 30  t(WPARAM)hpal, 0
cc10: 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64  ); }.LONG MCIWnd
cc20: 47 65 74 46 69 6c 65 4e 61 6d 65 28 48 57 4e 44  GetFileName(HWND
cc30: 20 68 77 6e 64 2c 20 4c 50 56 4f 49 44 20 6c 70   hwnd, LPVOID lp
cc40: 2c 20 55 49 4e 54 20 6c 65 6e 29 0a 09 7b 20 72  , UINT len)..{ r
cc50: 65 74 75 72 6e 20 53 65 6e 64 4d 65 73 73 61 67  eturn SendMessag
cc60: 65 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f  e(hwnd, MCIWNDM_
cc70: 47 45 54 46 49 4c 45 4e 41 4d 45 2c 20 63 61 73  GETFILENAME, cas
cc80: 74 28 57 50 41 52 41 4d 29 6c 65 6e 2c 20 63 61  t(WPARAM)len, ca
cc90: 73 74 28 4c 50 41 52 41 4d 29 6c 70 29 3b 20 7d  st(LPARAM)lp); }
cca0: 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 47 65 74 44  .LONG MCIWndGetD
ccb0: 65 76 69 63 65 28 48 57 4e 44 20 68 77 6e 64 2c  evice(HWND hwnd,
ccc0: 20 4c 50 56 4f 49 44 20 6c 70 2c 20 55 49 4e 54   LPVOID lp, UINT
ccd0: 20 6c 65 6e 29 0a 09 7b 20 72 65 74 75 72 6e 20   len)..{ return 
cce0: 53 65 6e 64 4d 65 73 73 61 67 65 28 68 77 6e 64  SendMessage(hwnd
ccf0: 2c 20 4d 43 49 57 4e 44 4d 5f 47 45 54 44 45 56  , MCIWNDM_GETDEV
cd00: 49 43 45 2c 20 63 61 73 74 28 57 50 41 52 41 4d  ICE, cast(WPARAM
cd10: 29 6c 65 6e 2c 20 63 61 73 74 28 4c 50 41 52 41  )len, cast(LPARA
cd20: 4d 29 6c 70 29 3b 20 7d 0a 55 49 4e 54 20 4d 43  M)lp); }.UINT MC
cd30: 49 57 6e 64 47 65 74 53 74 79 6c 65 73 28 48 57  IWndGetStyles(HW
cd40: 4e 44 20 68 77 6e 64 29 0a 09 7b 20 72 65 74 75  ND hwnd)..{ retu
cd50: 72 6e 20 53 65 6e 64 4d 65 73 73 61 67 65 28 68  rn SendMessage(h
cd60: 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 47 45 54  wnd, MCIWNDM_GET
cd70: 53 54 59 4c 45 53 2c 20 30 2c 20 30 29 3b 20 7d  STYLES, 0, 0); }
cd80: 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64 43 68 61 6e  .LONG MCIWndChan
cd90: 67 65 53 74 79 6c 65 73 28 48 57 4e 44 20 68 77  geStyles(HWND hw
cda0: 6e 64 2c 20 55 49 4e 54 20 6d 61 73 6b 2c 20 4c  nd, UINT mask, L
cdb0: 4f 4e 47 20 76 61 6c 75 65 29 0a 09 7b 20 72 65  ONG value)..{ re
cdc0: 74 75 72 6e 20 53 65 6e 64 4d 65 73 73 61 67 65  turn SendMessage
cdd0: 28 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 43  (hwnd, MCIWNDM_C
cde0: 48 41 4e 47 45 53 54 59 4c 45 53 2c 20 63 61 73  HANGESTYLES, cas
cdf0: 74 28 57 50 41 52 41 4d 29 6d 61 73 6b 2c 20 63  t(WPARAM)mask, c
ce00: 61 73 74 28 4c 50 41 52 41 4d 29 76 61 6c 75 65  ast(LPARAM)value
ce10: 29 3b 20 7d 0a 4c 4f 4e 47 20 4d 43 49 57 6e 64  ); }.LONG MCIWnd
ce20: 4f 70 65 6e 49 6e 74 65 72 66 61 63 65 28 48 57  OpenInterface(HW
ce30: 4e 44 20 68 77 6e 64 2c 20 4c 50 55 4e 4b 4e 4f  ND hwnd, LPUNKNO
ce40: 57 4e 20 70 55 6e 6b 29 0a 09 7b 20 72 65 74 75  WN pUnk)..{ retu
ce50: 72 6e 20 53 65 6e 64 4d 65 73 73 61 67 65 28 68  rn SendMessage(h
ce60: 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 4f 50 45  wnd, MCIWNDM_OPE
ce70: 4e 49 4e 54 45 52 46 41 43 45 2c 20 30 2c 20 63  NINTERFACE, 0, c
ce80: 61 73 74 28 4c 50 41 52 41 4d 29 63 61 73 74 28  ast(LPARAM)cast(
ce90: 76 6f 69 64 2a 29 70 55 6e 6b 29 3b 20 7d 0a 4c  void*)pUnk); }.L
cea0: 4f 4e 47 20 4d 43 49 57 6e 64 53 65 74 4f 77 6e  ONG MCIWndSetOwn
ceb0: 65 72 28 48 57 4e 44 20 68 77 6e 64 2c 20 48 57  er(HWND hwnd, HW
cec0: 4e 44 20 68 77 6e 64 50 29 0a 09 7b 20 72 65 74  ND hwndP)..{ ret
ced0: 75 72 6e 20 53 65 6e 64 4d 65 73 73 61 67 65 28  urn SendMessage(
cee0: 68 77 6e 64 2c 20 4d 43 49 57 4e 44 4d 5f 53 45  hwnd, MCIWNDM_SE
cef0: 54 4f 57 4e 45 52 2c 20 63 61 73 74 28 57 50 41  TOWNER, cast(WPA
cf00: 52 41 4d 29 68 77 6e 64 50 2c 20 30 29 3b 20 7d  RAM)hwndP, 0); }
cf10: 0a 0a 65 6e 75 6d 20 7b 0a 09 4d 43 49 57 4e 44  ..enum {..MCIWND
cf20: 4d 5f 47 45 54 44 45 56 49 43 45 49 44 09 09 09  M_GETDEVICEID...
cf30: 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31 30 30 2c  = WM_USER + 100,
cf40: 0a 09 4d 43 49 57 4e 44 4d 5f 53 45 4e 44 53 54  ..MCIWNDM_SENDST
cf50: 52 49 4e 47 41 09 09 09 3d 20 57 4d 5f 55 53 45  RINGA...= WM_USE
cf60: 52 20 2b 20 31 30 31 2c 0a 09 4d 43 49 57 4e 44  R + 101,..MCIWND
cf70: 4d 5f 47 45 54 50 4f 53 49 54 49 4f 4e 41 09 09  M_GETPOSITIONA..
cf80: 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31 30 32 2c  = WM_USER + 102,
cf90: 0a 09 4d 43 49 57 4e 44 4d 5f 47 45 54 53 54 41  ..MCIWNDM_GETSTA
cfa0: 52 54 09 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b  RT...= WM_USER +
cfb0: 20 31 30 33 2c 0a 09 4d 43 49 57 4e 44 4d 5f 47   103,..MCIWNDM_G
cfc0: 45 54 4c 45 4e 47 54 48 09 09 09 3d 20 57 4d 5f  ETLENGTH...= WM_
cfd0: 55 53 45 52 20 2b 20 31 30 34 2c 0a 09 4d 43 49  USER + 104,..MCI
cfe0: 57 4e 44 4d 5f 47 45 54 45 4e 44 09 09 09 09 3d  WNDM_GETEND....=
cff0: 20 57 4d 5f 55 53 45 52 20 2b 20 31 30 35 2c 0a   WM_USER + 105,.
d000: 09 4d 43 49 57 4e 44 4d 5f 47 45 54 4d 4f 44 45  .MCIWNDM_GETMODE
d010: 41 09 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20  A...= WM_USER + 
d020: 31 30 36 2c 0a 09 4d 43 49 57 4e 44 4d 5f 45 4a  106,..MCIWNDM_EJ
d030: 45 43 54 09 09 09 09 3d 20 57 4d 5f 55 53 45 52  ECT....= WM_USER
d040: 20 2b 20 31 30 37 2c 0a 09 4d 43 49 57 4e 44 4d   + 107,..MCIWNDM
d050: 5f 53 45 54 5a 4f 4f 4d 09 09 09 09 3d 20 57 4d  _SETZOOM....= WM
d060: 5f 55 53 45 52 20 2b 20 31 30 38 2c 0a 09 4d 43  _USER + 108,..MC
d070: 49 57 4e 44 4d 5f 47 45 54 5a 4f 4f 4d 09 09 09  IWNDM_GETZOOM...
d080: 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31 30 39  .= WM_USER + 109
d090: 2c 0a 09 4d 43 49 57 4e 44 4d 5f 53 45 54 56 4f  ,..MCIWNDM_SETVO
d0a0: 4c 55 4d 45 09 09 09 3d 20 57 4d 5f 55 53 45 52  LUME...= WM_USER
d0b0: 20 2b 20 31 31 30 2c 0a 09 4d 43 49 57 4e 44 4d   + 110,..MCIWNDM
d0c0: 5f 47 45 54 56 4f 4c 55 4d 45 09 09 09 3d 20 57  _GETVOLUME...= W
d0d0: 4d 5f 55 53 45 52 20 2b 20 31 31 31 2c 0a 09 4d  M_USER + 111,..M
d0e0: 43 49 57 4e 44 4d 5f 53 45 54 53 50 45 45 44 09  CIWNDM_SETSPEED.
d0f0: 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31 31  ..= WM_USER + 11
d100: 32 2c 0a 09 4d 43 49 57 4e 44 4d 5f 47 45 54 53  2,..MCIWNDM_GETS
d110: 50 45 45 44 09 09 09 3d 20 57 4d 5f 55 53 45 52  PEED...= WM_USER
d120: 20 2b 20 31 31 33 2c 0a 09 4d 43 49 57 4e 44 4d   + 113,..MCIWNDM
d130: 5f 53 45 54 52 45 50 45 41 54 09 09 09 3d 20 57  _SETREPEAT...= W
d140: 4d 5f 55 53 45 52 20 2b 20 31 31 34 2c 0a 09 4d  M_USER + 114,..M
d150: 43 49 57 4e 44 4d 5f 47 45 54 52 45 50 45 41 54  CIWNDM_GETREPEAT
d160: 09 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31  ...= WM_USER + 1
d170: 31 35 2c 0a 09 4d 43 49 57 4e 44 4d 5f 52 45 41  15,..MCIWNDM_REA
d180: 4c 49 5a 45 09 09 09 09 3d 20 57 4d 5f 55 53 45  LIZE....= WM_USE
d190: 52 20 2b 20 31 31 38 2c 0a 09 4d 43 49 57 4e 44  R + 118,..MCIWND
d1a0: 4d 5f 53 45 54 54 49 4d 45 46 4f 52 4d 41 54 41  M_SETTIMEFORMATA
d1b0: 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31 31  ..= WM_USER + 11
d1c0: 39 2c 0a 09 4d 43 49 57 4e 44 4d 5f 47 45 54 54  9,..MCIWNDM_GETT
d1d0: 49 4d 45 46 4f 52 4d 41 54 41 09 09 3d 20 57 4d  IMEFORMATA..= WM
d1e0: 5f 55 53 45 52 20 2b 20 31 32 30 2c 0a 09 4d 43  _USER + 120,..MC
d1f0: 49 57 4e 44 4d 5f 56 41 4c 49 44 41 54 45 4d 45  IWNDM_VALIDATEME
d200: 44 49 41 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b  DIA..= WM_USER +
d210: 20 31 32 31 2c 0a 09 4d 43 49 57 4e 44 4d 5f 50   121,..MCIWNDM_P
d220: 4c 41 59 46 52 4f 4d 09 09 09 3d 20 57 4d 5f 55  LAYFROM...= WM_U
d230: 53 45 52 20 2b 20 31 32 32 2c 0a 09 4d 43 49 57  SER + 122,..MCIW
d240: 4e 44 4d 5f 50 4c 41 59 54 4f 09 09 09 09 3d 20  NDM_PLAYTO....= 
d250: 57 4d 5f 55 53 45 52 20 2b 20 31 32 33 2c 0a 09  WM_USER + 123,..
d260: 4d 43 49 57 4e 44 4d 5f 47 45 54 46 49 4c 45 4e  MCIWNDM_GETFILEN
d270: 41 4d 45 41 09 09 3d 20 57 4d 5f 55 53 45 52 20  AMEA..= WM_USER 
d280: 2b 20 31 32 34 2c 0a 09 4d 43 49 57 4e 44 4d 5f  + 124,..MCIWNDM_
d290: 47 45 54 44 45 56 49 43 45 41 09 09 09 3d 20 57  GETDEVICEA...= W
d2a0: 4d 5f 55 53 45 52 20 2b 20 31 32 35 2c 0a 09 4d  M_USER + 125,..M
d2b0: 43 49 57 4e 44 4d 5f 47 45 54 50 41 4c 45 54 54  CIWNDM_GETPALETT
d2c0: 45 09 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20  E...= WM_USER + 
d2d0: 31 32 36 2c 0a 09 4d 43 49 57 4e 44 4d 5f 53 45  126,..MCIWNDM_SE
d2e0: 54 50 41 4c 45 54 54 45 09 09 09 3d 20 57 4d 5f  TPALETTE...= WM_
d2f0: 55 53 45 52 20 2b 20 31 32 37 2c 0a 09 4d 43 49  USER + 127,..MCI
d300: 57 4e 44 4d 5f 47 45 54 45 52 52 4f 52 41 09 09  WNDM_GETERRORA..
d310: 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31 32 38  .= WM_USER + 128
d320: 2c 0a 09 4d 43 49 57 4e 44 4d 5f 53 45 54 54 49  ,..MCIWNDM_SETTI
d330: 4d 45 52 53 09 09 09 3d 20 57 4d 5f 55 53 45 52  MERS...= WM_USER
d340: 20 2b 20 31 32 39 2c 0a 09 4d 43 49 57 4e 44 4d   + 129,..MCIWNDM
d350: 5f 53 45 54 41 43 54 49 56 45 54 49 4d 45 52 09  _SETACTIVETIMER.
d360: 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31 33 30  .= WM_USER + 130
d370: 2c 0a 09 4d 43 49 57 4e 44 4d 5f 53 45 54 49 4e  ,..MCIWNDM_SETIN
d380: 41 43 54 49 56 45 54 49 4d 45 52 09 3d 20 57 4d  ACTIVETIMER.= WM
d390: 5f 55 53 45 52 20 2b 20 31 33 31 2c 0a 09 4d 43  _USER + 131,..MC
d3a0: 49 57 4e 44 4d 5f 47 45 54 41 43 54 49 56 45 54  IWNDM_GETACTIVET
d3b0: 49 4d 45 52 09 09 3d 20 57 4d 5f 55 53 45 52 20  IMER..= WM_USER 
d3c0: 2b 20 31 33 32 2c 0a 09 4d 43 49 57 4e 44 4d 5f  + 132,..MCIWNDM_
d3d0: 47 45 54 49 4e 41 43 54 49 56 45 54 49 4d 45 52  GETINACTIVETIMER
d3e0: 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31 33 33  .= WM_USER + 133
d3f0: 2c 0a 09 4d 43 49 57 4e 44 4d 5f 4e 45 57 41 09  ,..MCIWNDM_NEWA.
d400: 09 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31  ...= WM_USER + 1
d410: 33 34 2c 0a 09 4d 43 49 57 4e 44 4d 5f 43 48 41  34,..MCIWNDM_CHA
d420: 4e 47 45 53 54 59 4c 45 53 09 09 3d 20 57 4d 5f  NGESTYLES..= WM_
d430: 55 53 45 52 20 2b 20 31 33 35 2c 0a 09 4d 43 49  USER + 135,..MCI
d440: 57 4e 44 4d 5f 47 45 54 53 54 59 4c 45 53 09 09  WNDM_GETSTYLES..
d450: 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31 33 36  .= WM_USER + 136
d460: 2c 0a 09 4d 43 49 57 4e 44 4d 5f 47 45 54 41 4c  ,..MCIWNDM_GETAL
d470: 49 41 53 09 09 09 3d 20 57 4d 5f 55 53 45 52 20  IAS...= WM_USER 
d480: 2b 20 31 33 37 2c 0a 09 4d 43 49 57 4e 44 4d 5f  + 137,..MCIWNDM_
d490: 52 45 54 55 52 4e 53 54 52 49 4e 47 41 09 09 3d  RETURNSTRINGA..=
d4a0: 20 57 4d 5f 55 53 45 52 20 2b 20 31 33 38 2c 0a   WM_USER + 138,.
d4b0: 09 4d 43 49 57 4e 44 4d 5f 50 4c 41 59 52 45 56  .MCIWNDM_PLAYREV
d4c0: 45 52 53 45 09 09 09 3d 20 57 4d 5f 55 53 45 52  ERSE...= WM_USER
d4d0: 20 2b 20 31 33 39 2c 0a 09 4d 43 49 57 4e 44 4d   + 139,..MCIWNDM
d4e0: 5f 47 45 54 5f 53 4f 55 52 43 45 09 09 09 3d 20  _GET_SOURCE...= 
d4f0: 57 4d 5f 55 53 45 52 20 2b 20 31 34 30 2c 0a 09  WM_USER + 140,..
d500: 4d 43 49 57 4e 44 4d 5f 50 55 54 5f 53 4f 55 52  MCIWNDM_PUT_SOUR
d510: 43 45 09 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b  CE...= WM_USER +
d520: 20 31 34 31 2c 0a 09 4d 43 49 57 4e 44 4d 5f 47   141,..MCIWNDM_G
d530: 45 54 5f 44 45 53 54 09 09 09 3d 20 57 4d 5f 55  ET_DEST...= WM_U
d540: 53 45 52 20 2b 20 31 34 32 2c 0a 09 4d 43 49 57  SER + 142,..MCIW
d550: 4e 44 4d 5f 50 55 54 5f 44 45 53 54 09 09 09 3d  NDM_PUT_DEST...=
d560: 20 57 4d 5f 55 53 45 52 20 2b 20 31 34 33 2c 0a   WM_USER + 143,.
d570: 09 4d 43 49 57 4e 44 4d 5f 43 41 4e 5f 50 4c 41  .MCIWNDM_CAN_PLA
d580: 59 09 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20  Y...= WM_USER + 
d590: 31 34 34 2c 0a 09 4d 43 49 57 4e 44 4d 5f 43 41  144,..MCIWNDM_CA
d5a0: 4e 5f 57 49 4e 44 4f 57 09 09 09 3d 20 57 4d 5f  N_WINDOW...= WM_
d5b0: 55 53 45 52 20 2b 20 31 34 35 2c 0a 09 4d 43 49  USER + 145,..MCI
d5c0: 57 4e 44 4d 5f 43 41 4e 5f 52 45 43 4f 52 44 09  WNDM_CAN_RECORD.
d5d0: 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31 34  ..= WM_USER + 14
d5e0: 36 2c 0a 09 4d 43 49 57 4e 44 4d 5f 43 41 4e 5f  6,..MCIWNDM_CAN_
d5f0: 53 41 56 45 09 09 09 3d 20 57 4d 5f 55 53 45 52  SAVE...= WM_USER
d600: 20 2b 20 31 34 37 2c 0a 09 4d 43 49 57 4e 44 4d   + 147,..MCIWNDM
d610: 5f 43 41 4e 5f 45 4a 45 43 54 09 09 09 3d 20 57  _CAN_EJECT...= W
d620: 4d 5f 55 53 45 52 20 2b 20 31 34 38 2c 0a 09 4d  M_USER + 148,..M
d630: 43 49 57 4e 44 4d 5f 43 41 4e 5f 43 4f 4e 46 49  CIWNDM_CAN_CONFI
d640: 47 09 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20  G...= WM_USER + 
d650: 31 34 39 2c 0a 09 4d 43 49 57 4e 44 4d 5f 50 41  149,..MCIWNDM_PA
d660: 4c 45 54 54 45 4b 49 43 4b 09 09 09 3d 20 57 4d  LETTEKICK...= WM
d670: 5f 55 53 45 52 20 2b 20 31 35 30 2c 0a 09 4d 43  _USER + 150,..MC
d680: 49 57 4e 44 4d 5f 4f 50 45 4e 49 4e 54 45 52 46  IWNDM_OPENINTERF
d690: 41 43 45 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b  ACE..= WM_USER +
d6a0: 20 31 35 31 2c 0a 09 4d 43 49 57 4e 44 4d 5f 53   151,..MCIWNDM_S
d6b0: 45 54 4f 57 4e 45 52 09 09 09 3d 20 57 4d 5f 55  ETOWNER...= WM_U
d6c0: 53 45 52 20 2b 20 31 35 32 2c 0a 09 4d 43 49 57  SER + 152,..MCIW
d6d0: 4e 44 4d 5f 4f 50 45 4e 41 09 09 09 09 3d 20 57  NDM_OPENA....= W
d6e0: 4d 5f 55 53 45 52 20 2b 20 31 35 33 2c 0a 09 4d  M_USER + 153,..M
d6f0: 43 49 57 4e 44 4d 5f 53 45 4e 44 53 54 52 49 4e  CIWNDM_SENDSTRIN
d700: 47 57 09 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b  GW...= WM_USER +
d710: 20 32 30 31 2c 0a 09 4d 43 49 57 4e 44 4d 5f 47   201,..MCIWNDM_G
d720: 45 54 50 4f 53 49 54 49 4f 4e 57 09 09 3d 20 57  ETPOSITIONW..= W
d730: 4d 5f 55 53 45 52 20 2b 20 32 30 32 2c 0a 09 4d  M_USER + 202,..M
d740: 43 49 57 4e 44 4d 5f 47 45 54 4d 4f 44 45 57 09  CIWNDM_GETMODEW.
d750: 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 32 30  ..= WM_USER + 20
d760: 36 2c 0a 09 4d 43 49 57 4e 44 4d 5f 53 45 54 54  6,..MCIWNDM_SETT
d770: 49 4d 45 46 4f 52 4d 41 54 57 09 09 3d 20 57 4d  IMEFORMATW..= WM
d780: 5f 55 53 45 52 20 2b 20 32 31 39 2c 0a 09 4d 43  _USER + 219,..MC
d790: 49 57 4e 44 4d 5f 47 45 54 54 49 4d 45 46 4f 52  IWNDM_GETTIMEFOR
d7a0: 4d 41 54 57 09 09 3d 20 57 4d 5f 55 53 45 52 20  MATW..= WM_USER 
d7b0: 2b 20 32 32 30 2c 0a 09 4d 43 49 57 4e 44 4d 5f  + 220,..MCIWNDM_
d7c0: 47 45 54 46 49 4c 45 4e 41 4d 45 57 09 09 3d 20  GETFILENAMEW..= 
d7d0: 57 4d 5f 55 53 45 52 20 2b 20 32 32 34 2c 0a 09  WM_USER + 224,..
d7e0: 4d 43 49 57 4e 44 4d 5f 47 45 54 44 45 56 49 43  MCIWNDM_GETDEVIC
d7f0: 45 57 09 09 09 3d 20 57 4d 5f 55 53 45 52 20 2b  EW...= WM_USER +
d800: 20 32 32 35 2c 0a 09 4d 43 49 57 4e 44 4d 5f 47   225,..MCIWNDM_G
d810: 45 54 45 52 52 4f 52 57 09 09 09 3d 20 57 4d 5f  ETERRORW...= WM_
d820: 55 53 45 52 20 2b 20 32 32 38 2c 0a 09 4d 43 49  USER + 228,..MCI
d830: 57 4e 44 4d 5f 4e 45 57 57 09 09 09 09 3d 20 57  WNDM_NEWW....= W
d840: 4d 5f 55 53 45 52 20 2b 20 32 33 34 2c 0a 09 4d  M_USER + 234,..M
d850: 43 49 57 4e 44 4d 5f 52 45 54 55 52 4e 53 54 52  CIWNDM_RETURNSTR
d860: 49 4e 47 57 09 09 3d 20 57 4d 5f 55 53 45 52 20  INGW..= WM_USER 
d870: 2b 20 32 33 38 2c 0a 09 4d 43 49 57 4e 44 4d 5f  + 238,..MCIWNDM_
d880: 4f 50 45 4e 57 09 09 09 09 3d 20 57 4d 5f 55 53  OPENW....= WM_US
d890: 45 52 20 2b 20 32 35 32 2c 0a 7d 0a 0a 76 65 72  ER + 252,.}..ver
d8a0: 73 69 6f 6e 28 55 6e 69 63 6f 64 65 29 20 7b 0a  sion(Unicode) {.
d8b0: 09 61 6c 69 61 73 20 4d 43 49 57 4e 44 4d 5f 53  .alias MCIWNDM_S
d8c0: 45 4e 44 53 54 52 49 4e 47 57 09 09 4d 43 49 57  ENDSTRINGW..MCIW
d8d0: 4e 44 4d 5f 53 45 4e 44 53 54 52 49 4e 47 3b 0a  NDM_SENDSTRING;.
d8e0: 09 61 6c 69 61 73 20 4d 43 49 57 4e 44 4d 5f 47  .alias MCIWNDM_G
d8f0: 45 54 50 4f 53 49 54 49 4f 4e 57 09 09 4d 43 49  ETPOSITIONW..MCI
d900: 57 4e 44 4d 5f 47 45 54 50 4f 53 49 54 49 4f 4e  WNDM_GETPOSITION
d910: 3b 0a 09 61 6c 69 61 73 20 4d 43 49 57 4e 44 4d  ;..alias MCIWNDM
d920: 5f 47 45 54 4d 4f 44 45 57 09 09 09 4d 43 49 57  _GETMODEW...MCIW
d930: 4e 44 4d 5f 47 45 54 4d 4f 44 45 3b 0a 09 61 6c  NDM_GETMODE;..al
d940: 69 61 73 20 4d 43 49 57 4e 44 4d 5f 53 45 54 54  ias MCIWNDM_SETT
d950: 49 4d 45 46 4f 52 4d 41 54 57 09 4d 43 49 57 4e  IMEFORMATW.MCIWN
d960: 44 4d 5f 53 45 54 54 49 4d 45 46 4f 52 4d 41 54  DM_SETTIMEFORMAT
d970: 3b 0a 09 61 6c 69 61 73 20 4d 43 49 57 4e 44 4d  ;..alias MCIWNDM
d980: 5f 47 45 54 54 49 4d 45 46 4f 52 4d 41 54 57 09  _GETTIMEFORMATW.
d990: 4d 43 49 57 4e 44 4d 5f 47 45 54 54 49 4d 45 46  MCIWNDM_GETTIMEF
d9a0: 4f 52 4d 41 54 3b 0a 09 61 6c 69 61 73 20 4d 43  ORMAT;..alias MC
d9b0: 49 57 4e 44 4d 5f 47 45 54 46 49 4c 45 4e 41 4d  IWNDM_GETFILENAM
d9c0: 45 57 09 09 4d 43 49 57 4e 44 4d 5f 47 45 54 46  EW..MCIWNDM_GETF
d9d0: 49 4c 45 4e 41 4d 45 3b 0a 09 61 6c 69 61 73 20  ILENAME;..alias 
d9e0: 4d 43 49 57 4e 44 4d 5f 47 45 54 44 45 56 49 43  MCIWNDM_GETDEVIC
d9f0: 45 57 09 09 4d 43 49 57 4e 44 4d 5f 47 45 54 44  EW..MCIWNDM_GETD
da00: 45 56 49 43 45 3b 0a 09 61 6c 69 61 73 20 4d 43  EVICE;..alias MC
da10: 49 57 4e 44 4d 5f 47 45 54 45 52 52 4f 52 57 09  IWNDM_GETERRORW.
da20: 09 09 4d 43 49 57 4e 44 4d 5f 47 45 54 45 52 52  ..MCIWNDM_GETERR
da30: 4f 52 3b 0a 09 61 6c 69 61 73 20 4d 43 49 57 4e  OR;..alias MCIWN
da40: 44 4d 5f 4e 45 57 57 09 09 09 09 4d 43 49 57 4e  DM_NEWW....MCIWN
da50: 44 4d 5f 4e 45 57 3b 0a 09 61 6c 69 61 73 20 4d  DM_NEW;..alias M
da60: 43 49 57 4e 44 4d 5f 52 45 54 55 52 4e 53 54 52  CIWNDM_RETURNSTR
da70: 49 4e 47 57 09 09 4d 43 49 57 4e 44 4d 5f 52 45  INGW..MCIWNDM_RE
da80: 54 55 52 4e 53 54 52 49 4e 47 3b 0a 09 61 6c 69  TURNSTRING;..ali
da90: 61 73 20 4d 43 49 57 4e 44 4d 5f 4f 50 45 4e 57  as MCIWNDM_OPENW
daa0: 09 09 09 09 4d 43 49 57 4e 44 4d 5f 4f 50 45 4e  ....MCIWNDM_OPEN
dab0: 3b 0a 7d 20 65 6c 73 65 20 7b 20 2f 2f 20 55 6e  ;.} else { // Un
dac0: 69 63 6f 64 65 0a 09 61 6c 69 61 73 20 4d 43 49  icode..alias MCI
dad0: 57 4e 44 4d 5f 53 45 4e 44 53 54 52 49 4e 47 41  WNDM_SENDSTRINGA
dae0: 09 09 4d 43 49 57 4e 44 4d 5f 53 45 4e 44 53 54  ..MCIWNDM_SENDST
daf0: 52 49 4e 47 3b 0a 09 61 6c 69 61 73 20 4d 43 49  RING;..alias MCI
db00: 57 4e 44 4d 5f 47 45 54 50 4f 53 49 54 49 4f 4e  WNDM_GETPOSITION
db10: 41 09 09 4d 43 49 57 4e 44 4d 5f 47 45 54 50 4f  A..MCIWNDM_GETPO
db20: 53 49 54 49 4f 4e 3b 0a 09 61 6c 69 61 73 20 4d  SITION;..alias M
db30: 43 49 57 4e 44 4d 5f 47 45 54 4d 4f 44 45 41 09  CIWNDM_GETMODEA.
db40: 09 09 4d 43 49 57 4e 44 4d 5f 47 45 54 4d 4f 44  ..MCIWNDM_GETMOD
db50: 45 3b 0a 09 61 6c 69 61 73 20 4d 43 49 57 4e 44  E;..alias MCIWND
db60: 4d 5f 53 45 54 54 49 4d 45 46 4f 52 4d 41 54 41  M_SETTIMEFORMATA
db70: 09 4d 43 49 57 4e 44 4d 5f 53 45 54 54 49 4d 45  .MCIWNDM_SETTIME
db80: 46 4f 52 4d 41 54 3b 0a 09 61 6c 69 61 73 20 4d  FORMAT;..alias M
db90: 43 49 57 4e 44 4d 5f 47 45 54 54 49 4d 45 46 4f  CIWNDM_GETTIMEFO
dba0: 52 4d 41 54 41 09 4d 43 49 57 4e 44 4d 5f 47 45  RMATA.MCIWNDM_GE
dbb0: 54 54 49 4d 45 46 4f 52 4d 41 54 3b 0a 09 61 6c  TTIMEFORMAT;..al
dbc0: 69 61 73 20 4d 43 49 57 4e 44 4d 5f 47 45 54 46  ias MCIWNDM_GETF
dbd0: 49 4c 45 4e 41 4d 45 41 09 09 4d 43 49 57 4e 44  ILENAMEA..MCIWND
dbe0: 4d 5f 47 45 54 46 49 4c 45 4e 41 4d 45 3b 0a 09  M_GETFILENAME;..
dbf0: 61 6c 69 61 73 20 4d 43 49 57 4e 44 4d 5f 47 45  alias MCIWNDM_GE
dc00: 54 44 45 56 49 43 45 41 09 09 4d 43 49 57 4e 44  TDEVICEA..MCIWND
dc10: 4d 5f 47 45 54 44 45 56 49 43 45 3b 0a 09 61 6c  M_GETDEVICE;..al
dc20: 69 61 73 20 4d 43 49 57 4e 44 4d 5f 47 45 54 45  ias MCIWNDM_GETE
dc30: 52 52 4f 52 41 09 09 09 4d 43 49 57 4e 44 4d 5f  RRORA...MCIWNDM_
dc40: 47 45 54 45 52 52 4f 52 3b 0a 09 61 6c 69 61 73  GETERROR;..alias
dc50: 20 4d 43 49 57 4e 44 4d 5f 4e 45 57 41 09 09 09   MCIWNDM_NEWA...
dc60: 09 4d 43 49 57 4e 44 4d 5f 4e 45 57 3b 0a 09 61  .MCIWNDM_NEW;..a
dc70: 6c 69 61 73 20 4d 43 49 57 4e 44 4d 5f 52 45 54  lias MCIWNDM_RET
dc80: 55 52 4e 53 54 52 49 4e 47 41 09 09 4d 43 49 57  URNSTRINGA..MCIW
dc90: 4e 44 4d 5f 52 45 54 55 52 4e 53 54 52 49 4e 47  NDM_RETURNSTRING
dca0: 3b 0a 09 61 6c 69 61 73 20 4d 43 49 57 4e 44 4d  ;..alias MCIWNDM
dcb0: 5f 4f 50 45 4e 41 09 09 09 09 4d 43 49 57 4e 44  _OPENA....MCIWND
dcc0: 4d 5f 4f 50 45 4e 3b 0a 7d 0a 0a 65 6e 75 6d 20  M_OPEN;.}..enum 
dcd0: 7b 0a 09 4d 43 49 57 4e 44 4d 5f 4e 4f 54 49 46  {..MCIWNDM_NOTIF
dce0: 59 4d 4f 44 45 09 3d 20 57 4d 5f 55 53 45 52 20  YMODE.= WM_USER 
dcf0: 2b 20 32 30 30 2c 0a 09 4d 43 49 57 4e 44 4d 5f  + 200,..MCIWNDM_
dd00: 4e 4f 54 49 46 59 50 4f 53 09 3d 20 57 4d 5f 55  NOTIFYPOS.= WM_U
dd10: 53 45 52 20 2b 20 32 30 31 2c 0a 09 4d 43 49 57  SER + 201,..MCIW
dd20: 4e 44 4d 5f 4e 4f 54 49 46 59 53 49 5a 45 09 3d  NDM_NOTIFYSIZE.=
dd30: 20 57 4d 5f 55 53 45 52 20 2b 20 32 30 32 2c 0a   WM_USER + 202,.
dd40: 09 4d 43 49 57 4e 44 4d 5f 4e 4f 54 49 46 59 4d  .MCIWNDM_NOTIFYM
dd50: 45 44 49 41 09 3d 20 57 4d 5f 55 53 45 52 20 2b  EDIA.= WM_USER +
dd60: 20 32 30 33 2c 0a 09 4d 43 49 57 4e 44 4d 5f 4e   203,..MCIWNDM_N
dd70: 4f 54 49 46 59 45 52 52 4f 52 09 3d 20 57 4d 5f  OTIFYERROR.= WM_
dd80: 55 53 45 52 20 2b 20 32 30 35 2c 0a 7d 0a 0a 63  USER + 205,.}..c
dd90: 6f 6e 73 74 20 4d 43 49 57 4e 44 5f 53 54 41 52  onst MCIWND_STAR
dda0: 54 09 3d 20 2d 31 3b 0a 63 6f 6e 73 74 20 4d 43  T.= -1;.const MC
ddb0: 49 57 4e 44 5f 45 4e 44 09 3d 20 2d 32 3b 0a 0a  IWND_END.= -2;..
ddc0: 65 6e 75 6d 20 7b 0a 09 4d 43 49 5f 43 4c 4f 53  enum {..MCI_CLOS
ddd0: 45 09 3d 20 30 78 30 38 30 34 2c 0a 09 4d 43 49  E.= 0x0804,..MCI
dde0: 5f 50 4c 41 59 09 3d 20 30 78 30 38 30 36 2c 0a  _PLAY.= 0x0806,.
ddf0: 09 4d 43 49 5f 53 45 45 4b 09 3d 20 30 78 30 38  .MCI_SEEK.= 0x08
de00: 30 37 2c 0a 09 4d 43 49 5f 53 54 4f 50 09 3d 20  07,..MCI_STOP.= 
de10: 30 78 30 38 30 38 2c 0a 09 4d 43 49 5f 50 41 55  0x0808,..MCI_PAU
de20: 53 45 09 3d 20 30 78 30 38 30 39 2c 0a 09 4d 43  SE.= 0x0809,..MC
de30: 49 5f 53 54 45 50 09 3d 20 30 78 30 38 30 45 2c  I_STEP.= 0x080E,
de40: 0a 09 4d 43 49 5f 52 45 43 4f 52 44 09 3d 20 30  ..MCI_RECORD.= 0
de50: 78 30 38 30 46 2c 0a 09 4d 43 49 5f 53 41 56 45  x080F,..MCI_SAVE
de60: 09 3d 20 30 78 30 38 31 33 2c 0a 09 4d 43 49 5f  .= 0x0813,..MCI_
de70: 43 55 54 09 09 3d 20 30 78 30 38 35 31 2c 0a 09  CUT..= 0x0851,..
de80: 4d 43 49 5f 43 4f 50 59 09 3d 20 30 78 30 38 35  MCI_COPY.= 0x085
de90: 32 2c 0a 09 4d 43 49 5f 50 41 53 54 45 09 3d 20  2,..MCI_PASTE.= 
dea0: 30 78 30 38 35 33 2c 0a 09 4d 43 49 5f 52 45 53  0x0853,..MCI_RES
deb0: 55 4d 45 09 3d 20 30 78 30 38 35 35 2c 0a 09 4d  UME.= 0x0855,..M
dec0: 43 49 5f 44 45 4c 45 54 45 09 3d 20 30 78 30 38  CI_DELETE.= 0x08
ded0: 35 36 2c 0a 7d 0a 0a 65 6e 75 6d 20 7b 0a 09 4d  56,.}..enum {..M
dee0: 43 49 5f 4d 4f 44 45 5f 4e 4f 54 5f 52 45 41 44  CI_MODE_NOT_READ
def0: 59 09 3d 20 35 32 34 2c 0a 09 4d 43 49 5f 4d 4f  Y.= 524,..MCI_MO
df00: 44 45 5f 53 54 4f 50 2c 0a 09 4d 43 49 5f 4d 4f  DE_STOP,..MCI_MO
df10: 44 45 5f 50 4c 41 59 2c 0a 09 4d 43 49 5f 4d 4f  DE_PLAY,..MCI_MO
df20: 44 45 5f 52 45 43 4f 52 44 2c 0a 09 4d 43 49 5f  DE_RECORD,..MCI_
df30: 4d 4f 44 45 5f 53 45 45 4b 2c 0a 09 4d 43 49 5f  MODE_SEEK,..MCI_
df40: 4d 4f 44 45 5f 50 41 55 53 45 2c 0a 09 4d 43 49  MODE_PAUSE,..MCI
df50: 5f 4d 4f 44 45 5f 4f 50 45 4e 2c 0a 7d 0a 0a 61  _MODE_OPEN,.}..a
df60: 6c 69 61 73 20 48 41 4e 44 4c 45 20 48 56 49 44  lias HANDLE HVID
df70: 45 4f 3b 0a 61 6c 69 61 73 20 48 56 49 44 45 4f  EO;.alias HVIDEO
df80: 2a 20 4c 50 48 56 49 44 45 4f 3b 0a 0a 2f 2f 20  * LPHVIDEO;..// 
df90: 45 72 72 6f 72 20 52 65 74 75 72 6e 20 56 61 6c  Error Return Val
dfa0: 75 65 73 0a 0a 65 6e 75 6d 20 7b 0a 09 44 56 5f  ues..enum {..DV_
dfb0: 45 52 52 5f 4f 4b 09 09 09 09 3d 20 30 2c 0a 09  ERR_OK....= 0,..
dfc0: 44 56 5f 45 52 52 5f 42 41 53 45 09 09 09 09 3d  DV_ERR_BASE....=
dfd0: 20 31 2c 0a 09 44 56 5f 45 52 52 5f 4e 4f 4e 53   1,..DV_ERR_NONS
dfe0: 50 45 43 49 46 49 43 09 09 3d 20 44 56 5f 45 52  PECIFIC..= DV_ER
dff0: 52 5f 42 41 53 45 2c 0a 09 44 56 5f 45 52 52 5f  R_BASE,..DV_ERR_
e000: 42 41 44 46 4f 52 4d 41 54 09 09 3d 20 44 56 5f  BADFORMAT..= DV_
e010: 45 52 52 5f 42 41 53 45 20 2b 20 31 2c 0a 09 44  ERR_BASE + 1,..D
e020: 56 5f 45 52 52 5f 53 54 49 4c 4c 50 4c 41 59 49  V_ERR_STILLPLAYI
e030: 4e 47 09 09 3d 20 44 56 5f 45 52 52 5f 42 41 53  NG..= DV_ERR_BAS
e040: 45 20 2b 20 32 2c 0a 09 44 56 5f 45 52 52 5f 55  E + 2,..DV_ERR_U
e050: 4e 50 52 45 50 41 52 45 44 09 09 3d 20 44 56 5f  NPREPARED..= DV_
e060: 45 52 52 5f 42 41 53 45 20 2b 20 33 2c 0a 09 44  ERR_BASE + 3,..D
e070: 56 5f 45 52 52 5f 53 59 4e 43 09 09 09 09 3d 20  V_ERR_SYNC....= 
e080: 44 56 5f 45 52 52 5f 42 41 53 45 20 2b 20 34 2c  DV_ERR_BASE + 4,
e090: 0a 09 44 56 5f 45 52 52 5f 54 4f 4f 4d 41 4e 59  ..DV_ERR_TOOMANY
e0a0: 43 48 41 4e 4e 45 4c 53 09 3d 20 44 56 5f 45 52  CHANNELS.= DV_ER
e0b0: 52 5f 42 41 53 45 20 2b 20 35 2c 0a 09 44 56 5f  R_BASE + 5,..DV_
e0c0: 45 52 52 5f 4e 4f 54 44 45 54 45 43 54 45 44 09  ERR_NOTDETECTED.
e0d0: 09 3d 20 44 56 5f 45 52 52 5f 42 41 53 45 20 2b  .= DV_ERR_BASE +
e0e0: 20 36 2c 0a 09 44 56 5f 45 52 52 5f 42 41 44 49   6,..DV_ERR_BADI
e0f0: 4e 53 54 41 4c 4c 09 09 3d 20 44 56 5f 45 52 52  NSTALL..= DV_ERR
e100: 5f 42 41 53 45 20 2b 20 37 2c 0a 09 44 56 5f 45  _BASE + 7,..DV_E
e110: 52 52 5f 43 52 45 41 54 45 50 41 4c 45 54 54 45  RR_CREATEPALETTE
e120: 09 3d 20 44 56 5f 45 52 52 5f 42 41 53 45 20 2b  .= DV_ERR_BASE +
e130: 20 38 2c 0a 09 44 56 5f 45 52 52 5f 53 49 5a 45   8,..DV_ERR_SIZE
e140: 46 49 45 4c 44 09 09 3d 20 44 56 5f 45 52 52 5f  FIELD..= DV_ERR_
e150: 42 41 53 45 20 2b 20 39 2c 0a 09 44 56 5f 45 52  BASE + 9,..DV_ER
e160: 52 5f 50 41 52 41 4d 31 09 09 09 3d 20 44 56 5f  R_PARAM1...= DV_
e170: 45 52 52 5f 42 41 53 45 20 2b 20 31 30 2c 0a 09  ERR_BASE + 10,..
e180: 44 56 5f 45 52 52 5f 50 41 52 41 4d 32 09 09 09  DV_ERR_PARAM2...
e190: 3d 20 44 56 5f 45 52 52 5f 42 41 53 45 20 2b 20  = DV_ERR_BASE + 
e1a0: 31 31 2c 0a 09 44 56 5f 45 52 52 5f 43 4f 4e 46  11,..DV_ERR_CONF
e1b0: 49 47 31 09 09 09 3d 20 44 56 5f 45 52 52 5f 42  IG1...= DV_ERR_B
e1c0: 41 53 45 20 2b 20 31 32 2c 0a 09 44 56 5f 45 52  ASE + 12,..DV_ER
e1d0: 52 5f 43 4f 4e 46 49 47 32 09 09 09 3d 20 44 56  R_CONFIG2...= DV
e1e0: 5f 45 52 52 5f 42 41 53 45 20 2b 20 31 33 2c 0a  _ERR_BASE + 13,.
e1f0: 09 44 56 5f 45 52 52 5f 46 4c 41 47 53 09 09 09  .DV_ERR_FLAGS...
e200: 3d 20 44 56 5f 45 52 52 5f 42 41 53 45 20 2b 20  = DV_ERR_BASE + 
e210: 31 34 2c 0a 09 44 56 5f 45 52 52 5f 31 33 09 09  14,..DV_ERR_13..
e220: 09 09 3d 20 44 56 5f 45 52 52 5f 42 41 53 45 20  ..= DV_ERR_BASE 
e230: 2b 20 31 35 2c 0a 09 44 56 5f 45 52 52 5f 4e 4f  + 15,..DV_ERR_NO
e240: 54 53 55 50 50 4f 52 54 45 44 09 09 3d 20 44 56  TSUPPORTED..= DV
e250: 5f 45 52 52 5f 42 41 53 45 20 2b 20 31 36 2c 0a  _ERR_BASE + 16,.
e260: 09 44 56 5f 45 52 52 5f 4e 4f 4d 45 4d 09 09 09  .DV_ERR_NOMEM...
e270: 3d 20 44 56 5f 45 52 52 5f 42 41 53 45 20 2b 20  = DV_ERR_BASE + 
e280: 31 37 2c 0a 09 44 56 5f 45 52 52 5f 41 4c 4c 4f  17,..DV_ERR_ALLO
e290: 43 41 54 45 44 09 09 3d 20 44 56 5f 45 52 52 5f  CATED..= DV_ERR_
e2a0: 42 41 53 45 20 2b 20 31 38 2c 0a 09 44 56 5f 45  BASE + 18,..DV_E
e2b0: 52 52 5f 42 41 44 44 45 56 49 43 45 49 44 09 09  RR_BADDEVICEID..
e2c0: 3d 20 44 56 5f 45 52 52 5f 42 41 53 45 20 2b 20  = DV_ERR_BASE + 
e2d0: 31 39 2c 0a 09 44 56 5f 45 52 52 5f 49 4e 56 41  19,..DV_ERR_INVA
e2e0: 4c 48 41 4e 44 4c 45 09 09 3d 20 44 56 5f 45 52  LHANDLE..= DV_ER
e2f0: 52 5f 42 41 53 45 20 2b 20 32 30 2c 0a 09 44 56  R_BASE + 20,..DV
e300: 5f 45 52 52 5f 42 41 44 45 52 52 4e 55 4d 09 09  _ERR_BADERRNUM..
e310: 3d 20 44 56 5f 45 52 52 5f 42 41 53 45 20 2b 20  = DV_ERR_BASE + 
e320: 32 31 2c 0a 09 44 56 5f 45 52 52 5f 4e 4f 5f 42  21,..DV_ERR_NO_B
e330: 55 46 46 45 52 53 09 09 3d 20 44 56 5f 45 52 52  UFFERS..= DV_ERR
e340: 5f 42 41 53 45 20 2b 20 32 32 2c 0a 09 44 56 5f  _BASE + 22,..DV_
e350: 45 52 52 5f 4d 45 4d 5f 43 4f 4e 46 4c 49 43 54  ERR_MEM_CONFLICT
e360: 09 09 3d 20 44 56 5f 45 52 52 5f 42 41 53 45 20  ..= DV_ERR_BASE 
e370: 2b 20 32 33 2c 0a 09 44 56 5f 45 52 52 5f 49 4f  + 23,..DV_ERR_IO
e380: 5f 43 4f 4e 46 4c 49 43 54 09 09 3d 20 44 56 5f  _CONFLICT..= DV_
e390: 45 52 52 5f 42 41 53 45 20 2b 20 32 34 2c 0a 09  ERR_BASE + 24,..
e3a0: 44 56 5f 45 52 52 5f 44 4d 41 5f 43 4f 4e 46 4c  DV_ERR_DMA_CONFL
e3b0: 49 43 54 09 09 3d 20 44 56 5f 45 52 52 5f 42 41  ICT..= DV_ERR_BA
e3c0: 53 45 20 2b 20 32 35 2c 0a 09 44 56 5f 45 52 52  SE + 25,..DV_ERR
e3d0: 5f 49 4e 54 5f 43 4f 4e 46 4c 49 43 54 09 09 3d  _INT_CONFLICT..=
e3e0: 20 44 56 5f 45 52 52 5f 42 41 53 45 20 2b 20 32   DV_ERR_BASE + 2
e3f0: 36 2c 0a 09 44 56 5f 45 52 52 5f 50 52 4f 54 45  6,..DV_ERR_PROTE
e400: 43 54 5f 4f 4e 4c 59 09 09 3d 20 44 56 5f 45 52  CT_ONLY..= DV_ER
e410: 52 5f 42 41 53 45 20 2b 20 32 37 2c 0a 09 44 56  R_BASE + 27,..DV
e420: 5f 45 52 52 5f 4c 41 53 54 45 52 52 4f 52 09 09  _ERR_LASTERROR..
e430: 3d 20 44 56 5f 45 52 52 5f 42 41 53 45 20 2b 20  = DV_ERR_BASE + 
e440: 32 37 2c 0a 09 44 56 5f 45 52 52 5f 55 53 45 52  27,..DV_ERR_USER
e450: 5f 4d 53 47 09 09 09 3d 20 44 56 5f 45 52 52 5f  _MSG...= DV_ERR_
e460: 42 41 53 45 20 2b 20 31 30 30 30 2c 0a 7d 0a 0a  BASE + 1000,.}..
e470: 2f 2f 20 43 61 6c 6c 62 61 63 6b 20 4d 65 73 73  // Callback Mess
e480: 61 67 65 73 0a 0a 65 6e 75 6d 20 7b 0a 09 4d 4d  ages..enum {..MM
e490: 5f 44 52 56 4d 5f 4f 50 45 4e 09 3d 20 30 78 33  _DRVM_OPEN.= 0x3
e4a0: 44 30 2c 0a 09 4d 4d 5f 44 52 56 4d 5f 43 4c 4f  D0,..MM_DRVM_CLO
e4b0: 53 45 2c 0a 09 4d 4d 5f 44 52 56 4d 5f 44 41 54  SE,..MM_DRVM_DAT
e4c0: 41 2c 0a 09 4d 4d 5f 44 52 56 4d 5f 45 52 52 4f  A,..MM_DRVM_ERRO
e4d0: 52 2c 0a 7d 0a 0a 65 6e 75 6d 20 7b 0a 09 44 56  R,.}..enum {..DV
e4e0: 5f 56 4d 5f 4f 50 45 4e 09 3d 20 4d 4d 5f 44 52  _VM_OPEN.= MM_DR
e4f0: 56 4d 5f 4f 50 45 4e 2c 0a 09 44 56 5f 56 4d 5f  VM_OPEN,..DV_VM_
e500: 43 4c 4f 53 45 09 3d 20 4d 4d 5f 44 52 56 4d 5f  CLOSE.= MM_DRVM_
e510: 43 4c 4f 53 45 2c 0a 09 44 56 5f 56 4d 5f 44 41  CLOSE,..DV_VM_DA
e520: 54 41 09 3d 20 4d 4d 5f 44 52 56 4d 5f 44 41 54  TA.= MM_DRVM_DAT
e530: 41 2c 0a 09 44 56 5f 56 4d 5f 45 52 52 4f 52 09  A,..DV_VM_ERROR.
e540: 3d 20 4d 4d 5f 44 52 56 4d 5f 45 52 52 4f 52 2c  = MM_DRVM_ERROR,
e550: 0a 7d 0a 0a 2f 2a 2a 0a 20 2a 20 53 74 72 75 63  .}../**. * Struc
e560: 74 75 72 65 73 0a 20 2a 2f 0a 0a 73 74 72 75 63  tures. */..struc
e570: 74 20 56 49 44 45 4f 48 44 52 20 7b 0a 09 4c 50  t VIDEOHDR {..LP
e580: 42 59 54 45 09 09 6c 70 44 61 74 61 3b 0a 09 44  BYTE..lpData;..D
e590: 57 4f 52 44 09 09 64 77 42 75 66 66 65 72 4c 65  WORD..dwBufferLe
e5a0: 6e 67 74 68 3b 0a 09 44 57 4f 52 44 09 09 64 77  ngth;..DWORD..dw
e5b0: 42 79 74 65 73 55 73 65 64 3b 0a 09 44 57 4f 52  BytesUsed;..DWOR
e5c0: 44 09 09 64 77 54 69 6d 65 43 61 70 74 75 72 65  D..dwTimeCapture
e5d0: 64 3b 0a 09 44 57 4f 52 44 5f 50 54 52 09 64 77  d;..DWORD_PTR.dw
e5e0: 55 73 65 72 3b 0a 09 44 57 4f 52 44 09 09 64 77  User;..DWORD..dw
e5f0: 46 6c 61 67 73 3b 0a 20 20 20 20 44 57 4f 52 44  Flags;.    DWORD
e600: 5f 50 54 52 20 20 20 64 77 52 65 73 65 72 76 65  _PTR   dwReserve
e610: 64 5b 34 5d 3b 0a 7d 0a 61 6c 69 61 73 20 56 49  d[4];.}.alias VI
e620: 44 45 4f 48 44 52 2a 20 50 56 49 44 45 4f 48 44  DEOHDR* PVIDEOHD
e630: 52 2c 20 4c 50 56 49 44 45 4f 48 44 52 3b 0a 0a  R, LPVIDEOHDR;..
e640: 65 6e 75 6d 20 7b 0a 09 56 48 44 52 5f 44 4f 4e  enum {..VHDR_DON
e650: 45 09 09 3d 20 30 78 30 30 30 30 30 30 30 31 2c  E..= 0x00000001,
e660: 0a 09 56 48 44 52 5f 50 52 45 50 41 52 45 44 09  ..VHDR_PREPARED.
e670: 3d 20 30 78 30 30 30 30 30 30 30 32 2c 0a 09 56  = 0x00000002,..V
e680: 48 44 52 5f 49 4e 51 55 45 55 45 09 3d 20 30 78  HDR_INQUEUE.= 0x
e690: 30 30 30 30 30 30 30 34 2c 0a 09 56 48 44 52 5f  00000004,..VHDR_
e6a0: 4b 45 59 46 52 41 4d 45 09 3d 20 30 78 30 30 30  KEYFRAME.= 0x000
e6b0: 30 30 30 30 38 2c 0a 09 56 48 44 52 5f 56 41 4c  00008,..VHDR_VAL
e6c0: 49 44 09 09 3d 20 30 78 30 30 30 30 30 30 30 46  ID..= 0x0000000F
e6d0: 2c 0a 7d 0a 0a 73 74 72 75 63 74 20 43 48 41 4e  ,.}..struct CHAN
e6e0: 4e 45 4c 5f 43 41 50 53 20 7b 0a 09 44 57 4f 52  NEL_CAPS {..DWOR
e6f0: 44 09 64 77 46 6c 61 67 73 3b 0a 09 44 57 4f 52  D.dwFlags;..DWOR
e700: 44 09 64 77 53 72 63 52 65 63 74 58 4d 6f 64 3b  D.dwSrcRectXMod;
e710: 0a 09 44 57 4f 52 44 09 64 77 53 72 63 52 65 63  ..DWORD.dwSrcRec
e720: 74 59 4d 6f 64 3b 0a 09 44 57 4f 52 44 09 64 77  tYMod;..DWORD.dw
e730: 53 72 63 52 65 63 74 57 69 64 74 68 4d 6f 64 3b  SrcRectWidthMod;
e740: 0a 09 44 57 4f 52 44 09 64 77 53 72 63 52 65 63  ..DWORD.dwSrcRec
e750: 74 48 65 69 67 68 74 4d 6f 64 3b 0a 09 44 57 4f  tHeightMod;..DWO
e760: 52 44 09 64 77 44 73 74 52 65 63 74 58 4d 6f 64  RD.dwDstRectXMod
e770: 3b 0a 09 44 57 4f 52 44 09 64 77 44 73 74 52 65  ;..DWORD.dwDstRe
e780: 63 74 59 4d 6f 64 3b 0a 09 44 57 4f 52 44 09 64  ctYMod;..DWORD.d
e790: 77 44 73 74 52 65 63 74 57 69 64 74 68 4d 6f 64  wDstRectWidthMod
e7a0: 3b 0a 09 44 57 4f 52 44 09 64 77 44 73 74 52 65  ;..DWORD.dwDstRe
e7b0: 63 74 48 65 69 67 68 74 4d 6f 64 3b 0a 7d 0a 61  ctHeightMod;.}.a
e7c0: 6c 69 61 73 20 43 48 41 4e 4e 45 4c 5f 43 41 50  lias CHANNEL_CAP
e7d0: 53 2a 20 50 43 48 41 4e 4e 45 4c 5f 43 41 50 53  S* PCHANNEL_CAPS
e7e0: 2c 20 4c 50 43 48 41 4e 4e 45 4c 5f 43 41 50 53  , LPCHANNEL_CAPS
e7f0: 3b 0a 0a 65 6e 75 6d 20 7b 0a 09 56 43 41 50 53  ;..enum {..VCAPS
e800: 5f 4f 56 45 52 4c 41 59 09 09 3d 20 30 78 30 30  _OVERLAY..= 0x00
e810: 30 30 30 30 30 31 2c 0a 09 56 43 41 50 53 5f 53  000001,..VCAPS_S
e820: 52 43 5f 43 41 4e 5f 43 4c 49 50 09 3d 20 30 78  RC_CAN_CLIP.= 0x
e830: 30 30 30 30 30 30 30 32 2c 0a 09 56 43 41 50 53  00000002,..VCAPS
e840: 5f 44 53 54 5f 43 41 4e 5f 43 4c 49 50 09 3d 20  _DST_CAN_CLIP.= 
e850: 30 78 30 30 30 30 30 30 30 34 2c 0a 09 56 43 41  0x00000004,..VCA
e860: 50 53 5f 43 41 4e 5f 53 43 41 4c 45 09 09 3d 20  PS_CAN_SCALE..= 
e870: 30 78 30 30 30 30 30 30 30 38 2c 0a 7d 0a 0a 2f  0x00000008,.}../
e880: 2a 2a 0a 20 2a 20 41 50 49 20 46 6c 61 67 73 0a  **. * API Flags.
e890: 20 2a 2f 0a 0a 65 6e 75 6d 20 7b 0a 09 56 49 44   */..enum {..VID
e8a0: 45 4f 5f 45 58 54 45 52 4e 41 4c 49 4e 09 09 09  EO_EXTERNALIN...
e8b0: 3d 20 30 78 30 30 30 31 2c 0a 09 56 49 44 45 4f  = 0x0001,..VIDEO
e8c0: 5f 45 58 54 45 52 4e 41 4c 4f 55 54 09 09 09 3d  _EXTERNALOUT...=
e8d0: 20 30 78 30 30 30 32 2c 0a 09 56 49 44 45 4f 5f   0x0002,..VIDEO_
e8e0: 49 4e 09 09 09 09 09 3d 20 30 78 30 30 30 34 2c  IN.....= 0x0004,
e8f0: 0a 09 56 49 44 45 4f 5f 4f 55 54 09 09 09 09 09  ..VIDEO_OUT.....
e900: 3d 20 30 78 30 30 30 38 2c 0a 09 56 49 44 45 4f  = 0x0008,..VIDEO
e910: 5f 44 4c 47 5f 51 55 45 52 59 09 09 09 09 3d 20  _DLG_QUERY....= 
e920: 30 78 30 30 31 30 2c 0a 7d 0a 0a 65 6e 75 6d 20  0x0010,.}..enum 
e930: 7b 0a 09 56 49 44 45 4f 5f 43 4f 4e 46 49 47 55  {..VIDEO_CONFIGU
e940: 52 45 5f 51 55 45 52 59 53 49 5a 45 09 3d 20 30  RE_QUERYSIZE.= 0
e950: 78 30 30 30 31 2c 0a 09 56 49 44 45 4f 5f 43 4f  x0001,..VIDEO_CO
e960: 4e 46 49 47 55 52 45 5f 43 55 52 52 45 4e 54 09  NFIGURE_CURRENT.
e970: 09 3d 20 30 78 30 30 31 30 2c 0a 09 56 49 44 45  .= 0x0010,..VIDE
e980: 4f 5f 43 4f 4e 46 49 47 55 52 45 5f 4e 4f 4d 49  O_CONFIGURE_NOMI
e990: 4e 41 4c 09 09 3d 20 30 78 30 30 32 30 2c 0a 09  NAL..= 0x0020,..
e9a0: 56 49 44 45 4f 5f 43 4f 4e 46 49 47 55 52 45 5f  VIDEO_CONFIGURE_
e9b0: 4d 49 4e 09 09 09 3d 20 30 78 30 30 34 30 2c 0a  MIN...= 0x0040,.
e9c0: 09 56 49 44 45 4f 5f 43 4f 4e 46 49 47 55 52 45  .VIDEO_CONFIGURE
e9d0: 5f 4d 41 58 09 09 09 3d 20 30 78 30 30 38 30 2c  _MAX...= 0x0080,
e9e0: 0a 09 56 49 44 45 4f 5f 43 4f 4e 46 49 47 55 52  ..VIDEO_CONFIGUR
e9f0: 45 5f 53 45 54 09 09 09 3d 20 30 78 31 30 30 30  E_SET...= 0x1000
ea00: 2c 0a 09 56 49 44 45 4f 5f 43 4f 4e 46 49 47 55  ,..VIDEO_CONFIGU
ea10: 52 45 5f 47 45 54 09 09 09 3d 20 30 78 32 30 30  RE_GET...= 0x200
ea20: 30 2c 0a 09 56 49 44 45 4f 5f 43 4f 4e 46 49 47  0,..VIDEO_CONFIG
ea30: 55 52 45 5f 51 55 45 52 59 09 09 3d 20 30 78 38  URE_QUERY..= 0x8
ea40: 30 30 30 2c 0a 7d 0a 0a 2f 2a 2a 0a 20 2a 20 43  000,.}../**. * C
ea50: 4f 4e 46 49 47 55 52 45 20 4d 45 53 53 41 47 45  ONFIGURE MESSAGE
ea60: 53 0a 20 2a 2f 0a 0a 65 6e 75 6d 20 7b 0a 09 44  S. */..enum {..D
ea70: 56 4d 5f 55 53 45 52 09 09 09 3d 20 30 78 34 30  VM_USER...= 0x40
ea80: 30 30 2c 0a 09 44 56 4d 5f 43 4f 4e 46 49 47 55  00,..DVM_CONFIGU
ea90: 52 45 5f 53 54 41 52 54 09 3d 20 30 78 31 30 30  RE_START.= 0x100
eaa0: 30 2c 0a 09 44 56 4d 5f 43 4f 4e 46 49 47 55 52  0,..DVM_CONFIGUR
eab0: 45 5f 45 4e 44 09 3d 20 30 78 31 46 46 46 2c 0a  E_END.= 0x1FFF,.
eac0: 09 44 56 4d 5f 50 41 4c 45 54 54 45 09 09 09 3d  .DVM_PALETTE...=
ead0: 20 44 56 4d 5f 43 4f 4e 46 49 47 55 52 45 5f 53   DVM_CONFIGURE_S
eae0: 54 41 52 54 20 2b 20 31 2c 0a 09 44 56 4d 5f 46  TART + 1,..DVM_F
eaf0: 4f 52 4d 41 54 09 09 09 3d 20 44 56 4d 5f 43 4f  ORMAT...= DVM_CO
eb00: 4e 46 49 47 55 52 45 5f 53 54 41 52 54 20 2b 20  NFIGURE_START + 
eb10: 32 2c 0a 09 44 56 4d 5f 50 41 4c 45 54 54 45 52  2,..DVM_PALETTER
eb20: 47 42 35 35 35 09 3d 20 44 56 4d 5f 43 4f 4e 46  GB555.= DVM_CONF
eb30: 49 47 55 52 45 5f 53 54 41 52 54 20 2b 20 33 2c  IGURE_START + 3,
eb40: 0a 09 44 56 4d 5f 53 52 43 5f 52 45 43 54 09 09  ..DVM_SRC_RECT..
eb50: 3d 20 44 56 4d 5f 43 4f 4e 46 49 47 55 52 45 5f  = DVM_CONFIGURE_
eb60: 53 54 41 52 54 20 2b 20 34 2c 0a 09 44 56 4d 5f  START + 4,..DVM_
eb70: 44 53 54 5f 52 45 43 54 09 09 3d 20 44 56 4d 5f  DST_RECT..= DVM_
eb80: 43 4f 4e 46 49 47 55 52 45 5f 53 54 41 52 54 20  CONFIGURE_START 
eb90: 2b 20 35 2c 0a 7d 0a 0a 2f 2a 2a 0a 20 2a 20 41  + 5,.}../**. * A
eba0: 56 49 43 61 70 20 77 69 6e 64 6f 77 20 63 6c 61  VICap window cla
ebb0: 73 73 0a 20 2a 2f 0a 0a 4c 52 45 53 55 4c 54 20  ss. */..LRESULT 
ebc0: 41 56 49 43 61 70 53 4d 28 48 57 4e 44 20 68 57  AVICapSM(HWND hW
ebd0: 6e 64 2c 20 55 49 4e 54 20 6d 73 67 2c 20 57 50  nd, UINT msg, WP
ebe0: 41 52 41 4d 20 77 50 61 72 61 6d 2c 20 4c 50 41  ARAM wParam, LPA
ebf0: 52 41 4d 20 6c 50 61 72 61 6d 29 20 7b 0a 09 69  RAM lParam) {..i
ec00: 66 20 28 49 73 57 69 6e 64 6f 77 28 68 57 6e 64  f (IsWindow(hWnd
ec10: 29 29 20 7b 0a 09 09 72 65 74 75 72 6e 20 53 65  )) {...return Se
ec20: 6e 64 4d 65 73 73 61 67 65 28 68 57 6e 64 2c 20  ndMessage(hWnd, 
ec30: 6d 73 67 2c 20 77 50 61 72 61 6d 2c 20 6c 50 61  msg, wParam, lPa
ec40: 72 61 6d 29 3b 0a 09 7d 0a 09 72 65 74 75 72 6e  ram);..}..return
ec50: 20 30 3b 0a 7d 0a 0a 65 6e 75 6d 20 7b 0a 09 57   0;.}..enum {..W
ec60: 4d 5f 43 41 50 5f 53 54 41 52 54 09 09 09 09 3d  M_CAP_START....=
ec70: 20 57 4d 5f 55 53 45 52 2c 0a 09 57 4d 5f 43 41   WM_USER,..WM_CA
ec80: 50 5f 55 4e 49 43 4f 44 45 5f 53 54 41 52 54 09  P_UNICODE_START.
ec90: 09 3d 20 57 4d 5f 55 53 45 52 20 2b 20 31 30 30  .= WM_USER + 100
eca0: 2c 0a 0a 09 57 4d 5f 43 41 50 5f 47 45 54 5f 43  ,...WM_CAP_GET_C
ecb0: 41 50 53 54 52 45 41 4d 50 54 52 09 09 3d 20 57  APSTREAMPTR..= W
ecc0: 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 31 2c  M_CAP_START + 1,
ecd0: 0a 09 57 4d 5f 43 41 50 5f 53 45 54 5f 43 41 4c  ..WM_CAP_SET_CAL
ece0: 4c 42 41 43 4b 5f 45 52 52 4f 52 41 09 3d 20 57  LBACK_ERRORA.= W
ecf0: 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 32 2c  M_CAP_START + 2,
ed00: 0a 09 57 4d 5f 43 41 50 5f 53 45 54 5f 43 41 4c  ..WM_CAP_SET_CAL
ed10: 4c 42 41 43 4b 5f 53 54 41 54 55 53 41 09 3d 20  LBACK_STATUSA.= 
ed20: 57 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 33  WM_CAP_START + 3
ed30: 2c 0a 0a 09 57 4d 5f 43 41 50 5f 53 45 54 5f 43  ,...WM_CAP_SET_C
ed40: 41 4c 4c 42 41 43 4b 5f 45 52 52 4f 52 57 09 3d  ALLBACK_ERRORW.=
ed50: 20 57 4d 5f 43 41 50 5f 55 4e 49 43 4f 44 45 5f   WM_CAP_UNICODE_
ed60: 53 54 41 52 54 20 2b 20 32 2c 0a 09 57 4d 5f 43  START + 2,..WM_C
ed70: 41 50 5f 53 45 54 5f 43 41 4c 4c 42 41 43 4b 5f  AP_SET_CALLBACK_
ed80: 53 54 41 54 55 53 57 09 3d 20 57 4d 5f 43 41 50  STATUSW.= WM_CAP
ed90: 5f 55 4e 49 43 4f 44 45 5f 53 54 41 52 54 20 2b  _UNICODE_START +
eda0: 20 33 2c 0a 7d 0a 0a 76 65 72 73 69 6f 6e 28 55   3,.}..version(U
edb0: 6e 69 63 6f 64 65 29 20 7b 0a 09 61 6c 69 61 73  nicode) {..alias
edc0: 20 57 4d 5f 43 41 50 5f 53 45 54 5f 43 41 4c 4c   WM_CAP_SET_CALL
edd0: 42 41 43 4b 5f 45 52 52 4f 52 57 09 57 4d 5f 43  BACK_ERRORW.WM_C
ede0: 41 50 5f 53 45 54 5f 43 41 4c 4c 42 41 43 4b 5f  AP_SET_CALLBACK_
edf0: 45 52 52 4f 52 3b 0a 09 61 6c 69 61 73 20 57 4d  ERROR;..alias WM
ee00: 5f 43 41 50 5f 53 45 54 5f 43 41 4c 4c 42 41 43  _CAP_SET_CALLBAC
ee10: 4b 5f 53 54 41 54 55 53 57 09 57 4d 5f 43 41 50  K_STATUSW.WM_CAP
ee20: 5f 53 45 54 5f 43 41 4c 4c 42 41 43 4b 5f 53 54  _SET_CALLBACK_ST
ee30: 41 54 55 53 3b 0a 7d 20 65 6c 73 65 20 7b 20 2f  ATUS;.} else { /
ee40: 2f 20 55 6e 69 63 6f 64 65 0a 09 61 6c 69 61 73  / Unicode..alias
ee50: 20 57 4d 5f 43 41 50 5f 53 45 54 5f 43 41 4c 4c   WM_CAP_SET_CALL
ee60: 42 41 43 4b 5f 45 52 52 4f 52 41 09 57 4d 5f 43  BACK_ERRORA.WM_C
ee70: 41 50 5f 53 45 54 5f 43 41 4c 4c 42 41 43 4b 5f  AP_SET_CALLBACK_
ee80: 45 52 52 4f 52 3b 0a 09 61 6c 69 61 73 20 57 4d  ERROR;..alias WM
ee90: 5f 43 41 50 5f 53 45 54 5f 43 41 4c 4c 42 41 43  _CAP_SET_CALLBAC
eea0: 4b 5f 53 54 41 54 55 53 41 09 57 4d 5f 43 41 50  K_STATUSA.WM_CAP
eeb0: 5f 53 45 54 5f 43 41 4c 4c 42 41 43 4b 5f 53 54  _SET_CALLBACK_ST
eec0: 41 54 55 53 3b 0a 7d 0a 0a 65 6e 75 6d 20 7b 0a  ATUS;.}..enum {.
eed0: 09 57 4d 5f 43 41 50 5f 53 45 54 5f 43 41 4c 4c  .WM_CAP_SET_CALL
eee0: 42 41 43 4b 5f 59 49 45 4c 44 09 09 3d 20 57 4d  BACK_YIELD..= WM
eef0: 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 34 2c 0a  _CAP_START + 4,.
ef00: 09 57 4d 5f 43 41 50 5f 53 45 54 5f 43 41 4c 4c  .WM_CAP_SET_CALL
ef10: 42 41 43 4b 5f 46 52 41 4d 45 09 09 3d 20 57 4d  BACK_FRAME..= WM
ef20: 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 35 2c 0a  _CAP_START + 5,.
ef30: 09 57 4d 5f 43 41 50 5f 53 45 54 5f 43 41 4c 4c  .WM_CAP_SET_CALL
ef40: 42 41 43 4b 5f 56 49 44 45 4f 53 54 52 45 41 4d  BACK_VIDEOSTREAM
ef50: 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20  .= WM_CAP_START 
ef60: 2b 20 36 2c 0a 09 57 4d 5f 43 41 50 5f 53 45 54  + 6,..WM_CAP_SET
ef70: 5f 43 41 4c 4c 42 41 43 4b 5f 57 41 56 45 53 54  _CALLBACK_WAVEST
ef80: 52 45 41 4d 09 3d 20 57 4d 5f 43 41 50 5f 53 54  REAM.= WM_CAP_ST
ef90: 41 52 54 20 2b 20 37 2c 0a 09 57 4d 5f 43 41 50  ART + 7,..WM_CAP
efa0: 5f 47 45 54 5f 55 53 45 52 5f 44 41 54 41 09 09  _GET_USER_DATA..
efb0: 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20  .= WM_CAP_START 
efc0: 2b 20 38 2c 0a 09 57 4d 5f 43 41 50 5f 53 45 54  + 8,..WM_CAP_SET
efd0: 5f 55 53 45 52 5f 44 41 54 41 09 09 09 3d 20 57  _USER_DATA...= W
efe0: 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 39 2c  M_CAP_START + 9,
eff0: 0a 09 57 4d 5f 43 41 50 5f 44 52 49 56 45 52 5f  ..WM_CAP_DRIVER_
f000: 43 4f 4e 4e 45 43 54 09 09 09 3d 20 57 4d 5f 43  CONNECT...= WM_C
f010: 41 50 5f 53 54 41 52 54 20 2b 20 31 30 2c 0a 09  AP_START + 10,..
f020: 57 4d 5f 43 41 50 5f 44 52 49 56 45 52 5f 44 49  WM_CAP_DRIVER_DI
f030: 53 43 4f 4e 4e 45 43 54 09 09 3d 20 57 4d 5f 43  SCONNECT..= WM_C
f040: 41 50 5f 53 54 41 52 54 20 2b 20 31 31 2c 0a 09  AP_START + 11,..
f050: 57 4d 5f 43 41 50 5f 44 52 49 56 45 52 5f 47 45  WM_CAP_DRIVER_GE
f060: 54 5f 4e 41 4d 45 41 09 09 09 3d 20 57 4d 5f 43  T_NAMEA...= WM_C
f070: 41 50 5f 53 54 41 52 54 20 2b 20 31 32 2c 0a 09  AP_START + 12,..
f080: 57 4d 5f 43 41 50 5f 44 52 49 56 45 52 5f 47 45  WM_CAP_DRIVER_GE
f090: 54 5f 56 45 52 53 49 4f 4e 41 09 09 3d 20 57 4d  T_VERSIONA..= WM
f0a0: 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 31 33 2c  _CAP_START + 13,
f0b0: 0a 0a 09 57 4d 5f 43 41 50 5f 44 52 49 56 45 52  ...WM_CAP_DRIVER
f0c0: 5f 47 45 54 5f 4e 41 4d 45 57 09 09 09 3d 20 57  _GET_NAMEW...= W
f0d0: 4d 5f 43 41 50 5f 55 4e 49 43 4f 44 45 5f 53 54  M_CAP_UNICODE_ST
f0e0: 41 52 54 20 2b 20 31 32 2c 0a 09 57 4d 5f 43 41  ART + 12,..WM_CA
f0f0: 50 5f 44 52 49 56 45 52 5f 47 45 54 5f 56 45 52  P_DRIVER_GET_VER
f100: 53 49 4f 4e 57 09 09 3d 20 57 4d 5f 43 41 50 5f  SIONW..= WM_CAP_
f110: 55 4e 49 43 4f 44 45 5f 53 54 41 52 54 20 2b 20  UNICODE_START + 
f120: 31 33 2c 0a 7d 0a 0a 76 65 72 73 69 6f 6e 28 55  13,.}..version(U
f130: 6e 69 63 6f 64 65 29 20 7b 0a 09 61 6c 69 61 73  nicode) {..alias
f140: 20 57 4d 5f 43 41 50 5f 44 52 49 56 45 52 5f 47   WM_CAP_DRIVER_G
f150: 45 54 5f 4e 41 4d 45 57 09 09 57 4d 5f 43 41 50  ET_NAMEW..WM_CAP
f160: 5f 44 52 49 56 45 52 5f 47 45 54 5f 4e 41 4d 45  _DRIVER_GET_NAME
f170: 3b 0a 09 61 6c 69 61 73 20 57 4d 5f 43 41 50 5f  ;..alias WM_CAP_
f180: 44 52 49 56 45 52 5f 47 45 54 5f 56 45 52 53 49  DRIVER_GET_VERSI
f190: 4f 4e 57 09 57 4d 5f 43 41 50 5f 44 52 49 56 45  ONW.WM_CAP_DRIVE
f1a0: 52 5f 47 45 54 5f 56 45 52 53 49 4f 4e 3b 0a 7d  R_GET_VERSION;.}
f1b0: 20 65 6c 73 65 20 7b 20 2f 2f 20 55 6e 69 63 6f   else { // Unico
f1c0: 64 65 0a 09 61 6c 69 61 73 20 57 4d 5f 43 41 50  de..alias WM_CAP
f1d0: 5f 44 52 49 56 45 52 5f 47 45 54 5f 4e 41 4d 45  _DRIVER_GET_NAME
f1e0: 41 09 09 57 4d 5f 43 41 50 5f 44 52 49 56 45 52  A..WM_CAP_DRIVER
f1f0: 5f 47 45 54 5f 4e 41 4d 45 3b 0a 09 61 6c 69 61  _GET_NAME;..alia
f200: 73 20 57 4d 5f 43 41 50 5f 44 52 49 56 45 52 5f  s WM_CAP_DRIVER_
f210: 47 45 54 5f 56 45 52 53 49 4f 4e 41 09 57 4d 5f  GET_VERSIONA.WM_
f220: 43 41 50 5f 44 52 49 56 45 52 5f 47 45 54 5f 56  CAP_DRIVER_GET_V
f230: 45 52 53 49 4f 4e 3b 0a 7d 0a 0a 65 6e 75 6d 20  ERSION;.}..enum 
f240: 7b 0a 09 57 4d 5f 43 41 50 5f 44 52 49 56 45 52  {..WM_CAP_DRIVER
f250: 5f 47 45 54 5f 43 41 50 53 09 09 09 3d 20 57 4d  _GET_CAPS...= WM
f260: 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 31 34 2c  _CAP_START + 14,
f270: 0a 09 57 4d 5f 43 41 50 5f 46 49 4c 45 5f 53 45  ..WM_CAP_FILE_SE
f280: 54 5f 43 41 50 54 55 52 45 5f 46 49 4c 45 41 09  T_CAPTURE_FILEA.
f290: 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b  = WM_CAP_START +
f2a0: 20 32 30 2c 0a 09 57 4d 5f 43 41 50 5f 46 49 4c   20,..WM_CAP_FIL
f2b0: 45 5f 47 45 54 5f 43 41 50 54 55 52 45 5f 46 49  E_GET_CAPTURE_FI
f2c0: 4c 45 41 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41  LEA.= WM_CAP_STA
f2d0: 52 54 20 2b 20 32 31 2c 0a 09 57 4d 5f 43 41 50  RT + 21,..WM_CAP
f2e0: 5f 46 49 4c 45 5f 53 41 56 45 41 53 41 09 09 09  _FILE_SAVEASA...
f2f0: 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20  .= WM_CAP_START 
f300: 2b 20 32 33 2c 0a 09 57 4d 5f 43 41 50 5f 46 49  + 23,..WM_CAP_FI
f310: 4c 45 5f 53 41 56 45 44 49 42 41 09 09 09 3d 20  LE_SAVEDIBA...= 
f320: 57 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 32  WM_CAP_START + 2
f330: 35 2c 0a 0a 09 57 4d 5f 43 41 50 5f 46 49 4c 45  5,...WM_CAP_FILE
f340: 5f 53 45 54 5f 43 41 50 54 55 52 45 5f 46 49 4c  _SET_CAPTURE_FIL
f350: 45 57 09 3d 20 57 4d 5f 43 41 50 5f 55 4e 49 43  EW.= WM_CAP_UNIC
f360: 4f 44 45 5f 53 54 41 52 54 20 2b 20 32 30 2c 0a  ODE_START + 20,.
f370: 09 57 4d 5f 43 41 50 5f 46 49 4c 45 5f 47 45 54  .WM_CAP_FILE_GET
f380: 5f 43 41 50 54 55 52 45 5f 46 49 4c 45 57 09 3d  _CAPTURE_FILEW.=
f390: 20 57 4d 5f 43 41 50 5f 55 4e 49 43 4f 44 45 5f   WM_CAP_UNICODE_
f3a0: 53 54 41 52 54 20 2b 20 32 31 2c 0a 09 57 4d 5f  START + 21,..WM_
f3b0: 43 41 50 5f 46 49 4c 45 5f 53 41 56 45 41 53 57  CAP_FILE_SAVEASW
f3c0: 09 09 09 09 3d 20 57 4d 5f 43 41 50 5f 55 4e 49  ....= WM_CAP_UNI
f3d0: 43 4f 44 45 5f 53 54 41 52 54 20 2b 20 32 33 2c  CODE_START + 23,
f3e0: 0a 09 57 4d 5f 43 41 50 5f 46 49 4c 45 5f 53 41  ..WM_CAP_FILE_SA
f3f0: 56 45 44 49 42 57 09 09 09 3d 20 57 4d 5f 43 41  VEDIBW...= WM_CA
f400: 50 5f 55 4e 49 43 4f 44 45 5f 53 54 41 52 54 20  P_UNICODE_START 
f410: 2b 20 32 35 2c 0a 7d 0a 0a 76 65 72 73 69 6f 6e  + 25,.}..version
f420: 28 55 6e 69 63 6f 64 65 29 20 7b 0a 09 61 6c 69  (Unicode) {..ali
f430: 61 73 20 57 4d 5f 43 41 50 5f 46 49 4c 45 5f 53  as WM_CAP_FILE_S
f440: 45 54 5f 43 41 50 54 55 52 45 5f 46 49 4c 45 57  ET_CAPTURE_FILEW
f450: 09 57 4d 5f 43 41 50 5f 46 49 4c 45 5f 53 45 54  .WM_CAP_FILE_SET
f460: 5f 43 41 50 54 55 52 45 5f 46 49 4c 45 3b 0a 09  _CAPTURE_FILE;..
f470: 61 6c 69 61 73 20 57 4d 5f 43 41 50 5f 46 49 4c  alias WM_CAP_FIL
f480: 45 5f 47 45 54 5f 43 41 50 54 55 52 45 5f 46 49  E_GET_CAPTURE_FI
f490: 4c 45 57 09 57 4d 5f 43 41 50 5f 46 49 4c 45 5f  LEW.WM_CAP_FILE_
f4a0: 47 45 54 5f 43 41 50 54 55 52 45 5f 46 49 4c 45  GET_CAPTURE_FILE
f4b0: 3b 0a 09 61 6c 69 61 73 20 57 4d 5f 43 41 50 5f  ;..alias WM_CAP_
f4c0: 46 49 4c 45 5f 53 41 56 45 41 53 57 09 09 09 57  FILE_SAVEASW...W
f4d0: 4d 5f 43 41 50 5f 46 49 4c 45 5f 53 41 56 45 41  M_CAP_FILE_SAVEA
f4e0: 53 3b 0a 09 61 6c 69 61 73 20 57 4d 5f 43 41 50  S;..alias WM_CAP
f4f0: 5f 46 49 4c 45 5f 53 41 56 45 44 49 42 57 09 09  _FILE_SAVEDIBW..
f500: 09 57 4d 5f 43 41 50 5f 46 49 4c 45 5f 53 41 56  .WM_CAP_FILE_SAV
f510: 45 44 49 42 3b 0a 7d 20 65 6c 73 65 20 7b 20 2f  EDIB;.} else { /
f520: 2f 20 55 6e 69 63 6f 64 65 0a 09 61 6c 69 61 73  / Unicode..alias
f530: 20 57 4d 5f 43 41 50 5f 46 49 4c 45 5f 53 45 54   WM_CAP_FILE_SET
f540: 5f 43 41 50 54 55 52 45 5f 46 49 4c 45 41 09 57  _CAPTURE_FILEA.W
f550: 4d 5f 43 41 50 5f 46 49 4c 45 5f 53 45 54 5f 43  M_CAP_FILE_SET_C
f560: 41 50 54 55 52 45 5f 46 49 4c 45 3b 0a 09 61 6c  APTURE_FILE;..al
f570: 69 61 73 20 57 4d 5f 43 41 50 5f 46 49 4c 45 5f  ias WM_CAP_FILE_
f580: 47 45 54 5f 43 41 50 54 55 52 45 5f 46 49 4c 45  GET_CAPTURE_FILE
f590: 41 09 57 4d 5f 43 41 50 5f 46 49 4c 45 5f 47 45  A.WM_CAP_FILE_GE
f5a0: 54 5f 43 41 50 54 55 52 45 5f 46 49 4c 45 3b 0a  T_CAPTURE_FILE;.
f5b0: 09 61 6c 69 61 73 20 57 4d 5f 43 41 50 5f 46 49  .alias WM_CAP_FI
f5c0: 4c 45 5f 53 41 56 45 41 53 41 09 09 09 57 4d 5f  LE_SAVEASA...WM_
f5d0: 43 41 50 5f 46 49 4c 45 5f 53 41 56 45 41 53 3b  CAP_FILE_SAVEAS;
f5e0: 0a 09 61 6c 69 61 73 20 57 4d 5f 43 41 50 5f 46  ..alias WM_CAP_F
f5f0: 49 4c 45 5f 53 41 56 45 44 49 42 41 09 09 09 57  ILE_SAVEDIBA...W
f600: 4d 5f 43 41 50 5f 46 49 4c 45 5f 53 41 56 45 44  M_CAP_FILE_SAVED
f610: 49 42 3b 0a 7d 0a 0a 65 6e 75 6d 20 7b 0a 09 57  IB;.}..enum {..W
f620: 4d 5f 43 41 50 5f 46 49 4c 45 5f 41 4c 4c 4f 43  M_CAP_FILE_ALLOC
f630: 41 54 45 09 09 3d 20 57 4d 5f 43 41 50 5f 53 54  ATE..= WM_CAP_ST
f640: 41 52 54 20 2b 20 32 32 2c 0a 09 57 4d 5f 43 41  ART + 22,..WM_CA
f650: 50 5f 46 49 4c 45 5f 53 45 54 5f 49 4e 46 4f 43  P_FILE_SET_INFOC
f660: 48 55 4e 4b 09 3d 20 57 4d 5f 43 41 50 5f 53 54  HUNK.= WM_CAP_ST
f670: 41 52 54 20 2b 20 32 34 2c 0a 09 57 4d 5f 43 41  ART + 24,..WM_CA
f680: 50 5f 45 44 49 54 5f 43 4f 50 59 09 09 09 3d 20  P_EDIT_COPY...= 
f690: 57 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 33  WM_CAP_START + 3
f6a0: 30 2c 0a 09 57 4d 5f 43 41 50 5f 53 45 54 5f 41  0,..WM_CAP_SET_A
f6b0: 55 44 49 4f 46 4f 52 4d 41 54 09 09 3d 20 57 4d  UDIOFORMAT..= WM
f6c0: 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 33 35 2c  _CAP_START + 35,
f6d0: 0a 09 57 4d 5f 43 41 50 5f 47 45 54 5f 41 55 44  ..WM_CAP_GET_AUD
f6e0: 49 4f 46 4f 52 4d 41 54 09 09 3d 20 57 4d 5f 43  IOFORMAT..= WM_C
f6f0: 41 50 5f 53 54 41 52 54 20 2b 20 33 36 2c 0a 09  AP_START + 36,..
f700: 57 4d 5f 43 41 50 5f 44 4c 47 5f 56 49 44 45 4f  WM_CAP_DLG_VIDEO
f710: 46 4f 52 4d 41 54 09 09 3d 20 57 4d 5f 43 41 50  FORMAT..= WM_CAP
f720: 5f 53 54 41 52 54 20 2b 20 34 31 2c 0a 09 57 4d  _START + 41,..WM
f730: 5f 43 41 50 5f 44 4c 47 5f 56 49 44 45 4f 53 4f  _CAP_DLG_VIDEOSO
f740: 55 52 43 45 09 09 3d 20 57 4d 5f 43 41 50 5f 53  URCE..= WM_CAP_S
f750: 54 41 52 54 20 2b 20 34 32 2c 0a 09 57 4d 5f 43  TART + 42,..WM_C
f760: 41 50 5f 44 4c 47 5f 56 49 44 45 4f 44 49 53 50  AP_DLG_VIDEODISP
f770: 4c 41 59 09 09 3d 20 57 4d 5f 43 41 50 5f 53 54  LAY..= WM_CAP_ST
f780: 41 52 54 20 2b 20 34 33 2c 0a 09 57 4d 5f 43 41  ART + 43,..WM_CA
f790: 50 5f 47 45 54 5f 56 49 44 45 4f 46 4f 52 4d 41  P_GET_VIDEOFORMA
f7a0: 54 09 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52  T..= WM_CAP_STAR
f7b0: 54 20 2b 20 34 34 2c 0a 09 57 4d 5f 43 41 50 5f  T + 44,..WM_CAP_
f7c0: 53 45 54 5f 56 49 44 45 4f 46 4f 52 4d 41 54 09  SET_VIDEOFORMAT.
f7d0: 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20  .= WM_CAP_START 
f7e0: 2b 20 34 35 2c 0a 09 57 4d 5f 43 41 50 5f 44 4c  + 45,..WM_CAP_DL
f7f0: 47 5f 56 49 44 45 4f 43 4f 4d 50 52 45 53 53 49  G_VIDEOCOMPRESSI
f800: 4f 4e 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52  ON.= WM_CAP_STAR
f810: 54 20 2b 20 34 36 2c 0a 09 57 4d 5f 43 41 50 5f  T + 46,..WM_CAP_
f820: 53 45 54 5f 50 52 45 56 49 45 57 09 09 09 3d 20  SET_PREVIEW...= 
f830: 57 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 35  WM_CAP_START + 5
f840: 30 2c 0a 09 57 4d 5f 43 41 50 5f 53 45 54 5f 4f  0,..WM_CAP_SET_O
f850: 56 45 52 4c 41 59 09 09 09 3d 20 57 4d 5f 43 41  VERLAY...= WM_CA
f860: 50 5f 53 54 41 52 54 20 2b 20 35 31 2c 0a 09 57  P_START + 51,..W
f870: 4d 5f 43 41 50 5f 53 45 54 5f 50 52 45 56 49 45  M_CAP_SET_PREVIE
f880: 57 52 41 54 45 09 09 3d 20 57 4d 5f 43 41 50 5f  WRATE..= WM_CAP_
f890: 53 54 41 52 54 20 2b 20 35 32 2c 0a 09 57 4d 5f  START + 52,..WM_
f8a0: 43 41 50 5f 53 45 54 5f 53 43 41 4c 45 09 09 09  CAP_SET_SCALE...
f8b0: 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b  = WM_CAP_START +
f8c0: 20 35 33 2c 0a 09 57 4d 5f 43 41 50 5f 47 45 54   53,..WM_CAP_GET
f8d0: 5f 53 54 41 54 55 53 09 09 09 3d 20 57 4d 5f 43  _STATUS...= WM_C
f8e0: 41 50 5f 53 54 41 52 54 20 2b 20 35 34 2c 0a 09  AP_START + 54,..
f8f0: 57 4d 5f 43 41 50 5f 53 45 54 5f 53 43 52 4f 4c  WM_CAP_SET_SCROL
f900: 4c 09 09 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41  L...= WM_CAP_STA
f910: 52 54 20 2b 20 35 35 2c 0a 09 57 4d 5f 43 41 50  RT + 55,..WM_CAP
f920: 5f 47 52 41 42 5f 46 52 41 4d 45 09 09 09 3d 20  _GRAB_FRAME...= 
f930: 57 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 36  WM_CAP_START + 6
f940: 30 2c 0a 09 57 4d 5f 43 41 50 5f 47 52 41 42 5f  0,..WM_CAP_GRAB_
f950: 46 52 41 4d 45 5f 4e 4f 53 54 4f 50 09 3d 20 57  FRAME_NOSTOP.= W
f960: 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 36 31  M_CAP_START + 61
f970: 2c 0a 09 57 4d 5f 43 41 50 5f 53 45 51 55 45 4e  ,..WM_CAP_SEQUEN
f980: 43 45 09 09 09 09 3d 20 57 4d 5f 43 41 50 5f 53  CE....= WM_CAP_S
f990: 54 41 52 54 20 2b 20 36 32 2c 0a 09 57 4d 5f 43  TART + 62,..WM_C
f9a0: 41 50 5f 53 45 51 55 45 4e 43 45 5f 4e 4f 46 49  AP_SEQUENCE_NOFI
f9b0: 4c 45 09 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41  LE..= WM_CAP_STA
f9c0: 52 54 20 2b 20 36 33 2c 0a 09 57 4d 5f 43 41 50  RT + 63,..WM_CAP
f9d0: 5f 53 45 54 5f 53 45 51 55 45 4e 43 45 5f 53 45  _SET_SEQUENCE_SE
f9e0: 54 55 50 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41  TUP.= WM_CAP_STA
f9f0: 52 54 20 2b 20 36 34 2c 0a 09 57 4d 5f 43 41 50  RT + 64,..WM_CAP
fa00: 5f 47 45 54 5f 53 45 51 55 45 4e 43 45 5f 53 45  _GET_SEQUENCE_SE
fa10: 54 55 50 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41  TUP.= WM_CAP_STA
fa20: 52 54 20 2b 20 36 35 2c 0a 09 57 4d 5f 43 41 50  RT + 65,..WM_CAP
fa30: 5f 53 45 54 5f 4d 43 49 5f 44 45 56 49 43 45 41  _SET_MCI_DEVICEA
fa40: 09 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54  ..= WM_CAP_START
fa50: 20 2b 20 36 36 2c 0a 09 57 4d 5f 43 41 50 5f 47   + 66,..WM_CAP_G
fa60: 45 54 5f 4d 43 49 5f 44 45 56 49 43 45 41 09 09  ET_MCI_DEVICEA..
fa70: 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b  = WM_CAP_START +
fa80: 20 36 37 2c 0a 0a 09 57 4d 5f 43 41 50 5f 53 45   67,...WM_CAP_SE
fa90: 54 5f 4d 43 49 5f 44 45 56 49 43 45 57 09 09 3d  T_MCI_DEVICEW..=
faa0: 20 57 4d 5f 43 41 50 5f 55 4e 49 43 4f 44 45 5f   WM_CAP_UNICODE_
fab0: 53 54 41 52 54 20 2b 20 36 36 2c 0a 09 57 4d 5f  START + 66,..WM_
fac0: 43 41 50 5f 47 45 54 5f 4d 43 49 5f 44 45 56 49  CAP_GET_MCI_DEVI
fad0: 43 45 57 09 09 3d 20 57 4d 5f 43 41 50 5f 55 4e  CEW..= WM_CAP_UN
fae0: 49 43 4f 44 45 5f 53 54 41 52 54 20 2b 20 36 37  ICODE_START + 67
faf0: 2c 0a 7d 0a 0a 76 65 72 73 69 6f 6e 28 55 6e 69  ,.}..version(Uni
fb00: 63 6f 64 65 29 20 7b 0a 09 61 6c 69 61 73 20 57  code) {..alias W
fb10: 4d 5f 43 41 50 5f 53 45 54 5f 4d 43 49 5f 44 45  M_CAP_SET_MCI_DE
fb20: 56 49 43 45 57 09 57 4d 5f 43 41 50 5f 53 45 54  VICEW.WM_CAP_SET
fb30: 5f 4d 43 49 5f 44 45 56 49 43 45 3b 0a 09 61 6c  _MCI_DEVICE;..al
fb40: 69 61 73 20 57 4d 5f 43 41 50 5f 47 45 54 5f 4d  ias WM_CAP_GET_M
fb50: 43 49 5f 44 45 56 49 43 45 57 09 57 4d 5f 43 41  CI_DEVICEW.WM_CA
fb60: 50 5f 47 45 54 5f 4d 43 49 5f 44 45 56 49 43 45  P_GET_MCI_DEVICE
fb70: 3b 0a 7d 20 65 6c 73 65 20 7b 20 2f 2f 20 55 6e  ;.} else { // Un
fb80: 69 63 6f 64 65 0a 09 61 6c 69 61 73 20 57 4d 5f  icode..alias WM_
fb90: 43 41 50 5f 53 45 54 5f 4d 43 49 5f 44 45 56 49  CAP_SET_MCI_DEVI
fba0: 43 45 41 09 57 4d 5f 43 41 50 5f 53 45 54 5f 4d  CEA.WM_CAP_SET_M
fbb0: 43 49 5f 44 45 56 49 43 45 3b 0a 09 61 6c 69 61  CI_DEVICE;..alia
fbc0: 73 20 57 4d 5f 43 41 50 5f 47 45 54 5f 4d 43 49  s WM_CAP_GET_MCI
fbd0: 5f 44 45 56 49 43 45 41 09 57 4d 5f 43 41 50 5f  _DEVICEA.WM_CAP_
fbe0: 47 45 54 5f 4d 43 49 5f 44 45 56 49 43 45 3b 0a  GET_MCI_DEVICE;.
fbf0: 7d 0a 0a 65 6e 75 6d 20 7b 0a 09 57 4d 5f 43 41  }..enum {..WM_CA
fc00: 50 5f 53 54 4f 50 09 09 09 09 09 3d 20 57 4d 5f  P_STOP.....= WM_
fc10: 43 41 50 5f 53 54 41 52 54 20 2b 20 36 38 2c 0a  CAP_START + 68,.
fc20: 09 57 4d 5f 43 41 50 5f 41 42 4f 52 54 09 09 09  .WM_CAP_ABORT...
fc30: 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20  .= WM_CAP_START 
fc40: 2b 20 36 39 2c 0a 09 57 4d 5f 43 41 50 5f 53 49  + 69,..WM_CAP_SI
fc50: 4e 47 4c 45 5f 46 52 41 4d 45 5f 4f 50 45 4e 09  NGLE_FRAME_OPEN.
fc60: 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b  = WM_CAP_START +
fc70: 20 37 30 2c 0a 09 57 4d 5f 43 41 50 5f 53 49 4e   70,..WM_CAP_SIN
fc80: 47 4c 45 5f 46 52 41 4d 45 5f 43 4c 4f 53 45 09  GLE_FRAME_CLOSE.
fc90: 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b  = WM_CAP_START +
fca0: 20 37 31 2c 0a 09 57 4d 5f 43 41 50 5f 53 49 4e   71,..WM_CAP_SIN
fcb0: 47 4c 45 5f 46 52 41 4d 45 09 09 09 3d 20 57 4d  GLE_FRAME...= WM
fcc0: 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 37 32 2c  _CAP_START + 72,
fcd0: 0a 09 57 4d 5f 43 41 50 5f 50 41 4c 5f 4f 50 45  ..WM_CAP_PAL_OPE
fce0: 4e 41 09 09 09 3d 20 57 4d 5f 43 41 50 5f 53 54  NA...= WM_CAP_ST
fcf0: 41 52 54 20 2b 20 38 30 2c 0a 09 57 4d 5f 43 41  ART + 80,..WM_CA
fd00: 50 5f 50 41 4c 5f 53 41 56 45 41 09 09 09 3d 20  P_PAL_SAVEA...= 
fd10: 57 4d 5f 43 41 50 5f 53 54 41 52 54 20 2b 20 38  WM_CAP_START + 8
fd20: 31 2c 0a 0a 09 57 4d 5f 43 41 50 5f 50 41 4c 5f  1,...WM_CAP_PAL_
fd30: 4f 50 45 4e 57 09 09 09 3d 20 57 4d 5f 43 41 50  OPENW...= WM_CAP
fd40: 5f 55 4e 49 43 4f 44 45 5f 53 54 41 52 54 20 2b  _UNICODE_START +
fd50: 20 38 30 2c 0a 09 57 4d 5f 43 41 50 5f 50 41 4c   80,..WM_CAP_PAL
fd60: 5f 53 41 56 45 57 09 09 09 3d 20 57 4d 5f 43 41  _SAVEW...= WM_CA
fd70: 50 5f 55 4e 49 43 4f 44 45 5f 53 54 41 52 54 20  P_UNICODE_START 
fd80: 2b 20 38 31 2c 0a 7d 0a 0a 76 65 72 73 69 6f 6e  + 81,.}..version
fd90: 28 55 6e 69 63 6f 64 65 29 20 7b 0a 09 61 6c 69  (Unicode) {..ali
fda0: 61 73 20 57 4d 5f 43 41 50 5f 50 41 4c 5f 4f 50  as WM_CAP_PAL_OP
fdb0: 45 4e 57 09 57 4d 5f 43 41 50 5f 50 41 4c 5f 4f  ENW.WM_CAP_PAL_O
fdc0: 50 45 4e 3b 0a 09 61 6c 69 61 73 20 57 4d 5f 43  PEN;..alias WM_C
fdd0: 41 50 5f 50 41 4c 5f 53 41 56 45 57 09 57 4d 5f  AP_PAL_SAVEW.WM_
fde0: 43 41 50 5f 50 41 4c 5f 53 41 56 45 3b 0a 7d 20  CAP_PAL_SAVE;.} 
fdf0: 65 6c 73 65 20 7b 20 2f 2f 20 55 6e 69 63 6f 64  else { // Unicod
fe00: 65 0a 09 61 6c 69 61 73 20 57 4d 5f 43 41 50 5f  e..alias WM_CAP_
fe10: 50 41 4c 5f 4f 50 45 4e 41 09 57 4d 5f 43 41 50  PAL_OPENA.WM_CAP
fe20: 5f 50 41 4c 5f 4f 50 45 4e 3b 0a 09 61 6c 69 61  _PAL_OPEN;..alia
fe30: 73 20 57 4d 5f 43 41 50 5f 50 41 4c 5f 53 41 56  s WM_CAP_PAL_SAV
fe40: 45 41 09 57 4d 5f 43 41 50 5f 50 41 4c 5f 53 41  EA.WM_CAP_PAL_SA
fe50: 56 45 3b 0a 7d 0a 0a 65 6e 75 6d 20 7b 0a 09 57  VE;.}..enum {..W
fe60: 4d 5f 43 41 50 5f 50 41 4c 5f 50 41 53 54 45 09  M_CAP_PAL_PASTE.
fe70: 09 09 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52  ...= WM_CAP_STAR
fe80: 54 20 2b 20 38 32 2c 0a 09 57 4d 5f 43 41 50 5f  T + 82,..WM_CAP_
fe90: 50 41 4c 5f 41 55 54 4f 43 52 45 41 54 45 09 09  PAL_AUTOCREATE..
fea0: 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20  .= WM_CAP_START 
feb0: 2b 20 38 33 2c 0a 09 57 4d 5f 43 41 50 5f 50 41  + 83,..WM_CAP_PA
fec0: 4c 5f 4d 41 4e 55 41 4c 43 52 45 41 54 45 09 09  L_MANUALCREATE..
fed0: 09 3d 20 57 4d 5f 43 41 50 5f 53 54 41 52 54 20  .= WM_CAP_START 
fee0: 2b 20 38 34 2c 0a 09 57 4d 5f 43 41 50 5f 53 45  + 84,..WM_CAP_SE
fef0: 54 5f 43 41 4c 4c 42 41 43 4b 5f 43 41 50 43 4f  T_CALLBACK_CAPCO
ff00: 4e 54 52 4f 4c 09 3d 20 57 4d 5f 43 41 50 5f 53  NTROL.= WM_CAP_S
ff10: 54 41 52 54 20 2b 20 38 35 2c 0a 09 57 4d 5f 43  TART + 85,..WM_C
ff20: 41 50 5f 55 4e 49 43 4f 44 45 5f 45 4e 44 09 09  AP_UNICODE_END..
ff30: 09 09 3d 20 57 4d 5f 43 41 50 5f 50 41 4c 5f 53  ..= WM_CAP_PAL_S
ff40: 41 56 45 57 2c 0a 09 57 4d 5f 43 41 50 5f 45 4e  AVEW,..WM_CAP_EN
ff50: 44 09 09 09 09 09 09 3d 20 57 4d 5f 43 41 50 5f  D......= WM_CAP_
ff60: 55 4e 49 43 4f 44 45 5f 45 4e 44 2c 0a 7d 0a 0a  UNICODE_END,.}..
ff70: 2f 2a 2a 0a 20 2a 20 6d 65 73 73 61 67 65 20 77  /**. * message w
ff80: 72 61 70 70 65 72 0a 20 2a 2f 0a 0a 42 4f 4f 4c  rapper. */..BOOL
ff90: 20 63 61 70 53 65 74 43 61 6c 6c 62 61 63 6b 4f   capSetCallbackO
ffa0: 6e 45 72 72 6f 72 28 48 57 4e 44 20 68 57 6e 64  nError(HWND hWnd
ffb0: 2c 20 4c 50 56 4f 49 44 20 66 70 50 72 6f 63 29  , LPVOID fpProc)
ffc0: 09 09 09 09 7b 20 72 65 74 75 72 6e 20 63 61 73  ....{ return cas
ffd0: 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d 28  t(BOOL)AVICapSM(
ffe0: 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 53 45 54  hWnd, WM_CAP_SET
fff0: 5f 43 41 4c 4c 42 41 43 4b 5f 45 52 52 4f 52 2c  _CALLBACK_ERROR,
10000 20 30 2c 20 63 61 73 74 28 4c 50 41 52 41 4d 29   0, cast(LPARAM)
10010 66 70 50 72 6f 63 29 3b 20 7d 0a 42 4f 4f 4c 20  fpProc); }.BOOL 
10020 63 61 70 53 65 74 43 61 6c 6c 62 61 63 6b 4f 6e  capSetCallbackOn
10030 53 74 61 74 75 73 28 48 57 4e 44 20 68 57 6e 64  Status(HWND hWnd
10040 2c 20 4c 50 56 4f 49 44 20 66 70 50 72 6f 63 29  , LPVOID fpProc)
10050 09 09 09 09 7b 20 72 65 74 75 72 6e 20 63 61 73  ....{ return cas
10060 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d 28  t(BOOL)AVICapSM(
10070 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 53 45 54  hWnd, WM_CAP_SET
10080 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53  _CALLBACK_STATUS
10090 2c 20 30 2c 20 63 61 73 74 28 4c 50 41 52 41 4d  , 0, cast(LPARAM
100a0 29 66 70 50 72 6f 63 29 3b 20 7d 0a 42 4f 4f 4c  )fpProc); }.BOOL
100b0 20 63 61 70 53 65 74 43 61 6c 6c 62 61 63 6b 4f   capSetCallbackO
100c0 6e 59 69 65 6c 64 28 48 57 4e 44 20 68 57 6e 64  nYield(HWND hWnd
100d0 2c 20 4c 50 56 4f 49 44 20 66 70 50 72 6f 63 29  , LPVOID fpProc)
100e0 09 09 09 09 7b 20 72 65 74 75 72 6e 20 63 61 73  ....{ return cas
100f0 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d 28  t(BOOL)AVICapSM(
10100 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 53 45 54  hWnd, WM_CAP_SET
10110 5f 43 41 4c 4c 42 41 43 4b 5f 59 49 45 4c 44 2c  _CALLBACK_YIELD,
10120 20 30 2c 20 63 61 73 74 28 4c 50 41 52 41 4d 29   0, cast(LPARAM)
10130 66 70 50 72 6f 63 29 3b 20 7d 0a 42 4f 4f 4c 20  fpProc); }.BOOL 
10140 63 61 70 53 65 74 43 61 6c 6c 62 61 63 6b 4f 6e  capSetCallbackOn
10150 46 72 61 6d 65 28 48 57 4e 44 20 68 57 6e 64 2c  Frame(HWND hWnd,
10160 20 4c 50 56 4f 49 44 20 66 70 50 72 6f 63 29 09   LPVOID fpProc).
10170 09 09 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74  ...{ return cast
10180 28 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d 28 68  (BOOL)AVICapSM(h
10190 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 53 45 54 5f  Wnd, WM_CAP_SET_
101a0 43 41 4c 4c 42 41 43 4b 5f 46 52 41 4d 45 2c 20  CALLBACK_FRAME, 
101b0 30 2c 20 63 61 73 74 28 4c 50 41 52 41 4d 29 66  0, cast(LPARAM)f
101c0 70 50 72 6f 63 29 3b 20 7d 0a 42 4f 4f 4c 20 63  pProc); }.BOOL c
101d0 61 70 53 65 74 43 61 6c 6c 62 61 63 6b 4f 6e 56  apSetCallbackOnV
101e0 69 64 65 6f 53 74 72 65 61 6d 28 48 57 4e 44 20  ideoStream(HWND 
101f0 68 57 6e 64 2c 20 4c 50 56 4f 49 44 20 66 70 50  hWnd, LPVOID fpP
10200 72 6f 63 29 09 09 09 7b 20 72 65 74 75 72 6e 20  roc)...{ return 
10210 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70  cast(BOOL)AVICap
10220 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f  SM(hWnd, WM_CAP_
10230 53 45 54 5f 43 41 4c 4c 42 41 43 4b 5f 56 49 44  SET_CALLBACK_VID
10240 45 4f 53 54 52 45 41 4d 2c 20 30 2c 20 63 61 73  EOSTREAM, 0, cas
10250 74 28 4c 50 41 52 41 4d 29 66 70 50 72 6f 63 29  t(LPARAM)fpProc)
10260 3b 20 7d 0a 42 4f 4f 4c 20 63 61 70 53 65 74 43  ; }.BOOL capSetC
10270 61 6c 6c 62 61 63 6b 4f 6e 57 61 76 65 53 74 72  allbackOnWaveStr
10280 65 61 6d 28 48 57 4e 44 20 68 57 6e 64 2c 20 4c  eam(HWND hWnd, L
10290 50 56 4f 49 44 20 66 70 50 72 6f 63 29 09 09 09  PVOID fpProc)...
102a0 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 42 4f  { return cast(BO
102b0 4f 4c 29 41 56 49 43 61 70 53 4d 28 68 57 6e 64  OL)AVICapSM(hWnd
102c0 2c 20 57 4d 5f 43 41 50 5f 53 45 54 5f 43 41 4c  , WM_CAP_SET_CAL
102d0 4c 42 41 43 4b 5f 57 41 56 45 53 54 52 45 41 4d  LBACK_WAVESTREAM
102e0 2c 20 30 2c 20 63 61 73 74 28 4c 50 41 52 41 4d  , 0, cast(LPARAM
102f0 29 66 70 50 72 6f 63 29 3b 20 7d 0a 42 4f 4f 4c  )fpProc); }.BOOL
10300 20 63 61 70 53 65 74 43 61 6c 6c 62 61 63 6b 4f   capSetCallbackO
10310 6e 43 61 70 43 6f 6e 74 72 6f 6c 28 48 57 4e 44  nCapControl(HWND
10320 20 68 57 6e 64 2c 20 4c 50 56 4f 49 44 20 66 70   hWnd, LPVOID fp
10330 50 72 6f 63 29 09 09 09 7b 20 72 65 74 75 72 6e  Proc)...{ return
10340 20 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43 61   cast(BOOL)AVICa
10350 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50  pSM(hWnd, WM_CAP
10360 5f 53 45 54 5f 43 41 4c 4c 42 41 43 4b 5f 43 41  _SET_CALLBACK_CA
10370 50 43 4f 4e 54 52 4f 4c 2c 20 30 2c 20 63 61 73  PCONTROL, 0, cas
10380 74 28 4c 50 41 52 41 4d 29 66 70 50 72 6f 63 29  t(LPARAM)fpProc)
10390 3b 20 7d 0a 0a 42 4f 4f 4c 20 63 61 70 53 65 74  ; }..BOOL capSet
103a0 55 73 65 72 44 61 74 61 28 48 57 4e 44 20 68 57  UserData(HWND hW
103b0 6e 64 2c 20 4c 50 41 52 41 4d 20 6c 55 73 65 72  nd, LPARAM lUser
103c0 29 09 09 09 09 09 09 7b 20 72 65 74 75 72 6e 20  )......{ return 
103d0 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70  cast(BOOL)AVICap
103e0 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f  SM(hWnd, WM_CAP_
103f0 53 45 54 5f 55 53 45 52 5f 44 41 54 41 2c 20 30  SET_USER_DATA, 0
10400 2c 20 6c 55 73 65 72 29 3b 20 7d 0a 42 4f 4f 4c  , lUser); }.BOOL
10410 20 63 61 70 47 65 74 55 73 65 72 44 61 74 61 28   capGetUserData(
10420 48 57 4e 44 20 68 57 6e 64 29 09 09 09 09 09 09  HWND hWnd)......
10430 09 09 09 09 7b 20 72 65 74 75 72 6e 20 63 61 73  ....{ return cas
10440 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d 28  t(BOOL)AVICapSM(
10450 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 47 45 54  hWnd, WM_CAP_GET
10460 5f 55 53 45 52 5f 44 41 54 41 2c 20 30 2c 20 30  _USER_DATA, 0, 0
10470 29 3b 20 7d 0a 0a 42 4f 4f 4c 20 63 61 70 44 72  ); }..BOOL capDr
10480 69 76 65 72 43 6f 6e 6e 65 63 74 28 48 57 4e 44  iverConnect(HWND
10490 20 68 57 6e 64 2c 20 57 50 41 52 41 4d 20 69 29   hWnd, WPARAM i)
104a0 09 09 09 09 09 09 09 7b 20 72 65 74 75 72 6e 20  .......{ return 
104b0 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70  cast(BOOL)AVICap
104c0 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f  SM(hWnd, WM_CAP_
104d0 44 52 49 56 45 52 5f 43 4f 4e 4e 45 43 54 2c 20  DRIVER_CONNECT, 
104e0 69 2c 20 30 29 3b 20 7d 0a 42 4f 4f 4c 20 63 61  i, 0); }.BOOL ca
104f0 70 44 72 69 76 65 72 44 69 73 63 6f 6e 6e 65 63  pDriverDisconnec
10500 74 28 48 57 4e 44 20 68 57 6e 64 29 09 09 09 09  t(HWND hWnd)....
10510 09 09 09 09 09 7b 20 72 65 74 75 72 6e 20 63 61  .....{ return ca
10520 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d  st(BOOL)AVICapSM
10530 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 44 52  (hWnd, WM_CAP_DR
10540 49 56 45 52 5f 44 49 53 43 4f 4e 4e 45 43 54 2c  IVER_DISCONNECT,
10550 20 30 2c 20 30 29 3b 20 7d 0a 42 4f 4f 4c 20 63   0, 0); }.BOOL c
10560 61 70 44 72 69 76 65 72 47 65 74 4e 61 6d 65 28  apDriverGetName(
10570 48 57 4e 44 20 68 57 6e 64 2c 20 4c 50 54 53 54  HWND hWnd, LPTST
10580 52 20 73 7a 4e 61 6d 65 2c 20 57 50 41 52 41 4d  R szName, WPARAM
10590 20 77 53 69 7a 65 29 09 09 7b 20 72 65 74 75 72   wSize)..{ retur
105a0 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43  n cast(BOOL)AVIC
105b0 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41  apSM(hWnd, WM_CA
105c0 50 5f 44 52 49 56 45 52 5f 47 45 54 5f 4e 41 4d  P_DRIVER_GET_NAM
105d0 45 2c 20 77 53 69 7a 65 2c 20 63 61 73 74 28 4c  E, wSize, cast(L
105e0 50 41 52 41 4d 29 73 7a 4e 61 6d 65 29 3b 20 7d  PARAM)szName); }
105f0 0a 42 4f 4f 4c 20 63 61 70 44 72 69 76 65 72 47  .BOOL capDriverG
10600 65 74 56 65 72 73 69 6f 6e 28 48 57 4e 44 20 68  etVersion(HWND h
10610 57 6e 64 2c 20 4c 50 54 53 54 52 20 73 7a 56 65  Wnd, LPTSTR szVe
10620 72 2c 20 57 50 41 52 41 4d 20 77 53 69 7a 65 29  r, WPARAM wSize)
10630 09 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28  ..{ return cast(
10640 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d 28 68 57  BOOL)AVICapSM(hW
10650 6e 64 2c 20 57 4d 5f 43 41 50 5f 44 52 49 56 45  nd, WM_CAP_DRIVE
10660 52 5f 47 45 54 5f 56 45 52 53 49 4f 4e 2c 20 77  R_GET_VERSION, w
10670 53 69 7a 65 2c 20 63 61 73 74 28 4c 50 41 52 41  Size, cast(LPARA
10680 4d 29 73 7a 56 65 72 29 3b 20 7d 0a 42 4f 4f 4c  M)szVer); }.BOOL
10690 20 63 61 70 44 72 69 76 65 72 47 65 74 43 61 70   capDriverGetCap
106a0 73 28 48 57 4e 44 20 68 57 6e 64 2c 20 4c 50 43  s(HWND hWnd, LPC
106b0 41 50 44 52 49 56 45 52 43 41 50 53 20 73 2c 20  APDRIVERCAPS s, 
106c0 57 50 41 52 41 4d 20 77 53 69 7a 65 29 09 7b 20  WPARAM wSize).{ 
106d0 72 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c  return cast(BOOL
106e0 29 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20  )AVICapSM(hWnd, 
106f0 57 4d 5f 43 41 50 5f 44 52 49 56 45 52 5f 47 45  WM_CAP_DRIVER_GE
10700 54 5f 43 41 50 53 2c 20 77 53 69 7a 65 2c 20 63  T_CAPS, wSize, c
10710 61 73 74 28 4c 50 41 52 41 4d 29 73 29 3b 20 7d  ast(LPARAM)s); }
10720 0a 0a 42 4f 4f 4c 20 63 61 70 46 69 6c 65 53 65  ..BOOL capFileSe
10730 74 43 61 70 74 75 72 65 46 69 6c 65 28 48 57 4e  tCaptureFile(HWN
10740 44 20 68 57 6e 64 2c 20 4c 50 54 53 54 52 20 73  D hWnd, LPTSTR s
10750 7a 4e 61 6d 65 29 09 09 09 09 7b 20 72 65 74 75  zName)....{ retu
10760 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56 49  rn cast(BOOL)AVI
10770 43 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43  CapSM(hWnd, WM_C
10780 41 50 5f 46 49 4c 45 5f 53 45 54 5f 43 41 50 54  AP_FILE_SET_CAPT
10790 55 52 45 5f 46 49 4c 45 2c 20 30 2c 20 63 61 73  URE_FILE, 0, cas
107a0 74 28 4c 50 41 52 41 4d 29 73 7a 4e 61 6d 65 29  t(LPARAM)szName)
107b0 3b 20 7d 0a 42 4f 4f 4c 20 63 61 70 46 69 6c 65  ; }.BOOL capFile
107c0 47 65 74 43 61 70 74 75 72 65 46 69 6c 65 28 48  GetCaptureFile(H
107d0 57 4e 44 20 68 57 6e 64 2c 20 4c 50 54 53 54 52  WND hWnd, LPTSTR
107e0 20 73 7a 4e 61 6d 65 2c 20 57 50 41 52 41 4d 20   szName, WPARAM 
107f0 77 53 69 7a 65 29 09 7b 20 72 65 74 75 72 6e 20  wSize).{ return 
10800 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70  cast(BOOL)AVICap
10810 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f  SM(hWnd, WM_CAP_
10820 46 49 4c 45 5f 47 45 54 5f 43 41 50 54 55 52 45  FILE_GET_CAPTURE
10830 5f 46 49 4c 45 2c 20 77 53 69 7a 65 2c 20 63 61  _FILE, wSize, ca
10840 73 74 28 4c 50 41 52 41 4d 29 73 7a 4e 61 6d 65  st(LPARAM)szName
10850 29 3b 20 7d 0a 42 4f 4f 4c 20 63 61 70 46 69 6c  ); }.BOOL capFil
10860 65 41 6c 6c 6f 63 28 48 57 4e 44 20 68 57 6e 64  eAlloc(HWND hWnd
10870 2c 20 57 50 41 52 41 4d 20 77 53 69 7a 65 29 09  , WPARAM wSize).
10880 09 09 09 09 09 09 7b 20 72 65 74 75 72 6e 20 63  ......{ return c
10890 61 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53  ast(BOOL)AVICapS
108a0 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 46  M(hWnd, WM_CAP_F
108b0 49 4c 45 5f 41 4c 4c 4f 43 41 54 45 2c 20 77 53  ILE_ALLOCATE, wS
108c0 69 7a 65 2c 20 30 29 3b 20 7d 0a 42 4f 4f 4c 20  ize, 0); }.BOOL 
108d0 63 61 70 46 69 6c 65 53 61 76 65 41 73 28 48 57  capFileSaveAs(HW
108e0 4e 44 20 68 57 6e 64 2c 20 4c 50 54 53 54 52 20  ND hWnd, LPTSTR 
108f0 73 7a 4e 61 6d 65 29 09 09 09 09 09 09 7b 20 72  szName)......{ r
10900 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29  eturn cast(BOOL)
10910 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57  AVICapSM(hWnd, W
10920 4d 5f 43 41 50 5f 46 49 4c 45 5f 53 41 56 45 41  M_CAP_FILE_SAVEA
10930 53 2c 20 30 2c 20 63 61 73 74 28 4c 50 41 52 41  S, 0, cast(LPARA
10940 4d 29 73 7a 4e 61 6d 65 29 3b 20 7d 0a 42 4f 4f  M)szName); }.BOO
10950 4c 20 63 61 70 46 69 6c 65 53 65 74 49 6e 66 6f  L capFileSetInfo
10960 43 68 75 6e 6b 28 48 57 4e 44 20 68 57 6e 64 2c  Chunk(HWND hWnd,
10970 20 4c 50 43 41 50 49 4e 46 4f 43 48 55 4e 4b 20   LPCAPINFOCHUNK 
10980 6c 70 49 6e 66 6f 43 68 75 6e 6b 29 09 09 7b 20  lpInfoChunk)..{ 
10990 72 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c  return cast(BOOL
109a0 29 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20  )AVICapSM(hWnd, 
109b0 57 4d 5f 43 41 50 5f 46 49 4c 45 5f 53 45 54 5f  WM_CAP_FILE_SET_
109c0 49 4e 46 4f 43 48 55 4e 4b 2c 20 30 2c 20 63 61  INFOCHUNK, 0, ca
109d0 73 74 28 4c 50 41 52 41 4d 29 6c 70 49 6e 66 6f  st(LPARAM)lpInfo
109e0 43 68 75 6e 6b 29 3b 20 7d 0a 42 4f 4f 4c 20 63  Chunk); }.BOOL c
109f0 61 70 46 69 6c 65 53 61 76 65 44 49 42 28 48 57  apFileSaveDIB(HW
10a00 4e 44 20 68 57 6e 64 2c 20 4c 50 54 53 54 52 20  ND hWnd, LPTSTR 
10a10 73 7a 4e 61 6d 65 29 09 09 09 09 09 09 7b 20 72  szName)......{ r
10a20 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29  eturn cast(BOOL)
10a30 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57  AVICapSM(hWnd, W
10a40 4d 5f 43 41 50 5f 46 49 4c 45 5f 53 41 56 45 44  M_CAP_FILE_SAVED
10a50 49 42 2c 20 30 2c 20 63 61 73 74 28 4c 50 41 52  IB, 0, cast(LPAR
10a60 41 4d 29 73 7a 4e 61 6d 65 29 3b 20 7d 0a 0a 42  AM)szName); }..B
10a70 4f 4f 4c 20 63 61 70 45 64 69 74 43 6f 70 79 28  OOL capEditCopy(
10a80 48 57 4e 44 20 68 57 6e 64 29 09 09 09 09 09 09  HWND hWnd)......
10a90 09 09 09 09 09 7b 20 72 65 74 75 72 6e 20 63 61  .....{ return ca
10aa0 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d  st(BOOL)AVICapSM
10ab0 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 45 44  (hWnd, WM_CAP_ED
10ac0 49 54 5f 43 4f 50 59 2c 20 30 2c 20 30 29 3b 20  IT_COPY, 0, 0); 
10ad0 7d 0a 0a 42 4f 4f 4c 20 63 61 70 53 65 74 41 75  }..BOOL capSetAu
10ae0 64 69 6f 46 6f 72 6d 61 74 28 48 57 4e 44 20 68  dioFormat(HWND h
10af0 57 6e 64 2c 20 4c 50 57 41 56 45 46 4f 52 4d 41  Wnd, LPWAVEFORMA
10b00 54 45 58 20 73 2c 20 57 50 41 52 41 4d 20 77 53  TEX s, WPARAM wS
10b10 69 7a 65 29 09 7b 20 72 65 74 75 72 6e 20 63 61  ize).{ return ca
10b20 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d  st(BOOL)AVICapSM
10b30 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 53 45  (hWnd, WM_CAP_SE
10b40 54 5f 41 55 44 49 4f 46 4f 52 4d 41 54 2c 20 77  T_AUDIOFORMAT, w
10b50 53 69 7a 65 2c 20 63 61 73 74 28 4c 50 41 52 41  Size, cast(LPARA
10b60 4d 29 73 29 3b 20 7d 0a 44 57 4f 52 44 20 63 61  M)s); }.DWORD ca
10b70 70 47 65 74 41 75 64 69 6f 46 6f 72 6d 61 74 28  pGetAudioFormat(
10b80 48 57 4e 44 20 68 57 6e 64 2c 20 4c 50 57 41 56  HWND hWnd, LPWAV
10b90 45 46 4f 52 4d 41 54 45 58 20 73 2c 20 57 50 41  EFORMATEX s, WPA
10ba0 52 41 4d 20 77 53 69 7a 65 29 09 7b 20 72 65 74  RAM wSize).{ ret
10bb0 75 72 6e 20 63 61 73 74 28 44 57 4f 52 44 29 41  urn cast(DWORD)A
10bc0 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d  VICapSM(hWnd, WM
10bd0 5f 43 41 50 5f 47 45 54 5f 41 55 44 49 4f 46 4f  _CAP_GET_AUDIOFO
10be0 52 4d 41 54 2c 20 77 53 69 7a 65 2c 20 63 61 73  RMAT, wSize, cas
10bf0 74 28 4c 50 41 52 41 4d 29 73 29 3b 20 7d 0a 44  t(LPARAM)s); }.D
10c00 57 4f 52 44 20 63 61 70 47 65 74 41 75 64 69 6f  WORD capGetAudio
10c10 46 6f 72 6d 61 74 53 69 7a 65 28 48 57 4e 44 20  FormatSize(HWND 
10c20 68 57 6e 64 29 09 09 09 09 09 09 09 09 7b 20 72  hWnd)........{ r
10c30 65 74 75 72 6e 20 63 61 73 74 28 44 57 4f 52 44  eturn cast(DWORD
10c40 29 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20  )AVICapSM(hWnd, 
10c50 57 4d 5f 43 41 50 5f 47 45 54 5f 41 55 44 49 4f  WM_CAP_GET_AUDIO
10c60 46 4f 52 4d 41 54 2c 20 30 2c 20 30 29 3b 20 7d  FORMAT, 0, 0); }
10c70 0a 0a 42 4f 4f 4c 20 63 61 70 44 6c 67 56 69 64  ..BOOL capDlgVid
10c80 65 6f 46 6f 72 6d 61 74 28 48 57 4e 44 20 68 57  eoFormat(HWND hW
10c90 6e 64 29 09 09 09 09 09 09 09 09 09 7b 20 72 65  nd).........{ re
10ca0 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41  turn cast(BOOL)A
10cb0 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d  VICapSM(hWnd, WM
10cc0 5f 43 41 50 5f 44 4c 47 5f 56 49 44 45 4f 46 4f  _CAP_DLG_VIDEOFO
10cd0 52 4d 41 54 2c 20 30 2c 20 30 29 3b 20 7d 0a 42  RMAT, 0, 0); }.B
10ce0 4f 4f 4c 20 63 61 70 44 6c 67 56 69 64 65 6f 53  OOL capDlgVideoS
10cf0 6f 75 72 63 65 28 48 57 4e 44 20 68 57 6e 64 29  ource(HWND hWnd)
10d00 09 09 09 09 09 09 09 09 09 7b 20 72 65 74 75 72  .........{ retur
10d10 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43  n cast(BOOL)AVIC
10d20 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41  apSM(hWnd, WM_CA
10d30 50 5f 44 4c 47 5f 56 49 44 45 4f 53 4f 55 52 43  P_DLG_VIDEOSOURC
10d40 45 2c 20 30 2c 20 30 29 3b 20 7d 0a 42 4f 4f 4c  E, 0, 0); }.BOOL
10d50 20 63 61 70 44 6c 67 56 69 64 65 6f 44 69 73 70   capDlgVideoDisp
10d60 6c 61 79 28 48 57 4e 44 20 68 57 6e 64 29 09 09  lay(HWND hWnd)..
10d70 09 09 09 09 09 09 09 7b 20 72 65 74 75 72 6e 20  .......{ return 
10d80 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70  cast(BOOL)AVICap
10d90 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f  SM(hWnd, WM_CAP_
10da0 44 4c 47 5f 56 49 44 45 4f 44 49 53 50 4c 41 59  DLG_VIDEODISPLAY
10db0 2c 20 30 2c 20 30 29 3b 20 7d 0a 42 4f 4f 4c 20  , 0, 0); }.BOOL 
10dc0 63 61 70 44 6c 67 56 69 64 65 6f 43 6f 6d 70 72  capDlgVideoCompr
10dd0 65 73 73 69 6f 6e 28 48 57 4e 44 20 68 57 6e 64  ession(HWND hWnd
10de0 29 09 09 09 09 09 09 09 09 7b 20 72 65 74 75 72  )........{ retur
10df0 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43  n cast(BOOL)AVIC
10e00 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41  apSM(hWnd, WM_CA
10e10 50 5f 44 4c 47 5f 56 49 44 45 4f 43 4f 4d 50 52  P_DLG_VIDEOCOMPR
10e20 45 53 53 49 4f 4e 2c 20 30 2c 20 30 29 3b 20 7d  ESSION, 0, 0); }
10e30 0a 0a 44 57 4f 52 44 20 63 61 70 47 65 74 56 69  ..DWORD capGetVi
10e40 64 65 6f 46 6f 72 6d 61 74 28 48 57 4e 44 20 68  deoFormat(HWND h
10e50 57 6e 64 2c 20 76 6f 69 64 2a 20 73 2c 20 57 50  Wnd, void* s, WP
10e60 41 52 41 4d 20 77 53 69 7a 65 29 09 09 09 7b 20  ARAM wSize)...{ 
10e70 72 65 74 75 72 6e 20 63 61 73 74 28 44 57 4f 52  return cast(DWOR
10e80 44 29 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c  D)AVICapSM(hWnd,
10e90 20 57 4d 5f 43 41 50 5f 47 45 54 5f 56 49 44 45   WM_CAP_GET_VIDE
10ea0 4f 46 4f 52 4d 41 54 2c 20 77 53 69 7a 65 2c 20  OFORMAT, wSize, 
10eb0 63 61 73 74 28 4c 50 41 52 41 4d 29 73 29 3b 20  cast(LPARAM)s); 
10ec0 7d 0a 44 57 4f 52 44 20 63 61 70 47 65 74 56 69  }.DWORD capGetVi
10ed0 64 65 6f 46 6f 72 6d 61 74 53 69 7a 65 28 48 57  deoFormatSize(HW
10ee0 4e 44 20 68 57 6e 64 29 09 09 09 09 09 09 09 09  ND hWnd)........
10ef0 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 44 57  { return cast(DW
10f00 4f 52 44 29 41 56 49 43 61 70 53 4d 28 68 57 6e  ORD)AVICapSM(hWn
10f10 64 2c 20 57 4d 5f 43 41 50 5f 47 45 54 5f 56 49  d, WM_CAP_GET_VI
10f20 44 45 4f 46 4f 52 4d 41 54 2c 20 30 2c 20 30 29  DEOFORMAT, 0, 0)
10f30 3b 20 7d 0a 42 4f 4f 4c 20 63 61 70 53 65 74 56  ; }.BOOL capSetV
10f40 69 64 65 6f 46 6f 72 6d 61 74 28 48 57 4e 44 20  ideoFormat(HWND 
10f50 68 57 6e 64 2c 20 76 6f 69 64 2a 20 73 2c 20 57  hWnd, void* s, W
10f60 50 41 52 41 4d 20 77 53 69 7a 65 29 09 09 09 7b  PARAM wSize)...{
10f70 20 72 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f   return cast(BOO
10f80 4c 29 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c  L)AVICapSM(hWnd,
10f90 20 57 4d 5f 43 41 50 5f 53 45 54 5f 56 49 44 45   WM_CAP_SET_VIDE
10fa0 4f 46 4f 52 4d 41 54 2c 20 77 53 69 7a 65 2c 20  OFORMAT, wSize, 
10fb0 63 61 73 74 28 4c 50 41 52 41 4d 29 73 29 3b 20  cast(LPARAM)s); 
10fc0 7d 0a 0a 42 4f 4f 4c 20 63 61 70 50 72 65 76 69  }..BOOL capPrevi
10fd0 65 77 28 48 57 4e 44 20 68 57 6e 64 2c 20 42 4f  ew(HWND hWnd, BO
10fe0 4f 4c 20 66 29 09 09 09 09 09 09 09 09 09 7b 20  OL f).........{ 
10ff0 72 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c  return cast(BOOL
11000 29 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20  )AVICapSM(hWnd, 
11010 57 4d 5f 43 41 50 5f 53 45 54 5f 50 52 45 56 49  WM_CAP_SET_PREVI
11020 45 57 2c 20 63 61 73 74 28 57 50 41 52 41 4d 29  EW, cast(WPARAM)
11030 66 2c 20 30 29 3b 20 7d 0a 42 4f 4f 4c 20 63 61  f, 0); }.BOOL ca
11040 70 50 72 65 76 69 65 77 52 61 74 65 28 48 57 4e  pPreviewRate(HWN
11050 44 20 68 57 6e 64 2c 20 57 50 41 52 41 4d 20 77  D hWnd, WPARAM w
11060 4d 53 29 09 09 09 09 09 09 09 7b 20 72 65 74 75  MS).......{ retu
11070 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56 49  rn cast(BOOL)AVI
11080 43 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43  CapSM(hWnd, WM_C
11090 41 50 5f 53 45 54 5f 50 52 45 56 49 45 57 52 41  AP_SET_PREVIEWRA
110a0 54 45 2c 20 77 4d 53 2c 20 30 29 3b 20 7d 0a 42  TE, wMS, 0); }.B
110b0 4f 4f 4c 20 63 61 70 4f 76 65 72 6c 61 79 28 48  OOL capOverlay(H
110c0 57 4e 44 20 68 57 6e 64 2c 20 42 4f 4f 4c 20 66  WND hWnd, BOOL f
110d0 29 09 09 09 09 09 09 09 09 09 7b 20 72 65 74 75  ).........{ retu
110e0 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56 49  rn cast(BOOL)AVI
110f0 43 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43  CapSM(hWnd, WM_C
11100 41 50 5f 53 45 54 5f 4f 56 45 52 4c 41 59 2c 20  AP_SET_OVERLAY, 
11110 63 61 73 74 28 57 50 41 52 41 4d 29 66 2c 20 30  cast(WPARAM)f, 0
11120 29 3b 20 7d 0a 42 4f 4f 4c 20 63 61 70 50 72 65  ); }.BOOL capPre
11130 76 69 65 77 53 63 61 6c 65 28 48 57 4e 44 20 68  viewScale(HWND h
11140 57 6e 64 2c 20 42 4f 4f 4c 20 66 29 09 09 09 09  Wnd, BOOL f)....
11150 09 09 09 09 7b 20 72 65 74 75 72 6e 20 63 61 73  ....{ return cas
11160 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d 28  t(BOOL)AVICapSM(
11170 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 53 45 54  hWnd, WM_CAP_SET
11180 5f 53 43 41 4c 45 2c 20 63 61 73 74 28 57 50 41  _SCALE, cast(WPA
11190 52 41 4d 29 66 2c 20 30 29 3b 20 7d 0a 42 4f 4f  RAM)f, 0); }.BOO
111a0 4c 20 63 61 70 47 65 74 53 74 61 74 75 73 28 48  L capGetStatus(H
111b0 57 4e 44 20 68 57 6e 64 2c 20 4c 50 43 41 50 53  WND hWnd, LPCAPS
111c0 54 41 54 55 53 20 73 2c 20 57 50 41 52 41 4d 20  TATUS s, WPARAM 
111d0 77 53 69 7a 65 29 09 09 09 7b 20 72 65 74 75 72  wSize)...{ retur
111e0 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43  n cast(BOOL)AVIC
111f0 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41  apSM(hWnd, WM_CA
11200 50 5f 47 45 54 5f 53 54 41 54 55 53 2c 20 77 53  P_GET_STATUS, wS
11210 69 7a 65 2c 20 63 61 73 74 28 4c 50 41 52 41 4d  ize, cast(LPARAM
11220 29 73 29 3b 20 7d 0a 42 4f 4f 4c 20 63 61 70 53  )s); }.BOOL capS
11230 65 74 53 63 72 6f 6c 6c 50 6f 73 28 48 57 4e 44  etScrollPos(HWND
11240 20 68 57 6e 64 2c 20 4c 50 50 4f 49 4e 54 20 6c   hWnd, LPPOINT l
11250 70 50 29 09 09 09 09 09 09 7b 20 72 65 74 75 72  pP)......{ retur
11260 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43  n cast(BOOL)AVIC
11270 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41  apSM(hWnd, WM_CA
11280 50 5f 53 45 54 5f 53 43 52 4f 4c 4c 2c 20 30 2c  P_SET_SCROLL, 0,
11290 20 63 61 73 74 28 4c 50 41 52 41 4d 29 6c 70 50   cast(LPARAM)lpP
112a0 29 3b 20 7d 0a 0a 42 4f 4f 4c 20 63 61 70 47 72  ); }..BOOL capGr
112b0 61 62 46 72 61 6d 65 28 48 57 4e 44 20 68 57 6e  abFrame(HWND hWn
112c0 64 29 09 09 09 09 09 09 09 09 09 09 7b 20 72 65  d)..........{ re
112d0 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41  turn cast(BOOL)A
112e0 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d  VICapSM(hWnd, WM
112f0 5f 43 41 50 5f 47 52 41 42 5f 46 52 41 4d 45 2c  _CAP_GRAB_FRAME,
11300 20 30 2c 20 30 29 3b 20 7d 0a 42 4f 4f 4c 20 63   0, 0); }.BOOL c
11310 61 70 47 72 61 62 46 72 61 6d 65 4e 6f 53 74 6f  apGrabFrameNoSto
11320 70 28 48 57 4e 44 20 68 57 6e 64 29 09 09 09 09  p(HWND hWnd)....
11330 09 09 09 09 09 7b 20 72 65 74 75 72 6e 20 63 61  .....{ return ca
11340 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d  st(BOOL)AVICapSM
11350 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 47 52  (hWnd, WM_CAP_GR
11360 41 42 5f 46 52 41 4d 45 5f 4e 4f 53 54 4f 50 2c  AB_FRAME_NOSTOP,
11370 20 30 2c 20 30 29 3b 20 7d 0a 0a 42 4f 4f 4c 20   0, 0); }..BOOL 
11380 63 61 70 43 61 70 74 75 72 65 53 65 71 75 65 6e  capCaptureSequen
11390 63 65 28 48 57 4e 44 20 68 57 6e 64 29 09 09 09  ce(HWND hWnd)...
113a0 09 09 09 09 09 09 7b 20 72 65 74 75 72 6e 20 63  ......{ return c
113b0 61 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53  ast(BOOL)AVICapS
113c0 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 53  M(hWnd, WM_CAP_S
113d0 45 51 55 45 4e 43 45 2c 20 30 2c 20 30 29 3b 20  EQUENCE, 0, 0); 
113e0 7d 0a 42 4f 4f 4c 20 63 61 70 43 61 70 74 75 72  }.BOOL capCaptur
113f0 65 53 65 71 75 65 6e 63 65 4e 6f 46 69 6c 65 28  eSequenceNoFile(
11400 48 57 4e 44 20 68 57 6e 64 29 09 09 09 09 09 09  HWND hWnd)......
11410 09 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 42  .{ return cast(B
11420 4f 4f 4c 29 41 56 49 43 61 70 53 4d 28 68 57 6e  OOL)AVICapSM(hWn
11430 64 2c 20 57 4d 5f 43 41 50 5f 53 45 51 55 45 4e  d, WM_CAP_SEQUEN
11440 43 45 5f 4e 4f 46 49 4c 45 2c 20 30 2c 20 30 29  CE_NOFILE, 0, 0)
11450 3b 20 7d 0a 42 4f 4f 4c 20 63 61 70 43 61 70 74  ; }.BOOL capCapt
11460 75 72 65 53 74 6f 70 28 48 57 4e 44 20 68 57 6e  ureStop(HWND hWn
11470 64 29 09 09 09 09 09 09 09 09 09 09 7b 20 72 65  d)..........{ re
11480 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41  turn cast(BOOL)A
11490 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d  VICapSM(hWnd, WM
114a0 5f 43 41 50 5f 53 54 4f 50 2c 20 30 2c 20 30 29  _CAP_STOP, 0, 0)
114b0 3b 20 7d 0a 42 4f 4f 4c 20 63 61 70 43 61 70 74  ; }.BOOL capCapt
114c0 75 72 65 41 62 6f 72 74 28 48 57 4e 44 20 68 57  ureAbort(HWND hW
114d0 6e 64 29 09 09 09 09 09 09 09 09 09 09 7b 20 72  nd)..........{ r
114e0 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29  eturn cast(BOOL)
114f0 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57  AVICapSM(hWnd, W
11500 4d 5f 43 41 50 5f 41 42 4f 52 54 2c 20 30 2c 20  M_CAP_ABORT, 0, 
11510 30 29 3b 20 7d 0a 0a 42 4f 4f 4c 20 63 61 70 43  0); }..BOOL capC
11520 61 70 74 75 72 65 53 69 6e 67 6c 65 46 72 61 6d  aptureSingleFram
11530 65 4f 70 65 6e 28 48 57 4e 44 20 68 57 6e 64 29  eOpen(HWND hWnd)
11540 09 09 09 09 09 09 09 7b 20 72 65 74 75 72 6e 20  .......{ return 
11550 63 61 73 74 28 42 4f 4f 4c 29 41 56 49 43 61 70  cast(BOOL)AVICap
11560 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f  SM(hWnd, WM_CAP_
11570 53 49 4e 47 4c 45 5f 46 52 41 4d 45 5f 4f 50 45  SINGLE_FRAME_OPE
11580 4e 2c 20 30 2c 20 30 29 3b 20 7d 0a 42 4f 4f 4c  N, 0, 0); }.BOOL
11590 20 63 61 70 43 61 70 74 75 72 65 53 69 6e 67 6c   capCaptureSingl
115a0 65 46 72 61 6d 65 43 6c 6f 73 65 28 48 57 4e 44  eFrameClose(HWND
115b0 20 68 57 6e 64 29 09 09 09 09 09 09 09 7b 20 72   hWnd).......{ r
115c0 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29  eturn cast(BOOL)
115d0 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57  AVICapSM(hWnd, W
115e0 4d 5f 43 41 50 5f 53 49 4e 47 4c 45 5f 46 52 41  M_CAP_SINGLE_FRA
115f0 4d 45 5f 43 4c 4f 53 45 2c 20 30 2c 20 30 29 3b  ME_CLOSE, 0, 0);
11600 20 7d 0a 42 4f 4f 4c 20 63 61 70 43 61 70 74 75   }.BOOL capCaptu
11610 72 65 53 69 6e 67 6c 65 46 72 61 6d 65 28 48 57  reSingleFrame(HW
11620 4e 44 20 68 57 6e 64 29 09 09 09 09 09 09 09 09  ND hWnd)........
11630 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 42 4f  { return cast(BO
11640 4f 4c 29 41 56 49 43 61 70 53 4d 28 68 57 6e 64  OL)AVICapSM(hWnd
11650 2c 20 57 4d 5f 43 41 50 5f 53 49 4e 47 4c 45 5f  , WM_CAP_SINGLE_
11660 46 52 41 4d 45 2c 20 30 2c 20 30 29 3b 20 7d 0a  FRAME, 0, 0); }.
11670 0a 42 4f 4f 4c 20 63 61 70 43 61 70 74 75 72 65  .BOOL capCapture
11680 47 65 74 53 65 74 75 70 28 48 57 4e 44 20 68 57  GetSetup(HWND hW
11690 6e 64 2c 20 4c 50 43 41 50 54 55 52 45 50 41 52  nd, LPCAPTUREPAR
116a0 4d 53 20 73 2c 20 57 50 41 52 41 4d 20 77 53 69  MS s, WPARAM wSi
116b0 7a 65 29 09 7b 20 72 65 74 75 72 6e 20 63 61 73  ze).{ return cas
116c0 74 28 42 4f 4f 4c 29 41 56 49 43 61 70 53 4d 28  t(BOOL)AVICapSM(
116d0 68 57 6e 64 2c 20 57 4d 5f 43 41 50 5f 47 45 54  hWnd, WM_CAP_GET
116e0 5f 53 45 51 55 45 4e 43 45 5f 53 45 54 55 50 2c  _SEQUENCE_SETUP,
116f0 20 77 53 69 7a 65 2c 20 63 61 73 74 28 4c 50 41   wSize, cast(LPA
11700 52 41 4d 29 73 29 3b 20 7d 0a 42 4f 4f 4c 20 63  RAM)s); }.BOOL c
11710 61 70 43 61 70 74 75 72 65 53 65 74 53 65 74 75  apCaptureSetSetu
11720 70 28 48 57 4e 44 20 68 57 6e 64 2c 20 4c 50 43  p(HWND hWnd, LPC
11730 41 50 54 55 52 45 50 41 52 4d 53 20 73 2c 20 57  APTUREPARMS s, W
11740 50 41 52 41 4d 20 77 53 69 7a 65 29 09 7b 20 72  PARAM wSize).{ r
11750 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29  eturn cast(BOOL)
11760 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57  AVICapSM(hWnd, W
11770 4d 5f 43 41 50 5f 53 45 54 5f 53 45 51 55 45 4e  M_CAP_SET_SEQUEN
11780 43 45 5f 53 45 54 55 50 2c 20 77 53 69 7a 65 2c  CE_SETUP, wSize,
11790 20 63 61 73 74 28 4c 50 41 52 41 4d 29 73 29 3b   cast(LPARAM)s);
117a0 20 7d 0a 0a 42 4f 4f 4c 20 63 61 70 53 65 74 4d   }..BOOL capSetM
117b0 43 49 44 65 76 69 63 65 4e 61 6d 65 28 48 57 4e  CIDeviceName(HWN
117c0 44 20 68 57 6e 64 2c 20 4c 50 54 53 54 52 20 73  D hWnd, LPTSTR s
117d0 7a 4e 61 6d 65 29 09 09 09 09 09 7b 20 72 65 74  zName).....{ ret
117e0 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56  urn cast(BOOL)AV
117f0 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f  ICapSM(hWnd, WM_
11800 43 41 50 5f 53 45 54 5f 4d 43 49 5f 44 45 56 49  CAP_SET_MCI_DEVI
11810 43 45 2c 20 30 2c 20 63 61 73 74 28 4c 50 41 52  CE, 0, cast(LPAR
11820 41 4d 29 73 7a 4e 61 6d 65 29 3b 20 7d 0a 42 4f  AM)szName); }.BO
11830 4f 4c 20 63 61 70 47 65 74 4d 43 49 44 65 76 69  OL capGetMCIDevi
11840 63 65 4e 61 6d 65 28 48 57 4e 44 20 68 57 6e 64  ceName(HWND hWnd
11850 2c 20 4c 50 54 53 54 52 20 73 7a 4e 61 6d 65 2c  , LPTSTR szName,
11860 20 57 50 41 52 41 4d 20 77 53 69 7a 65 29 09 7b   WPARAM wSize).{
11870 20 72 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f   return cast(BOO
11880 4c 29 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c  L)AVICapSM(hWnd,
11890 20 57 4d 5f 43 41 50 5f 47 45 54 5f 4d 43 49 5f   WM_CAP_GET_MCI_
118a0 44 45 56 49 43 45 2c 20 77 53 69 7a 65 2c 20 63  DEVICE, wSize, c
118b0 61 73 74 28 4c 50 41 52 41 4d 29 73 7a 4e 61 6d  ast(LPARAM)szNam
118c0 65 29 3b 20 7d 0a 0a 42 4f 4f 4c 20 63 61 70 50  e); }..BOOL capP
118d0 61 6c 65 74 74 65 4f 70 65 6e 28 48 57 4e 44 20  aletteOpen(HWND 
118e0 68 57 6e 64 2c 20 4c 50 54 53 54 52 20 73 7a 4e  hWnd, LPTSTR szN
118f0 61 6d 65 29 09 09 09 09 09 09 7b 20 72 65 74 75  ame)......{ retu
11900 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56 49  rn cast(BOOL)AVI
11910 43 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43  CapSM(hWnd, WM_C
11920 41 50 5f 50 41 4c 5f 4f 50 45 4e 2c 20 30 2c 20  AP_PAL_OPEN, 0, 
11930 63 61 73 74 28 4c 50 41 52 41 4d 29 73 7a 4e 61  cast(LPARAM)szNa
11940 6d 65 29 3b 20 7d 0a 42 4f 4f 4c 20 63 61 70 50  me); }.BOOL capP
11950 61 6c 65 74 74 65 53 61 76 65 28 48 57 4e 44 20  aletteSave(HWND 
11960 68 57 6e 64 2c 20 4c 50 54 53 54 52 20 73 7a 4e  hWnd, LPTSTR szN
11970 61 6d 65 29 09 09 09 09 09 09 7b 20 72 65 74 75  ame)......{ retu
11980 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56 49  rn cast(BOOL)AVI
11990 43 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f 43  CapSM(hWnd, WM_C
119a0 41 50 5f 50 41 4c 5f 53 41 56 45 2c 20 30 2c 20  AP_PAL_SAVE, 0, 
119b0 63 61 73 74 28 4c 50 41 52 41 4d 29 73 7a 4e 61  cast(LPARAM)szNa
119c0 6d 65 29 3b 20 7d 0a 42 4f 4f 4c 20 63 61 70 50  me); }.BOOL capP
119d0 61 6c 65 74 74 65 50 61 73 74 65 28 48 57 4e 44  alettePaste(HWND
119e0 20 68 57 6e 64 29 09 09 09 09 09 09 09 09 09 09   hWnd)..........
119f0 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 42 4f  { return cast(BO
11a00 4f 4c 29 41 56 49 43 61 70 53 4d 28 68 57 6e 64  OL)AVICapSM(hWnd
11a10 2c 20 57 4d 5f 43 41 50 5f 50 41 4c 5f 50 41 53  , WM_CAP_PAL_PAS
11a20 54 45 2c 20 30 2c 20 30 29 3b 20 7d 0a 42 4f 4f  TE, 0, 0); }.BOO
11a30 4c 20 63 61 70 50 61 6c 65 74 74 65 41 75 74 6f  L capPaletteAuto
11a40 28 48 57 4e 44 20 68 57 6e 64 2c 20 57 50 41 52  (HWND hWnd, WPAR
11a50 41 4d 20 69 46 72 61 6d 65 73 2c 20 4c 50 41 52  AM iFrames, LPAR
11a60 41 4d 20 69 43 6f 6c 6f 72 73 29 09 09 7b 20 72  AM iColors)..{ r
11a70 65 74 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29  eturn cast(BOOL)
11a80 41 56 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57  AVICapSM(hWnd, W
11a90 4d 5f 43 41 50 5f 50 41 4c 5f 41 55 54 4f 43 52  M_CAP_PAL_AUTOCR
11aa0 45 41 54 45 2c 20 69 46 72 61 6d 65 73 2c 20 69  EATE, iFrames, i
11ab0 43 6f 6c 6f 72 73 29 3b 20 7d 0a 42 4f 4f 4c 20  Colors); }.BOOL 
11ac0 63 61 70 50 61 6c 65 74 74 65 4d 61 6e 75 61 6c  capPaletteManual
11ad0 28 48 57 4e 44 20 68 57 6e 64 2c 20 57 50 41 52  (HWND hWnd, WPAR
11ae0 41 4d 20 66 47 72 61 62 2c 20 4c 50 41 52 41 4d  AM fGrab, LPARAM
11af0 20 69 43 6f 6c 6f 72 73 29 09 09 7b 20 72 65 74   iColors)..{ ret
11b00 75 72 6e 20 63 61 73 74 28 42 4f 4f 4c 29 41 56  urn cast(BOOL)AV
11b10 49 43 61 70 53 4d 28 68 57 6e 64 2c 20 57 4d 5f  ICapSM(hWnd, WM_
11b20 43 41 50 5f 50 41 4c 5f 4d 41 4e 55 41 4c 43 52  CAP_PAL_MANUALCR
11b30 45 41 54 45 2c 20 66 47 72 61 62 2c 20 69 43 6f  EATE, fGrab, iCo
11b40 6c 6f 72 73 29 3b 20 7d 0a 0a 2f 2a 2a 0a 20 2a  lors); }../**. *
11b50 20 73 74 72 75 63 74 73 0a 20 2a 2f 0a 0a 73 74   structs. */..st
11b60 72 75 63 74 20 43 41 50 44 52 49 56 45 52 43 41  ruct CAPDRIVERCA
11b70 50 53 20 7b 0a 09 55 49 4e 54 09 77 44 65 76 69  PS {..UINT.wDevi
11b80 63 65 49 6e 64 65 78 3b 0a 09 42 4f 4f 4c 09 66  ceIndex;..BOOL.f
11b90 48 61 73 4f 76 65 72 6c 61 79 3b 0a 09 42 4f 4f  HasOverlay;..BOO
11ba0 4c 09 66 48 61 73 44 6c 67 56 69 64 65 6f 53 6f  L.fHasDlgVideoSo
11bb0 75 72 63 65 3b 0a 09 42 4f 4f 4c 09 66 48 61 73  urce;..BOOL.fHas
11bc0 44 6c 67 56 69 64 65 6f 46 6f 72 6d 61 74 3b 0a  DlgVideoFormat;.
11bd0 09 42 4f 4f 4c 09 66 48 61 73 44 6c 67 56 69 64  .BOOL.fHasDlgVid
11be0 65 6f 44 69 73 70 6c 61 79 3b 0a 09 42 4f 4f 4c  eoDisplay;..BOOL
11bf0 09 66 43 61 70 74 75 72 65 49 6e 69 74 69 61 6c  .fCaptureInitial
11c00 69 7a 65 64 3b 0a 09 42 4f 4f 4c 09 66 44 72 69  ized;..BOOL.fDri
11c10 76 65 72 53 75 70 70 6c 69 65 73 50 61 6c 65 74  verSuppliesPalet
11c20 74 65 73 3b 0a 09 48 41 4e 44 4c 45 09 68 56 69  tes;..HANDLE.hVi
11c30 64 65 6f 49 6e 3b 0a 09 48 41 4e 44 4c 45 09 68  deoIn;..HANDLE.h
11c40 56 69 64 65 6f 4f 75 74 3b 0a 09 48 41 4e 44 4c  VideoOut;..HANDL
11c50 45 09 68 56 69 64 65 6f 45 78 74 49 6e 3b 0a 09  E.hVideoExtIn;..
11c60 48 41 4e 44 4c 45 09 68 56 69 64 65 6f 45 78 74  HANDLE.hVideoExt
11c70 4f 75 74 3b 0a 7d 0a 61 6c 69 61 73 20 43 41 50  Out;.}.alias CAP
11c80 44 52 49 56 45 52 43 41 50 53 2a 20 50 43 41 50  DRIVERCAPS* PCAP
11c90 44 52 49 56 45 52 43 41 50 53 2c 20 4c 50 43 41  DRIVERCAPS, LPCA
11ca0 50 44 52 49 56 45 52 43 41 50 53 3b 0a 0a 73 74  PDRIVERCAPS;..st
11cb0 72 75 63 74 20 43 41 50 53 54 41 54 55 53 20 7b  ruct CAPSTATUS {
11cc0 0a 09 55 49 4e 54 09 09 75 69 49 6d 61 67 65 57  ..UINT..uiImageW
11cd0 69 64 74 68 3b 0a 09 55 49 4e 54 09 09 75 69 49  idth;..UINT..uiI
11ce0 6d 61 67 65 48 65 69 67 68 74 3b 0a 09 42 4f 4f  mageHeight;..BOO
11cf0 4c 09 09 66 4c 69 76 65 57 69 6e 64 6f 77 3b 0a  L..fLiveWindow;.
11d00 09 42 4f 4f 4c 09 09 66 4f 76 65 72 6c 61 79 57  .BOOL..fOverlayW
11d10 69 6e 64 6f 77 3b 0a 09 42 4f 4f 4c 09 09 66 53  indow;..BOOL..fS
11d20 63 61 6c 65 3b 0a 09 50 4f 49 4e 54 09 09 70 74  cale;..POINT..pt
11d30 53 63 72 6f 6c 6c 3b 0a 09 42 4f 4f 4c 09 09 66  Scroll;..BOOL..f
11d40 55 73 69 6e 67 44 65 66 61 75 6c 74 50 61 6c 65  UsingDefaultPale
11d50 74 74 65 3b 0a 09 42 4f 4f 4c 09 09 66 41 75 64  tte;..BOOL..fAud
11d60 69 6f 48 61 72 64 77 61 72 65 3b 0a 09 42 4f 4f  ioHardware;..BOO
11d70 4c 09 09 66 43 61 70 46 69 6c 65 45 78 69 73 74  L..fCapFileExist
11d80 73 3b 0a 09 44 57 4f 52 44 09 09 64 77 43 75 72  s;..DWORD..dwCur
11d90 72 65 6e 74 56 69 64 65 6f 46 72 61 6d 65 3b 0a  rentVideoFrame;.
11da0 09 44 57 4f 52 44 09 09 64 77 43 75 72 72 65 6e  .DWORD..dwCurren
11db0 74 56 69 64 65 6f 46 72 61 6d 65 73 44 72 6f 70  tVideoFramesDrop
11dc0 70 65 64 3b 0a 09 44 57 4f 52 44 09 09 64 77 43  ped;..DWORD..dwC
11dd0 75 72 72 65 6e 74 57 61 76 65 53 61 6d 70 6c 65  urrentWaveSample
11de0 73 3b 0a 09 44 57 4f 52 44 09 09 64 77 43 75 72  s;..DWORD..dwCur
11df0 72 65 6e 74 54 69 6d 65 45 6c 61 70 73 65 64 4d  rentTimeElapsedM
11e00 53 3b 0a 09 48 50 41 4c 45 54 54 45 09 68 50 61  S;..HPALETTE.hPa
11e10 6c 43 75 72 72 65 6e 74 3b 0a 09 42 4f 4f 4c 09  lCurrent;..BOOL.
11e20 09 66 43 61 70 74 75 72 69 6e 67 4e 6f 77 3b 0a  .fCapturingNow;.
11e30 09 44 57 4f 52 44 09 09 64 77 52 65 74 75 72 6e  .DWORD..dwReturn
11e40 3b 0a 09 55 49 4e 54 09 09 77 4e 75 6d 56 69 64  ;..UINT..wNumVid
11e50 65 6f 41 6c 6c 6f 63 61 74 65 64 3b 0a 09 55 49  eoAllocated;..UI
11e60 4e 54 09 09 77 4e 75 6d 41 75 64 69 6f 41 6c 6c  NT..wNumAudioAll
11e70 6f 63 61 74 65 64 3b 0a 7d 0a 61 6c 69 61 73 20  ocated;.}.alias 
11e80 43 41 50 53 54 41 54 55 53 2a 20 50 43 41 50 53  CAPSTATUS* PCAPS
11e90 54 41 54 55 53 2c 20 4c 50 43 41 50 53 54 41 54  TATUS, LPCAPSTAT
11ea0 55 53 3b 0a 0a 73 74 72 75 63 74 20 43 41 50 54  US;..struct CAPT
11eb0 55 52 45 50 41 52 4d 53 20 7b 0a 09 44 57 4f 52  UREPARMS {..DWOR
11ec0 44 09 64 77 52 65 71 75 65 73 74 4d 69 63 72 6f  D.dwRequestMicro
11ed0 53 65 63 50 65 72 46 72 61 6d 65 3b 0a 09 42 4f  SecPerFrame;..BO
11ee0 4f 4c 09 66 4d 61 6b 65 55 73 65 72 48 69 74 4f  OL.fMakeUserHitO
11ef0 4b 54 6f 43 61 70 74 75 72 65 3b 0a 09 55 49 4e  KToCapture;..UIN
11f00 54 09 77 50 65 72 63 65 6e 74 44 72 6f 70 46 6f  T.wPercentDropFo
11f10 72 45 72 72 6f 72 3b 0a 09 42 4f 4f 4c 09 66 59  rError;..BOOL.fY
11f20 69 65 6c 64 3b 0a 09 44 57 4f 52 44 09 64 77 49  ield;..DWORD.dwI
11f30 6e 64 65 78 53 69 7a 65 3b 0a 09 55 49 4e 54 09  ndexSize;..UINT.
11f40 77 43 68 75 6e 6b 47 72 61 6e 75 6c 61 72 69 74  wChunkGranularit
11f50 79 3b 0a 09 42 4f 4f 4c 09 66 55 73 69 6e 67 44  y;..BOOL.fUsingD
11f60 4f 53 4d 65 6d 6f 72 79 3b 0a 09 55 49 4e 54 09  OSMemory;..UINT.
11f70 77 4e 75 6d 56 69 64 65 6f 52 65 71 75 65 73 74  wNumVideoRequest
11f80 65 64 3b 0a 09 42 4f 4f 4c 09 66 43 61 70 74 75  ed;..BOOL.fCaptu
11f90 72 65 41 75 64 69 6f 3b 0a 09 55 49 4e 54 09 77  reAudio;..UINT.w
11fa0 4e 75 6d 41 75 64 69 6f 52 65 71 75 65 73 74 65  NumAudioRequeste
11fb0 64 3b 0a 09 55 49 4e 54 09 76 4b 65 79 41 62 6f  d;..UINT.vKeyAbo
11fc0 72 74 3b 0a 09 42 4f 4f 4c 09 66 41 62 6f 72 74  rt;..BOOL.fAbort
11fd0 4c 65 66 74 4d 6f 75 73 65 3b 0a 09 42 4f 4f 4c  LeftMouse;..BOOL
11fe0 09 66 41 62 6f 72 74 52 69 67 68 74 4d 6f 75 73  .fAbortRightMous
11ff0 65 3b 0a 09 42 4f 4f 4c 09 66 4c 69 6d 69 74 45  e;..BOOL.fLimitE
12000 6e 61 62 6c 65 64 3b 0a 09 55 49 4e 54 09 77 54  nabled;..UINT.wT
12010 69 6d 65 4c 69 6d 69 74 3b 0a 09 42 4f 4f 4c 09  imeLimit;..BOOL.
12020 66 4d 43 49 43 6f 6e 74 72 6f 6c 3b 0a 09 42 4f  fMCIControl;..BO
12030 4f 4c 09 66 53 74 65 70 4d 43 49 44 65 76 69 63  OL.fStepMCIDevic
12040 65 3b 0a 09 44 57 4f 52 44 09 64 77 4d 43 49 53  e;..DWORD.dwMCIS
12050 74 61 72 74 54 69 6d 65 3b 0a 09 44 57 4f 52 44  tartTime;..DWORD
12060 09 64 77 4d 43 49 53 74 6f 70 54 69 6d 65 3b 0a  .dwMCIStopTime;.
12070 09 42 4f 4f 4c 09 66 53 74 65 70 43 61 70 74 75  .BOOL.fStepCaptu
12080 72 65 41 74 32 78 3b 0a 09 55 49 4e 54 09 77 53  reAt2x;..UINT.wS
12090 74 65 70 43 61 70 74 75 72 65 41 76 65 72 61 67  tepCaptureAverag
120a0 65 46 72 61 6d 65 73 3b 0a 09 44 57 4f 52 44 09  eFrames;..DWORD.
120b0 64 77 41 75 64 69 6f 42 75 66 66 65 72 53 69 7a  dwAudioBufferSiz
120c0 65 3b 0a 09 42 4f 4f 4c 09 66 44 69 73 61 62 6c  e;..BOOL.fDisabl
120d0 65 57 72 69 74 65 43 61 63 68 65 3b 0a 09 55 49  eWriteCache;..UI
120e0 4e 54 09 41 56 53 74 72 65 61 6d 4d 61 73 74 65  NT.AVStreamMaste
120f0 72 3b 0a 7d 0a 61 6c 69 61 73 20 43 41 50 54 55  r;.}.alias CAPTU
12100 52 45 50 41 52 4d 53 2a 20 50 43 41 50 54 55 52  REPARMS* PCAPTUR
12110 45 50 41 52 4d 53 2c 20 4c 50 43 41 50 54 55 52  EPARMS, LPCAPTUR
12120 45 50 41 52 4d 53 3b 0a 0a 63 6f 6e 73 74 20 41  EPARMS;..const A
12130 56 53 54 52 45 41 4d 4d 41 53 54 45 52 5f 41 55  VSTREAMMASTER_AU
12140 44 49 4f 20 3d 20 30 3b 0a 63 6f 6e 73 74 20 41  DIO = 0;.const A
12150 56 53 54 52 45 41 4d 4d 41 53 54 45 52 5f 4e 4f  VSTREAMMASTER_NO
12160 4e 45 20 20 3d 20 31 3b 0a 0a 73 74 72 75 63 74  NE  = 1;..struct
12170 20 43 41 50 49 4e 46 4f 43 48 55 4e 4b 20 7b 0a   CAPINFOCHUNK {.
12180 09 46 4f 55 52 43 43 09 66 63 63 49 6e 66 6f 49  .FOURCC.fccInfoI
12190 44 3b 0a 09 4c 50 56 4f 49 44 09 6c 70 44 61 74  D;..LPVOID.lpDat
121a0 61 3b 0a 09 4c 4f 4e 47 09 63 62 44 61 74 61 3b  a;..LONG.cbData;
121b0 0a 7d 0a 61 6c 69 61 73 20 43 41 50 49 4e 46 4f  .}.alias CAPINFO
121c0 43 48 55 4e 4b 2a 20 50 43 41 50 49 4e 46 4f 43  CHUNK* PCAPINFOC
121d0 48 55 4e 4b 2c 20 4c 50 43 41 50 49 4e 46 4f 43  HUNK, LPCAPINFOC
121e0 48 55 4e 4b 3b 0a 0a 2f 2f 20 43 61 6c 6c 62 61  HUNK;..// Callba
121f0 63 6b 20 44 65 66 69 6e 69 74 69 6f 6e 73 0a 0a  ck Definitions..
12200 65 78 74 65 72 6e 20 28 57 69 6e 64 6f 77 73 29  extern (Windows)
12210 20 7b 0a 09 61 6c 69 61 73 20 4c 52 45 53 55 4c   {..alias LRESUL
12220 54 20 66 75 6e 63 74 69 6f 6e 28 48 57 4e 44 20  T function(HWND 
12230 68 57 6e 64 29 20 43 41 50 59 49 45 4c 44 43 41  hWnd) CAPYIELDCA
12240 4c 4c 42 41 43 4b 3b 0a 09 61 6c 69 61 73 20 4c  LLBACK;..alias L
12250 52 45 53 55 4c 54 20 66 75 6e 63 74 69 6f 6e 28  RESULT function(
12260 48 57 4e 44 20 68 57 6e 64 2c 20 69 6e 74 20 6e  HWND hWnd, int n
12270 49 44 2c 20 4c 50 43 57 53 54 52 20 6c 70 73 7a  ID, LPCWSTR lpsz
12280 29 20 43 41 50 53 54 41 54 55 53 43 41 4c 4c 42  ) CAPSTATUSCALLB
12290 41 43 4b 57 3b 0a 09 61 6c 69 61 73 20 4c 52 45  ACKW;..alias LRE
122a0 53 55 4c 54 20 66 75 6e 63 74 69 6f 6e 28 48 57  SULT function(HW
122b0 4e 44 20 68 57 6e 64 2c 20 69 6e 74 20 6e 49 44  ND hWnd, int nID
122c0 2c 20 4c 50 43 57 53 54 52 20 6c 70 73 7a 29 20  , LPCWSTR lpsz) 
122d0 43 41 50 45 52 52 4f 52 43 41 4c 4c 42 41 43 4b  CAPERRORCALLBACK
122e0 57 3b 0a 09 61 6c 69 61 73 20 4c 52 45 53 55 4c  W;..alias LRESUL
122f0 54 20 66 75 6e 63 74 69 6f 6e 28 48 57 4e 44 20  T function(HWND 
12300 68 57 6e 64 2c 20 69 6e 74 20 6e 49 44 2c 20 4c  hWnd, int nID, L
12310 50 43 53 54 52 20 6c 70 73 7a 29 20 43 41 50 53  PCSTR lpsz) CAPS
12320 54 41 54 55 53 43 41 4c 4c 42 41 43 4b 41 3b 0a  TATUSCALLBACKA;.
12330 09 61 6c 69 61 73 20 4c 52 45 53 55 4c 54 20 66  .alias LRESULT f
12340 75 6e 63 74 69 6f 6e 28 48 57 4e 44 20 68 57 6e  unction(HWND hWn
12350 64 2c 20 69 6e 74 20 6e 49 44 2c 20 4c 50 43 53  d, int nID, LPCS
12360 54 52 20 6c 70 73 7a 29 20 43 41 50 45 52 52 4f  TR lpsz) CAPERRO
12370 52 43 41 4c 4c 42 41 43 4b 41 3b 0a 7d 0a 0a 76  RCALLBACKA;.}..v
12380 65 72 73 69 6f 6e 28 55 6e 69 63 6f 64 65 29 20  ersion(Unicode) 
12390 7b 0a 09 61 6c 69 61 73 20 43 41 50 53 54 41 54  {..alias CAPSTAT
123a0 55 53 43 41 4c 4c 42 41 43 4b 57 09 43 41 50 53  USCALLBACKW.CAPS
123b0 54 41 54 55 53 43 41 4c 4c 42 41 43 4b 3b 0a 09  TATUSCALLBACK;..
123c0 61 6c 69 61 73 20 43 41 50 45 52 52 4f 52 43 41  alias CAPERRORCA
123d0 4c 4c 42 41 43 4b 57 09 09 43 41 50 45 52 52 4f  LLBACKW..CAPERRO
123e0 52 43 41 4c 4c 42 41 43 4b 3b 0a 7d 20 65 6c 73  RCALLBACK;.} els
123f0 65 20 7b 20 2f 2f 20 55 6e 69 63 6f 64 65 0a 09  e { // Unicode..
12400 61 6c 69 61 73 20 43 41 50 53 54 41 54 55 53 43  alias CAPSTATUSC
12410 41 4c 4c 42 41 43 4b 41 09 43 41 50 53 54 41 54  ALLBACKA.CAPSTAT
12420 55 53 43 41 4c 4c 42 41 43 4b 3b 0a 09 61 6c 69  USCALLBACK;..ali
12430 61 73 20 43 41 50 45 52 52 4f 52 43 41 4c 4c 42  as CAPERRORCALLB
12440 41 43 4b 41 09 09 43 41 50 45 52 52 4f 52 43 41  ACKA..CAPERRORCA
12450 4c 4c 42 41 43 4b 3b 0a 7d 0a 0a 65 78 74 65 72  LLBACK;.}..exter
12460 6e 20 28 57 69 6e 64 6f 77 73 29 20 7b 0a 09 61  n (Windows) {..a
12470 6c 69 61 73 20 4c 52 45 53 55 4c 54 20 66 75 6e  lias LRESULT fun
12480 63 74 69 6f 6e 28 48 57 4e 44 20 68 57 6e 64 2c  ction(HWND hWnd,
12490 20 4c 50 56 49 44 45 4f 48 44 52 20 6c 70 56 48   LPVIDEOHDR lpVH
124a0 64 72 29 20 43 41 50 56 49 44 45 4f 43 41 4c 4c  dr) CAPVIDEOCALL
124b0 42 41 43 4b 3b 0a 09 61 6c 69 61 73 20 4c 52 45  BACK;..alias LRE
124c0 53 55 4c 54 20 66 75 6e 63 74 69 6f 6e 28 48 57  SULT function(HW
124d0 4e 44 20 68 57 6e 64 2c 20 4c 50 57 41 56 45 48  ND hWnd, LPWAVEH
124e0 44 52 20 6c 70 57 48 64 72 29 20 43 41 50 57 41  DR lpWHdr) CAPWA
124f0 56 45 43 41 4c 4c 42 41 43 4b 3b 0a 09 61 6c 69  VECALLBACK;..ali
12500 61 73 20 4c 52 45 53 55 4c 54 20 66 75 6e 63 74  as LRESULT funct
12510 69 6f 6e 28 48 57 4e 44 20 68 57 6e 64 2c 20 69  ion(HWND hWnd, i
12520 6e 74 20 6e 53 74 61 74 65 29 20 43 41 50 43 4f  nt nState) CAPCO
12530 4e 54 52 4f 4c 43 41 4c 4c 42 41 43 4b 3b 0a 7d  NTROLCALLBACK;.}
12540 0a 0a 2f 2f 20 20 43 61 70 43 6f 6e 74 72 6f 6c  ..//  CapControl
12550 43 61 6c 6c 62 61 63 6b 20 73 74 61 74 65 73 0a  Callback states.
12560 63 6f 6e 73 74 20 43 4f 4e 54 52 4f 4c 43 41 4c  const CONTROLCAL
12570 4c 42 41 43 4b 5f 50 52 45 52 4f 4c 4c 09 3d 20  LBACK_PREROLL.= 
12580 31 3b 0a 63 6f 6e 73 74 20 43 4f 4e 54 52 4f 4c  1;.const CONTROL
12590 43 41 4c 4c 42 41 43 4b 5f 43 41 50 54 55 52 49  CALLBACK_CAPTURI
125a0 4e 47 09 3d 20 32 3b 0a 0a 65 78 74 65 72 6e 20  NG.= 2;..extern 
125b0 28 57 69 6e 64 6f 77 73 29 20 7b 0a 09 48 57 4e  (Windows) {..HWN
125c0 44 20 63 61 70 43 72 65 61 74 65 43 61 70 74 75  D capCreateCaptu
125d0 72 65 57 69 6e 64 6f 77 41 28 4c 50 43 53 54 52  reWindowA(LPCSTR
125e0 20 6c 70 73 7a 57 69 6e 64 6f 77 4e 61 6d 65 2c   lpszWindowName,
125f0 20 44 57 4f 52 44 20 64 77 53 74 79 6c 65 2c 20   DWORD dwStyle, 
12600 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 69 6e  int x, int y, in
12610 74 20 6e 57 69 64 74 68 2c 20 69 6e 74 20 6e 48  t nWidth, int nH
12620 65 69 67 68 74 2c 20 48 57 4e 44 20 68 77 6e 64  eight, HWND hwnd
12630 50 61 72 65 6e 74 2c 20 69 6e 74 20 6e 49 44 29  Parent, int nID)
12640 3b 0a 09 42 4f 4f 4c 20 63 61 70 47 65 74 44 72  ;..BOOL capGetDr
12650 69 76 65 72 44 65 73 63 72 69 70 74 69 6f 6e 41  iverDescriptionA
12660 28 55 49 4e 54 20 77 44 72 69 76 65 72 49 6e 64  (UINT wDriverInd
12670 65 78 2c 20 4c 50 53 54 52 20 6c 70 73 7a 4e 61  ex, LPSTR lpszNa
12680 6d 65 2c 20 69 6e 74 20 63 62 4e 61 6d 65 2c 20  me, int cbName, 
12690 4c 50 53 54 52 20 6c 70 73 7a 56 65 72 2c 20 69  LPSTR lpszVer, i
126a0 6e 74 20 63 62 56 65 72 29 3b 0a 09 48 57 4e 44  nt cbVer);..HWND
126b0 20 63 61 70 43 72 65 61 74 65 43 61 70 74 75 72   capCreateCaptur
126c0 65 57 69 6e 64 6f 77 57 28 4c 50 43 57 53 54 52  eWindowW(LPCWSTR
126d0 20 6c 70 73 7a 57 69 6e 64 6f 77 4e 61 6d 65 2c   lpszWindowName,
126e0 20 44 57 4f 52 44 20 64 77 53 74 79 6c 65 2c 20   DWORD dwStyle, 
126f0 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 69 6e  int x, int y, in
12700 74 20 6e 57 69 64 74 68 2c 20 69 6e 74 20 6e 48  t nWidth, int nH
12710 65 69 67 68 74 2c 20 48 57 4e 44 20 68 77 6e 64  eight, HWND hwnd
12720 50 61 72 65 6e 74 2c 20 69 6e 74 20 6e 49 44 29  Parent, int nID)
12730 3b 0a 09 42 4f 4f 4c 20 63 61 70 47 65 74 44 72  ;..BOOL capGetDr
12740 69 76 65 72 44 65 73 63 72 69 70 74 69 6f 6e 57  iverDescriptionW
12750 28 55 49 4e 54 20 77 44 72 69 76 65 72 49 6e 64  (UINT wDriverInd
12760 65 78 2c 20 4c 50 57 53 54 52 20 6c 70 73 7a 4e  ex, LPWSTR lpszN
12770 61 6d 65 2c 20 69 6e 74 20 63 62 4e 61 6d 65 2c  ame, int cbName,
12780 20 4c 50 57 53 54 52 20 6c 70 73 7a 56 65 72 2c   LPWSTR lpszVer,
12790 20 69 6e 74 20 63 62 56 65 72 29 3b 0a 7d 0a 0a   int cbVer);.}..
127a0 76 65 72 73 69 6f 6e 28 55 6e 69 63 6f 64 65 29  version(Unicode)
127b0 20 7b 0a 09 61 6c 69 61 73 20 63 61 70 43 72 65   {..alias capCre
127c0 61 74 65 43 61 70 74 75 72 65 57 69 6e 64 6f 77  ateCaptureWindow
127d0 57 09 63 61 70 43 72 65 61 74 65 43 61 70 74 75  W.capCreateCaptu
127e0 72 65 57 69 6e 64 6f 77 3b 0a 09 61 6c 69 61 73  reWindow;..alias
127f0 20 63 61 70 47 65 74 44 72 69 76 65 72 44 65 73   capGetDriverDes
12800 63 72 69 70 74 69 6f 6e 57 09 63 61 70 47 65 74  criptionW.capGet
12810 44 72 69 76 65 72 44 65 73 63 72 69 70 74 69 6f  DriverDescriptio
12820 6e 3b 0a 7d 20 65 6c 73 65 20 7b 20 2f 2f 20 55  n;.} else { // U
12830 6e 69 63 6f 64 65 0a 09 61 6c 69 61 73 20 63 61  nicode..alias ca
12840 70 43 72 65 61 74 65 43 61 70 74 75 72 65 57 69  pCreateCaptureWi
12850 6e 64 6f 77 41 09 63 61 70 43 72 65 61 74 65 43  ndowA.capCreateC
12860 61 70 74 75 72 65 57 69 6e 64 6f 77 3b 0a 09 61  aptureWindow;..a
12870 6c 69 61 73 20 63 61 70 47 65 74 44 72 69 76 65  lias capGetDrive
12880 72 44 65 73 63 72 69 70 74 69 6f 6e 41 09 63 61  rDescriptionA.ca
12890 70 47 65 74 44 72 69 76 65 72 44 65 73 63 72 69  pGetDriverDescri
128a0 70 74 69 6f 6e 3b 0a 7d 0a 0a 2f 2f 20 4e 65 77  ption;.}..// New
128b0 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 63 68 75   Information chu
128c0 6e 6b 20 49 44 73 0a 63 6f 6e 73 74 20 69 6e 66  nk IDs.const inf
128d0 6f 74 79 70 65 44 49 47 49 54 49 5a 41 54 49 4f  otypeDIGITIZATIO
128e0 4e 5f 54 49 4d 45 09 3d 20 6d 6d 69 6f 46 4f 55  N_TIME.= mmioFOU
128f0 52 43 43 21 28 27 49 27 2c 20 27 44 27 2c 20 27  RCC!('I', 'D', '
12900 49 27 2c 20 27 54 27 29 3b 0a 63 6f 6e 73 74 20  I', 'T');.const 
12910 69 6e 66 6f 74 79 70 65 53 4d 50 54 45 5f 54 49  infotypeSMPTE_TI
12920 4d 45 09 09 3d 20 6d 6d 69 6f 46 4f 55 52 43 43  ME..= mmioFOURCC
12930 21 28 27 49 27 2c 20 27 53 27 2c 20 27 4d 27 2c  !('I', 'S', 'M',
12940 20 27 50 27 29 3b 0a 0a 2f 2f 20 73 74 61 74 75   'P');..// statu
12950 73 20 61 6e 64 20 65 72 72 6f 72 20 63 61 6c 6c  s and error call
12960 62 61 63 6b 73 0a 65 6e 75 6d 20 7b 0a 09 49 44  backs.enum {..ID
12970 53 5f 43 41 50 5f 42 45 47 49 4e 09 09 09 09 09  S_CAP_BEGIN.....
12980 3d 20 33 30 30 2c 0a 09 49 44 53 5f 43 41 50 5f  = 300,..IDS_CAP_
12990 45 4e 44 09 09 09 09 09 09 3d 20 33 30 31 2c 0a  END......= 301,.
129a0 0a 09 49 44 53 5f 43 41 50 5f 49 4e 46 4f 09 09  ..IDS_CAP_INFO..
129b0 09 09 09 3d 20 34 30 31 2c 0a 09 49 44 53 5f 43  ...= 401,..IDS_C
129c0 41 50 5f 4f 55 54 4f 46 4d 45 4d 09 09 09 09 3d  AP_OUTOFMEM....=
129d0 20 34 30 32 2c 0a 09 49 44 53 5f 43 41 50 5f 46   402,..IDS_CAP_F
129e0 49 4c 45 45 58 49 53 54 53 09 09 09 09 3d 20 34  ILEEXISTS....= 4
129f0 30 33 2c 0a 09 49 44 53 5f 43 41 50 5f 45 52 52  03,..IDS_CAP_ERR
12a00 4f 52 50 41 4c 4f 50 45 4e 09 09 09 3d 20 34 30  ORPALOPEN...= 40
12a10 34 2c 0a 09 49 44 53 5f 43 41 50 5f 45 52 52 4f  4,..IDS_CAP_ERRO
12a20 52 50 41 4c 53 41 56 45 09 09 09 3d 20 34 30 35  RPALSAVE...= 405
12a30 2c 0a 09 49 44 53 5f 43 41 50 5f 45 52 52 4f 52  ,..IDS_CAP_ERROR
12a40 44 49 42 53 41 56 45 09 09 09 3d 20 34 30 36 2c  DIBSAVE...= 406,
12a50 0a 09 49 44 53 5f 43 41 50 5f 44 45 46 41 56 49  ..IDS_CAP_DEFAVI
12a60 45 58 54 09 09 09 09 3d 20 34 30 37 2c 0a 09 49  EXT....= 407,..I
12a70 44 53 5f 43 41 50 5f 44 45 46 50 41 4c 45 58 54  DS_CAP_DEFPALEXT
12a80 09 09 09 09 3d 20 34 30 38 2c 0a 09 49 44 53 5f  ....= 408,..IDS_
12a90 43 41 50 5f 43 41 4e 54 4f 50 45 4e 09 09 09 09  CAP_CANTOPEN....
12aa0 3d 20 34 30 39 2c 0a 09 49 44 53 5f 43 41 50 5f  = 409,..IDS_CAP_
12ab0 53 45 51 5f 4d 53 47 53 54 41 52 54 09 09 09 3d  SEQ_MSGSTART...=
12ac0 20 34 31 30 2c 0a 09 49 44 53 5f 43 41 50 5f 53   410,..IDS_CAP_S
12ad0 45 51 5f 4d 53 47 53 54 4f 50 09 09 09 09 3d 20  EQ_MSGSTOP....= 
12ae0 34 31 31 2c 0a 0a 09 49 44 53 5f 43 41 50 5f 56  411,...IDS_CAP_V
12af0 49 44 45 44 49 54 45 52 52 09 09 09 09 3d 20 34  IDEDITERR....= 4
12b00 31 32 2c 0a 09 49 44 53 5f 43 41 50 5f 52 45 41  12,..IDS_CAP_REA
12b10 44 4f 4e 4c 59 46 49 4c 45 09 09 09 3d 20 34 31  DONLYFILE...= 41
12b20 33 2c 0a 09 49 44 53 5f 43 41 50 5f 57 52 49 54  3,..IDS_CAP_WRIT
12b30 45 45 52 52 4f 52 09 09 09 09 3d 20 34 31 34 2c  EERROR....= 414,
12b40 0a 09 49 44 53 5f 43 41 50 5f 4e 4f 44 49 53 4b  ..IDS_CAP_NODISK
12b50 53 50 41 43 45 09 09 09 09 3d 20 34 31 35 2c 0a  SPACE....= 415,.
12b60 09 49 44 53 5f 43 41 50 5f 53 45 54 46 49 4c 45  .IDS_CAP_SETFILE
12b70 53 49 5a 45 09 09 09 09 3d 20 34 31 36 2c 0a 09  SIZE....= 416,..
12b80 49 44 53 5f 43 41 50 5f 53 41 56 45 41 53 50 45  IDS_CAP_SAVEASPE
12b90 52 43 45 4e 54 09 09 09 3d 20 34 31 37 2c 0a 0a  RCENT...= 417,..
12ba0 09 49 44 53 5f 43 41 50 5f 44 52 49 56 45 52 5f  .IDS_CAP_DRIVER_
12bb0 45 52 52 4f 52 09 09 09 3d 20 34 31 38 2c 0a 0a  ERROR...= 418,..
12bc0 09 49 44 53 5f 43 41 50 5f 57 41 56 45 5f 4f 50  .IDS_CAP_WAVE_OP
12bd0 45 4e 5f 45 52 52 4f 52 09 09 09 3d 20 34 31 39  EN_ERROR...= 419
12be0 2c 0a 09 49 44 53 5f 43 41 50 5f 57 41 56 45 5f  ,..IDS_CAP_WAVE_
12bf0 41 4c 4c 4f 43 5f 45 52 52 4f 52 09 09 3d 20 34  ALLOC_ERROR..= 4
12c00 32 30 2c 0a 09 49 44 53 5f 43 41 50 5f 57 41 56  20,..IDS_CAP_WAV
12c10 45 5f 50 52 45 50 41 52 45 5f 45 52 52 4f 52 09  E_PREPARE_ERROR.
12c20 09 3d 20 34 32 31 2c 0a 09 49 44 53 5f 43 41 50  .= 421,..IDS_CAP
12c30 5f 57 41 56 45 5f 41 44 44 5f 45 52 52 4f 52 09  _WAVE_ADD_ERROR.
12c40 09 09 3d 20 34 32 32 2c 0a 09 49 44 53 5f 43 41  ..= 422,..IDS_CA
12c50 50 5f 57 41 56 45 5f 53 49 5a 45 5f 45 52 52 4f  P_WAVE_SIZE_ERRO
12c60 52 09 09 09 3d 20 34 32 33 2c 0a 0a 09 49 44 53  R...= 423,...IDS
12c70 5f 43 41 50 5f 56 49 44 45 4f 5f 4f 50 45 4e 5f  _CAP_VIDEO_OPEN_
12c80 45 52 52 4f 52 09 09 3d 20 34 32 34 2c 0a 09 49  ERROR..= 424,..I
12c90 44 53 5f 43 41 50 5f 56 49 44 45 4f 5f 41 4c 4c  DS_CAP_VIDEO_ALL
12ca0 4f 43 5f 45 52 52 4f 52 09 09 3d 20 34 32 35 2c  OC_ERROR..= 425,
12cb0 0a 09 49 44 53 5f 43 41 50 5f 56 49 44 45 4f 5f  ..IDS_CAP_VIDEO_
12cc0 50 52 45 50 41 52 45 5f 45 52 52 4f 52 09 09 3d  PREPARE_ERROR..=
12cd0 20 34 32 36 2c 0a 09 49 44 53 5f 43 41 50 5f 56   426,..IDS_CAP_V
12ce0 49 44 45 4f 5f 41 44 44 5f 45 52 52 4f 52 09 09  IDEO_ADD_ERROR..
12cf0 09 3d 20 34 32 37 2c 0a 09 49 44 53 5f 43 41 50  .= 427,..IDS_CAP
12d00 5f 56 49 44 45 4f 5f 53 49 5a 45 5f 45 52 52 4f  _VIDEO_SIZE_ERRO
12d10 52 09 09 3d 20 34 32 38 2c 0a 0a 09 49 44 53 5f  R..= 428,...IDS_
12d20 43 41 50 5f 46 49 4c 45 5f 4f 50 45 4e 5f 45 52  CAP_FILE_OPEN_ER
12d30 52 4f 52 09 09 09 3d 20 34 32 39 2c 0a 09 49 44  ROR...= 429,..ID
12d40 53 5f 43 41 50 5f 46 49 4c 45 5f 57 52 49 54 45  S_CAP_FILE_WRITE
12d50 5f 45 52 52 4f 52 09 09 3d 20 34 33 30 2c 0a 09  _ERROR..= 430,..
12d60 49 44 53 5f 43 41 50 5f 52 45 43 4f 52 44 49 4e  IDS_CAP_RECORDIN
12d70 47 5f 45 52 52 4f 52 09 09 09 3d 20 34 33 31 2c  G_ERROR...= 431,
12d80 0a 09 49 44 53 5f 43 41 50 5f 52 45 43 4f 52 44  ..IDS_CAP_RECORD
12d90 49 4e 47 5f 45 52 52 4f 52 32 09 09 3d 20 34 33  ING_ERROR2..= 43
12da0 32 2c 0a 09 49 44 53 5f 43 41 50 5f 41 56 49 5f  2,..IDS_CAP_AVI_
12db0 49 4e 49 54 5f 45 52 52 4f 52 09 09 09 3d 20 34  INIT_ERROR...= 4
12dc0 33 33 2c 0a 09 49 44 53 5f 43 41 50 5f 4e 4f 5f  33,..IDS_CAP_NO_
12dd0 46 52 41 4d 45 5f 43 41 50 5f 45 52 52 4f 52 09  FRAME_CAP_ERROR.
12de0 09 3d 20 34 33 34 2c 0a 09 49 44 53 5f 43 41 50  .= 434,..IDS_CAP
12df0 5f 4e 4f 5f 50 41 4c 45 54 54 45 5f 57 41 52 4e  _NO_PALETTE_WARN
12e00 09 09 09 3d 20 34 33 35 2c 0a 09 49 44 53 5f 43  ...= 435,..IDS_C
12e10 41 50 5f 4d 43 49 5f 43 4f 4e 54 52 4f 4c 5f 45  AP_MCI_CONTROL_E
12e20 52 52 4f 52 09 09 3d 20 34 33 36 2c 0a 09 49 44  RROR..= 436,..ID
12e30 53 5f 43 41 50 5f 4d 43 49 5f 43 41 4e 54 5f 53  S_CAP_MCI_CANT_S
12e40 54 45 50 5f 45 52 52 4f 52 09 09 3d 20 34 33 37  TEP_ERROR..= 437
12e50 2c 0a 09 49 44 53 5f 43 41 50 5f 4e 4f 5f 41 55  ,..IDS_CAP_NO_AU
12e60 44 49 4f 5f 43 41 50 5f 45 52 52 4f 52 09 09 3d  DIO_CAP_ERROR..=
12e70 20 34 33 38 2c 0a 09 49 44 53 5f 43 41 50 5f 41   438,..IDS_CAP_A
12e80 56 49 5f 44 52 41 57 44 49 42 5f 45 52 52 4f 52  VI_DRAWDIB_ERROR
12e90 09 09 3d 20 34 33 39 2c 0a 09 49 44 53 5f 43 41  ..= 439,..IDS_CA
12ea0 50 5f 43 4f 4d 50 52 45 53 53 4f 52 5f 45 52 52  P_COMPRESSOR_ERR
12eb0 4f 52 09 09 3d 20 34 34 30 2c 0a 09 49 44 53 5f  OR..= 440,..IDS_
12ec0 43 41 50 5f 41 55 44 49 4f 5f 44 52 4f 50 5f 45  CAP_AUDIO_DROP_E
12ed0 52 52 4f 52 09 09 3d 20 34 34 31 2c 0a 09 49 44  RROR..= 441,..ID
12ee0 53 5f 43 41 50 5f 41 55 44 49 4f 5f 44 52 4f 50  S_CAP_AUDIO_DROP
12ef0 5f 43 4f 4d 50 45 52 52 4f 52 09 3d 20 34 34 32  _COMPERROR.= 442
12f00 2c 0a 0a 09 49 44 53 5f 43 41 50 5f 53 54 41 54  ,...IDS_CAP_STAT
12f10 5f 4c 49 56 45 5f 4d 4f 44 45 09 09 09 3d 20 35  _LIVE_MODE...= 5
12f20 30 30 2c 0a 09 49 44 53 5f 43 41 50 5f 53 54 41  00,..IDS_CAP_STA
12f30 54 5f 4f 56 45 52 4c 41 59 5f 4d 4f 44 45 09 09  T_OVERLAY_MODE..
12f40 3d 20 35 30 31 2c 0a 09 49 44 53 5f 43 41 50 5f  = 501,..IDS_CAP_
12f50 53 54 41 54 5f 43 41 50 5f 49 4e 49 54 09 09 09  STAT_CAP_INIT...
12f60 3d 20 35 30 32 2c 0a 09 49 44 53 5f 43 41 50 5f  = 502,..IDS_CAP_
12f70 53 54 41 54 5f 43 41 50 5f 46 49 4e 49 09 09 09  STAT_CAP_FINI...
12f80 3d 20 35 30 33 2c 0a 09 49 44 53 5f 43 41 50 5f  = 503,..IDS_CAP_
12f90 53 54 41 54 5f 50 41 4c 45 54 54 45 5f 42 55 49  STAT_PALETTE_BUI
12fa0 4c 44 09 09 3d 20 35 30 34 2c 0a 09 49 44 53 5f  LD..= 504,..IDS_
12fb0 43 41 50 5f 53 54 41 54 5f 4f 50 54 50 41 4c 5f  CAP_STAT_OPTPAL_
12fc0 42 55 49 4c 44 09 09 3d 20 35 30 35 2c 0a 09 49  BUILD..= 505,..I
12fd0 44 53 5f 43 41 50 5f 53 54 41 54 5f 49 5f 46 52  DS_CAP_STAT_I_FR
12fe0 41 4d 45 53 09 09 09 3d 20 35 30 36 2c 0a 09 49  AMES...= 506,..I
12ff0 44 53 5f 43 41 50 5f 53 54 41 54 5f 4c 5f 46 52  DS_CAP_STAT_L_FR
13000 41 4d 45 53 09 09 09 3d 20 35 30 37 2c 0a 09 49  AMES...= 507,..I
13010 44 53 5f 43 41 50 5f 53 54 41 54 5f 43 41 50 5f  DS_CAP_STAT_CAP_
13020 4c 5f 46 52 41 4d 45 53 09 09 3d 20 35 30 38 2c  L_FRAMES..= 508,
13030 0a 09 49 44 53 5f 43 41 50 5f 53 54 41 54 5f 43  ..IDS_CAP_STAT_C
13040 41 50 5f 41 55 44 49 4f 09 09 09 3d 20 35 30 39  AP_AUDIO...= 509
13050 2c 0a 09 49 44 53 5f 43 41 50 5f 53 54 41 54 5f  ,..IDS_CAP_STAT_
13060 56 49 44 45 4f 43 55 52 52 45 4e 54 09 09 3d 20  VIDEOCURRENT..= 
13070 35 31 30 2c 0a 09 49 44 53 5f 43 41 50 5f 53 54  510,..IDS_CAP_ST
13080 41 54 5f 56 49 44 45 4f 41 55 44 49 4f 09 09 09  AT_VIDEOAUDIO...
13090 3d 20 35 31 31 2c 0a 09 49 44 53 5f 43 41 50 5f  = 511,..IDS_CAP_
130a0 53 54 41 54 5f 56 49 44 45 4f 4f 4e 4c 59 09 09  STAT_VIDEOONLY..
130b0 09 3d 20 35 31 32 2c 0a 09 49 44 53 5f 43 41 50  .= 512,..IDS_CAP
130c0 5f 53 54 41 54 5f 46 52 41 4d 45 53 44 52 4f 50  _STAT_FRAMESDROP
130d0 50 45 44 09 09 3d 20 35 31 33 2c 0a 7d 0a 0a 2f  PED..= 513,.}../
130e0 2a 2a 0a 20 2a 20 46 69 6c 65 50 72 65 76 69 65  **. * FilePrevie
130f0 77 20 64 69 61 6c 6f 67 2e 0a 20 2a 2f 0a 0a 65  w dialog.. */..e
13100 78 74 65 72 6e 20 28 57 69 6e 64 6f 77 73 29 20  xtern (Windows) 
13110 7b 0a 09 42 4f 4f 4c 20 47 65 74 4f 70 65 6e 46  {..BOOL GetOpenF
13120 69 6c 65 4e 61 6d 65 50 72 65 76 69 65 77 41 28  ileNamePreviewA(
13130 4c 50 4f 50 45 4e 46 49 4c 45 4e 41 4d 45 41 20  LPOPENFILENAMEA 
13140 6c 70 6f 66 6e 29 3b 0a 09 42 4f 4f 4c 20 47 65  lpofn);..BOOL Ge
13150 74 53 61 76 65 46 69 6c 65 4e 61 6d 65 50 72 65  tSaveFileNamePre
13160 76 69 65 77 41 28 4c 50 4f 50 45 4e 46 49 4c 45  viewA(LPOPENFILE
13170 4e 41 4d 45 41 20 6c 70 6f 66 6e 29 3b 0a 09 42  NAMEA lpofn);..B
13180 4f 4f 4c 20 47 65 74 4f 70 65 6e 46 69 6c 65 4e  OOL GetOpenFileN
13190 61 6d 65 50 72 65 76 69 65 77 57 28 4c 50 4f 50  amePreviewW(LPOP
131a0 45 4e 46 49 4c 45 4e 41 4d 45 57 20 6c 70 6f 66  ENFILENAMEW lpof
131b0 6e 29 3b 0a 09 42 4f 4f 4c 20 47 65 74 53 61 76  n);..BOOL GetSav
131c0 65 46 69 6c 65 4e 61 6d 65 50 72 65 76 69 65 77  eFileNamePreview
131d0 57 28 4c 50 4f 50 45 4e 46 49 4c 45 4e 41 4d 45  W(LPOPENFILENAME
131e0 57 20 6c 70 6f 66 6e 29 3b 0a 7d 0a 0a 76 65 72  W lpofn);.}..ver
131f0 73 69 6f 6e 28 55 6e 69 63 6f 64 65 29 20 7b 0a  sion(Unicode) {.
13200 09 61 6c 69 61 73 20 47 65 74 4f 70 65 6e 46 69  .alias GetOpenFi
13210 6c 65 4e 61 6d 65 50 72 65 76 69 65 77 57 09 47  leNamePreviewW.G
13220 65 74 4f 70 65 6e 46 69 6c 65 4e 61 6d 65 50 72  etOpenFileNamePr
13230 65 76 69 65 77 3b 0a 09 61 6c 69 61 73 20 47 65  eview;..alias Ge
13240 74 53 61 76 65 46 69 6c 65 4e 61 6d 65 50 72 65  tSaveFileNamePre
13250 76 69 65 77 57 09 47 65 74 53 61 76 65 46 69 6c  viewW.GetSaveFil
13260 65 4e 61 6d 65 50 72 65 76 69 65 77 3b 0a 7d 20  eNamePreview;.} 
13270 65 6c 73 65 20 7b 20 2f 2f 20 55 6e 69 63 6f 64  else { // Unicod
13280 65 0a 09 61 6c 69 61 73 20 47 65 74 4f 70 65 6e  e..alias GetOpen
13290 46 69 6c 65 4e 61 6d 65 50 72 65 76 69 65 77 41  FileNamePreviewA
132a0 09 47 65 74 4f 70 65 6e 46 69 6c 65 4e 61 6d 65  .GetOpenFileName
132b0 50 72 65 76 69 65 77 3b 0a 09 61 6c 69 61 73 20  Preview;..alias 
132c0 47 65 74 53 61 76 65 46 69 6c 65 4e 61 6d 65 50  GetSaveFileNameP
132d0 72 65 76 69 65 77 41 09 47 65 74 53 61 76 65 46  reviewA.GetSaveF
132e0 69 6c 65 4e 61 6d 65 50 72 65 76 69 65 77 3b 0a  ileNamePreview;.
132f0 7d 0a                                            }.