vfw.h 75 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _INC_VFW
  7. #define _INC_VFW
  8. #include <_mingw_unicode.h>
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. #define VFWAPI WINAPI
  13. #define VFWAPIV WINAPIV
  14. #define VFWAPI_INLINE WINAPI
  15. DWORD WINAPI VideoForWindowsVersion(void);
  16. LONG WINAPI InitVFW(void);
  17. LONG WINAPI TermVFW(void);
  18. #ifdef __cplusplus
  19. }
  20. #endif
  21. #if !defined(_INC_MMSYSTEM) && (!defined(NOVIDEO) || !defined(NOAVICAP))
  22. #include <mmsystem.h>
  23. #endif
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. #ifndef MKFOURCC
  28. #define MKFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))
  29. #endif
  30. #if !defined(_INC_MMSYSTEM)
  31. #define mmioFOURCC MKFOURCC
  32. #endif
  33. #ifndef NOCOMPMAN
  34. #define ICVERSION 0x0104
  35. DECLARE_HANDLE(HIC);
  36. #define BI_1632 0x32333631
  37. #ifndef mmioFOURCC
  38. #define mmioFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))
  39. #endif
  40. #ifndef aviTWOCC
  41. #define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
  42. #endif
  43. #ifndef ICTYPE_VIDEO
  44. #define ICTYPE_VIDEO mmioFOURCC('v','i','d','c')
  45. #define ICTYPE_AUDIO mmioFOURCC('a','u','d','c')
  46. #endif
  47. #ifndef ICERR_OK
  48. #define ICERR_OK __MSABI_LONG(0)
  49. #define ICERR_DONTDRAW __MSABI_LONG(1)
  50. #define ICERR_NEWPALETTE __MSABI_LONG(2)
  51. #define ICERR_GOTOKEYFRAME __MSABI_LONG(3)
  52. #define ICERR_STOPDRAWING __MSABI_LONG(4)
  53. #define ICERR_UNSUPPORTED __MSABI_LONG(-1)
  54. #define ICERR_BADFORMAT __MSABI_LONG(-2)
  55. #define ICERR_MEMORY __MSABI_LONG(-3)
  56. #define ICERR_INTERNAL __MSABI_LONG(-4)
  57. #define ICERR_BADFLAGS __MSABI_LONG(-5)
  58. #define ICERR_BADPARAM __MSABI_LONG(-6)
  59. #define ICERR_BADSIZE __MSABI_LONG(-7)
  60. #define ICERR_BADHANDLE __MSABI_LONG(-8)
  61. #define ICERR_CANTUPDATE __MSABI_LONG(-9)
  62. #define ICERR_ABORT __MSABI_LONG(-10)
  63. #define ICERR_ERROR __MSABI_LONG(-100)
  64. #define ICERR_BADBITDEPTH __MSABI_LONG(-200)
  65. #define ICERR_BADIMAGESIZE __MSABI_LONG(-201)
  66. #define ICERR_CUSTOM __MSABI_LONG(-400)
  67. #endif
  68. #ifndef ICMODE_COMPRESS
  69. #define ICMODE_COMPRESS 1
  70. #define ICMODE_DECOMPRESS 2
  71. #define ICMODE_FASTDECOMPRESS 3
  72. #define ICMODE_QUERY 4
  73. #define ICMODE_FASTCOMPRESS 5
  74. #define ICMODE_DRAW 8
  75. #endif
  76. #define AVIIF_LIST __MSABI_LONG(0x00000001)
  77. #define AVIIF_TWOCC __MSABI_LONG(0x00000002)
  78. #define AVIIF_KEYFRAME __MSABI_LONG(0x00000010)
  79. #define ICQUALITY_LOW 0
  80. #define ICQUALITY_HIGH 10000
  81. #define ICQUALITY_DEFAULT -1
  82. #define ICM_USER (DRV_USER+0x0000)
  83. #define ICM_RESERVED ICM_RESERVED_LOW
  84. #define ICM_RESERVED_LOW (DRV_USER+0x1000)
  85. #define ICM_RESERVED_HIGH (DRV_USER+0x2000)
  86. #define ICM_GETSTATE (ICM_RESERVED+0)
  87. #define ICM_SETSTATE (ICM_RESERVED+1)
  88. #define ICM_GETINFO (ICM_RESERVED+2)
  89. #define ICM_CONFIGURE (ICM_RESERVED+10)
  90. #define ICM_ABOUT (ICM_RESERVED+11)
  91. #define ICM_GETERRORTEXT (ICM_RESERVED+12)
  92. #define ICM_GETFORMATNAME (ICM_RESERVED+20)
  93. #define ICM_ENUMFORMATS (ICM_RESERVED+21)
  94. #define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30)
  95. #define ICM_GETQUALITY (ICM_RESERVED+31)
  96. #define ICM_SETQUALITY (ICM_RESERVED+32)
  97. #define ICM_SET (ICM_RESERVED+40)
  98. #define ICM_GET (ICM_RESERVED+41)
  99. #define ICM_FRAMERATE mmioFOURCC('F','r','m','R')
  100. #define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R')
  101. #define ICM_COMPRESS_GET_FORMAT (ICM_USER+4)
  102. #define ICM_COMPRESS_GET_SIZE (ICM_USER+5)
  103. #define ICM_COMPRESS_QUERY (ICM_USER+6)
  104. #define ICM_COMPRESS_BEGIN (ICM_USER+7)
  105. #define ICM_COMPRESS (ICM_USER+8)
  106. #define ICM_COMPRESS_END (ICM_USER+9)
  107. #define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10)
  108. #define ICM_DECOMPRESS_QUERY (ICM_USER+11)
  109. #define ICM_DECOMPRESS_BEGIN (ICM_USER+12)
  110. #define ICM_DECOMPRESS (ICM_USER+13)
  111. #define ICM_DECOMPRESS_END (ICM_USER+14)
  112. #define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29)
  113. #define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30)
  114. #define ICM_DRAW_QUERY (ICM_USER+31)
  115. #define ICM_DRAW_BEGIN (ICM_USER+15)
  116. #define ICM_DRAW_GET_PALETTE (ICM_USER+16)
  117. #define ICM_DRAW_UPDATE (ICM_USER+17)
  118. #define ICM_DRAW_START (ICM_USER+18)
  119. #define ICM_DRAW_STOP (ICM_USER+19)
  120. #define ICM_DRAW_BITS (ICM_USER+20)
  121. #define ICM_DRAW_END (ICM_USER+21)
  122. #define ICM_DRAW_GETTIME (ICM_USER+32)
  123. #define ICM_DRAW (ICM_USER+33)
  124. #define ICM_DRAW_WINDOW (ICM_USER+34)
  125. #define ICM_DRAW_SETTIME (ICM_USER+35)
  126. #define ICM_DRAW_REALIZE (ICM_USER+36)
  127. #define ICM_DRAW_FLUSH (ICM_USER+37)
  128. #define ICM_DRAW_RENDERBUFFER (ICM_USER+38)
  129. #define ICM_DRAW_START_PLAY (ICM_USER+39)
  130. #define ICM_DRAW_STOP_PLAY (ICM_USER+40)
  131. #define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50)
  132. #define ICM_DRAW_CHANGEPALETTE (ICM_USER+51)
  133. #define ICM_DRAW_IDLE (ICM_USER+52)
  134. #define ICM_GETBUFFERSWANTED (ICM_USER+41)
  135. #define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42)
  136. #define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60)
  137. #define ICM_DECOMPRESSEX_QUERY (ICM_USER+61)
  138. #define ICM_DECOMPRESSEX (ICM_USER+62)
  139. #define ICM_DECOMPRESSEX_END (ICM_USER+63)
  140. #define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70)
  141. #define ICM_COMPRESS_FRAMES (ICM_USER+71)
  142. #define ICM_SET_STATUS_PROC (ICM_USER+72)
  143. typedef struct {
  144. DWORD dwSize;
  145. DWORD fccType;
  146. DWORD fccHandler;
  147. DWORD dwVersion;
  148. DWORD dwFlags;
  149. LRESULT dwError;
  150. LPVOID pV1Reserved;
  151. LPVOID pV2Reserved;
  152. DWORD dnDevNode;
  153. } ICOPEN;
  154. typedef struct {
  155. DWORD dwSize;
  156. DWORD fccType;
  157. DWORD fccHandler;
  158. DWORD dwFlags;
  159. DWORD dwVersion;
  160. DWORD dwVersionICM;
  161. WCHAR szName[16];
  162. WCHAR szDescription[128];
  163. WCHAR szDriver[128];
  164. } ICINFO;
  165. #define VIDCF_QUALITY 0x0001
  166. #define VIDCF_CRUNCH 0x0002
  167. #define VIDCF_TEMPORAL 0x0004
  168. #define VIDCF_COMPRESSFRAMES 0x0008
  169. #define VIDCF_DRAW 0x0010
  170. #define VIDCF_FASTTEMPORALC 0x0020
  171. #define VIDCF_QUALITYTIME 0x0040
  172. #define VIDCF_FASTTEMPORALD 0x0080
  173. #define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
  174. #define ICCOMPRESS_KEYFRAME __MSABI_LONG(0x00000001)
  175. typedef struct {
  176. DWORD dwFlags;
  177. LPBITMAPINFOHEADER lpbiOutput;
  178. LPVOID lpOutput;
  179. LPBITMAPINFOHEADER lpbiInput;
  180. LPVOID lpInput;
  181. LPDWORD lpckid;
  182. LPDWORD lpdwFlags;
  183. LONG lFrameNum;
  184. DWORD dwFrameSize;
  185. DWORD dwQuality;
  186. LPBITMAPINFOHEADER lpbiPrev;
  187. LPVOID lpPrev;
  188. } ICCOMPRESS;
  189. #define ICCOMPRESSFRAMES_PADDING 0x00000001
  190. typedef struct {
  191. DWORD dwFlags;
  192. LPBITMAPINFOHEADER lpbiOutput;
  193. LPARAM lOutput;
  194. LPBITMAPINFOHEADER lpbiInput;
  195. LPARAM lInput;
  196. LONG lStartFrame;
  197. LONG lFrameCount;
  198. LONG lQuality;
  199. LONG lDataRate;
  200. LONG lKeyRate;
  201. DWORD dwRate;
  202. DWORD dwScale;
  203. DWORD dwOverheadPerFrame;
  204. DWORD dwReserved2;
  205. LONG (CALLBACK *GetData)(LPARAM lInput,LONG lFrame,LPVOID lpBits,LONG len);
  206. LONG (CALLBACK *PutData)(LPARAM lOutput,LONG lFrame,LPVOID lpBits,LONG len);
  207. } ICCOMPRESSFRAMES;
  208. #define ICSTATUS_START 0
  209. #define ICSTATUS_STATUS 1
  210. #define ICSTATUS_END 2
  211. #define ICSTATUS_ERROR 3
  212. #define ICSTATUS_YIELD 4
  213. typedef struct {
  214. DWORD dwFlags;
  215. LPARAM lParam;
  216. LONG (CALLBACK *Status)(LPARAM lParam,UINT message,LONG l);
  217. } ICSETSTATUSPROC;
  218. #define ICDECOMPRESS_HURRYUP __MSABI_LONG(0x80000000)
  219. #define ICDECOMPRESS_UPDATE __MSABI_LONG(0x40000000)
  220. #define ICDECOMPRESS_PREROLL __MSABI_LONG(0x20000000)
  221. #define ICDECOMPRESS_NULLFRAME __MSABI_LONG(0x10000000)
  222. #define ICDECOMPRESS_NOTKEYFRAME __MSABI_LONG(0x08000000)
  223. typedef struct {
  224. DWORD dwFlags;
  225. LPBITMAPINFOHEADER lpbiInput;
  226. LPVOID lpInput;
  227. LPBITMAPINFOHEADER lpbiOutput;
  228. LPVOID lpOutput;
  229. DWORD ckid;
  230. } ICDECOMPRESS;
  231. typedef struct {
  232. DWORD dwFlags;
  233. LPBITMAPINFOHEADER lpbiSrc;
  234. LPVOID lpSrc;
  235. LPBITMAPINFOHEADER lpbiDst;
  236. LPVOID lpDst;
  237. int xDst;
  238. int yDst;
  239. int dxDst;
  240. int dyDst;
  241. int xSrc;
  242. int ySrc;
  243. int dxSrc;
  244. int dySrc;
  245. } ICDECOMPRESSEX;
  246. #define ICDRAW_QUERY __MSABI_LONG(0x00000001)
  247. #define ICDRAW_FULLSCREEN __MSABI_LONG(0x00000002)
  248. #define ICDRAW_HDC __MSABI_LONG(0x00000004)
  249. #define ICDRAW_ANIMATE __MSABI_LONG(0x00000008)
  250. #define ICDRAW_CONTINUE __MSABI_LONG(0x00000010)
  251. #define ICDRAW_MEMORYDC __MSABI_LONG(0x00000020)
  252. #define ICDRAW_UPDATING __MSABI_LONG(0x00000040)
  253. #define ICDRAW_RENDER __MSABI_LONG(0x00000080)
  254. #define ICDRAW_BUFFER __MSABI_LONG(0x00000100)
  255. typedef struct {
  256. DWORD dwFlags;
  257. HPALETTE hpal;
  258. HWND hwnd;
  259. HDC hdc;
  260. int xDst;
  261. int yDst;
  262. int dxDst;
  263. int dyDst;
  264. LPBITMAPINFOHEADER lpbi;
  265. int xSrc;
  266. int ySrc;
  267. int dxSrc;
  268. int dySrc;
  269. DWORD dwRate;
  270. DWORD dwScale;
  271. } ICDRAWBEGIN;
  272. #define ICDRAW_HURRYUP __MSABI_LONG(0x80000000)
  273. #define ICDRAW_UPDATE __MSABI_LONG(0x40000000)
  274. #define ICDRAW_PREROLL __MSABI_LONG(0x20000000)
  275. #define ICDRAW_NULLFRAME __MSABI_LONG(0x10000000)
  276. #define ICDRAW_NOTKEYFRAME __MSABI_LONG(0x08000000)
  277. typedef struct {
  278. DWORD dwFlags;
  279. LPVOID lpFormat;
  280. LPVOID lpData;
  281. DWORD cbData;
  282. LONG lTime;
  283. } ICDRAW;
  284. typedef struct {
  285. LPBITMAPINFOHEADER lpbiIn;
  286. LPBITMAPINFOHEADER lpbiSuggest;
  287. int dxSrc;
  288. int dySrc;
  289. int dxDst;
  290. int dyDst;
  291. HIC hicDecompressor;
  292. } ICDRAWSUGGEST;
  293. typedef struct {
  294. DWORD dwFlags;
  295. int iStart;
  296. int iLen;
  297. LPPALETTEENTRY lppe;
  298. } ICPALETTE;
  299. WINBOOL WINAPI ICInfo(DWORD fccType,DWORD fccHandler,ICINFO *lpicinfo);
  300. WINBOOL WINAPI ICInstall(DWORD fccType,DWORD fccHandler,LPARAM lParam,LPSTR szDesc,UINT wFlags);
  301. WINBOOL WINAPI ICRemove(DWORD fccType,DWORD fccHandler,UINT wFlags);
  302. LRESULT WINAPI ICGetInfo(HIC hic,ICINFO *picinfo,DWORD cb);
  303. HIC WINAPI ICOpen(DWORD fccType,DWORD fccHandler,UINT wMode);
  304. HIC WINAPI ICOpenFunction(DWORD fccType,DWORD fccHandler,UINT wMode,FARPROC lpfnHandler);
  305. LRESULT WINAPI ICClose(HIC hic);
  306. LRESULT WINAPI ICSendMessage(HIC hic,UINT msg,DWORD_PTR dw1,DWORD_PTR dw2);
  307. #define ICINSTALL_UNICODE 0x8000
  308. #define ICINSTALL_FUNCTION 0x0001
  309. #define ICINSTALL_DRIVER 0x0002
  310. #define ICINSTALL_HDRV 0x0004
  311. #define ICINSTALL_DRIVERW 0x8002
  312. #define ICMF_CONFIGURE_QUERY 0x00000001
  313. #define ICMF_ABOUT_QUERY 0x00000001
  314. #define ICQueryAbout(hic) (ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR) -1,ICMF_ABOUT_QUERY)==ICERR_OK)
  315. #define ICAbout(hic,hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR)(UINT_PTR)(hwnd),(DWORD_PTR)0)
  316. #define ICQueryConfigure(hic) (ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR) -1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
  317. #define ICConfigure(hic,hwnd) ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR)(UINT_PTR)(hwnd),(DWORD_PTR)0)
  318. #define ICGetState(hic,pv,cb) ICSendMessage(hic,ICM_GETSTATE,(DWORD_PTR)(LPVOID)(pv),(DWORD_PTR)(cb))
  319. #define ICSetState(hic,pv,cb) ICSendMessage(hic,ICM_SETSTATE,(DWORD_PTR)(LPVOID)(pv),(DWORD_PTR)(cb))
  320. #define ICGetStateSize(hic) (DWORD) ICGetState(hic,NULL,0)
  321. static DWORD dwICValue;
  322. #define ICGetDefaultQuality(hic) (ICSendMessage(hic,ICM_GETDEFAULTQUALITY,(DWORD_PTR)(LPVOID)&dwICValue,sizeof(DWORD)),dwICValue)
  323. #define ICGetDefaultKeyFrameRate(hic) (ICSendMessage(hic,ICM_GETDEFAULTKEYFRAMERATE,(DWORD_PTR)(LPVOID)&dwICValue,sizeof(DWORD)),dwICValue)
  324. #define ICDrawWindow(hic,prc) ICSendMessage(hic,ICM_DRAW_WINDOW,(DWORD_PTR)(LPVOID)(prc),sizeof(RECT))
  325. DWORD WINAPIV ICCompress(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiOutput,LPVOID lpData,LPBITMAPINFOHEADER lpbiInput,LPVOID lpBits,LPDWORD lpckid,LPDWORD lpdwFlags,LONG lFrameNum,DWORD dwFrameSize,DWORD dwQuality,LPBITMAPINFOHEADER lpbiPrev,LPVOID lpPrev);
  326. #define ICCompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_BEGIN,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
  327. #define ICCompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_QUERY,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
  328. #define ICCompressGetFormat(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_FORMAT,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
  329. #define ICCompressGetFormatSize(hic,lpbi) (DWORD) ICCompressGetFormat(hic,lpbi,NULL)
  330. #define ICCompressGetSize(hic,lpbiInput,lpbiOutput) (DWORD) ICSendMessage(hic,ICM_COMPRESS_GET_SIZE,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
  331. #define ICCompressEnd(hic) ICSendMessage(hic,ICM_COMPRESS_END,(DWORD_PTR)0,(DWORD_PTR)0)
  332. #define ICDECOMPRESS_HURRYUP __MSABI_LONG(0x80000000)
  333. DWORD WINAPIV ICDecompress(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiFormat,LPVOID lpData,LPBITMAPINFOHEADER lpbi,LPVOID lpBits);
  334. #define ICDecompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_BEGIN,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
  335. #define ICDecompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_QUERY,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
  336. #define ICDecompressGetFormat(hic,lpbiInput,lpbiOutput) ((LONG) ICSendMessage(hic,ICM_DECOMPRESS_GET_FORMAT,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput)))
  337. #define ICDecompressGetFormatSize(hic,lpbi) ICDecompressGetFormat(hic,lpbi,NULL)
  338. #define ICDecompressGetPalette(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_GET_PALETTE,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
  339. #define ICDecompressSetPalette(hic,lpbiPalette) ICSendMessage(hic,ICM_DECOMPRESS_SET_PALETTE,(DWORD_PTR)(LPVOID)(lpbiPalette),(DWORD_PTR)0)
  340. #define ICDecompressEnd(hic) ICSendMessage(hic,ICM_DECOMPRESS_END,(DWORD_PTR)0,(DWORD_PTR)0)
  341. #ifndef __CRT__NO_INLINE
  342. __CRT_INLINE LRESULT WINAPI ICDecompressEx(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,int xSrc,int ySrc,int dxSrc,int dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,int xDst,int yDst,int dxDst,int dyDst) {
  343. ICDECOMPRESSEX ic;
  344. ic.dwFlags = dwFlags;
  345. ic.lpbiSrc = lpbiSrc;
  346. ic.lpSrc = lpSrc;
  347. ic.xSrc = xSrc;
  348. ic.ySrc = ySrc;
  349. ic.dxSrc = dxSrc;
  350. ic.dySrc = dySrc;
  351. ic.lpbiDst = lpbiDst;
  352. ic.lpDst = lpDst;
  353. ic.xDst = xDst;
  354. ic.yDst = yDst;
  355. ic.dxDst = dxDst;
  356. ic.dyDst = dyDst;
  357. return ICSendMessage(hic,ICM_DECOMPRESSEX,(DWORD_PTR)&ic,sizeof(ic));
  358. }
  359. __CRT_INLINE LRESULT WINAPI ICDecompressExBegin(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,int xSrc,int ySrc,int dxSrc,int dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,int xDst,int yDst,int dxDst,int dyDst) {
  360. ICDECOMPRESSEX ic;
  361. ic.dwFlags = dwFlags;
  362. ic.lpbiSrc = lpbiSrc;
  363. ic.lpSrc = lpSrc;
  364. ic.xSrc = xSrc;
  365. ic.ySrc = ySrc;
  366. ic.dxSrc = dxSrc;
  367. ic.dySrc = dySrc;
  368. ic.lpbiDst = lpbiDst;
  369. ic.lpDst = lpDst;
  370. ic.xDst = xDst;
  371. ic.yDst = yDst;
  372. ic.dxDst = dxDst;
  373. ic.dyDst = dyDst;
  374. return ICSendMessage(hic,ICM_DECOMPRESSEX_BEGIN,(DWORD_PTR)&ic,sizeof(ic));
  375. }
  376. __CRT_INLINE LRESULT WINAPI ICDecompressExQuery(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,int xSrc,int ySrc,int dxSrc,int dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,int xDst,int yDst,int dxDst,int dyDst) {
  377. ICDECOMPRESSEX ic;
  378. ic.dwFlags = dwFlags;
  379. ic.lpbiSrc = lpbiSrc;
  380. ic.lpSrc = lpSrc;
  381. ic.xSrc = xSrc;
  382. ic.ySrc = ySrc;
  383. ic.dxSrc = dxSrc;
  384. ic.dySrc = dySrc;
  385. ic.lpbiDst = lpbiDst;
  386. ic.lpDst = lpDst;
  387. ic.xDst = xDst;
  388. ic.yDst = yDst;
  389. ic.dxDst = dxDst;
  390. ic.dyDst = dyDst;
  391. return ICSendMessage(hic,ICM_DECOMPRESSEX_QUERY,(DWORD_PTR)&ic,sizeof(ic));
  392. }
  393. #endif /* !__CRT__NO_INLINE */
  394. #define ICDecompressExEnd(hic) ICSendMessage(hic,ICM_DECOMPRESSEX_END,(DWORD_PTR)0,(DWORD_PTR)0)
  395. #define ICDRAW_QUERY __MSABI_LONG(0x00000001)
  396. #define ICDRAW_FULLSCREEN __MSABI_LONG(0x00000002)
  397. #define ICDRAW_HDC __MSABI_LONG(0x00000004)
  398. DWORD WINAPIV ICDrawBegin(HIC hic,DWORD dwFlags,HPALETTE hpal,HWND hwnd,HDC hdc,int xDst,int yDst,int dxDst,int dyDst,LPBITMAPINFOHEADER lpbi,int xSrc,int ySrc,int dxSrc,int dySrc,DWORD dwRate,DWORD dwScale);
  399. #define ICDRAW_HURRYUP __MSABI_LONG(0x80000000)
  400. #define ICDRAW_UPDATE __MSABI_LONG(0x40000000)
  401. DWORD WINAPIV ICDraw(HIC hic,DWORD dwFlags,LPVOID lpFormat,LPVOID lpData,DWORD cbData,LONG lTime);
  402. #ifndef __CRT__NO_INLINE
  403. __CRT_INLINE LRESULT WINAPI ICDrawSuggestFormat(HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,int dxSrc,int dySrc,int dxDst,int dyDst,HIC hicDecomp) {
  404. ICDRAWSUGGEST ic;
  405. ic.lpbiIn = lpbiIn;
  406. ic.lpbiSuggest = lpbiOut;
  407. ic.dxSrc = dxSrc;
  408. ic.dySrc = dySrc;
  409. ic.dxDst = dxDst;
  410. ic.dyDst = dyDst;
  411. ic.hicDecompressor = hicDecomp;
  412. return ICSendMessage(hic,ICM_DRAW_SUGGESTFORMAT,(DWORD_PTR)&ic,sizeof(ic));
  413. }
  414. #endif /* !__CRT__NO_INLINE */
  415. #define ICDrawQuery(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_QUERY,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD)0)
  416. #define ICDrawChangePalette(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_CHANGEPALETTE,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD)0)
  417. #define ICGetBuffersWanted(hic,lpdwBuffers) ICSendMessage(hic,ICM_GETBUFFERSWANTED,(DWORD_PTR)(LPVOID)(lpdwBuffers),(DWORD_PTR)0)
  418. #define ICDrawEnd(hic) ICSendMessage(hic,ICM_DRAW_END,(DWORD_PTR)0,(DWORD_PTR)0)
  419. #define ICDrawStart(hic) ICSendMessage(hic,ICM_DRAW_START,(DWORD_PTR)0,(DWORD_PTR)0)
  420. #define ICDrawStartPlay(hic,lFrom,lTo) ICSendMessage(hic,ICM_DRAW_START_PLAY,(DWORD_PTR)(lFrom),(DWORD_PTR)(lTo))
  421. #define ICDrawStop(hic) ICSendMessage(hic,ICM_DRAW_STOP,(DWORD_PTR)0,(DWORD_PTR)0)
  422. #define ICDrawStopPlay(hic) ICSendMessage(hic,ICM_DRAW_STOP_PLAY,(DWORD_PTR)0,(DWORD_PTR)0)
  423. #define ICDrawGetTime(hic,lplTime) ICSendMessage(hic,ICM_DRAW_GETTIME,(DWORD_PTR)(LPVOID)(lplTime),(DWORD_PTR)0)
  424. #define ICDrawSetTime(hic,lTime) ICSendMessage(hic,ICM_DRAW_SETTIME,(DWORD_PTR)lTime,(DWORD_PTR)0)
  425. #define ICDrawRealize(hic,hdc,fBackground) ICSendMessage(hic,ICM_DRAW_REALIZE,(DWORD_PTR)(UINT_PTR)(HDC)(hdc),(DWORD_PTR)(WINBOOL)(fBackground))
  426. #define ICDrawFlush(hic) ICSendMessage(hic,ICM_DRAW_FLUSH,(DWORD_PTR)0,(DWORD_PTR)0)
  427. #define ICDrawRenderBuffer(hic) ICSendMessage(hic,ICM_DRAW_RENDERBUFFER,(DWORD_PTR)0,(DWORD_PTR)0)
  428. #ifndef __CRT__NO_INLINE
  429. __CRT_INLINE LRESULT WINAPI ICSetStatusProc(HIC hic,DWORD dwFlags,LRESULT lParam,LONG (CALLBACK *fpfnStatus)(LPARAM,UINT,LONG)) {
  430. ICSETSTATUSPROC ic;
  431. ic.dwFlags = dwFlags;
  432. ic.lParam = lParam;
  433. ic.Status = fpfnStatus;
  434. return ICSendMessage(hic,ICM_SET_STATUS_PROC,(DWORD_PTR)&ic,sizeof(ic));
  435. }
  436. #endif /* !__CRT__NO_INLINE */
  437. #define ICDecompressOpen(fccType,fccHandler,lpbiIn,lpbiOut) ICLocate(fccType,fccHandler,lpbiIn,lpbiOut,ICMODE_DECOMPRESS)
  438. #define ICDrawOpen(fccType,fccHandler,lpbiIn) ICLocate(fccType,fccHandler,lpbiIn,NULL,ICMODE_DRAW)
  439. HIC WINAPI ICLocate(DWORD fccType,DWORD fccHandler,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,WORD wFlags);
  440. HIC WINAPI ICGetDisplayFormat(HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,int BitDepth,int dx,int dy);
  441. HANDLE WINAPI ICImageCompress(HIC hic,UINT uiFlags,LPBITMAPINFO lpbiIn,LPVOID lpBits,LPBITMAPINFO lpbiOut,LONG lQuality,LONG *plSize);
  442. HANDLE WINAPI ICImageDecompress(HIC hic,UINT uiFlags,LPBITMAPINFO lpbiIn,LPVOID lpBits,LPBITMAPINFO lpbiOut);
  443. typedef struct {
  444. LONG cbSize;
  445. DWORD dwFlags;
  446. HIC hic;
  447. DWORD fccType;
  448. DWORD fccHandler;
  449. LPBITMAPINFO lpbiIn;
  450. LPBITMAPINFO lpbiOut;
  451. LPVOID lpBitsOut;
  452. LPVOID lpBitsPrev;
  453. LONG lFrame;
  454. LONG lKey;
  455. LONG lDataRate;
  456. LONG lQ;
  457. LONG lKeyCount;
  458. LPVOID lpState;
  459. LONG cbState;
  460. } COMPVARS,*PCOMPVARS;
  461. #define ICMF_COMPVARS_VALID 0x00000001
  462. WINBOOL WINAPI ICCompressorChoose(HWND hwnd,UINT uiFlags,LPVOID pvIn,LPVOID lpData,PCOMPVARS pc,LPSTR lpszTitle);
  463. #define ICMF_CHOOSE_KEYFRAME 0x0001
  464. #define ICMF_CHOOSE_DATARATE 0x0002
  465. #define ICMF_CHOOSE_PREVIEW 0x0004
  466. #define ICMF_CHOOSE_ALLCOMPRESSORS 0x0008
  467. WINBOOL WINAPI ICSeqCompressFrameStart(PCOMPVARS pc,LPBITMAPINFO lpbiIn);
  468. void WINAPI ICSeqCompressFrameEnd(PCOMPVARS pc);
  469. LPVOID WINAPI ICSeqCompressFrame(PCOMPVARS pc,UINT uiFlags,LPVOID lpBits,WINBOOL *pfKey,LONG *plSize);
  470. void WINAPI ICCompressorFree(PCOMPVARS pc);
  471. #endif
  472. #ifndef NODRAWDIB
  473. typedef HANDLE HDRAWDIB;
  474. #define DDF_0001 0x0001
  475. #define DDF_UPDATE 0x0002
  476. #define DDF_SAME_HDC 0x0004
  477. #define DDF_SAME_DRAW 0x0008
  478. #define DDF_DONTDRAW 0x0010
  479. #define DDF_ANIMATE 0x0020
  480. #define DDF_BUFFER 0x0040
  481. #define DDF_JUSTDRAWIT 0x0080
  482. #define DDF_FULLSCREEN 0x0100
  483. #define DDF_BACKGROUNDPAL 0x0200
  484. #define DDF_NOTKEYFRAME 0x0400
  485. #define DDF_HURRYUP 0x0800
  486. #define DDF_HALFTONE 0x1000
  487. #define DDF_2000 0x2000
  488. #define DDF_PREROLL DDF_DONTDRAW
  489. #define DDF_SAME_DIB DDF_SAME_DRAW
  490. #define DDF_SAME_SIZE DDF_SAME_DRAW
  491. extern WINBOOL WINAPI DrawDibInit(void);
  492. extern HDRAWDIB WINAPI DrawDibOpen(void);
  493. extern WINBOOL WINAPI DrawDibClose(HDRAWDIB hdd);
  494. extern LPVOID WINAPI DrawDibGetBuffer(HDRAWDIB hdd,LPBITMAPINFOHEADER lpbi,DWORD dwSize,DWORD dwFlags);
  495. extern UINT WINAPI DrawDibError(HDRAWDIB hdd);
  496. extern HPALETTE WINAPI DrawDibGetPalette(HDRAWDIB hdd);
  497. extern WINBOOL WINAPI DrawDibSetPalette(HDRAWDIB hdd,HPALETTE hpal);
  498. extern WINBOOL WINAPI DrawDibChangePalette(HDRAWDIB hdd,int iStart,int iLen,LPPALETTEENTRY lppe);
  499. extern UINT WINAPI DrawDibRealize(HDRAWDIB hdd,HDC hdc,WINBOOL fBackground);
  500. extern WINBOOL WINAPI DrawDibStart(HDRAWDIB hdd,DWORD rate);
  501. extern WINBOOL WINAPI DrawDibStop(HDRAWDIB hdd);
  502. extern WINBOOL WINAPI DrawDibBegin(HDRAWDIB hdd,HDC hdc,int dxDst,int dyDst,LPBITMAPINFOHEADER lpbi,int dxSrc,int dySrc,UINT wFlags);
  503. extern WINBOOL WINAPI DrawDibDraw(HDRAWDIB hdd,HDC hdc,int xDst,int yDst,int dxDst,int dyDst,LPBITMAPINFOHEADER lpbi,LPVOID lpBits,int xSrc,int ySrc,int dxSrc,int dySrc,UINT wFlags);
  504. #define DrawDibUpdate(hdd,hdc,x,y) DrawDibDraw(hdd,hdc,x,y,0,0,NULL,NULL,0,0,0,0,DDF_UPDATE)
  505. extern WINBOOL WINAPI DrawDibEnd(HDRAWDIB hdd);
  506. typedef struct {
  507. LONG timeCount;
  508. LONG timeDraw;
  509. LONG timeDecompress;
  510. LONG timeDither;
  511. LONG timeStretch;
  512. LONG timeBlt;
  513. LONG timeSetDIBits;
  514. } DRAWDIBTIME,*LPDRAWDIBTIME;
  515. WINBOOL WINAPI DrawDibTime(HDRAWDIB hdd,LPDRAWDIBTIME lpddtime);
  516. #define PD_CAN_DRAW_DIB 0x0001
  517. #define PD_CAN_STRETCHDIB 0x0002
  518. #define PD_STRETCHDIB_1_1_OK 0x0004
  519. #define PD_STRETCHDIB_1_2_OK 0x0008
  520. #define PD_STRETCHDIB_1_N_OK 0x0010
  521. LRESULT WINAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi);
  522. #ifdef DRAWDIB_INCLUDE_STRETCHDIB
  523. void WINAPI StretchDIB(LPBITMAPINFOHEADER biDst,LPVOID lpDst,int DstX,int DstY,int DstXE,int DstYE,LPBITMAPINFOHEADER biSrc,LPVOID lpSrc,int SrcX,int SrcY,int SrcXE,int SrcYE);
  524. #endif
  525. #endif
  526. #ifndef NOAVIFMT
  527. #ifndef _INC_MMSYSTEM
  528. typedef DWORD FOURCC;
  529. #endif
  530. /* This part of the file is duplicated in avifmt.h */
  531. #ifndef mmioFOURCC
  532. #define mmioFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))
  533. #endif
  534. #ifndef aviTWOCC
  535. #define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
  536. #endif
  537. typedef WORD TWOCC;
  538. #define formtypeAVI mmioFOURCC('A','V','I',' ')
  539. #define listtypeAVIHEADER mmioFOURCC('h','d','r','l')
  540. #define ckidAVIMAINHDR mmioFOURCC('a','v','i','h')
  541. #define listtypeSTREAMHEADER mmioFOURCC('s','t','r','l')
  542. #define ckidSTREAMHEADER mmioFOURCC('s','t','r','h')
  543. #define ckidSTREAMFORMAT mmioFOURCC('s','t','r','f')
  544. #define ckidSTREAMHANDLERDATA mmioFOURCC('s','t','r','d')
  545. #define ckidSTREAMNAME mmioFOURCC('s','t','r','n')
  546. #define listtypeAVIMOVIE mmioFOURCC('m','o','v','i')
  547. #define listtypeAVIRECORD mmioFOURCC('r','e','c',' ')
  548. #define ckidAVINEWINDEX mmioFOURCC('i','d','x','1')
  549. #define streamtypeANY __MSABI_LONG(0U)
  550. #define streamtypeVIDEO mmioFOURCC('v','i','d','s')
  551. #define streamtypeAUDIO mmioFOURCC('a','u','d','s')
  552. #define streamtypeMIDI mmioFOURCC('m','i','d','s')
  553. #define streamtypeTEXT mmioFOURCC('t','x','t','s')
  554. #define cktypeDIBbits aviTWOCC('d','b')
  555. #define cktypeDIBcompressed aviTWOCC('d','c')
  556. #define cktypePALchange aviTWOCC('p','c')
  557. #define cktypeWAVEbytes aviTWOCC('w','b')
  558. #define ckidAVIPADDING mmioFOURCC('J','U','N','K')
  559. #define FromHex(n) (((n) >= 'A') ? ((n) + 10 - 'A') : ((n) - '0'))
  560. #define StreamFromFOURCC(fcc) ((WORD) ((FromHex(LOBYTE(LOWORD(fcc))) << 4) + (FromHex(HIBYTE(LOWORD(fcc))))))
  561. #define TWOCCFromFOURCC(fcc) HIWORD(fcc)
  562. #define ToHex(n) ((BYTE) (((n) > 9) ? ((n) - 10 + 'A') : ((n) + '0')))
  563. #define MAKEAVICKID(tcc,stream) MAKELONG((ToHex((stream) & 0x0f) << 8) | (ToHex(((stream) & 0xf0) >> 4)),tcc)
  564. #define AVIF_HASINDEX 0x00000010
  565. #define AVIF_MUSTUSEINDEX 0x00000020
  566. #define AVIF_ISINTERLEAVED 0x00000100
  567. #define AVIF_TRUSTCKTYPE 0x00000800
  568. #define AVIF_WASCAPTUREFILE 0x00010000
  569. #define AVIF_COPYRIGHTED 0x00020000
  570. #define AVI_HEADERSIZE 2048
  571. typedef struct {
  572. DWORD dwMicroSecPerFrame;
  573. DWORD dwMaxBytesPerSec;
  574. DWORD dwPaddingGranularity;
  575. DWORD dwFlags;
  576. DWORD dwTotalFrames;
  577. DWORD dwInitialFrames;
  578. DWORD dwStreams;
  579. DWORD dwSuggestedBufferSize;
  580. DWORD dwWidth;
  581. DWORD dwHeight;
  582. DWORD dwReserved[4];
  583. } MainAVIHeader;
  584. #define AVISF_DISABLED 0x00000001
  585. #define AVISF_VIDEO_PALCHANGES 0x00010000
  586. typedef struct {
  587. FOURCC fccType;
  588. FOURCC fccHandler;
  589. DWORD dwFlags;
  590. WORD wPriority;
  591. WORD wLanguage;
  592. DWORD dwInitialFrames;
  593. DWORD dwScale;
  594. DWORD dwRate;
  595. DWORD dwStart;
  596. DWORD dwLength;
  597. DWORD dwSuggestedBufferSize;
  598. DWORD dwQuality;
  599. DWORD dwSampleSize;
  600. RECT rcFrame;
  601. } AVIStreamHeader;
  602. #define AVIIF_LIST __MSABI_LONG(0x00000001)
  603. #define AVIIF_KEYFRAME __MSABI_LONG(0x00000010)
  604. #define AVIIF_FIRSTPART __MSABI_LONG(0x00000020)
  605. #define AVIIF_LASTPART __MSABI_LONG(0x00000040)
  606. #define AVIIF_MIDPART (AVIIF_LASTPART|AVIIF_FIRSTPART)
  607. #define AVIIF_NOTIME __MSABI_LONG(0x00000100)
  608. #define AVIIF_COMPUSE __MSABI_LONG(0x0FFF0000)
  609. typedef struct {
  610. DWORD ckid;
  611. DWORD dwFlags;
  612. DWORD dwChunkOffset;
  613. DWORD dwChunkLength;
  614. } AVIINDEXENTRY;
  615. typedef struct {
  616. BYTE bFirstEntry;
  617. BYTE bNumEntries;
  618. WORD wFlags;
  619. PALETTEENTRY peNew[];
  620. } AVIPALCHANGE;
  621. #endif
  622. /* End of duplication */
  623. #ifdef __cplusplus
  624. }
  625. #endif
  626. #ifndef RC_INVOKED
  627. #include "pshpack8.h"
  628. #endif
  629. #ifndef NOMMREG
  630. #include <mmreg.h>
  631. #endif
  632. #ifdef __cplusplus
  633. extern "C" {
  634. #endif
  635. #ifndef NOAVIFILE
  636. #ifndef mmioFOURCC
  637. #define mmioFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))
  638. #endif
  639. #ifndef streamtypeVIDEO
  640. #define streamtypeANY __MSABI_LONG(0U)
  641. #define streamtypeVIDEO mmioFOURCC('v','i','d','s')
  642. #define streamtypeAUDIO mmioFOURCC('a','u','d','s')
  643. #define streamtypeMIDI mmioFOURCC('m','i','d','s')
  644. #define streamtypeTEXT mmioFOURCC('t','x','t','s')
  645. #endif
  646. #ifndef AVIIF_KEYFRAME
  647. #define AVIIF_KEYFRAME __MSABI_LONG(0x00000010)
  648. #endif
  649. #define AVIGETFRAMEF_BESTDISPLAYFMT 1
  650. typedef struct _AVISTREAMINFOW {
  651. DWORD fccType;
  652. DWORD fccHandler;
  653. DWORD dwFlags;
  654. DWORD dwCaps;
  655. WORD wPriority;
  656. WORD wLanguage;
  657. DWORD dwScale;
  658. DWORD dwRate;
  659. DWORD dwStart;
  660. DWORD dwLength;
  661. DWORD dwInitialFrames;
  662. DWORD dwSuggestedBufferSize;
  663. DWORD dwQuality;
  664. DWORD dwSampleSize;
  665. RECT rcFrame;
  666. DWORD dwEditCount;
  667. DWORD dwFormatChangeCount;
  668. WCHAR szName[64];
  669. } AVISTREAMINFOW,*LPAVISTREAMINFOW;
  670. typedef struct _AVISTREAMINFOA {
  671. DWORD fccType;
  672. DWORD fccHandler;
  673. DWORD dwFlags;
  674. DWORD dwCaps;
  675. WORD wPriority;
  676. WORD wLanguage;
  677. DWORD dwScale;
  678. DWORD dwRate;
  679. DWORD dwStart;
  680. DWORD dwLength;
  681. DWORD dwInitialFrames;
  682. DWORD dwSuggestedBufferSize;
  683. DWORD dwQuality;
  684. DWORD dwSampleSize;
  685. RECT rcFrame;
  686. DWORD dwEditCount;
  687. DWORD dwFormatChangeCount;
  688. char szName[64];
  689. } AVISTREAMINFOA,*LPAVISTREAMINFOA;
  690. #define AVISTREAMINFO __MINGW_NAME_AW(AVISTREAMINFO)
  691. #define LPAVISTREAMINFO __MINGW_NAME_AW(LPAVISTREAMINFO)
  692. #define AVISTREAMINFO_DISABLED 0x00000001
  693. #define AVISTREAMINFO_FORMATCHANGES 0x00010000
  694. typedef struct _AVIFILEINFOW {
  695. DWORD dwMaxBytesPerSec;
  696. DWORD dwFlags;
  697. DWORD dwCaps;
  698. DWORD dwStreams;
  699. DWORD dwSuggestedBufferSize;
  700. DWORD dwWidth;
  701. DWORD dwHeight;
  702. DWORD dwScale;
  703. DWORD dwRate;
  704. DWORD dwLength;
  705. DWORD dwEditCount;
  706. WCHAR szFileType[64];
  707. } AVIFILEINFOW,*LPAVIFILEINFOW;
  708. typedef struct _AVIFILEINFOA {
  709. DWORD dwMaxBytesPerSec;
  710. DWORD dwFlags;
  711. DWORD dwCaps;
  712. DWORD dwStreams;
  713. DWORD dwSuggestedBufferSize;
  714. DWORD dwWidth;
  715. DWORD dwHeight;
  716. DWORD dwScale;
  717. DWORD dwRate;
  718. DWORD dwLength;
  719. DWORD dwEditCount;
  720. char szFileType[64];
  721. } AVIFILEINFOA,*LPAVIFILEINFOA;
  722. #define AVIFILEINFO __MINGW_NAME_AW(AVIFILEINFO)
  723. #define LPAVIFILEINFO __MINGW_NAME_AW(LPAVIFILEINFO)
  724. #define AVIFILEINFO_HASINDEX 0x00000010
  725. #define AVIFILEINFO_MUSTUSEINDEX 0x00000020
  726. #define AVIFILEINFO_ISINTERLEAVED 0x00000100
  727. #define AVIFILEINFO_TRUSTCKTYPE 0x00000800
  728. #define AVIFILEINFO_WASCAPTUREFILE 0x00010000
  729. #define AVIFILEINFO_COPYRIGHTED 0x00020000
  730. #define AVIFILECAPS_CANREAD 0x00000001
  731. #define AVIFILECAPS_CANWRITE 0x00000002
  732. #define AVIFILECAPS_ALLKEYFRAMES 0x00000010
  733. #define AVIFILECAPS_NOCOMPRESSION 0x00000020
  734. typedef WINBOOL (WINAPI *AVISAVECALLBACK)(int);
  735. typedef struct {
  736. DWORD fccType;
  737. DWORD fccHandler;
  738. DWORD dwKeyFrameEvery;
  739. DWORD dwQuality;
  740. DWORD dwBytesPerSecond;
  741. DWORD dwFlags;
  742. LPVOID lpFormat;
  743. DWORD cbFormat;
  744. LPVOID lpParms;
  745. DWORD cbParms;
  746. DWORD dwInterleaveEvery;
  747. } AVICOMPRESSOPTIONS, FAR *LPAVICOMPRESSOPTIONS;
  748. #define AVICOMPRESSF_INTERLEAVE 0x00000001
  749. #define AVICOMPRESSF_DATARATE 0x00000002
  750. #define AVICOMPRESSF_KEYFRAMES 0x00000004
  751. #define AVICOMPRESSF_VALID 0x00000008
  752. #ifdef __cplusplus
  753. }
  754. #endif
  755. #include <ole2.h>
  756. #ifdef __cplusplus
  757. extern "C" {
  758. #endif
  759. #undef INTERFACE
  760. #define INTERFACE IAVIStream
  761. DECLARE_INTERFACE_(IAVIStream,IUnknown) {
  762. STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
  763. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  764. STDMETHOD_(ULONG,Release) (THIS) PURE;
  765. STDMETHOD(Create) (THIS_ LPARAM lParam1,LPARAM lParam2) PURE;
  766. STDMETHOD(Info) (THIS_ AVISTREAMINFOW *psi,LONG lSize) PURE;
  767. STDMETHOD_(LONG,FindSample)(THIS_ LONG lPos,LONG lFlags) PURE;
  768. STDMETHOD(ReadFormat) (THIS_ LONG lPos,LPVOID lpFormat,LONG *lpcbFormat) PURE;
  769. STDMETHOD(SetFormat) (THIS_ LONG lPos,LPVOID lpFormat,LONG cbFormat) PURE;
  770. STDMETHOD(Read) (THIS_ LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,LONG *plBytes,LONG *plSamples) PURE;
  771. STDMETHOD(Write) (THIS_ LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,DWORD dwFlags,LONG *plSampWritten,LONG *plBytesWritten) PURE;
  772. STDMETHOD(Delete) (THIS_ LONG lStart,LONG lSamples) PURE;
  773. STDMETHOD(ReadData) (THIS_ DWORD fcc,LPVOID lp,LONG *lpcb) PURE;
  774. STDMETHOD(WriteData) (THIS_ DWORD fcc,LPVOID lp,LONG cb) PURE;
  775. STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW *lpInfo,LONG cbInfo) PURE;
  776. };
  777. typedef IAVIStream *PAVISTREAM;
  778. #undef INTERFACE
  779. #define INTERFACE IAVIStreaming
  780. DECLARE_INTERFACE_(IAVIStreaming,IUnknown) {
  781. STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
  782. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  783. STDMETHOD_(ULONG,Release) (THIS) PURE;
  784. STDMETHOD(Begin) (THIS_ LONG lStart,LONG lEnd,LONG lRate) PURE;
  785. STDMETHOD(End) (THIS) PURE;
  786. };
  787. typedef IAVIStreaming *PAVISTREAMING;
  788. #undef INTERFACE
  789. #define INTERFACE IAVIEditStream
  790. DECLARE_INTERFACE_(IAVIEditStream,IUnknown) {
  791. STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
  792. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  793. STDMETHOD_(ULONG,Release) (THIS) PURE;
  794. STDMETHOD(Cut) (THIS_ LONG *plStart,LONG *plLength,PAVISTREAM *ppResult) PURE;
  795. STDMETHOD(Copy) (THIS_ LONG *plStart,LONG *plLength,PAVISTREAM *ppResult) PURE;
  796. STDMETHOD(Paste) (THIS_ LONG *plPos,LONG *plLength,PAVISTREAM pstream,LONG lStart,LONG lEnd) PURE;
  797. STDMETHOD(Clone) (THIS_ PAVISTREAM *ppResult) PURE;
  798. STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW *lpInfo,LONG cbInfo) PURE;
  799. };
  800. typedef IAVIEditStream *PAVIEDITSTREAM;
  801. #undef INTERFACE
  802. #define INTERFACE IAVIPersistFile
  803. DECLARE_INTERFACE_(IAVIPersistFile,IPersistFile) {
  804. STDMETHOD(Reserved1)(THIS) PURE;
  805. };
  806. typedef IAVIPersistFile *PAVIPERSISTFILE;
  807. #undef INTERFACE
  808. #define INTERFACE IAVIFile
  809. #define PAVIFILE IAVIFile *
  810. DECLARE_INTERFACE_(IAVIFile,IUnknown) {
  811. STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
  812. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  813. STDMETHOD_(ULONG,Release) (THIS) PURE;
  814. STDMETHOD(Info) (THIS_ AVIFILEINFOW *pfi,LONG lSize) PURE;
  815. STDMETHOD(GetStream) (THIS_ PAVISTREAM *ppStream,DWORD fccType,LONG lParam) PURE;
  816. STDMETHOD(CreateStream) (THIS_ PAVISTREAM *ppStream,AVISTREAMINFOW *psi) PURE;
  817. STDMETHOD(WriteData) (THIS_ DWORD ckid,LPVOID lpData,LONG cbData) PURE;
  818. STDMETHOD(ReadData) (THIS_ DWORD ckid,LPVOID lpData,LONG *lpcbData) PURE;
  819. STDMETHOD(EndRecord) (THIS) PURE;
  820. STDMETHOD(DeleteStream) (THIS_ DWORD fccType,LONG lParam) PURE;
  821. };
  822. #undef PAVIFILE
  823. typedef IAVIFile *PAVIFILE;
  824. #undef INTERFACE
  825. #define INTERFACE IGetFrame
  826. #define PGETFRAME IGetFrame *
  827. DECLARE_INTERFACE_(IGetFrame,IUnknown) {
  828. STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
  829. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  830. STDMETHOD_(ULONG,Release) (THIS) PURE;
  831. STDMETHOD_(LPVOID,GetFrame) (THIS_ LONG lPos) PURE;
  832. STDMETHOD(Begin) (THIS_ LONG lStart,LONG lEnd,LONG lRate) PURE;
  833. STDMETHOD(End) (THIS) PURE;
  834. STDMETHOD(SetFormat) (THIS_ LPBITMAPINFOHEADER lpbi,LPVOID lpBits,int x,int y,int dx,int dy) PURE;
  835. };
  836. #undef PGETFRAME
  837. typedef IGetFrame *PGETFRAME;
  838. #define DEFINE_AVIGUID(name,l,w1,w2) DEFINE_GUID(name,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
  839. DEFINE_AVIGUID(IID_IAVIFile,0x00020020,0,0);
  840. DEFINE_AVIGUID(IID_IAVIStream,0x00020021,0,0);
  841. DEFINE_AVIGUID(IID_IAVIStreaming,0x00020022,0,0);
  842. DEFINE_AVIGUID(IID_IGetFrame,0x00020023,0,0);
  843. DEFINE_AVIGUID(IID_IAVIEditStream,0x00020024,0,0);
  844. DEFINE_AVIGUID(IID_IAVIPersistFile,0x00020025,0,0);
  845. #if !defined(UNICODE)
  846. DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal,0x00020009,0,0);
  847. #endif
  848. DEFINE_AVIGUID(CLSID_AVIFile,0x00020000,0,0);
  849. #define AVIFILEHANDLER_CANREAD 0x0001
  850. #define AVIFILEHANDLER_CANWRITE 0x0002
  851. #define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004
  852. #define AVIFileOpen __MINGW_NAME_AW(AVIFileOpen)
  853. #define AVIFileInfo __MINGW_NAME_AW(AVIFileInfo)
  854. #define AVIFileCreateStream __MINGW_NAME_AW(AVIFileCreateStream)
  855. #define AVIStreamInfo __MINGW_NAME_AW(AVIStreamInfo)
  856. #define AVIStreamOpenFromFile __MINGW_NAME_AW(AVIStreamOpenFromFile)
  857. STDAPI_(void) AVIFileInit(void);
  858. STDAPI_(void) AVIFileExit(void);
  859. STDAPI_(ULONG) AVIFileAddRef (PAVIFILE pfile);
  860. STDAPI_(ULONG) AVIFileRelease (PAVIFILE pfile);
  861. STDAPI AVIFileOpenA (PAVIFILE *ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler);
  862. STDAPI AVIFileOpenW (PAVIFILE *ppfile,LPCWSTR szFile,UINT uMode,LPCLSID lpHandler);
  863. STDAPI AVIFileInfoW (PAVIFILE pfile,LPAVIFILEINFOW pfi,LONG lSize);
  864. STDAPI AVIFileInfoA (PAVIFILE pfile,LPAVIFILEINFOA pfi,LONG lSize);
  865. STDAPI AVIFileGetStream (PAVIFILE pfile,PAVISTREAM *ppavi,DWORD fccType,LONG lParam);
  866. STDAPI AVIFileCreateStreamW (PAVIFILE pfile,PAVISTREAM *ppavi,AVISTREAMINFOW *psi);
  867. STDAPI AVIFileCreateStreamA (PAVIFILE pfile,PAVISTREAM *ppavi,AVISTREAMINFOA *psi);
  868. STDAPI AVIFileWriteData (PAVIFILE pfile,DWORD ckid,LPVOID lpData,LONG cbData);
  869. STDAPI AVIFileReadData (PAVIFILE pfile,DWORD ckid,LPVOID lpData,LONG *lpcbData);
  870. STDAPI AVIFileEndRecord (PAVIFILE pfile);
  871. STDAPI_(ULONG) AVIStreamAddRef (PAVISTREAM pavi);
  872. STDAPI_(ULONG) AVIStreamRelease (PAVISTREAM pavi);
  873. STDAPI AVIStreamInfoW (PAVISTREAM pavi,LPAVISTREAMINFOW psi,LONG lSize);
  874. STDAPI AVIStreamInfoA (PAVISTREAM pavi,LPAVISTREAMINFOA psi,LONG lSize);
  875. STDAPI_(LONG) AVIStreamFindSample(PAVISTREAM pavi,LONG lPos,LONG lFlags);
  876. STDAPI AVIStreamReadFormat (PAVISTREAM pavi,LONG lPos,LPVOID lpFormat,LONG *lpcbFormat);
  877. STDAPI AVIStreamSetFormat (PAVISTREAM pavi,LONG lPos,LPVOID lpFormat,LONG cbFormat);
  878. STDAPI AVIStreamReadData (PAVISTREAM pavi,DWORD fcc,LPVOID lp,LONG *lpcb);
  879. STDAPI AVIStreamWriteData (PAVISTREAM pavi,DWORD fcc,LPVOID lp,LONG cb);
  880. STDAPI AVIStreamRead (PAVISTREAM pavi,LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,LONG *plBytes,LONG *plSamples);
  881. #define AVISTREAMREAD_CONVENIENT (__MSABI_LONG(-1))
  882. STDAPI AVIStreamWrite (PAVISTREAM pavi,LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,DWORD dwFlags,LONG *plSampWritten,LONG *plBytesWritten);
  883. STDAPI_(LONG) AVIStreamStart (PAVISTREAM pavi);
  884. STDAPI_(LONG) AVIStreamLength (PAVISTREAM pavi);
  885. STDAPI_(LONG) AVIStreamTimeToSample (PAVISTREAM pavi,LONG lTime);
  886. STDAPI_(LONG) AVIStreamSampleToTime (PAVISTREAM pavi,LONG lSample);
  887. STDAPI AVIStreamBeginStreaming(PAVISTREAM pavi,LONG lStart,LONG lEnd,LONG lRate);
  888. STDAPI AVIStreamEndStreaming(PAVISTREAM pavi);
  889. STDAPI_(PGETFRAME) AVIStreamGetFrameOpen(PAVISTREAM pavi,LPBITMAPINFOHEADER lpbiWanted);
  890. STDAPI_(LPVOID) AVIStreamGetFrame(PGETFRAME pg,LONG lPos);
  891. STDAPI AVIStreamGetFrameClose(PGETFRAME pg);
  892. STDAPI AVIStreamOpenFromFileA(PAVISTREAM *ppavi,LPCSTR szFile,DWORD fccType,LONG lParam,UINT mode,CLSID *pclsidHandler);
  893. STDAPI AVIStreamOpenFromFileW(PAVISTREAM *ppavi,LPCWSTR szFile,DWORD fccType,LONG lParam,UINT mode,CLSID *pclsidHandler);
  894. STDAPI AVIStreamCreate(PAVISTREAM *ppavi,LONG lParam1,LONG lParam2,CLSID *pclsidHandler);
  895. #define FIND_DIR __MSABI_LONG(0x0000000F)
  896. #define FIND_NEXT __MSABI_LONG(0x00000001)
  897. #define FIND_PREV __MSABI_LONG(0x00000004)
  898. #define FIND_FROM_START __MSABI_LONG(0x00000008)
  899. #define FIND_TYPE __MSABI_LONG(0x000000F0)
  900. #define FIND_KEY __MSABI_LONG(0x00000010)
  901. #define FIND_ANY __MSABI_LONG(0x00000020)
  902. #define FIND_FORMAT __MSABI_LONG(0x00000040)
  903. #define FIND_RET __MSABI_LONG(0x0000F000)
  904. #define FIND_POS __MSABI_LONG(0x00000000)
  905. #define FIND_LENGTH __MSABI_LONG(0x00001000)
  906. #define FIND_OFFSET __MSABI_LONG(0x00002000)
  907. #define FIND_SIZE __MSABI_LONG(0x00003000)
  908. #define FIND_INDEX __MSABI_LONG(0x00004000)
  909. #define AVIStreamFindKeyFrame AVIStreamFindSample
  910. #define FindKeyFrame FindSample
  911. #define AVIStreamClose AVIStreamRelease
  912. #define AVIFileClose AVIFileRelease
  913. #define AVIStreamInit AVIFileInit
  914. #define AVIStreamExit AVIFileExit
  915. #define SEARCH_NEAREST FIND_PREV
  916. #define SEARCH_BACKWARD FIND_PREV
  917. #define SEARCH_FORWARD FIND_NEXT
  918. #define SEARCH_KEY FIND_KEY
  919. #define SEARCH_ANY FIND_ANY
  920. #define AVIStreamSampleToSample(pavi1,pavi2,l) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2,l))
  921. #define AVIStreamNextSample(pavi,l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_ANY)
  922. #define AVIStreamPrevSample(pavi,l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_ANY)
  923. #define AVIStreamNearestSample(pavi,l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_ANY)
  924. #define AVIStreamNextKeyFrame(pavi,l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_KEY)
  925. #define AVIStreamPrevKeyFrame(pavi,l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_KEY)
  926. #define AVIStreamNearestKeyFrame(pavi,l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_KEY)
  927. #define AVIStreamIsKeyFrame(pavi,l) (AVIStreamNearestKeyFrame(pavi,l)==l)
  928. #define AVIStreamPrevSampleTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamPrevSample(pavi,AVIStreamTimeToSample(pavi,t)))
  929. #define AVIStreamNextSampleTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNextSample(pavi,AVIStreamTimeToSample(pavi,t)))
  930. #define AVIStreamNearestSampleTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNearestSample(pavi,AVIStreamTimeToSample(pavi,t)))
  931. #define AVIStreamNextKeyFrameTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNextKeyFrame(pavi,AVIStreamTimeToSample(pavi,t)))
  932. #define AVIStreamPrevKeyFrameTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamPrevKeyFrame(pavi,AVIStreamTimeToSample(pavi,t)))
  933. #define AVIStreamNearestKeyFrameTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNearestKeyFrame(pavi,AVIStreamTimeToSample(pavi,t)))
  934. #define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamStart(pavi))
  935. #define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamLength(pavi))
  936. #define AVIStreamEnd(pavi) (AVIStreamStart(pavi) + AVIStreamLength(pavi))
  937. #define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamEnd(pavi))
  938. #define AVIStreamSampleSize(pavi,lPos,plSize) AVIStreamRead(pavi,lPos,1,NULL,(LONG)0,plSize,NULL)
  939. #define AVIStreamFormatSize(pavi,lPos,plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize)
  940. #define AVIStreamDataSize(pavi,fcc,plSize) AVIStreamReadData(pavi,fcc,NULL,plSize)
  941. #define AVStreamNextKeyFrame(pavi,pos) AVIStreamFindSample(pavi, pos + 1, FIND_NEXT | FIND_KEY)
  942. #define AVStreamPrevKeyFrame(pavi,pos) AVIStreamFindSample(pavi, pos - 1, FIND_NEXT | FIND_KEY)
  943. #ifndef comptypeDIB
  944. #define comptypeDIB mmioFOURCC('D','I','B',' ')
  945. #endif
  946. #define AVISave __MINGW_NAME_AW(AVISave)
  947. #define AVISaveV __MINGW_NAME_AW(AVISaveV)
  948. #define AVIBuildFilter __MINGW_NAME_AW(AVIBuildFilter)
  949. #define EditStreamSetInfo __MINGW_NAME_AW(EditStreamSetInfo)
  950. #define EditStreamSetName __MINGW_NAME_AW(EditStreamSetName)
  951. STDAPI AVIMakeCompressedStream(PAVISTREAM *ppsCompressed,PAVISTREAM ppsSource,AVICOMPRESSOPTIONS *lpOptions,CLSID *pclsidHandler);
  952. EXTERN_C HRESULT CDECL AVISaveA (LPCSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM pfile,LPAVICOMPRESSOPTIONS lpOptions,...);
  953. STDAPI AVISaveVA(LPCSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM *ppavi,LPAVICOMPRESSOPTIONS *plpOptions);
  954. EXTERN_C HRESULT CDECL AVISaveW (LPCWSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM pfile,LPAVICOMPRESSOPTIONS lpOptions,...);
  955. STDAPI AVISaveVW(LPCWSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM *ppavi,LPAVICOMPRESSOPTIONS *plpOptions);
  956. STDAPI_(INT_PTR) AVISaveOptions(HWND hwnd,UINT uiFlags,int nStreams,PAVISTREAM *ppavi,LPAVICOMPRESSOPTIONS *plpOptions);
  957. STDAPI AVISaveOptionsFree(int nStreams,LPAVICOMPRESSOPTIONS *plpOptions);
  958. STDAPI AVIBuildFilterW(LPWSTR lpszFilter,LONG cbFilter,WINBOOL fSaving);
  959. STDAPI AVIBuildFilterA(LPSTR lpszFilter,LONG cbFilter,WINBOOL fSaving);
  960. STDAPI AVIMakeFileFromStreams(PAVIFILE *ppfile,int nStreams,PAVISTREAM *papStreams);
  961. STDAPI AVIMakeStreamFromClipboard(UINT cfFormat,HANDLE hGlobal,PAVISTREAM *ppstream);
  962. STDAPI AVIPutFileOnClipboard(PAVIFILE pf);
  963. STDAPI AVIGetFromClipboard(PAVIFILE *lppf);
  964. STDAPI AVIClearClipboard(void);
  965. STDAPI CreateEditableStream(PAVISTREAM *ppsEditable,PAVISTREAM psSource);
  966. STDAPI EditStreamCut(PAVISTREAM pavi,LONG *plStart,LONG *plLength,PAVISTREAM *ppResult);
  967. STDAPI EditStreamCopy(PAVISTREAM pavi,LONG *plStart,LONG *plLength,PAVISTREAM *ppResult);
  968. STDAPI EditStreamPaste(PAVISTREAM pavi,LONG *plPos,LONG *plLength,PAVISTREAM pstream,LONG lStart,LONG lEnd);
  969. STDAPI EditStreamClone(PAVISTREAM pavi,PAVISTREAM *ppResult);
  970. STDAPI EditStreamSetNameA(PAVISTREAM pavi,LPCSTR lpszName);
  971. STDAPI EditStreamSetNameW(PAVISTREAM pavi,LPCWSTR lpszName);
  972. STDAPI EditStreamSetInfoW(PAVISTREAM pavi,LPAVISTREAMINFOW lpInfo,LONG cbInfo);
  973. STDAPI EditStreamSetInfoA(PAVISTREAM pavi,LPAVISTREAMINFOA lpInfo,LONG cbInfo);
  974. #ifndef AVIERR_OK
  975. #define AVIERR_OK __MSABI_LONG(0)
  976. #define MAKE_AVIERR(error) MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000 + error)
  977. #define AVIERR_UNSUPPORTED MAKE_AVIERR(101)
  978. #define AVIERR_BADFORMAT MAKE_AVIERR(102)
  979. #define AVIERR_MEMORY MAKE_AVIERR(103)
  980. #define AVIERR_INTERNAL MAKE_AVIERR(104)
  981. #define AVIERR_BADFLAGS MAKE_AVIERR(105)
  982. #define AVIERR_BADPARAM MAKE_AVIERR(106)
  983. #define AVIERR_BADSIZE MAKE_AVIERR(107)
  984. #define AVIERR_BADHANDLE MAKE_AVIERR(108)
  985. #define AVIERR_FILEREAD MAKE_AVIERR(109)
  986. #define AVIERR_FILEWRITE MAKE_AVIERR(110)
  987. #define AVIERR_FILEOPEN MAKE_AVIERR(111)
  988. #define AVIERR_COMPRESSOR MAKE_AVIERR(112)
  989. #define AVIERR_NOCOMPRESSOR MAKE_AVIERR(113)
  990. #define AVIERR_READONLY MAKE_AVIERR(114)
  991. #define AVIERR_NODATA MAKE_AVIERR(115)
  992. #define AVIERR_BUFFERTOOSMALL MAKE_AVIERR(116)
  993. #define AVIERR_CANTCOMPRESS MAKE_AVIERR(117)
  994. #define AVIERR_USERABORT MAKE_AVIERR(198)
  995. #define AVIERR_ERROR MAKE_AVIERR(199)
  996. #endif
  997. #endif
  998. #ifndef NOMCIWND
  999. #ifdef __cplusplus
  1000. #define MCIWndSM ::SendMessage
  1001. #else
  1002. #define MCIWndSM SendMessage
  1003. #endif
  1004. #define MCIWND_WINDOW_CLASS TEXT("MCIWndClass")
  1005. #define MCIWndCreate __MINGW_NAME_AW(MCIWndCreate)
  1006. HWND WINAPIV MCIWndCreateA(HWND hwndParent,HINSTANCE hInstance,DWORD dwStyle,LPCSTR szFile);
  1007. HWND WINAPIV MCIWndCreateW(HWND hwndParent,HINSTANCE hInstance,DWORD dwStyle,LPCWSTR szFile);
  1008. WINBOOL WINAPIV MCIWndRegisterClass(void);
  1009. #define MCIWNDOPENF_NEW 0x0001
  1010. #define MCIWNDF_NOAUTOSIZEWINDOW 0x0001
  1011. #define MCIWNDF_NOPLAYBAR 0x0002
  1012. #define MCIWNDF_NOAUTOSIZEMOVIE 0x0004
  1013. #define MCIWNDF_NOMENU 0x0008
  1014. #define MCIWNDF_SHOWNAME 0x0010
  1015. #define MCIWNDF_SHOWPOS 0x0020
  1016. #define MCIWNDF_SHOWMODE 0x0040
  1017. #define MCIWNDF_SHOWALL 0x0070
  1018. #define MCIWNDF_NOTIFYMODE 0x0100
  1019. #define MCIWNDF_NOTIFYPOS 0x0200
  1020. #define MCIWNDF_NOTIFYSIZE 0x0400
  1021. #define MCIWNDF_NOTIFYERROR 0x1000
  1022. #define MCIWNDF_NOTIFYALL 0x1F00
  1023. #define MCIWNDF_NOTIFYANSI 0x0080
  1024. #define MCIWNDF_NOTIFYMEDIAA 0x0880
  1025. #define MCIWNDF_NOTIFYMEDIAW 0x0800
  1026. #define MCIWNDF_NOTIFYMEDIA __MINGW_NAME_AW(MCIWNDF_NOTIFYMEDIA)
  1027. #define MCIWNDF_RECORD 0x2000
  1028. #define MCIWNDF_NOERRORDLG 0x4000
  1029. #define MCIWNDF_NOOPEN 0x8000
  1030. #define MCIWndCanPlay(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_PLAY,(WPARAM)0,(LPARAM)0)
  1031. #define MCIWndCanRecord(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_RECORD,(WPARAM)0,(LPARAM)0)
  1032. #define MCIWndCanSave(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_SAVE,(WPARAM)0,(LPARAM)0)
  1033. #define MCIWndCanWindow(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_WINDOW,(WPARAM)0,(LPARAM)0)
  1034. #define MCIWndCanEject(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_EJECT,(WPARAM)0,(LPARAM)0)
  1035. #define MCIWndCanConfig(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_CONFIG,(WPARAM)0,(LPARAM)0)
  1036. #define MCIWndPaletteKick(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_PALETTEKICK,(WPARAM)0,(LPARAM)0)
  1037. #define MCIWndSave(hwnd,szFile) (LONG)MCIWndSM(hwnd,MCI_SAVE,(WPARAM)0,(LPARAM)(LPVOID)(szFile))
  1038. #define MCIWndSaveDialog(hwnd) MCIWndSave(hwnd,-1)
  1039. #define MCIWndNew(hwnd,lp) (LONG)MCIWndSM(hwnd,MCIWNDM_NEW,(WPARAM)0,(LPARAM)(LPVOID)(lp))
  1040. #define MCIWndRecord(hwnd) (LONG)MCIWndSM(hwnd,MCI_RECORD,(WPARAM)0,(LPARAM)0)
  1041. #define MCIWndOpen(hwnd,sz,f) (LONG)MCIWndSM(hwnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
  1042. #define MCIWndOpenDialog(hwnd) MCIWndOpen(hwnd,-1,0)
  1043. #define MCIWndClose(hwnd) (LONG)MCIWndSM(hwnd,MCI_CLOSE,(WPARAM)0,(LPARAM)0)
  1044. #define MCIWndPlay(hwnd) (LONG)MCIWndSM(hwnd,MCI_PLAY,(WPARAM)0,(LPARAM)0)
  1045. #define MCIWndStop(hwnd) (LONG)MCIWndSM(hwnd,MCI_STOP,(WPARAM)0,(LPARAM)0)
  1046. #define MCIWndPause(hwnd) (LONG)MCIWndSM(hwnd,MCI_PAUSE,(WPARAM)0,(LPARAM)0)
  1047. #define MCIWndResume(hwnd) (LONG)MCIWndSM(hwnd,MCI_RESUME,(WPARAM)0,(LPARAM)0)
  1048. #define MCIWndSeek(hwnd,lPos) (LONG)MCIWndSM(hwnd,MCI_SEEK,(WPARAM)0,(LPARAM)(LONG)(lPos))
  1049. #define MCIWndEject(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_EJECT,(WPARAM)0,(LPARAM)0)
  1050. #define MCIWndHome(hwnd) MCIWndSeek(hwnd,MCIWND_START)
  1051. #define MCIWndEnd(hwnd) MCIWndSeek(hwnd,MCIWND_END)
  1052. #define MCIWndGetSource(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_GET_SOURCE,(WPARAM)0,(LPARAM)(LPRECT)(prc))
  1053. #define MCIWndPutSource(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_PUT_SOURCE,(WPARAM)0,(LPARAM)(LPRECT)(prc))
  1054. #define MCIWndGetDest(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_GET_DEST,(WPARAM)0,(LPARAM)(LPRECT)(prc))
  1055. #define MCIWndPutDest(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_PUT_DEST,(WPARAM)0,(LPARAM)(LPRECT)(prc))
  1056. #define MCIWndPlayReverse(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_PLAYREVERSE,(WPARAM)0,(LPARAM)0)
  1057. #define MCIWndPlayFrom(hwnd,lPos) (LONG)MCIWndSM(hwnd,MCIWNDM_PLAYFROM,(WPARAM)0,(LPARAM)(LONG)(lPos))
  1058. #define MCIWndPlayTo(hwnd,lPos) (LONG)MCIWndSM(hwnd,MCIWNDM_PLAYTO,(WPARAM)0,(LPARAM)(LONG)(lPos))
  1059. #define MCIWndPlayFromTo(hwnd,lStart,lEnd) (MCIWndSeek(hwnd,lStart),MCIWndPlayTo(hwnd,lEnd))
  1060. #define MCIWndGetDeviceID(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETDEVICEID,(WPARAM)0,(LPARAM)0)
  1061. #define MCIWndGetAlias(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETALIAS,(WPARAM)0,(LPARAM)0)
  1062. #define MCIWndGetMode(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
  1063. #define MCIWndGetPosition(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETPOSITION,(WPARAM)0,(LPARAM)0)
  1064. #define MCIWndGetPositionString(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
  1065. #define MCIWndGetStart(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETSTART,(WPARAM)0,(LPARAM)0)
  1066. #define MCIWndGetLength(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETLENGTH,(WPARAM)0,(LPARAM)0)
  1067. #define MCIWndGetEnd(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETEND,(WPARAM)0,(LPARAM)0)
  1068. #define MCIWndStep(hwnd,n) (LONG)MCIWndSM(hwnd,MCI_STEP,(WPARAM)0,(LPARAM)(__LONG32)(n))
  1069. #define MCIWndDestroy(hwnd) (VOID)MCIWndSM(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0)
  1070. #define MCIWndSetZoom(hwnd,iZoom) (VOID)MCIWndSM(hwnd,MCIWNDM_SETZOOM,(WPARAM)0,(LPARAM)(UINT)(iZoom))
  1071. #define MCIWndGetZoom(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETZOOM,(WPARAM)0,(LPARAM)0)
  1072. #define MCIWndSetVolume(hwnd,iVol) (LONG)MCIWndSM(hwnd,MCIWNDM_SETVOLUME,(WPARAM)0,(LPARAM)(UINT)(iVol))
  1073. #define MCIWndGetVolume(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETVOLUME,(WPARAM)0,(LPARAM)0)
  1074. #define MCIWndSetSpeed(hwnd,iSpeed) (LONG)MCIWndSM(hwnd,MCIWNDM_SETSPEED,(WPARAM)0,(LPARAM)(UINT)(iSpeed))
  1075. #define MCIWndGetSpeed(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETSPEED,(WPARAM)0,(LPARAM)0)
  1076. #define MCIWndSetTimeFormat(hwnd,lp) (LONG)MCIWndSM(hwnd,MCIWNDM_SETTIMEFORMAT,(WPARAM)0,(LPARAM)(LPTSTR)(lp))
  1077. #define MCIWndGetTimeFormat(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
  1078. #define MCIWndValidateMedia(hwnd) (VOID)MCIWndSM(hwnd,MCIWNDM_VALIDATEMEDIA,(WPARAM)0,(LPARAM)0)
  1079. #define MCIWndSetRepeat(hwnd,f) (void)MCIWndSM(hwnd,MCIWNDM_SETREPEAT,(WPARAM)0,(LPARAM)(WINBOOL)(f))
  1080. #define MCIWndGetRepeat(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_GETREPEAT,(WPARAM)0,(LPARAM)0)
  1081. #define MCIWndUseFrames(hwnd) MCIWndSetTimeFormat(hwnd,TEXT("frames"))
  1082. #define MCIWndUseTime(hwnd) MCIWndSetTimeFormat(hwnd,TEXT("ms"))
  1083. #define MCIWndSetActiveTimer(hwnd,active) (VOID)MCIWndSM(hwnd,MCIWNDM_SETACTIVETIMER,(WPARAM)(UINT)(active),(LPARAM)0)
  1084. #define MCIWndSetInactiveTimer(hwnd,inactive) (VOID)MCIWndSM(hwnd,MCIWNDM_SETINACTIVETIMER,(WPARAM)(UINT)(inactive),(LPARAM)0)
  1085. #define MCIWndSetTimers(hwnd,active,inactive) (VOID)MCIWndSM(hwnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),(LPARAM)(UINT)(inactive))
  1086. #define MCIWndGetActiveTimer(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETACTIVETIMER,(WPARAM)0,(LPARAM)0);
  1087. #define MCIWndGetInactiveTimer(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETINACTIVETIMER,(WPARAM)0,(LPARAM)0);
  1088. #define MCIWndRealize(hwnd,fBkgnd) (LONG)MCIWndSM(hwnd,MCIWNDM_REALIZE,(WPARAM)(WINBOOL)(fBkgnd),(LPARAM)0)
  1089. #define MCIWndSendString(hwnd,sz) (LONG)MCIWndSM(hwnd,MCIWNDM_SENDSTRING,(WPARAM)0,(LPARAM)(LPTSTR)(sz))
  1090. #define MCIWndReturnString(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
  1091. #define MCIWndGetError(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
  1092. #define MCIWndGetPalette(hwnd) (HPALETTE)MCIWndSM(hwnd,MCIWNDM_GETPALETTE,(WPARAM)0,(LPARAM)0)
  1093. #define MCIWndSetPalette(hwnd,hpal) (LONG)MCIWndSM(hwnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),(LPARAM)0)
  1094. #define MCIWndGetFileName(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
  1095. #define MCIWndGetDevice(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
  1096. #define MCIWndGetStyles(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETSTYLES,(WPARAM)0,(LPARAM)0)
  1097. #define MCIWndChangeStyles(hwnd,mask,value) (LONG)MCIWndSM(hwnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value))
  1098. #define MCIWndOpenInterface(hwnd,pUnk) (LONG)MCIWndSM(hwnd,MCIWNDM_OPENINTERFACE,(WPARAM)0,(LPARAM)(LPUNKNOWN)(pUnk))
  1099. #define MCIWndSetOwner(hwnd,hwndP) (LONG)MCIWndSM(hwnd,MCIWNDM_SETOWNER,(WPARAM)(hwndP),(LPARAM)0)
  1100. #define MCIWNDM_GETDEVICEID (WM_USER + 100)
  1101. #define MCIWNDM_GETSTART (WM_USER + 103)
  1102. #define MCIWNDM_GETLENGTH (WM_USER + 104)
  1103. #define MCIWNDM_GETEND (WM_USER + 105)
  1104. #define MCIWNDM_EJECT (WM_USER + 107)
  1105. #define MCIWNDM_SETZOOM (WM_USER + 108)
  1106. #define MCIWNDM_GETZOOM (WM_USER + 109)
  1107. #define MCIWNDM_SETVOLUME (WM_USER + 110)
  1108. #define MCIWNDM_GETVOLUME (WM_USER + 111)
  1109. #define MCIWNDM_SETSPEED (WM_USER + 112)
  1110. #define MCIWNDM_GETSPEED (WM_USER + 113)
  1111. #define MCIWNDM_SETREPEAT (WM_USER + 114)
  1112. #define MCIWNDM_GETREPEAT (WM_USER + 115)
  1113. #define MCIWNDM_REALIZE (WM_USER + 118)
  1114. #define MCIWNDM_VALIDATEMEDIA (WM_USER + 121)
  1115. #define MCIWNDM_PLAYFROM (WM_USER + 122)
  1116. #define MCIWNDM_PLAYTO (WM_USER + 123)
  1117. #define MCIWNDM_GETPALETTE (WM_USER + 126)
  1118. #define MCIWNDM_SETPALETTE (WM_USER + 127)
  1119. #define MCIWNDM_SETTIMERS (WM_USER + 129)
  1120. #define MCIWNDM_SETACTIVETIMER (WM_USER + 130)
  1121. #define MCIWNDM_SETINACTIVETIMER (WM_USER + 131)
  1122. #define MCIWNDM_GETACTIVETIMER (WM_USER + 132)
  1123. #define MCIWNDM_GETINACTIVETIMER (WM_USER + 133)
  1124. #define MCIWNDM_CHANGESTYLES (WM_USER + 135)
  1125. #define MCIWNDM_GETSTYLES (WM_USER + 136)
  1126. #define MCIWNDM_GETALIAS (WM_USER + 137)
  1127. #define MCIWNDM_PLAYREVERSE (WM_USER + 139)
  1128. #define MCIWNDM_GET_SOURCE (WM_USER + 140)
  1129. #define MCIWNDM_PUT_SOURCE (WM_USER + 141)
  1130. #define MCIWNDM_GET_DEST (WM_USER + 142)
  1131. #define MCIWNDM_PUT_DEST (WM_USER + 143)
  1132. #define MCIWNDM_CAN_PLAY (WM_USER + 144)
  1133. #define MCIWNDM_CAN_WINDOW (WM_USER + 145)
  1134. #define MCIWNDM_CAN_RECORD (WM_USER + 146)
  1135. #define MCIWNDM_CAN_SAVE (WM_USER + 147)
  1136. #define MCIWNDM_CAN_EJECT (WM_USER + 148)
  1137. #define MCIWNDM_CAN_CONFIG (WM_USER + 149)
  1138. #define MCIWNDM_PALETTEKICK (WM_USER + 150)
  1139. #define MCIWNDM_OPENINTERFACE (WM_USER + 151)
  1140. #define MCIWNDM_SETOWNER (WM_USER + 152)
  1141. #define MCIWNDM_SENDSTRINGA (WM_USER + 101)
  1142. #define MCIWNDM_GETPOSITIONA (WM_USER + 102)
  1143. #define MCIWNDM_GETMODEA (WM_USER + 106)
  1144. #define MCIWNDM_SETTIMEFORMATA (WM_USER + 119)
  1145. #define MCIWNDM_GETTIMEFORMATA (WM_USER + 120)
  1146. #define MCIWNDM_GETFILENAMEA (WM_USER + 124)
  1147. #define MCIWNDM_GETDEVICEA (WM_USER + 125)
  1148. #define MCIWNDM_GETERRORA (WM_USER + 128)
  1149. #define MCIWNDM_NEWA (WM_USER + 134)
  1150. #define MCIWNDM_RETURNSTRINGA (WM_USER + 138)
  1151. #define MCIWNDM_OPENA (WM_USER + 153)
  1152. #define MCIWNDM_SENDSTRINGW (WM_USER + 201)
  1153. #define MCIWNDM_GETPOSITIONW (WM_USER + 202)
  1154. #define MCIWNDM_GETMODEW (WM_USER + 206)
  1155. #define MCIWNDM_SETTIMEFORMATW (WM_USER + 219)
  1156. #define MCIWNDM_GETTIMEFORMATW (WM_USER + 220)
  1157. #define MCIWNDM_GETFILENAMEW (WM_USER + 224)
  1158. #define MCIWNDM_GETDEVICEW (WM_USER + 225)
  1159. #define MCIWNDM_GETERRORW (WM_USER + 228)
  1160. #define MCIWNDM_NEWW (WM_USER + 234)
  1161. #define MCIWNDM_RETURNSTRINGW (WM_USER + 238)
  1162. #define MCIWNDM_OPENW (WM_USER + 252)
  1163. #define MCIWNDM_SENDSTRING __MINGW_NAME_AW(MCIWNDM_SENDSTRING)
  1164. #define MCIWNDM_GETPOSITION __MINGW_NAME_AW(MCIWNDM_GETPOSITION)
  1165. #define MCIWNDM_GETMODE __MINGW_NAME_AW(MCIWNDM_GETMODE)
  1166. #define MCIWNDM_SETTIMEFORMAT __MINGW_NAME_AW(MCIWNDM_SETTIMEFORMAT)
  1167. #define MCIWNDM_GETTIMEFORMAT __MINGW_NAME_AW(MCIWNDM_GETTIMEFORMAT)
  1168. #define MCIWNDM_GETFILENAME __MINGW_NAME_AW(MCIWNDM_GETFILENAME)
  1169. #define MCIWNDM_GETDEVICE __MINGW_NAME_AW(MCIWNDM_GETDEVICE)
  1170. #define MCIWNDM_GETERROR __MINGW_NAME_AW(MCIWNDM_GETERROR)
  1171. #define MCIWNDM_NEW __MINGW_NAME_AW(MCIWNDM_NEW)
  1172. #define MCIWNDM_RETURNSTRING __MINGW_NAME_AW(MCIWNDM_RETURNSTRING)
  1173. #define MCIWNDM_OPEN __MINGW_NAME_AW(MCIWNDM_OPEN)
  1174. #define MCIWNDM_NOTIFYMODE (WM_USER + 200)
  1175. #define MCIWNDM_NOTIFYPOS (WM_USER + 201)
  1176. #define MCIWNDM_NOTIFYSIZE (WM_USER + 202)
  1177. #define MCIWNDM_NOTIFYMEDIA (WM_USER + 203)
  1178. #define MCIWNDM_NOTIFYERROR (WM_USER + 205)
  1179. #define MCIWND_START -1
  1180. #define MCIWND_END -2
  1181. #ifndef MCI_PLAY
  1182. #define MCI_CLOSE 0x0804
  1183. #define MCI_PLAY 0x0806
  1184. #define MCI_SEEK 0x0807
  1185. #define MCI_STOP 0x0808
  1186. #define MCI_PAUSE 0x0809
  1187. #define MCI_STEP 0x080E
  1188. #define MCI_RECORD 0x080F
  1189. #define MCI_SAVE 0x0813
  1190. #define MCI_CUT 0x0851
  1191. #define MCI_COPY 0x0852
  1192. #define MCI_PASTE 0x0853
  1193. #define MCI_RESUME 0x0855
  1194. #define MCI_DELETE 0x0856
  1195. #endif
  1196. #ifndef MCI_MODE_NOT_READY
  1197. #define MCI_MODE_NOT_READY (524)
  1198. #define MCI_MODE_STOP (525)
  1199. #define MCI_MODE_PLAY (526)
  1200. #define MCI_MODE_RECORD (527)
  1201. #define MCI_MODE_SEEK (528)
  1202. #define MCI_MODE_PAUSE (529)
  1203. #define MCI_MODE_OPEN (530)
  1204. #endif
  1205. #endif
  1206. #if !defined(NOAVICAP) || !defined(NOVIDEO)
  1207. #ifndef _RCINVOKED
  1208. DECLARE_HANDLE(HVIDEO);
  1209. typedef HVIDEO *LPHVIDEO;
  1210. #endif
  1211. DWORD WINAPI VideoForWindowsVersion(void);
  1212. #define DV_ERR_OK (0)
  1213. #define DV_ERR_BASE (1)
  1214. #define DV_ERR_NONSPECIFIC (DV_ERR_BASE)
  1215. #define DV_ERR_BADFORMAT (DV_ERR_BASE + 1)
  1216. #define DV_ERR_STILLPLAYING (DV_ERR_BASE + 2)
  1217. #define DV_ERR_UNPREPARED (DV_ERR_BASE + 3)
  1218. #define DV_ERR_SYNC (DV_ERR_BASE + 4)
  1219. #define DV_ERR_TOOMANYCHANNELS (DV_ERR_BASE + 5)
  1220. #define DV_ERR_NOTDETECTED (DV_ERR_BASE + 6)
  1221. #define DV_ERR_BADINSTALL (DV_ERR_BASE + 7)
  1222. #define DV_ERR_CREATEPALETTE (DV_ERR_BASE + 8)
  1223. #define DV_ERR_SIZEFIELD (DV_ERR_BASE + 9)
  1224. #define DV_ERR_PARAM1 (DV_ERR_BASE + 10)
  1225. #define DV_ERR_PARAM2 (DV_ERR_BASE + 11)
  1226. #define DV_ERR_CONFIG1 (DV_ERR_BASE + 12)
  1227. #define DV_ERR_CONFIG2 (DV_ERR_BASE + 13)
  1228. #define DV_ERR_FLAGS (DV_ERR_BASE + 14)
  1229. #define DV_ERR_13 (DV_ERR_BASE + 15)
  1230. #define DV_ERR_NOTSUPPORTED (DV_ERR_BASE + 16)
  1231. #define DV_ERR_NOMEM (DV_ERR_BASE + 17)
  1232. #define DV_ERR_ALLOCATED (DV_ERR_BASE + 18)
  1233. #define DV_ERR_BADDEVICEID (DV_ERR_BASE + 19)
  1234. #define DV_ERR_INVALHANDLE (DV_ERR_BASE + 20)
  1235. #define DV_ERR_BADERRNUM (DV_ERR_BASE + 21)
  1236. #define DV_ERR_NO_BUFFERS (DV_ERR_BASE + 22)
  1237. #define DV_ERR_MEM_CONFLICT (DV_ERR_BASE + 23)
  1238. #define DV_ERR_IO_CONFLICT (DV_ERR_BASE + 24)
  1239. #define DV_ERR_DMA_CONFLICT (DV_ERR_BASE + 25)
  1240. #define DV_ERR_INT_CONFLICT (DV_ERR_BASE + 26)
  1241. #define DV_ERR_PROTECT_ONLY (DV_ERR_BASE + 27)
  1242. #define DV_ERR_LASTERROR (DV_ERR_BASE + 27)
  1243. #define DV_ERR_USER_MSG (DV_ERR_BASE + 1000)
  1244. #ifndef _RCINVOKED
  1245. #ifndef MM_DRVM_OPEN
  1246. #define MM_DRVM_OPEN 0x3D0
  1247. #define MM_DRVM_CLOSE 0x3D1
  1248. #define MM_DRVM_DATA 0x3D2
  1249. #define MM_DRVM_ERROR 0x3D3
  1250. #endif
  1251. #define DV_VM_OPEN MM_DRVM_OPEN
  1252. #define DV_VM_CLOSE MM_DRVM_CLOSE
  1253. #define DV_VM_DATA MM_DRVM_DATA
  1254. #define DV_VM_ERROR MM_DRVM_ERROR
  1255. typedef struct videohdr_tag {
  1256. LPBYTE lpData;
  1257. DWORD dwBufferLength;
  1258. DWORD dwBytesUsed;
  1259. DWORD dwTimeCaptured;
  1260. DWORD_PTR dwUser;
  1261. DWORD dwFlags;
  1262. DWORD_PTR dwReserved[4];
  1263. } VIDEOHDR, NEAR *PVIDEOHDR, FAR * LPVIDEOHDR;
  1264. #define VHDR_DONE 0x00000001
  1265. #define VHDR_PREPARED 0x00000002
  1266. #define VHDR_INQUEUE 0x00000004
  1267. #define VHDR_KEYFRAME 0x00000008
  1268. #define VHDR_VALID 0x0000000F
  1269. typedef struct channel_caps_tag {
  1270. DWORD dwFlags;
  1271. DWORD dwSrcRectXMod;
  1272. DWORD dwSrcRectYMod;
  1273. DWORD dwSrcRectWidthMod;
  1274. DWORD dwSrcRectHeightMod;
  1275. DWORD dwDstRectXMod;
  1276. DWORD dwDstRectYMod;
  1277. DWORD dwDstRectWidthMod;
  1278. DWORD dwDstRectHeightMod;
  1279. } CHANNEL_CAPS,NEAR *PCHANNEL_CAPS,*LPCHANNEL_CAPS;
  1280. #define VCAPS_OVERLAY 0x00000001
  1281. #define VCAPS_SRC_CAN_CLIP 0x00000002
  1282. #define VCAPS_DST_CAN_CLIP 0x00000004
  1283. #define VCAPS_CAN_SCALE 0x00000008
  1284. #define VIDEO_EXTERNALIN 0x0001
  1285. #define VIDEO_EXTERNALOUT 0x0002
  1286. #define VIDEO_IN 0x0004
  1287. #define VIDEO_OUT 0x0008
  1288. #define VIDEO_DLG_QUERY 0x0010
  1289. #define VIDEO_CONFIGURE_QUERY 0x8000
  1290. #define VIDEO_CONFIGURE_SET 0x1000
  1291. #define VIDEO_CONFIGURE_GET 0x2000
  1292. #define VIDEO_CONFIGURE_QUERYSIZE 0x0001
  1293. #define VIDEO_CONFIGURE_CURRENT 0x0010
  1294. #define VIDEO_CONFIGURE_NOMINAL 0x0020
  1295. #define VIDEO_CONFIGURE_MIN 0x0040
  1296. #define VIDEO_CONFIGURE_MAX 0x0080
  1297. #define DVM_USER 0X4000
  1298. #define DVM_CONFIGURE_START 0x1000
  1299. #define DVM_CONFIGURE_END 0x1FFF
  1300. #define DVM_PALETTE (DVM_CONFIGURE_START + 1)
  1301. #define DVM_FORMAT (DVM_CONFIGURE_START + 2)
  1302. #define DVM_PALETTERGB555 (DVM_CONFIGURE_START + 3)
  1303. #define DVM_SRC_RECT (DVM_CONFIGURE_START + 4)
  1304. #define DVM_DST_RECT (DVM_CONFIGURE_START + 5)
  1305. #endif
  1306. #endif
  1307. #ifndef NOAVICAP
  1308. #ifdef __cplusplus
  1309. #define AVICapSM(hwnd,m,w,l) ((::IsWindow(hwnd)) ? ::SendMessage(hwnd,m,w,l) : 0)
  1310. #else
  1311. #define AVICapSM(hwnd,m,w,l) ((IsWindow(hwnd)) ? SendMessage(hwnd,m,w,l) : 0)
  1312. #endif
  1313. #ifndef RC_INVOKED
  1314. #define WM_CAP_START WM_USER
  1315. #define WM_CAP_UNICODE_START WM_USER+100
  1316. #define WM_CAP_GET_CAPSTREAMPTR (WM_CAP_START+ 1)
  1317. #define WM_CAP_SET_CALLBACK_ERRORW (WM_CAP_UNICODE_START+ 2)
  1318. #define WM_CAP_SET_CALLBACK_STATUSW (WM_CAP_UNICODE_START+ 3)
  1319. #define WM_CAP_SET_CALLBACK_ERRORA (WM_CAP_START+ 2)
  1320. #define WM_CAP_SET_CALLBACK_STATUSA (WM_CAP_START+ 3)
  1321. #define WM_CAP_SET_CALLBACK_ERROR __MINGW_NAME_AW(WM_CAP_SET_CALLBACK_ERROR)
  1322. #define WM_CAP_SET_CALLBACK_STATUS __MINGW_NAME_AW(WM_CAP_SET_CALLBACK_STATUS)
  1323. #define WM_CAP_SET_CALLBACK_YIELD (WM_CAP_START+ 4)
  1324. #define WM_CAP_SET_CALLBACK_FRAME (WM_CAP_START+ 5)
  1325. #define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_CAP_START+ 6)
  1326. #define WM_CAP_SET_CALLBACK_WAVESTREAM (WM_CAP_START+ 7)
  1327. #define WM_CAP_GET_USER_DATA (WM_CAP_START+ 8)
  1328. #define WM_CAP_SET_USER_DATA (WM_CAP_START+ 9)
  1329. #define WM_CAP_DRIVER_CONNECT (WM_CAP_START+ 10)
  1330. #define WM_CAP_DRIVER_DISCONNECT (WM_CAP_START+ 11)
  1331. #define WM_CAP_DRIVER_GET_NAMEA (WM_CAP_START+ 12)
  1332. #define WM_CAP_DRIVER_GET_VERSIONA (WM_CAP_START+ 13)
  1333. #define WM_CAP_DRIVER_GET_NAMEW (WM_CAP_UNICODE_START+ 12)
  1334. #define WM_CAP_DRIVER_GET_VERSIONW (WM_CAP_UNICODE_START+ 13)
  1335. #define WM_CAP_DRIVER_GET_NAME __MINGW_NAME_AW(WM_CAP_DRIVER_GET_NAME)
  1336. #define WM_CAP_DRIVER_GET_VERSION __MINGW_NAME_AW(WM_CAP_DRIVER_GET_VERSION)
  1337. #define WM_CAP_DRIVER_GET_CAPS (WM_CAP_START+ 14)
  1338. #define WM_CAP_FILE_SET_CAPTURE_FILEA (WM_CAP_START+ 20)
  1339. #define WM_CAP_FILE_GET_CAPTURE_FILEA (WM_CAP_START+ 21)
  1340. #define WM_CAP_FILE_SAVEASA (WM_CAP_START+ 23)
  1341. #define WM_CAP_FILE_SAVEDIBA (WM_CAP_START+ 25)
  1342. #define WM_CAP_FILE_SET_CAPTURE_FILEW (WM_CAP_UNICODE_START+ 20)
  1343. #define WM_CAP_FILE_GET_CAPTURE_FILEW (WM_CAP_UNICODE_START+ 21)
  1344. #define WM_CAP_FILE_SAVEASW (WM_CAP_UNICODE_START+ 23)
  1345. #define WM_CAP_FILE_SAVEDIBW (WM_CAP_UNICODE_START+ 25)
  1346. #define WM_CAP_FILE_SET_CAPTURE_FILE __MINGW_NAME_AW(WM_CAP_FILE_SET_CAPTURE_FILE)
  1347. #define WM_CAP_FILE_GET_CAPTURE_FILE __MINGW_NAME_AW(WM_CAP_FILE_GET_CAPTURE_FILE)
  1348. #define WM_CAP_FILE_SAVEAS __MINGW_NAME_AW(WM_CAP_FILE_SAVEAS)
  1349. #define WM_CAP_FILE_SAVEDIB __MINGW_NAME_AW(WM_CAP_FILE_SAVEDIB)
  1350. #define WM_CAP_FILE_ALLOCATE (WM_CAP_START+ 22)
  1351. #define WM_CAP_FILE_SET_INFOCHUNK (WM_CAP_START+ 24)
  1352. #define WM_CAP_EDIT_COPY (WM_CAP_START+ 30)
  1353. #define WM_CAP_SET_AUDIOFORMAT (WM_CAP_START+ 35)
  1354. #define WM_CAP_GET_AUDIOFORMAT (WM_CAP_START+ 36)
  1355. #define WM_CAP_DLG_VIDEOFORMAT (WM_CAP_START+ 41)
  1356. #define WM_CAP_DLG_VIDEOSOURCE (WM_CAP_START+ 42)
  1357. #define WM_CAP_DLG_VIDEODISPLAY (WM_CAP_START+ 43)
  1358. #define WM_CAP_GET_VIDEOFORMAT (WM_CAP_START+ 44)
  1359. #define WM_CAP_SET_VIDEOFORMAT (WM_CAP_START+ 45)
  1360. #define WM_CAP_DLG_VIDEOCOMPRESSION (WM_CAP_START+ 46)
  1361. #define WM_CAP_SET_PREVIEW (WM_CAP_START+ 50)
  1362. #define WM_CAP_SET_OVERLAY (WM_CAP_START+ 51)
  1363. #define WM_CAP_SET_PREVIEWRATE (WM_CAP_START+ 52)
  1364. #define WM_CAP_SET_SCALE (WM_CAP_START+ 53)
  1365. #define WM_CAP_GET_STATUS (WM_CAP_START+ 54)
  1366. #define WM_CAP_SET_SCROLL (WM_CAP_START+ 55)
  1367. #define WM_CAP_GRAB_FRAME (WM_CAP_START+ 60)
  1368. #define WM_CAP_GRAB_FRAME_NOSTOP (WM_CAP_START+ 61)
  1369. #define WM_CAP_SEQUENCE (WM_CAP_START+ 62)
  1370. #define WM_CAP_SEQUENCE_NOFILE (WM_CAP_START+ 63)
  1371. #define WM_CAP_SET_SEQUENCE_SETUP (WM_CAP_START+ 64)
  1372. #define WM_CAP_GET_SEQUENCE_SETUP (WM_CAP_START+ 65)
  1373. #define WM_CAP_SET_MCI_DEVICEA (WM_CAP_START+ 66)
  1374. #define WM_CAP_GET_MCI_DEVICEA (WM_CAP_START+ 67)
  1375. #define WM_CAP_SET_MCI_DEVICEW (WM_CAP_UNICODE_START+ 66)
  1376. #define WM_CAP_GET_MCI_DEVICEW (WM_CAP_UNICODE_START+ 67)
  1377. #define WM_CAP_SET_MCI_DEVICE __MINGW_NAME_AW(WM_CAP_SET_MCI_DEVICE)
  1378. #define WM_CAP_GET_MCI_DEVICE __MINGW_NAME_AW(WM_CAP_GET_MCI_DEVICE)
  1379. #define WM_CAP_STOP (WM_CAP_START+ 68)
  1380. #define WM_CAP_ABORT (WM_CAP_START+ 69)
  1381. #define WM_CAP_SINGLE_FRAME_OPEN (WM_CAP_START+ 70)
  1382. #define WM_CAP_SINGLE_FRAME_CLOSE (WM_CAP_START+ 71)
  1383. #define WM_CAP_SINGLE_FRAME (WM_CAP_START+ 72)
  1384. #define WM_CAP_PAL_OPENA (WM_CAP_START+ 80)
  1385. #define WM_CAP_PAL_SAVEA (WM_CAP_START+ 81)
  1386. #define WM_CAP_PAL_OPENW (WM_CAP_UNICODE_START+ 80)
  1387. #define WM_CAP_PAL_SAVEW (WM_CAP_UNICODE_START+ 81)
  1388. #define WM_CAP_PAL_OPEN __MINGW_NAME_AW(WM_CAP_PAL_OPEN)
  1389. #define WM_CAP_PAL_SAVE __MINGW_NAME_AW(WM_CAP_PAL_SAVE)
  1390. #define WM_CAP_PAL_PASTE (WM_CAP_START+ 82)
  1391. #define WM_CAP_PAL_AUTOCREATE (WM_CAP_START+ 83)
  1392. #define WM_CAP_PAL_MANUALCREATE (WM_CAP_START+ 84)
  1393. #define WM_CAP_SET_CALLBACK_CAPCONTROL (WM_CAP_START+ 85)
  1394. #define WM_CAP_UNICODE_END WM_CAP_PAL_SAVEW
  1395. #define WM_CAP_END WM_CAP_UNICODE_END
  1396. #define capSetCallbackOnError(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_ERROR,(WPARAM)0,(LPARAM)(LPVOID)(fpProc)))
  1397. #define capSetCallbackOnStatus(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_STATUS,(WPARAM)0,(LPARAM)(LPVOID)(fpProc)))
  1398. #define capSetCallbackOnYield(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_YIELD,(WPARAM)0,(LPARAM)(LPVOID)(fpProc)))
  1399. #define capSetCallbackOnFrame(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_FRAME,(WPARAM)0,(LPARAM)(LPVOID)(fpProc)))
  1400. #define capSetCallbackOnVideoStream(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_VIDEOSTREAM,(WPARAM)0,(LPARAM)(LPVOID)(fpProc)))
  1401. #define capSetCallbackOnWaveStream(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_WAVESTREAM,(WPARAM)0,(LPARAM)(LPVOID)(fpProc)))
  1402. #define capSetCallbackOnCapControl(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_CAPCONTROL,(WPARAM)0,(LPARAM)(LPVOID)(fpProc)))
  1403. #define capSetUserData(hwnd,lUser) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_USER_DATA,(WPARAM)0,(LPARAM)lUser))
  1404. #define capGetUserData(hwnd) (AVICapSM(hwnd,WM_CAP_GET_USER_DATA,(WPARAM)0,(LPARAM)0))
  1405. #define capDriverConnect(hwnd,i) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_CONNECT,(WPARAM)(i),(LPARAM)0))
  1406. #define capDriverDisconnect(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_DISCONNECT,(WPARAM)0,(LPARAM)0))
  1407. #define capDriverGetName(hwnd,szName,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_GET_NAME,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName)))
  1408. #define capDriverGetVersion(hwnd,szVer,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_GET_VERSION,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szVer)))
  1409. #define capDriverGetCaps(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_GET_CAPS,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPDRIVERCAPS)(s)))
  1410. #define capFileSetCaptureFile(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SET_CAPTURE_FILE,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
  1411. #define capFileGetCaptureFile(hwnd,szName,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_GET_CAPTURE_FILE,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName)))
  1412. #define capFileAlloc(hwnd,dwSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_ALLOCATE,(WPARAM)0,(LPARAM)(DWORD)(dwSize)))
  1413. #define capFileSaveAs(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SAVEAS,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
  1414. #define capFileSetInfoChunk(hwnd,lpInfoChunk) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SET_INFOCHUNK,(WPARAM)0,(LPARAM)(LPCAPINFOCHUNK)(lpInfoChunk)))
  1415. #define capFileSaveDIB(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SAVEDIB,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
  1416. #define capEditCopy(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_EDIT_COPY,(WPARAM)0,(LPARAM)0))
  1417. #define capSetAudioFormat(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_AUDIOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPWAVEFORMATEX)(s)))
  1418. #define capGetAudioFormat(hwnd,s,wSize) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_AUDIOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPWAVEFORMATEX)(s)))
  1419. #define capGetAudioFormatSize(hwnd) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_AUDIOFORMAT,(WPARAM)0,(LPARAM)0))
  1420. #define capDlgVideoFormat(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEOFORMAT,(WPARAM)0,(LPARAM)0))
  1421. #define capDlgVideoSource(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEOSOURCE,(WPARAM)0,(LPARAM)0))
  1422. #define capDlgVideoDisplay(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEODISPLAY,(WPARAM)0,(LPARAM)0))
  1423. #define capDlgVideoCompression(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEOCOMPRESSION,(WPARAM)0,(LPARAM)0))
  1424. #define capGetVideoFormat(hwnd,s,wSize) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_VIDEOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(s)))
  1425. #define capGetVideoFormatSize(hwnd) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_VIDEOFORMAT,(WPARAM)0,(LPARAM)0))
  1426. #define capSetVideoFormat(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_VIDEOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(s)))
  1427. #define capPreview(hwnd,f) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_PREVIEW,(WPARAM)(WINBOOL)(f),(LPARAM)0))
  1428. #define capPreviewRate(hwnd,wMS) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_PREVIEWRATE,(WPARAM)(wMS),(LPARAM)0))
  1429. #define capOverlay(hwnd,f) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_OVERLAY,(WPARAM)(WINBOOL)(f),(LPARAM)0))
  1430. #define capPreviewScale(hwnd,f) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_SCALE,(WPARAM)(WINBOOL)f,(LPARAM)0))
  1431. #define capGetStatus(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GET_STATUS,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPSTATUS)(s)))
  1432. #define capSetScrollPos(hwnd,lpP) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_SCROLL,(WPARAM)0,(LPARAM)(LPPOINT)(lpP)))
  1433. #define capGrabFrame(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GRAB_FRAME,(WPARAM)0,(LPARAM)0))
  1434. #define capGrabFrameNoStop(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GRAB_FRAME_NOSTOP,(WPARAM)0,(LPARAM)0))
  1435. #define capCaptureSequence(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SEQUENCE,(WPARAM)0,(LPARAM)0))
  1436. #define capCaptureSequenceNoFile(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SEQUENCE_NOFILE,(WPARAM)0,(LPARAM)0))
  1437. #define capCaptureStop(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_STOP,(WPARAM)0,(LPARAM)0))
  1438. #define capCaptureAbort(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_ABORT,(WPARAM)0,(LPARAM)0))
  1439. #define capCaptureSingleFrameOpen(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SINGLE_FRAME_OPEN,(WPARAM)0,(LPARAM)0))
  1440. #define capCaptureSingleFrameClose(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SINGLE_FRAME_CLOSE,(WPARAM)0,(LPARAM)0))
  1441. #define capCaptureSingleFrame(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SINGLE_FRAME,(WPARAM)0,(LPARAM)0))
  1442. #define capCaptureGetSetup(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GET_SEQUENCE_SETUP,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))
  1443. #define capCaptureSetSetup(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_SEQUENCE_SETUP,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))
  1444. #define capSetMCIDeviceName(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_MCI_DEVICE,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
  1445. #define capGetMCIDeviceName(hwnd,szName,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GET_MCI_DEVICE,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName)))
  1446. #define capPaletteOpen(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_OPEN,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
  1447. #define capPaletteSave(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_SAVE,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
  1448. #define capPalettePaste(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_PASTE,(WPARAM) 0,(LPARAM)0))
  1449. #define capPaletteAuto(hwnd,iFrames,iColors) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_AUTOCREATE,(WPARAM)(iFrames),(LPARAM)(DWORD)(iColors)))
  1450. #define capPaletteManual(hwnd,fGrab,iColors) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_MANUALCREATE,(WPARAM)(fGrab),(LPARAM)(DWORD)(iColors)))
  1451. typedef struct tagCapDriverCaps {
  1452. UINT wDeviceIndex;
  1453. WINBOOL fHasOverlay;
  1454. WINBOOL fHasDlgVideoSource;
  1455. WINBOOL fHasDlgVideoFormat;
  1456. WINBOOL fHasDlgVideoDisplay;
  1457. WINBOOL fCaptureInitialized;
  1458. WINBOOL fDriverSuppliesPalettes;
  1459. HANDLE hVideoIn;
  1460. HANDLE hVideoOut;
  1461. HANDLE hVideoExtIn;
  1462. HANDLE hVideoExtOut;
  1463. } CAPDRIVERCAPS,*PCAPDRIVERCAPS,*LPCAPDRIVERCAPS;
  1464. typedef struct tagCapStatus {
  1465. UINT uiImageWidth;
  1466. UINT uiImageHeight;
  1467. WINBOOL fLiveWindow;
  1468. WINBOOL fOverlayWindow;
  1469. WINBOOL fScale;
  1470. POINT ptScroll;
  1471. WINBOOL fUsingDefaultPalette;
  1472. WINBOOL fAudioHardware;
  1473. WINBOOL fCapFileExists;
  1474. DWORD dwCurrentVideoFrame;
  1475. DWORD dwCurrentVideoFramesDropped;
  1476. DWORD dwCurrentWaveSamples;
  1477. DWORD dwCurrentTimeElapsedMS;
  1478. HPALETTE hPalCurrent;
  1479. WINBOOL fCapturingNow;
  1480. DWORD dwReturn;
  1481. UINT wNumVideoAllocated;
  1482. UINT wNumAudioAllocated;
  1483. } CAPSTATUS,*PCAPSTATUS,*LPCAPSTATUS;
  1484. typedef struct tagCaptureParms {
  1485. DWORD dwRequestMicroSecPerFrame;
  1486. WINBOOL fMakeUserHitOKToCapture;
  1487. UINT wPercentDropForError;
  1488. WINBOOL fYield;
  1489. DWORD dwIndexSize;
  1490. UINT wChunkGranularity;
  1491. WINBOOL fUsingDOSMemory;
  1492. UINT wNumVideoRequested;
  1493. WINBOOL fCaptureAudio;
  1494. UINT wNumAudioRequested;
  1495. UINT vKeyAbort;
  1496. WINBOOL fAbortLeftMouse;
  1497. WINBOOL fAbortRightMouse;
  1498. WINBOOL fLimitEnabled;
  1499. UINT wTimeLimit;
  1500. WINBOOL fMCIControl;
  1501. WINBOOL fStepMCIDevice;
  1502. DWORD dwMCIStartTime;
  1503. DWORD dwMCIStopTime;
  1504. WINBOOL fStepCaptureAt2x;
  1505. UINT wStepCaptureAverageFrames;
  1506. DWORD dwAudioBufferSize;
  1507. WINBOOL fDisableWriteCache;
  1508. UINT AVStreamMaster;
  1509. } CAPTUREPARMS,*PCAPTUREPARMS,*LPCAPTUREPARMS;
  1510. #define AVSTREAMMASTER_AUDIO 0
  1511. #define AVSTREAMMASTER_NONE 1
  1512. typedef struct tagCapInfoChunk {
  1513. FOURCC fccInfoID;
  1514. LPVOID lpData;
  1515. LONG cbData;
  1516. } CAPINFOCHUNK,*PCAPINFOCHUNK,*LPCAPINFOCHUNK;
  1517. typedef LRESULT (CALLBACK *CAPYIELDCALLBACK)(HWND hWnd);
  1518. typedef LRESULT (CALLBACK *CAPSTATUSCALLBACKW)(HWND hWnd,int nID,LPCWSTR lpsz);
  1519. typedef LRESULT (CALLBACK *CAPERRORCALLBACKW)(HWND hWnd,int nID,LPCWSTR lpsz);
  1520. typedef LRESULT (CALLBACK *CAPSTATUSCALLBACKA)(HWND hWnd,int nID,LPCSTR lpsz);
  1521. typedef LRESULT (CALLBACK *CAPERRORCALLBACKA)(HWND hWnd,int nID,LPCSTR lpsz);
  1522. #define CAPSTATUSCALLBACK __MINGW_NAME_AW(CAPSTATUSCALLBACK)
  1523. #define CAPERRORCALLBACK __MINGW_NAME_AW(CAPERRORCALLBACK)
  1524. typedef LRESULT (CALLBACK *CAPVIDEOCALLBACK)(HWND hWnd,LPVIDEOHDR lpVHdr);
  1525. typedef LRESULT (CALLBACK *CAPWAVECALLBACK)(HWND hWnd,LPWAVEHDR lpWHdr);
  1526. typedef LRESULT (CALLBACK *CAPCONTROLCALLBACK)(HWND hWnd,int nState);
  1527. #define CONTROLCALLBACK_PREROLL 1
  1528. #define CONTROLCALLBACK_CAPTURING 2
  1529. HWND WINAPI capCreateCaptureWindowA (LPCSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,int nID);
  1530. WINBOOL WINAPI capGetDriverDescriptionA (UINT wDriverIndex,LPSTR lpszName,int cbName,LPSTR lpszVer,int cbVer);
  1531. HWND WINAPI capCreateCaptureWindowW (LPCWSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,int nID);
  1532. WINBOOL WINAPI capGetDriverDescriptionW (UINT wDriverIndex,LPWSTR lpszName,int cbName,LPWSTR lpszVer,int cbVer);
  1533. #define capCreateCaptureWindow __MINGW_NAME_AW(capCreateCaptureWindow)
  1534. #define capGetDriverDescription __MINGW_NAME_AW(capGetDriverDescription)
  1535. #endif
  1536. #define infotypeDIGITIZATION_TIME mmioFOURCC ('I','D','I','T')
  1537. #define infotypeSMPTE_TIME mmioFOURCC ('I','S','M','P')
  1538. #define IDS_CAP_BEGIN 300
  1539. #define IDS_CAP_END 301
  1540. #define IDS_CAP_INFO 401
  1541. #define IDS_CAP_OUTOFMEM 402
  1542. #define IDS_CAP_FILEEXISTS 403
  1543. #define IDS_CAP_ERRORPALOPEN 404
  1544. #define IDS_CAP_ERRORPALSAVE 405
  1545. #define IDS_CAP_ERRORDIBSAVE 406
  1546. #define IDS_CAP_DEFAVIEXT 407
  1547. #define IDS_CAP_DEFPALEXT 408
  1548. #define IDS_CAP_CANTOPEN 409
  1549. #define IDS_CAP_SEQ_MSGSTART 410
  1550. #define IDS_CAP_SEQ_MSGSTOP 411
  1551. #define IDS_CAP_VIDEDITERR 412
  1552. #define IDS_CAP_READONLYFILE 413
  1553. #define IDS_CAP_WRITEERROR 414
  1554. #define IDS_CAP_NODISKSPACE 415
  1555. #define IDS_CAP_SETFILESIZE 416
  1556. #define IDS_CAP_SAVEASPERCENT 417
  1557. #define IDS_CAP_DRIVER_ERROR 418
  1558. #define IDS_CAP_WAVE_OPEN_ERROR 419
  1559. #define IDS_CAP_WAVE_ALLOC_ERROR 420
  1560. #define IDS_CAP_WAVE_PREPARE_ERROR 421
  1561. #define IDS_CAP_WAVE_ADD_ERROR 422
  1562. #define IDS_CAP_WAVE_SIZE_ERROR 423
  1563. #define IDS_CAP_VIDEO_OPEN_ERROR 424
  1564. #define IDS_CAP_VIDEO_ALLOC_ERROR 425
  1565. #define IDS_CAP_VIDEO_PREPARE_ERROR 426
  1566. #define IDS_CAP_VIDEO_ADD_ERROR 427
  1567. #define IDS_CAP_VIDEO_SIZE_ERROR 428
  1568. #define IDS_CAP_FILE_OPEN_ERROR 429
  1569. #define IDS_CAP_FILE_WRITE_ERROR 430
  1570. #define IDS_CAP_RECORDING_ERROR 431
  1571. #define IDS_CAP_RECORDING_ERROR2 432
  1572. #define IDS_CAP_AVI_INIT_ERROR 433
  1573. #define IDS_CAP_NO_FRAME_CAP_ERROR 434
  1574. #define IDS_CAP_NO_PALETTE_WARN 435
  1575. #define IDS_CAP_MCI_CONTROL_ERROR 436
  1576. #define IDS_CAP_MCI_CANT_STEP_ERROR 437
  1577. #define IDS_CAP_NO_AUDIO_CAP_ERROR 438
  1578. #define IDS_CAP_AVI_DRAWDIB_ERROR 439
  1579. #define IDS_CAP_COMPRESSOR_ERROR 440
  1580. #define IDS_CAP_AUDIO_DROP_ERROR 441
  1581. #define IDS_CAP_AUDIO_DROP_COMPERROR 442
  1582. #define IDS_CAP_STAT_LIVE_MODE 500
  1583. #define IDS_CAP_STAT_OVERLAY_MODE 501
  1584. #define IDS_CAP_STAT_CAP_INIT 502
  1585. #define IDS_CAP_STAT_CAP_FINI 503
  1586. #define IDS_CAP_STAT_PALETTE_BUILD 504
  1587. #define IDS_CAP_STAT_OPTPAL_BUILD 505
  1588. #define IDS_CAP_STAT_I_FRAMES 506
  1589. #define IDS_CAP_STAT_L_FRAMES 507
  1590. #define IDS_CAP_STAT_CAP_L_FRAMES 508
  1591. #define IDS_CAP_STAT_CAP_AUDIO 509
  1592. #define IDS_CAP_STAT_VIDEOCURRENT 510
  1593. #define IDS_CAP_STAT_VIDEOAUDIO 511
  1594. #define IDS_CAP_STAT_VIDEOONLY 512
  1595. #define IDS_CAP_STAT_FRAMESDROPPED 513
  1596. #endif
  1597. #ifdef __cplusplus
  1598. }
  1599. #endif
  1600. #ifndef NOMSACM
  1601. #include <msacm.h>
  1602. #endif
  1603. #ifdef __cplusplus
  1604. extern "C" {
  1605. #endif
  1606. #ifdef OFN_READONLY
  1607. WINBOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn);
  1608. WINBOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn);
  1609. WINBOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn);
  1610. WINBOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn);
  1611. #define GetOpenFileNamePreview __MINGW_NAME_AW(GetOpenFileNamePreview)
  1612. #define GetSaveFileNamePreview __MINGW_NAME_AW(GetSaveFileNamePreview)
  1613. #endif
  1614. #ifndef RC_INVOKED
  1615. #include "poppack.h"
  1616. #endif
  1617. #ifdef __cplusplus
  1618. }
  1619. #endif
  1620. #endif