Download 180KB
Transcript
ïŒïŒµâïœïœïœïœïœïœïŒ°ïŒ£ïŒ©âãããªãã£ãã㣠aPCI-8701 ãŠãŒã¶ãŒãºããã¥ã¢ã« æ ªåŒäŒç€Ÿâä¿èšŒèŠå® ä¿èšŒã®ç¯å² ãã®ä¿èšŒèŠå®ã¯ãåŒç€Ÿâæ ª åŒ äŒ ç€Ÿ 㢠ã ã ã 㯠㷠㹠ã ã 㵠〠㚠㳠ã¹ã補é ã»åºè·ããã客æ§ã«ã è³Œå ¥ããã ããããŒããŠã§ã¢è£œåã«é©çšãããŸããåŒç€Ÿã«ãã£ãŠåºè·ããããœãããŠã§ã¢è£œåã« ã€ããŠã¯ãåŒç€Ÿæå®ã®ãœãããŠã§ã¢äœ¿çšèš±è«Ÿå¥çŽæžã®èŠå®ãé©çšãããŸãã åŒç€Ÿä»¥å€ã§è£œé ãããããŒããŠã§ã¢åã¯ãœãããŠã§ã¢è£œåã«ã€ããŠã¯ã補é å ïŒäŸçµŠå ãåºè· ãã補åãã®ãŸãŸã§æäŸããããŸããããã®ãããªè£œåã«ã¯ããã®è£œé å ïŒäŸçµŠå ãç¬èªã®ä¿èšŒ ãèŠå®ããããšããããŸãã ä¿èšŒæ¡ä»¶ åŒç€Ÿã¯ã以äžã®æ¡é ã«åºã¥ã補åãä¿èšŒããããŸããäžæ ®ã®è£œåãã©ãã«ãæªç¶ã«é²ãããã« ãããããããåæ¡é ããçè§£ã®ãã補åãã䜿çšãã ããã ãã®ä¿èšŒèŠå®ã¯åŒç€Ÿã®è£œåä¿èšŒã®æ ¹å¹¹ããªããã®ã§ããã補åã«ãã£ãŠã¯ããã®åæ±èª¬ææžã ä¿èšŒæžãªã©ã§æŽã«å 容ã现ååããåå¥ã«èŠå®ãããããšããããŸãããããã£ãŠãããã«èŠå® ããåæ¡é ã®æ¡å€§è§£éã«ããåæ±ããç¹å®ç®çãžã®äœ¿çšã«éããŠã¯ååã«ã泚æãã ããã 補åã®ä¿èšŒæéã¯ã補åã«æ·»ä»ããããä¿èšŒæžãã«èšèŒãããæéãšãªããåŒç€Ÿã¯ãä¿èšŒæé äžã«çºèŠãããäžå ·åãªè£œåã«ã€ããŠä¿èšŒã®è²¬ä»»ããã¡ãŸãã ä¿èšŒæéäžã®äžå ·åãªè£œåã«ã€ããŠãåŒç€Ÿã¯äžå ·åéšåãç¡åã§ä¿®çåã¯äº€æããŸãããã ãã æ¬¡ã«èšèŒããäºé ãåå ã§äžå ·åãçãã補åã¯ä¿èšŒã®é©çšå€ãšãªããŸãã ââäºæ ã補åã®èª€çšãä¹±çš ââåŒç€Ÿä»¥å€ã補é åã¯è²©å£²ããéšåã®äœ¿çš ââ補åã®æ¹é ââåŒç€Ÿãæå®ããäŒç€Ÿä»¥å€ã§ã®èª¿æŽãä¿å®ãä¿®çãªã© åŒç€Ÿããåºè·ãããåŸã«çœå®³åã¯ç¬¬äžè ã®è¡çºãäžæ³šæã«ãã£ãŠããããããäžå ·ååã³æå®³ ãæå€±ã«ã€ããŠã¯ããããªãç¶æ³ã«èµ·å ãããã®ã§ãã£ãŠãåŒç€Ÿã¯ãã®è²¬ä»»ãè² ããŸããã åååé¢é£ãå»çé¢é£ãééçé茞é¢é£ããã«ç®¡çããã®ä»ã®äººåœã«é¢ããããããäºç©ã®æœ èšã»èšåã»åšæ©ãªã©å šè¬ã«ãããã補åãéšåãæ©æãšããŠäœ¿çšããããšã¯ã§ããŸãããããã ããããžäœ¿çšããå Žåã¯ä¿èšŒã®é©çšå€ãšãªãããããªãäžå ·ååã³æå®³ãæå€±ã«ã€ããŠãåŒç€Ÿã¯ 責任ãè² ããŸããã ç¹å¥ãªåãæ±ãã«ã€ããŠã®æ³šæ aPCI-8701 åè·¯åºæ¿ã«ã¯ãé黿Ÿé»(ESD)ã®åœ±é¿ãããããã CMOS åè·¯ãå«ãŸããŠããŸãã aPCI-8701 ã®åãæ±ãã茞éãåãä»ãã«éããŠã¯ãé黿Ÿé»ã«ããåè·¯åºæ¿ã®æå·ã鲿¢ãã ããã«ç¹å¥ã®æ³šæãå¿ èŠã§ãããšãã«ãäžèšãé å®ããŠãã ããã ââåè·¯åºæ¿ããšã³ã¯ããŒãžã£ã«åãä»ããæºåãã§ãããŸã§ãé黿°é²æ¢ããã±ãŒãžããå è·¯åºæ¿ãåãåºããªãã§ãã ããã ââã¢ãŒã¹ïŒã°ã©ã³ãïŒãåã£ãé黿Ÿé»é²æ¢ã¹ããŒã·ã§ã³ä»¥å€ã§ã¯ãåè·¯åºæ¿ãåãæ±ã㪠ãã§ãã ããã ââåè·¯åºæ¿ã®åãä»ããåãå€ãã®åã«ãCopmpactPCI ãã¹ãã黿ºãåãé¢ããŠããŠãã ããã ç®æ¬¡ 1.âã¯ããã«............................................................................................................................. 1 2.âã·ã¹ãã èŠä»¶..................................................................................................................... 1 3.â仿§..................................................................................................................................... 2 3.1âã³ãã¯ã¿é çœ®å³ .............................................................................................................2 3.2âæ±çš I/O ããŒãã®ã³ãã¯ã¿ã®ãã³é 眮...........................................................................3 4.âãœãããŠã§ã¢ã¬ãã¡ã¬ã³ã¹............................................................................................. 4 5.âãã¯ãã«ã«ãµããŒã......................................................................................................... 6 ä»é² AïŒ SX11.dll ããŒã¿ã®åãšé¢æ° .................................................................................. 7 ããŒã¿ã®å ............................................................................................................................7 ãã¬ãŒã ã°ã©ããã³ãã« HFG............................................................................................................................ 7 ã€ã¡ãŒãžãããã¡ãã³ãã« HBUF..................................................................................................................... 7 ãšã©ãŒã³ãŒã ECODE............................................................................................................................................. 7 ã·ã¹ãã ããŒã¿æ§é äœ PCI.................................................................................................................................. 7 ãã¬ãŒã ããŒã¿æ§é äœ FRAME........................................................................................................................... 8 ã€ã¡ãŒãžãããã¡ããŒã¿æ§é äœ BUFFER....................................................................................................... 9 ãªãã¬ãŒã·ã§ã³ã¢ãŒãããŒã¿æ§é äœ MODE................................................................................................10 ã¢ããã³ã¹ããªãã¬ãŒã·ã§ã³ã¢ãŒãããŒã¿å MODE_ADVANCED ..................................................... 11 å²ã蟌ã¿ããŒã¿å INT_DATA.............................................................................................................................17 颿°..................................................................................................................................... 19 X11_InitSystem..........................................................................................................................................................19 X11_CloseSystem......................................................................................................................................................20 X11_AllocateBuffer ...................................................................................................................................................21 X11_AllocateBufferExternal....................................................................................................................................22 X11_FreeBuffer..........................................................................................................................................................23 X11_Acquire...............................................................................................................................................................24 X11_StartAcquire......................................................................................................................................................26 X11_StopAcquire.......................................................................................................................................................28 X11_GetStatus...........................................................................................................................................................29 X11_ResetStatus........................................................................................................................................................30 X11_GetHFG..............................................................................................................................................................31 X11_WritePort ...........................................................................................................................................................32 X11_ReadPort............................................................................................................................................................32 X11_GetImageSize....................................................................................................................................................33 X11_SetMode.............................................................................................................................................................33 X11_InterruptOn .......................................................................................................................................................34 X11_InterruptOff........................................................................................................................................................37 X11_InterruptMask ...................................................................................................................................................37 X11_InterruptUnmask ..............................................................................................................................................38 1.âã¯ããã« aPCI-8701 CompactPCI ãããªãã£ããã£ã䜿çšããŠã倿§ãªã¢ããã°ãããªãœãŒã¹ããã³ã³ ãã¥ãŒã¿ã®ã¡ã¢ãª (RAM) ã«ã¢ãã¯ã ããã³ã«ã©ãŒã€ã¡ãŒãžãåã蟌ãããšãã§ããŸãã CompactPCI ãã¹çšã®èšèšã«ãªã£ãŠããŸããIBM PC ããã³äºææ©çšã«èšèšããããœãããŠã§ã¢ã æèŒãããŠããŸãã aPCI-8701 ã¯ãä¿¡å·ãœãŒã¹ã®çš®é¡ãåãããå ¥åãããªä¿¡å·ãããžã¿ã«ã«å€æããŠãå®å®ããåºå ãæäŸããŸããå ¥åã® 3:1 ãã«ããã¬ã¯ãµã«ããã2 æ¬ã®ã³ã³ããžããã1 æ¬ã® Y/C (S-Video)ã¢ã ãã°ãããªå ¥åã®éã§ãœãŒã¹åãæ¿ããã§ããŸããã€ãŸãæå€§ 3 çš®é¡ã®ãããªãœãŒã¹ããã㪠ãã£ããã£ïŒä»¥äžãã¬ãŒã ã°ã©ãïŒã«æ¥ç¶ããããšãã§ããŸããaPCI-8701 ã¯ãå ¥åãããªãã©ãŒ ããã (NTSCãPAL ãŸã㯠SECAM) ãèªåçã«æ€åºããŠãã³ã³ããžããä¿¡å·ã®èŒåºŠ (Y) ãšã¯ã ããã³ã¹ (C) æåãåé¢ããŸããããããã®ä¿¡å·æåã¯ã2 ã€å¥ã ã® 8 ããã A/D ã³ã³ããŒã¿ã§ ããžã¿ã«åãããŸããå ¥åä¿¡å·ã«ããŒãã¹ãã£ã«ã¿ãªã³ã°ãšããã«ãªãŒããµã³ããªã³ã°ãããã ããšã§ããšã€ãªã¢ã·ã³ã°ã¢ãŒããã¡ã¯ãã®çºçãå®å šã«æé€ããã粟å¯ã«ããžã¿ã«åãããŸãã ãã®ããšãããžã¿ã«ä¿¡å·ããå¿ èŠã«å¿ããŠåžæã®å¯žæ³ã«ã¹ã±ãŒãªã³ã°/ã¯ãããã³ã°ãããŸããã¹ ã±ãŒãªã³ã°ãããã€ã¡ãŒãžã¯ããŒã¹ãã¢ãŒãã䜿ã£ãŠãã¹ãã® RAM ã«è»¢éãããŸãããªã³ã㌠ãã® FIFO ã§ãå¿ èŠãªãããã¡ãªã³ã°ã確ä¿ãããã€ã¡ãŒãžæå€±ã®ç¢ºçãæå°ã«æå¶ãããŸãã aPCI-8701 ãš å€éšããŒããŠã§ã¢éã®ã€ã³ã¿ãã§ãŒã¹ã«ã¯ 8 ãããæ±çš I/O ããŒããçšæãããŠã ãŸããããããããšãã°ããªã¬ä»ãã€ã¡ãŒãžåã蟌ã¿ã«å©çšããããšãã§ããŸãã 2.âã·ã¹ãã èŠä»¶ aPCI-8701 ã¯ã3Uã32 ãããã33MHz ã® CompactPCI ã¹ããããïŒã¹ãããå¿ èŠãšããŸãã486CPUã 8MB ã® RAM ãæäœèŠä»¶ã§ããã16MB ã® Pentium æ©ã䜿çšããããšãæšå¥šããŸãã 1 3.â仿§ ãã©ã¡ãŒã¿ 仿§ ãããªãœãŒã¹ NTSCãPALãSECAMãRS-170ãCCIR ãããªå ¥å ã¢ããã°ã³ã³ããžãããã㪠(BNC) × 2 ã¢ããã° Y/C (S-Video) (DIN) × 1 åºåãã©ãŒããã RGB (24 ããã)ãY8 (8 ããã) åºåè§£å床 (æå€§)ããã¯ã»ã«å€ 754 × 480 (NTSCãRS-170) 922 × 576 (PALãSECAMãCCIR) A/D åé¢ èŒåºŠãã£ã³ãã« 8 ããã ã¯ãããã³ã¹ãã£ã³ãã« 8 ããã ãã£ããã£ã¬ãŒã ãªã¢ã«ã¿ã€ã ïŒ 30fps (NTSCãRS-170) 25fps (PALãSECAMãCCIR) æ±çš I/O ããŒã å ¥å系統 4ãåºå系統 4ãTTL/CMOSãDB15 éã³ãã¯ã¿ ãã¹èŠä»¶ CompactPCI 3U ã¹ããã (33MHzã32 ããã ) × 1 æ¶è²»é»å 200mA (æå€§) @ + 5V 100mA (æå€§) @ + 12V åäœæž©åºŠ 0âŒ70â 3.1âã³ãã¯ã¿é çœ®å³ I/O ã€ã³ã¿ãã§ãŒã¹ ãã㪠1 ãã㪠2 S-Video 2 3.2âæ±çš I/O ããŒãã®ã³ãã¯ã¿ã®ãã³é 眮 ãã³çªå· ä¿¡å· ãã³çªå· ä¿¡å· 1 OUT1 11 OUT3 3 OUT0 13 INP0 5 INP3 15 INP1 7 OUT2 4, 6, 8, 12 GND 10 INP2 2, 9, 14 n/c 3 4.âãœãããŠã§ã¢ã¬ãã¡ã¬ã³ã¹ aPCI-8701 ã«ã¯ãSX11 ãœãããŠã§ã¢éçºããã (SDK) ã忢±ãããŠããŸããSDK ã«ã¯ãWindows 95 ãŸã㯠Windows NT äžã§ aPCI-8701 ã䜿ã£ãŠã€ã¡ãŒãžã³ã°ã¢ããªã±ãŒã·ã§ã³ãäœæããã®ã«å¿ èŠãªåçš®ã³ã³ããŒãã³ãã®ã»ãããœãããŠã§ã¢ããã¥ã¡ã³ããŒã·ã§ã³ããµã³ãã«ã¢ããªã±ãŒã·ã§ ã³ (ãœãŒã¹ã³ãŒãä»ã) ãå ¥ã£ãŠããŸããã³ã³ãã¥ãŒã¿ã« SX11 SDK ãã€ã³ã¹ããŒã«ããã«ã¯ãé åžãããã®ãã£ã¹ã¯ 1 ãã setup.exe ãå®è¡ããŸããã³ã³ãã¥ãŒã¿ã«æ¬¡ã®ãã¡ã€ã«ãã€ã³ã¹ã㌠ã«ãããŸãã \HELP\sx11.hlp - ãªã³ã©ã€ã³ãã«ã (ããŒã¿ã®åãš DLL 颿°ã«ã€ããŠã®è©³çްãªèª¬æãå«ã¿ãŸã) \INCLUDE\sx11.h \INCLUDE\sx11f.h - C include ãã¡ã€ã« (åãšå®æ°) - C include ãã¡ã€ã« (颿°ã®ãããã¿ã€ã) \INCLUDE\sx11.ico - SX11 ã¢ã€ã³ã³ \INCLUDE\sx11_vbi.bas - Visual Basic çšã® "include"ãã¡ã€ã« \LIBRARY\sx11.dll - 32 ããããã€ãããã¯ãªã³ã¯ã©ã€ãã©ãª (Windows 95 ãš NT çš) \LIBRARY\sx11.lib - ã€ã³ããŒãã©ã€ãã©ãª (C ã¢ããªã±ãŒã·ã§ã³çš) \SAMPLES\SAMPLE1\... \SAMPLES\SAMPLE2\... \SAMPLES\SAMPLE3\... ãããã®ãã£ã¬ã¯ããªã«ã¯ãã€ã¡ãŒãžåã蟌ã¿ã®ãã¯ããã¯ãäŸèšŒãã 3 çš®é¡ã®ãµã³ãã«ã¢ã㪠ã±ãŒã·ã§ã³ã®ãœãŒã¹ãã¡ã€ã«ãšå®è¡ãã¡ã€ã«ãå ¥ã£ãŠããŸããã¢ããªã±ãŒã·ã§ã³ã¯ C èšèªã§æžã ããŠããŸãããµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã倿Žããã«ã¯ãproject ãã¡ã€ã«ãäœæãã(ã¢ã€ã³ã³ã ã€ã³ããŒãã©ã€ãã©ãªãã¡ã€ã«ãå«ããŠ) ãã¹ãŠã®å¿ èŠãªã³ã³ããŒãã³ããæå®ããå¿ èŠããã ãŸãããµã³ãã«ã¯ãMicrosoft Visual C++ v.4.0ãWatcom C/C++ v.11.0 ã§æ£åžžã³ã³ãã€ã«ã®ãã¹ãæž ã¿ã§ãã \SAMPLES\VBSAMPLE\SETUP... Visual Basic ãµã³ãã«ã€ã³ã¹ããŒã«çšã»ããã¢ãããã¡ã€ã«ãæ¬äœã®ã€ã³ã¹ããŒã«ãçµäºããããšã ãã®ãã£ã¬ã¯ããªãããsetup.exe ãå®è¡ããŸã (ãŸãã¯ãSK11_SDK ãã©ã«ãã® Setup ã¢ã€ã³ ã³ãããã«ã¯ãªãã¯ããŸã)ãVB ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããã®ã«å¿ èŠãªã³ã³ããŒãã³ ããã³ã³ãã¥ãŒã¿ã«ã€ã³ã¹ããŒã«ãããŸããMicrosoft Visual Basic v.4.0 ã§æžããããµã³ãã«ã¢ã ãªã±ãŒã·ã§ã³ã®ãœãŒã¹ãã¡ã€ã«ã\SAMPLES\VBSAMPLE\SOURCE ã«ã€ã³ã¹ããŒã«ãããŸãããµã³ ãã«ã¢ããªã±ãŒã·ã§ã³ã倿Žããã«ã¯ãproject ãã¡ã€ã«ãäœæãã(ã¢ã€ã³ã³ã VB "include"ãã¡ ã€ã«ãå«ããŠ) ãã¹ãŠã®å¿ èŠãªã³ã³ããŒãã³ããæå®ããå¿ èŠããããŸãã 4 \SAMPLES\MILSAMPL\... Matrox Imaging Library (MIL) ãžã®ã€ã³ã¿ãã§ãŒã¹ã®äŸãšããŠã®ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ ãã€ãããã¯ãªã³ã¯ã©ã€ãã©ãª sx11.dll ã®ã€ã³ã¹ããŒã«å ãã£ã¬ã¯ã㪠\WINDOWS\SYSTEM - Windows 95 çš \WINNT\SYSTEM32 - Windows NT çš sx11.dll ã®ã³ããŒã \LIBRARY ã«æ ŒçŽãããŠããŸãã äžèšã®ãã¡ã€ã«ã«å ããŠãSDK ããæ¬¡ã®ãã©ã€ãã³ã³ããŒãã³ããã€ã³ã¹ããŒã«ãããŸãã \WINDOWS\SYSTEM\VMM32\windrvr.vxd - Windows 95 çš \WINNT\SYSTEM32\DRIVERS\windrvr.sys - Windows NT çš SX11.hlp ã®å 容ã¯ä»é² A ãåç §ããŠãã ãã ã 5 5.âãã¯ãã«ã«ãµããŒã ãã¯ãã«ã«ãµããŒãã«ã€ããŠã¯ãåŒç€Ÿãã¯ãã«ã«ã»ã³ã¿ãŒã«ãåãåãããã ããã TELïŒ FAXïŒ E-mailïŒ ããŒã ããŒãžïŒ 045-333-0335 045-331-7770 [email protected] http://www.adtek.co.jp/ 6 ä»é² AïŒ SX11.dll ããŒã¿ã®åãšé¢æ° ããŒã¿ã®å ãã¬ãŒã ã°ã©ããã³ãã« HFG ãã¬ãŒã ã°ã©ãçšã®ãã³ãã«ãšããŠäœ¿çšããã 32 ãããå€ ã€ã¡ãŒãžãããã¡ãã³ãã« HBUF ã€ã¡ãŒãžãããã¡çšã®ãã³ãã«ãšããŠäœ¿çšããã 32 ãããå€ ãšã©ãŒã³ãŒã ECODE ãšã©ãŒã³ãŒããšããŠäœ¿çšããã 32 ãããå€ ã·ã¹ãã ããŒã¿æ§é äœ PCI typedef struct { DWORD boards; DWORD PCIslot[SYS_GRABBERS]; } PCI; PCI æ§é äœã«ã¯ãã·ã¹ãã ã®èå¥ãããã¬ãŒã ã°ã©ãããŒãã«ã€ããŠã®æ å ±ãæ ŒçŽãããŸãã ã¡ã³ã èšè¿° boards ã·ã¹ãã ã®èå¥ããããµããŒããããŠãããã¬ãŒã ã°ã©ãããŒãã®æ° PCIslot ã¹ãããçªå·ã®é å PCI æ§é äœã¯ãX11_InitSystem 颿°ã§åæåãããŸããã·ã¹ãã 宿° SYS_GRABBERS ã¯ããµ ããŒããããŠãããã¬ãŒã ã°ã©ãã®æå€§æ°ã決å®ããŸããå€ã¯ SX11.h ã§å®çŸ©ãããŸããã¡ã³ ã PCIslot ã¯ãç¹å®ããŒãã® PCI ã¹ãããçªå·ã衚ããŸããPCI ã¹ãããçªå·ã¯ãPCI BIOS ã§ çæãããéåžžã®ã¹ãããçªå·ãšåãã§ãªãå ŽåããããŸãã 7 ãã¬ãŒã ããŒã¿æ§é äœ FRAME typedef struct { LPBITMAPINFO lpbmi; void * lpvbits; } FRAME; FRAME æ§é äœã¯ãã·ã¹ãã ã«ããå²ãåœãŠãããã€ã¡ãŒãžãããã¡ã®åã ã®ãã¬ãŒã ã«ã€ã ãŠã®æ å ±ãæ ŒçŽãããŸãã ã¡ã³ã èšè¿° lpbmi ãã¬ãŒã ã«é¢é£ä»ããããããã€ã¹ç¬ç«ãããããã (DIB) ã®å¯žæ³ãšè²æ å ±ãå®çŸ©ãã BITMAPINFO æ§é äœãžã®ãã€ã³ã¿ lpvbits ãã¬ãŒã ã®ã€ã¡ãŒãžããŒã¿ãžã®ãã€ã³ã¿ ã€ã¡ãŒãžãããã¡ãå²ãåœãŠããããšããã¹ãŠã®ãã¬ãŒã ã Windows DIB ã«é¢é£ä»ãããã察 å¿ããããŒã¿æ§é äœãäœæãããŸããããã¯ãWindows API ã䜿ã£ãŠãåã蟌ãŸããã€ã¡ãŒãž ã®è¡šç€ºãåçŽåããŸãããã ããlpvbits ããã¬ãŒã ããŒã¿ãžã®æ±çšãã€ã³ã¿ãšããŠäœ¿ãããšã å¯èœã§ãããããããããé¢é£ããŒã¿æ§é äœãè¡šç€ºé¢æ°ã®èª¬æã«ã€ããŠã¯ Windows API ã®ãã« ããåç §ããŠãã ããã æ³šèšïŒ ãããã¡ãããã©ãããªããããã¡ãšããŠäœæãããå Žåã§ããBITMAPINFO æ§é äœãäœæ ãããŸã (MODE æ§é äœã® store ã¡ã³ãã®èª¬æãåç §ããŠãã ãã)ããã®å ŽåãWindows API 颿°ããã€ã¡ãŒãžãäžäžããããŸã«è¡šç€ºããŸãã 8 ã€ã¡ãŒãžãããã¡ããŒã¿æ§é äœ BUFFER typedef struct { HBUF hbuf; DWORD dwFrames; FRAME frame[SYS_FRAMES]; } BUFFER; BUFFER æ§é äœã¯ãã·ã¹ãã ã®å²ãåœãŠãã€ã¡ãŒãžãããã¡ã«ã€ããŠã®æ å ±ãæ ŒçŽããŸãã〠ã¡ãŒãžãããã¡ã¯ã1 ã€ãŸãã¯è€æ°ã®ã€ã¡ãŒãžãã¬ãŒã ã§æ§æãããŸããåã蟌ã¿é¢æ°ã¯ãåžž ã«ãé£ç¶çã«ååŸ (grab) ããããããªãã¬ãŒã ã«å¯Ÿå¿ããããŒã¿ã§ã1 ã€ã®ã€ã¡ãŒãžãããã¡ ã®ãã¹ãŠã®ãã¬ãŒã ãåããŸãã ã¡ã³ã èšè¿° hbuf ã€ã¡ãŒãžãããã¡ãžã®ãã³ãã« dwFrames ã€ã¡ãŒãžãããã¡å ã®ãã¬ãŒã ã®æ° frame[SYS_FRAMES] FRAME æ§é äœã®é å BUFFER æ§é äœã¯ãX11_AllocateBuffer 颿°ã§åæåãããŸãã 9 ãªãã¬ãŒã·ã§ã³ã¢ãŒãããŒã¿æ§é äœ MODE typedef struct { DWORD scale; DWORD color; DWORD store; DWORD input; MODE_ADVANCED advanced; } MODE; MODE æ§é äœã¯ããã¬ãŒã ã°ã©ãã®ãªãã¬ãŒã·ã§ã³ã«ã€ããŠã®æ å ±ãæ ŒçŽããŸããã²ãã±ã ã«äœ¿çšãããèŠèŸŒã¿ã®ãªãã»ããã£ã³ã°ã¯ãadvanced ã¡ã³ãå éšã«é èœãããŸãã ã¡ã³ã èšè¿° scale ã€ã¡ãŒãžã®ã¹ã±ãŒã«ãå®çŸ©ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ SCALE_ADVANCED èšè¿° ã€ã¡ãŒãžã¹ã±ãŒã«ã¯ãMODE_ADVANCED æ§é äœã®èšå®ã§ å®çŸ©ãããŸãã color store SCALE8 ãã«ãµã€ãºã€ã¡ãŒãž SCALE6 3/4 ãµã€ãºã®ã€ã¡ãŒãž SCALE4 1/2 ãµã€ãºã®ã€ã¡ãŒãž SCALE2 1/4 ãµã€ãºã®ã€ã¡ãŒãž ã€ã¡ãŒãžã®åºåã«ã©ãŒãã©ãŒããããå®çŸ©ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° COLOR_MONO ã¢ãã¯ãã€ã¡ãŒãžã1 ãã€ã/ãã¯ã»ã« COLOR_RGB ã«ã©ãŒã€ã¡ãŒãžã3 ãã€ã/ãã¯ã»ã« ã€ã¡ãŒãžãã©ã®ããã«ã¡ã¢ãªã«æ ŒçŽããããå®çŸ©ããŸãã æ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° STORE_DIB ã€ã¡ãŒãžã¯ Windows DIB (ã©ã€ã³ãªãŒãã®äžäžå転) ãšã ãŠæ ŒçŽãããŸãã STORE_FLAT input advanced ã€ã¡ãŒãžã¯éåžžã®ã©ã€ã³ãªãŒããšããŠæ ŒçŽãããŸãã å ¥åãã«ããã¬ã¯ãµãå¶åŸ¡ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° MUX_0 S-Video å ¥å MUX_1 ãã㪠1 å ¥å MUX_2 ãã㪠2 å ¥å MODE_ADVANCED æ§é äœãã¢ããã³ã¹ãã¢ãŒãã®èšå®ãå®çŸ©ããŸãã 10 ã¢ããã³ã¹ããªãã¬ãŒã·ã§ã³ã¢ãŒãããŒã¿å MODE_ADVANCED typedef struct { DWORD interlace; DWORD xTotal; DWORD xActive; DWORD xDelay; float yFactor; DWORD yActive; DWORD yDelay DWORD FORMAT; DWORD BRIGHT; DWORD CONTRAST; DWORD SAT_U; DWORD SAT_V; DWORD HUE; DWORD LNOTCH; DWORD LDEC; DWORD DEC_RAT; DWORD PEAK; DWORD CAGC; DWORD CKILL; DWORD HFILT; DWORD RANGE; DWORD CORE; DWORD YCOMB; DWORD CCOMB; DWORD ADELAY; DWORD BDELAY; DWORD SLEEP; DWORD CRUSH; DWORD VFILT; DWORD COLOR_BARS; DWORD GAMMA; DWORD PKTP; } MODE_ADVANCED; MODE_ADVANCED æ§é äœã¯ããã¬ãŒã ã°ã©ãã®ã¢ããã³ã¹ããªãã¬ãŒã·ã§ã³ã¢ãŒãã«ã€ã ãŠã®æ å ±ãæ ŒçŽããŸãã 11 ã¡ã³ã èšè¿° interlace å ¥åã€ã¡ãŒãžãã©ãŒããããå®çŸ©ããŸããæ¬¡ã®ããããã«ãªããŸãã xTotal å€ èšè¿° IMG_INTERLACED ã€ã³ã¿ãŒã¬ãŒã¹å ¥åã€ã¡ãŒãž IMG_NONINTERLACED ãã³ã€ã³ã¿ãŒã¬ãŒã¹å ¥åã€ã¡ãŒãž (æ°Žå¹³ãã©ã³ãã³ã°ãå«ã)åºåæ°Žå¹³ãã¯ã»ã«ã®åèšæ°ãæå¹å€ã¯ 100âŒ910 (NTSC) ãŸã㯠1135 (PAL) ããã¬ãŒã ã°ã©ãã«ããå éšçã«çæããããã¯ã» ã«ã®æ°ã§ãã xActive ã¢ã¯ãã£ãåºåæ°Žå¹³ãã¯ã»ã«ã®åèšæ°ãæå¹å€ã¯ 80âŒ900 (NTSC) ãŸã㯠1000 (PAL)ãåºåã€ã¡ãŒãžã®ãã¯ã»ã«æ°ã§ãã xDelay æ°Žå¹³åæã«å¯Ÿãããæ°Žå¹³æ¹åã®ã¢ã¯ãã£ãé åéå§ãªãã»ããããã¯ã»ã«å€ã åžžã«ãæ¬¡ã®æ¡ä»¶ãå è¶³ãããªããã°ãªããŸããïŒ xDelay + xActive <= xTotal yFactor åçŽã¹ã±ãŒãªã³ã°ä¿æ°ããããªãœãŒã¹ãçæããå®éã®ã©ã€ã³æ° (NTSC 㯠525ãPAL 㯠625) ã yFactor ã§é€ããå€ãåºåã€ã¡ãŒãžã®ã©ã€ã³æ°ã«ãªããŸãã æå¹å€ã¯ 1.0âŒ8.0ã yActive (åçŽã¹ã±ãŒãªã³ã°ä¿æ°ãé©çšãããåã®)ã¢ã¯ãã£ãåºåã©ã€ã³ã®åèšæ°ãæ å¹å€ã¯ 60âŒ525 (NTSC) ãŸã㯠625 (PAL)ãããšãã°ãä¿æ° 2 ã§ã¹ã±ãŒã«ããŠã³ ãã NTSC ã€ã¡ãŒãžå šäœãååŸ (grab) ããã«ã¯ãyActive ã 525 ã«ãyFactor ã 2.0 ã«èšå®ããŸããä¿æ° 2 ã§ã¹ã±ãŒã«ããŠã³ãã NTSC ã€ã¡ãŒãžã®äžååã ååŸ (grab) ããã«ã¯ãyActive ã 262 ã«ãyFactor ã 2.0 ã«èšå®ããŸãã yDelay åçŽåæãšã®çžå¯Ÿã§ãåçŽæ¹åã®ã¢ã¯ãã£ãé åéå§ãªãã»ããã(åçŽã¹ã±ãŒ ãªã³ã°ãé©çšãããåã®)ã©ã€ã³æ°ãåžžã«ãæ¬¡ã®æ¡ä»¶ãå è¶³ãããªããã°ãªã㟠ããïŒ yDelay + yActive <= (åèšè¡æ°ã525 ãŸã㯠625) FORMAT BRIGHT å ¥åä¿¡å·ãã©ãŒããããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° FORMAT_NTSC NTSC å ¥åä¿¡å· FORMAT_NTSCJ NTSC (æ¥æ¬) å ¥åä¿¡å· FORMAT_PAL PAL å ¥åä¿¡å· FORMAT_PALM PAL (M) å ¥åä¿¡å· FORMAT_PALN PAL (N) å ¥åä¿¡å· FORMAT_PALNC PAL (N ã³ã³ãããŒã·ã§ã³) å ¥åä¿¡å· FORMAT_SECAM SECAM å ¥åä¿¡å· åºåä¿¡å·ã®æåºŠ (èŒåºŠ) ãå¶åŸ¡ããŸãã0âŒ0xFF ã®å€ããšããŸããå€ã¯ -128 (0×80) ⌠+127 (0×7F) ã®ç¬Šå·ä»ããªãã»ãããšã¿ãªãããŸããèŒåºŠå€åã®è§£å 床㯠1LSB (ãã«ã¬ã³ãžã® 0.4ïŒ )ã CONTRAST ãã® 9 ãããå€ã«èŒåºŠå€ãä¹ããŠãã³ã³ãã©ã¹ã (ã²ã€ã³) 調æŽãåŸãŸãã0⌠0×1FF (237ïŒ ) ã®å€ããšããŸãã0×0D8 ã 100ïŒ ã«å¯Ÿå¿ããŸãã 12 SAT_U ãããªä¿¡å·ã® U æåã«ã²ã€ã³èª¿æŽã远å ããã®ã«äœ¿çšããã 9 ãããå€ãåã ã€ã³ã¯ãªã¡ã³ãå€ã〠U ããã³ V ã«ã©ãŒæåã調æŽããããšã«ãããã¯ãã ãã³ã¹ã調æŽãããŸãã0âŒ0×1FF (201ïŒ ) ã®å€ããšããŸãã0×0FE ã 100ïŒ ã« å¯Ÿå¿ããŸãã SAT_V ãããªä¿¡å·ã® V æåã«ã²ã€ã³èª¿æŽã远å ããããã«äœ¿çšããã 9 ãããå€ãå ãã€ã³ã¯ãªã¡ã³ãå€ã〠U ããã³ V ã«ã©ãŒæåã調æŽããããšã«ãããã¯ã ããã³ã¹ã調æŽãããŸãã0âŒ0×1FF (284ïŒ )ã®å€ããšããŸãã0×0B4 ã 100ïŒ ã« å¯Ÿå¿ããŸãã HUE åŸ©èª¿å¯æ¬éæ³¢ãã§ãŒãºã®èª¿æŽã«ããè²çžãå¶åŸ¡ããŸãã0âŒ0×FF ã®å€ããšã㟠ããå€ã¯ç¬Šå·ä»ããªãã»ãããšã¿ãªãããŸãã0×80 㯠-90 床ã0×7F 㯠+89 床 ã«å¯Ÿå¿ããŸãã LNOTCH ã³ã³ããžããä¿¡å·ã䜿çšããã±ãŒã¹ã§ãåºåã€ã¡ãŒãžã®ãæ Œåæš¡æ§ããã¿ãŒã³ ãé€å»ããŠãåºåä¿¡å·ã®å¯æ¬éæ³¢ãæžè¡°ãããå éšèŒåºŠããããã£ã«ã¿ãå¶åŸ¡ ããŸããæ¬¡ã®ããããã«ãªããŸãã LDEC å€ èšè¿° LNOTCH_OFF ãã£ã«ã¿ç¡å¹å LNOTCH_ON ãã£ã«ã¿æå¹å èŒåºŠä¿¡å·ã®é«åšæ³¢æ°æåãåæžããã®ã«äœ¿çšãããèŒåºŠãã·ã¡ãŒã·ã§ã³ (decimation) ãã£ã«ã¿ãå¶åŸ¡ããŸããããäœãè§£å床ã«ã¹ã±ãŒã«ããŠã³ãããš ãã«æå¹ã§ãã詳ããã¯ãHFILT ãåç §ããŠãã ãããæ¬¡ã®ããããã«ãªã㟠ãã DEC_RAT å€ èšè¿° LDEC_OFF ãã£ã«ã¿ç¡å¹å LDEC_ON ãã£ã«ã¿æå¹å 60 (NTSC) ãŸã㯠50 (PAL/SECAM) ã®ããããã¢ãŠããã£ãŒã«ããŸãã¯ã ã¬ãŒã æ°ã«å¯Ÿå¿ãã 6 ãããå€ãå€ 0 ã¯ãã·ã¡ãŒã·ã§ã³ãç¡å¹ã«ããŸãã PEAK æšæºãŸãã¯ããŒã¯èŒåºŠããŒãã¹ãã£ã«ã¿ã HFILT çµç±ã§å®è£ ãããã©ããã æå®ããŸããæ¬¡ã®ããããã«ãªããŸãã CAGC å€ èšè¿° PEAK_OFF æšæºããŒãã¹ãã£ã«ã¿ PEAK_ON ããŒã¯ããŒãã¹ãã£ã«ã¿ ã¯ãããã³ã¹ AGC æ©èœãå¶åŸ¡ããŸããæå¹ã«ãããšãå ¥åã¯ãããã³ã¹ä¿¡å· ã« 0.5âŒ2.0 ã®ç¯å²ã®å€ãå€ãä¹ããããšã«ããæšæºå€ã®ã¯ãããã³ã¹ã¬ãã«ã è£æ£ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° CAGC_OFF Chroma AGC ç¡å¹å CAGC_ON Chroma AGC æå¹å 13 CKILL HFILT ããŒã«ã©ãŒã®æ€åºãé€å»åè·¯ãå¶åŸ¡ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° CKILL_OFF ããŒã«ã©ãŒã®æ€åºãé€å»ãæå¹å CKILL_ON ããŒã«ã©ãŒã®æ€åºãé€å»ãç¡å¹å LDEC ã LDEC_ON ã«èšå®ãããŠããå Žåã«ãæ°Žå¹³ããŒãã¹ãã£ã«ã¿ãªã³ã°ã® çšåºŠãå¶åŸ¡ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° HFILT_AUTO ã¹ã±ãŒã«ã®èšå®ã«å¿ããŠãèªåçã«ãã£ã«ã¿ãéž æãããŸããæ°Žå¹³ã¹ã±ãŒãªã³ã°ããã«ãã 1/2 㟠ã§ã®ãšãããã£ã«ã¿ãªã³ã°ãªãã«ãªããŸããã¹ ã±ãŒãªã³ã°ã 1/2 ãã 1/4 ã®ãšããCIF ãã£ã«ã¿ã 䜿çšãããŸãã1/4 ãã 1/8 ã®ãšãã¯ãQCIF ã㣠ã«ã¿ã䜿çšãããŸãã1/8 ããå°ããã¹ã±ãŒãªã³ ã°ã§ã¯ãICON ãã£ã«ã¿ã䜿çšãããŸãã RANGE CORE HFILT_CIF CIF ãã£ã«ã¿ HFILT_QCIF QCIF ãã£ã«ã¿ HFILT_ICON ICON ãã£ã«ã¿ èŒåºŠåºåã®ç¯å²ã決å®ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° RANGE_NORM æšæºãªãã¬ãŒã·ã§ã³ (èŒåºŠç¯å² 16âŒ253) RANGE_FULL ãã«ã¬ã³ãžãªãã¬ãŒã·ã§ã³ (èŒåºŠç¯å² 0âŒ255) ã³ã¢ãªã³ã°å€ãå¶åŸ¡ããŸããã³ã¢ãªã³ã°ãæå¹ã«ãããšãç¹å®å€æªæºã®èŒåºŠã¬ ãã«ã¯åãæšãŠãã㊠0 ã«ãªããŸããæ¬¡ã®ããããã«ãªããŸãã YCOMB å€ èšè¿° CORE_OFF ã³ã¢ãªã³ã°ç¡å¹å CORE_8 ã³ã¢ãªã³ã°éŸå€ã 8 ã«èšå® CORE_16 ã³ã¢ãªã³ã°éŸå€ã 16 ã«èšå® CORE_24 ã³ã¢ãªã³ã°éŸå€ã 24 ã«èšå® èŒåºŠã³ã ãã£ã«ã¿ãªã³ã°ãå¶åŸ¡ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° YCOMB_OFF åçŽããŒãã¹ãã£ã«ã¿ãªã³ã°ãšåçŽè£é YCOMB_ON åçŽããŒãã¹ãã£ã«ã¿ãªã³ã°ã®ã¿ããã£ã«ã¿ã¿ã ãã®æ°ã¯ VFILT ã®èšå®ã§æå®ãããŸãã CCOMB ã¯ãããã³ã¹ã³ã ãã£ã«ã¿ãªã³ã°ãå¶åŸ¡ããŸããæ¬¡ã®ããããã«ãªããŸãã 14 ADELAY å€ èšè¿° CCOMB_OFF ã¯ãããã³ã¹ãã£ã«ã¿ãªã³ã°ãç¡å¹å CCOMB_ON ã¯ãããã³ã¹ãã£ã«ã¿ãªã³ã°ãæå¹å ããã¯ããŒã (è€åç»åä¿¡å· ) ãµã³ããªã³ã°é å»¶ãããã©ã«ãå€ã¯ 0 × 68 (NTSC) ãš 0 × 7F (PAL/SECAM) BDELAY 坿¬éæ³¢ãµã³ããªã³ã°é å»¶ãããã©ã«ãå€ã¯ 0 × 5D (NTSC) ãš 0 × 73 (PAL/SECAM) SLEEP èŒåºŠãã¯ãããã³ã¹ A/D ã®ã¹ãªãŒãã¢ãŒããå¶åŸ¡ããŸããæ¬¡ã®ããããã«ãªã ãŸãã å€ èšè¿° SLEEP_OFF A/D ã®äž¡æ¹ãæå¹å Y_SLEEP èŒåºŠã® A/D ãã¹ãªãŒãã¢ãŒãã«ããã C_SLEEP ã¯ãããã³ã¹ã® A/D ãã¹ãªãŒãã¢ãŒãã«ããã A/D ã®äž¡æ¹ãç¡å¹åããã«ã¯ãY_SLEEP ãš C_SLEEP ã®è«çåã䜿ãããšãã§ããŸãã CRUSH AGC ã¢ãŒããå¶åŸ¡ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° CRUSH_OFF éé©å¿ AGC CRUSH_ON é©å¿ AGCãA/D ã®ãªãŒããããŒã«å¯Ÿå¿ããŠãå ¥å é»å§ç¯å²ãäžæããŸãã VFILT åçŽã¹ã±ãŒãªã³ã°ãã£ã«ã¿ã®ã¿ããæ°ãå¶åŸ¡ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° YCOMB ã YCOMB_ON ã«èšå®ãããŠãããšã VFILT_0 2 ã¿ãããã£ã«ã¿ VFILT_1 3 ã¿ãããã£ã«ã¿ã385 æ°Žå¹³ã¢ã¯ãã£ããã¯ã»ã«æªæºã® ã¹ã±ãŒãªã³ã°ã®å Žåã®ã¿å©çšå¯èœ VFILT_2 4 ã¿ãããã£ã«ã¿ã193 æ°Žå¹³ã¢ã¯ãã£ããã¯ã»ã«æªæºã® ã¹ã±ãŒãªã³ã°ã®å Žåã®ã¿å©çšå¯èœ VFILT_3 5 ã¿ãããã£ã«ã¿ã193 æ°Žå¹³ã¢ã¯ãã£ããã¯ã»ã«æªæºã® ã¹ã±ãŒãªã³ã°ã®å Žåã®ã¿å©çšå¯èœ YCOMB ã YCOMB_OFF ã«èšå®ãããŠãããšã VFILT_0 2 ã¿ããè£éã®ã¿ VFILT_1 2 ã¿ãããã£ã«ã¿ãš 2 ã¿ããè£éã385 æ°Žå¹³ã¢ã¯ãã£ã ãã¯ã»ã«æªæºã®ã¹ã±ãŒãªã³ã°ã®å Žåã®ã¿å©çšå¯èœ VFILT_2 3 ã¿ãããã£ã«ã¿ãš 2 ã¿ããè£éã193 æ°Žå¹³ã¢ã¯ãã£ã ãã¯ã»ã«æªæºã®ã¹ã±ãŒãªã³ã°ã®å Žåã®ã¿å©çšå¯èœ VFILT_3 4 ã¿ãããã£ã«ã¿ãš 2 ã¿ããè£éã193 æ°Žå¹³ã¢ã¯ãã£ã ãã¯ã»ã«æªæºã®ã¹ã±ãŒãªã³ã°ã®å Žåã®ã¿å©çšå¯èœ 15 COLOR_BARS GAMMA PKTP ãã¹ãã«ã©ãŒããŒã®ãã¿ãŒã³ãå¶åŸ¡ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° COLORBARS_OFF ã«ã©ãŒããŒããªãã«ããŸãã COLORBARS_ON ã«ã©ãŒããŒããªã³ã«ããŸãã ã¬ã³ãè£æ£é€å»ãå¶åŸ¡ããŸããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° GAMMA_REMOVE_ON ã¬ã³ãè£æ£é€å»ããªã³ã«ããŸãã GAMMA_REMOVE_OFF ã¬ã³ãè£æ£é€å»ããªãã«ããŸãã FIFO ããªã¬ãã€ã³ããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° PKTP4 4DWORD PKTP8 8DWORD PKTP16 16DWORD PKTP32 32DWORD 16 å²ã蟌ã¿ããŒã¿å INT_DATA typedef struct { HFG hfg; DWORD mask; DWORD status; FPTR func; int priority; DWORD total; DWORD lost; } INT_DATA; INT_DATA æ§é äœã¯ãå²ã蟌ã¿ã®ãµããŒãã«å¿ èŠãªæ å ±ãæ ŒçŽããŸãã ã¡ã³ã èšè¿° hfg ãã¬ãŒã ã°ã©ããã³ãã«ããã¬ãŒã ã°ã©ããéžæããŸãã mask å²ã蟌ã¿ãã¹ã¯ãmask ã 0 ã«èšå®ãããšå²ã蟌ã¿ãç¡å¹ã«ãªããŸããæ¬¡ã®å€ ã« mask ãèšå®ãããš (è«çåã䜿çšã§ããŸã)ãæå®ã®å²ã蟌ã¿ãæå¹ã«ãªã ãŸãã å€ èšè¿° STATUS_READY ãã¬ãŒã åã蟌ã¿ãå®äº STATUS_VIDEO å ¥åã§ãããªã¹ããŒã¿ã¹å€æŽ (äŸïŒpresent ãã absent ãž) STATUS_HLOCK å ¥åã§æ°Žå¹³ããã¯ç¶æ å€æŽ STATUS_OFLOW ãªãŒããããŒæ€åº STATUS_HSYNC æ°ããã©ã€ã³ã®éå§ STATUS_VSYNC æ°ãããã£ãŒã«ãã®éå§ STATUS_FMT ãããªãã©ãŒããã倿Žã®æ€åº (äŸïŒNTSC ãã PALãž) 転éãšã©ãŒçºçãããã¯ãããã®çµã¿åããã§ãã STATUS_ERROR status ãã¬ãŒã ã°ã©ãã®ã¹ããŒã¿ã¹ãåå¥ãããã®æå³ã¯ãå²ã蟌ã¿ãã¹ã¯ã®ãã㫠察å¿ããŸããå²ã蟌ã¿çºçæã« status ã®å€ãèšå®ãããŸãã func ãŠãŒã¶å²ã蟌ã¿åŠç颿°ãžã®ãã€ã³ã¿ã颿°ã®æ»ãå€ã¯ DWORD ã§ãåŒæ°ã¯ãš ããŸããã priority ã¹ã¬ããã®åªå é äœã¬ãã«ãåŠçããå²ã蟌ã¿ãæå®ããæŽæ°ã次ã®å€ããšã ãŸãã THREAD_PRIORITY_LOWEST THREAD_PRIORITY_BELOW_NORMAL THREAD_PRIORITY_NORMAL THREAD_PRIORITY_ABOVE_NORMAL THREAD_PRIORITY_HIGHEST THREAD_PRIORITY_TIME_CRITICAL 17 total X11_InterruptOn åŒã³åºãåŸã«çºçããå²ã蟌ã¿ã®åèšæ° lost åŠçãããªãã£ãå²ã蟌ã¿ã®æ° æ³šèš å²ã蟌ã¿ãã¹ã¯ã®ãããã¯ã¹ããŒã¿ã¹ã¯ãŒãã®ãããã«å¯Ÿå¿ããŠããŸãããããã£ãŠãåã ã® ã¹ããŒã¿ã¹æ¡ä»¶ã®éžæã«åã宿°ã䜿ããŸãã 18 颿° X11_InitSystem __declspec(dllimport) ECODE__stdcall X11_InitSystem (pPCIdata) /* PCI æ§é äœã®ã¢ãã¬ã¹ */ PCI * pPCIdata; X11_InitSystem ã¯ãã·ã¹ãã åæå颿°ã§ããã·ã¹ãã äžã§ãµããŒããããŠããããŒããèå¥ ããå éšããŒã¿æ§é ãåæåããŸãã ãã©ã¡ãŒã¿ èšè¿° pPCIdata PCI å倿°ãžã®ãã€ã³ã¿ã æ»ãå€ åæåã«æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãããŸããPCI åæ§é äœã倿Žã㟠ããboards ã«ã¯ãèå¥ãããããµããŒããããŠããããŒãã®æ°ãæ ŒçŽãããŸããPCIslot é å ã«ã¯èå¥ãããããŒãã®ã¹ãããæ°ãæ ŒçŽãããŠããŸããåããŒãã®ãã¬ãŒã ã°ã©ããã³ãã« ã¯ãX11_GetHFG 颿°ã䜿ã£ãŠååŸããããšãã§ããŸãã äŸ PCI pci; ECODE ecode; int i; if (!(ecode = X11_InitSystem (&pci))) { printf (âBoards %d\nâ, pci.boards); for (i = 0; i < pci.boards; i++) { printf (âSlot %04X\nâ, pci.PCIslot[i]); } } else { return ecode; } 19 X11_CloseSystem __declspec(dllimport) void__stdcall X11_InitSystem (void) X11_CloseSystem 颿°ã¯ãçŸåšã®ã·ã¹ãã ãªãœãŒã¹å²ãåœãŠãè§£æŸããŸããã¢ããªã±ãŒã·ã§ã³ çµäºåã«ããªããåŒã³åºããªããã°ãªããŸããã äŸ PCI pci; ECODE ecode; if (!(ecode = X11_InitSystem (&pci))) { /* application code here */ X11_CloseSystem; return 0; } else { return ecode; } 20 X11_AllocateBuffer __declspec(dllimport) ECODE__stdcall X11_AllocateBuffer (pMode, pBuffer, frames) MODE * pMode; BUFFER * pBuffer; DWORD frames; /* MODE æ§é äœã®ã¢ãã¬ã¹ */ /* BUFFER æ§é äœã®ã¢ãã¬ã¹ */ /* ãããã¡å ã®ãã¬ãŒã æ° */ X11_AllocateBuffer 颿°ã¯ãã€ã¡ãŒãžãããã¡ãå²ãåœãŠãŸãã ãã©ã¡ãŒã¿ èšè¿° pMode MODE å倿°ãžã®ãã€ã³ã¿ããããã¡ã®ãµã€ãºãšããããã£ãå®çŸ©ããã«ã¯ã X11_AllocateBuffer 颿°ã®åŒã³åºãåã« MODEãã»ããã¢ãããããŠããªãã ã°ãªããŸãããã¹ã±ãŒãªã³ã°ãã«ã©ãŒãã©ãŒããããã¹ãã¬ãŒãžã¿ã€ãã«åœ±é¿ ãã MODE ã®èšå®ã倿Žããå Žåã¯ãã€ã¡ãŒãžãããã¡ã®åå²ãåœãŠãå¿ èŠ ã«ãªããŸã (MODEãMODE_ADVANCEDãX11_FreeBuffer ãåç §ããŠãã ã ã)ã BUFFER å倿°ãžã®ãã€ã³ã¿ãåŒã³åºãã«æåãããšãX11_AllocateBuffer é¢ pBuffer æ°ã«ãããBUFFER æ§é äœã®ã¡ã³ããèšå®ãããŸãã ã€ã¡ãŒãžãããã¡å ã®ãã¬ãŒã ã®æ°ãããªããã1 ⌠SYS_FRAMES ã®éã®æŽ frames æ°å€ã§ãã æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãããŸããBUFFER åæ§é äœã倿ŽããŸãã hbuf ã«ã¯ãå²ãåœãŠãããŠããã€ã¡ãŒãžãããã¡ãã³ãã«ãæ ŒçŽãããŸããdwFrames ã«ã¯ã ã€ã¡ãŒãžãããã¡å ã®ãã¬ãŒã æ°ãframe é åã«ã¯ãåã ã®ãã¬ãŒã ã®ããŒã¿ããã³é¢é£ä»ã ãããããããããæ å ±ãžã®ãã€ã³ã¿ãæ ŒçŽãããŸãã äŸ PCI pci; ECODE ecode; MODE mode = {DEF_MODE}; BUFFER buffer; if (!(ecode = X11_InitSystem (&pci))) { if (!(ecode = X11_AllocateBuffer (&mode, &buffer, 1))) { /* application code here */ } else { return ecode; } } else { return ecode; } 21 X11_AllocateBufferExternal __declspec(dllimport) ECODE__stdcall X11_AllocateBufferExternal (pMode, pBuffer, frames, pXbuf) MODE * pMode; BUFFER * pBuffer: DWORD frames; void * pXbuf; /* MODE æ§é äœã®ã¢ãã¬ã¹ */ /* BUFFER æ§é äœã®ã¢ãã¬ã¹ */ /* ãããã¡å ã®ãã¬ãŒã æ° */ /* å€éšãããã¡ã®ã¢ãã¬ã¹ */ X11_AllocateBufferExternal 颿°ã¯ãã€ã¡ãŒãžãããã¡ãå€éšé¢æ°ãæäŸãããããã¡ã«ãã ãã³ã°ããŸãã ãã©ã¡ãŒã¿ èšè¿° pMode MODE å倿°ãžã®ãã€ã³ã¿ããããã¡ã®ãµã€ãºãšããããã£ãå®çŸ©ããã«ã¯ã X11_AllocateBufferExternal 颿°ã®åŒã³åºãåã« MODE ãã»ããã¢ãããã㊠ããªããã°ãªããŸããããããã¡ã®ãã£ã¡ã³ã·ã§ã³ãšãã€ã/ãã¯ã»ã«å€ãæ£ç¢º ã«å€éšãããã¡ã®ããã«äžèŽããŠããªããã°ãªããŸããã pBuffer BUFFER å倿°ãžã®ãã€ã³ã¿ãåŒã³åºãã«æåãããšã X11_AllocateBufferExternal 颿°ã«ãããBUFFER æ§é äœã®ã¡ã³ããèšå®ãã ãŸãã frames ã€ã¡ãŒãžãããã¡å ã®ãã¬ãŒã ã®æ°ãããªããã1 ⌠SYS_FRAMES ã®éã®æŽ æ°å€ã§ããã»ãšãã©ã®å Žåã1 ã§ãã æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãã æ³šèš 1. ãã®é¢æ°ã¯ãSX11.dll ãšä»ã®ã€ã¡ãŒãžã³ã°ã¢ããªã±ãŒã·ã§ã³é«éã€ã³ã¿ãã§ãŒã¹ã«å¯Ÿå¿ã ãããã«èšèšãããŠããŸããSX11.dll ããã¢ã¯ã»ã¹å¯èœãªã€ã¡ãŒãžãããã¡ããå¥ã®ã¢ã ãªã±ãŒã·ã§ã³ãŸãã¯ã©ã€ãã©ãªã®å²ãåœãŠããããã¡ã«ãããã³ã°ããŸããããšãã°ã ããŒã¿ãã³ããŒããå¿ èŠãªãã«ãã€ã¡ãŒãžåŠçã¢ããªã±ãŒã·ã§ã³ã®ã€ã¡ãŒãžãããã¡ã«çŽ æ¥ãã¬ãŒã ãåã蟌ãããšãã§ããŸãã 2. X11_FreeBuffer ãš X11_CloseSystem 颿°ã¯ãX11_AllocateBufferExternal 颿°ã®å²ãåœãŠ ããããã¡ã«å±ããã¡ã¢ãªãè§£æŸããŸãããã¡ã¢ãªãå²ãåœãŠãã¢ããªã±ãŒã·ã§ã³ããè§£ æŸããå¿ èŠããããŸãã 22 X11_FreeBuffer __declspec(dllexport) void__stdcall X11_FreeBuffer (hbuf) /* ã€ã¡ãŒãžãããã¡ãã³ãã« */ HBUF hbuf; X11_FreeBuffer 颿°ã¯ãã€ã¡ãŒãžãããã¡ã«é¢é£ä»ãããããªãœãŒã¹ãè§£æŸããŸãã ãã©ã¡ãŒã¿ èšè¿° hbuf è§£æŸããã€ã¡ãŒãžãããã¡ã®ãã³ãã« æ³šèš (ã€ã¡ãŒãžãã©ãŒãããã倿Žãããšããªã©ïŒ ã€ã¡ãŒãžãããã¡ãåå²ãåœãŠããå Žåã¯ã X11_FreeBuffer ã åŒ ã³ åº ã å¿ èŠ ã ã ã 㟠ã ã 㢠ã 㪠㱠㌠㷠㧠㳠ã çµ äº ã ã ãš ã 㯠ã X11_CloseSystem 颿°ããããã¡ãªãœãŒã¹ãè§£æŸãããããX11_FreeBuffer ãåŒã³åºãå¿ èŠã¯ ãããŸããã äŸ PCI pci; ECODE ecode; MODE mode = {DEF_MODE}; BUFFER buffer; if (!(ecode = X11_InitSystem (&pci))) { if (!(ecode = X11_AllocateBuffer (&mode, &buffer, 1))) { /* application code here */ /* now we change the scaling */ mode.scale = SCALE2; X11_FreeBuffer (buffer.hbuf); /* re-allocate the buffer */ if (!(ecode = X11_AllocateBuffer (&mode, &buffer, 1))) { /* application code here*/ } else { return ecode; } } else { return ecode; } } else { return ecode; } 23 X11_Acquire __declspec(dllimport) ECODE__stdcall X11_Acquire (hfg, hbuf, timeout, pStatus) HFG hfg; HBUF hbuf; float timeout; DWORD * pStatus; /* /* /* /* ãã¬ãŒã ã°ã©ããã³ãã« */ ã€ã¡ãŒãžãããã¡ãã³ãã« */ åã蟌ã¿ã¿ã€ã ã¢ãŠããç§ */ ã¹ããŒã¿ã¹å€ãåãåã倿°ã®ã¢ãã¬ã¹ */ X11_Acquire 颿°ã¯ãã€ã¡ãŒãžãããã¡ã®ãã¬ãŒã æ°ãååŸ (grab) ããŸãã ãã©ã¡ãŒã¿ èšè¿° hfg ãã¬ãŒã ã°ã©ããã³ãã«ããã¬ãŒã ã°ã©ããéžæããŸãã hbuf ã€ã¡ãŒãžãããã¡ãã³ãã«ãã€ã¡ãŒãžãããã¡ãéžæããŸããX11_Acquire åŒ ã³åºãåŸãã€ã¡ãŒãžãããã¡ã®ãã¹ãŠã®ãã¬ãŒã ãããŒã¿ã§åããããŸãã BUFFER ããã³ X11_AllocateBuffer ãåç §ããŠãã ããã åã蟌ã¿ã¿ã€ã ã¢ãŠãã®ç§æ°ãtimeout ç§æ°åŸã«åã蟌ã¿ãå®äºããªãå Žåã¯ã timeout æ»ãå€ãè¿ããŸãã ã¹ããŒã¿ã¹å€ãåãåã倿°ã®ã¢ãã¬ã¹ãã€ã¡ãŒãžãããã¡ã®ããããã®ã pStatus ã¬ãŒã ã®åã蟌ã¿äžã«å¯Ÿå¿ããç¶æ ãçºçãããšãåå¥ãããå€ãèšå®ãã㟠ãã æ»ãå€ åã蟌ã¿ã®å®äºåŸããŸã㯠timeout ã®çµéåŸã«æ»ãå€ãè¿ããŸããæåãããš 0ããã以å€ã¯ãš ã©ãŒã³ãŒãã§ããæçµãã¬ãŒã ã®åã蟌ã¿çµäºã«å¯Ÿå¿ããã¹ããŒã¿ã¹ã¯ãŒãã®å€ã§ãpStatus ã®ãã€ã³ããã倿°ãèšå®ãããŸããåãã¬ãŒã ã®åã蟌ã¿ã®éã§ãã¹ããŒã¿ã¹ãããã¯ãèª åçã«ãªã»ãããããŸãããåå¥ã¹ããŒã¿ã¹ããããéžæããã®ã«äœ¿çšãã宿°ã®èª¬æã«ã€ã ãŠã¯ X11_GetStatus ãåç §ããŠãã ããã äŸ PCI pci; ECODE ecode; MODE mode = {DEF_MODE}; BUFFER buffer; DWORD frames = THAT_MANY; HFG hfg; float timeout = .5; DWORD status; if (!(ecode = X11_InitSystem (&pci))) { /* assume we need the 1st frame grabber */ if (!(ecode = X11_GetHFG (&hfg, pci.PCIslot[0]))) { if (!(ecode = X11_AllocateBuffer (&mode, &buffer, frames))) { 24 if (!(ecode = X11_Acquire (hfg, buffer.hbuf, timeout, &status))) { /* application code here */ } else { return ecode; } } else { return ecode; } } else { return ecode; } } else { return ecode; } 25 X11_StartAcquire __declspec(dllimport) ECODE__stdcall X11_SrartAcquire (hfg, hbuf, acqmode) HFG hfg; HBUF hbuf; DWORD acqmode; /* ãã¬ãŒã ã°ã©ããã³ãã« */ /* ã€ã¡ãŒãžãããã¡ãã³ãã« */ /* åã蟌ã¿ã¢ãŒã */ X11_StartAcquire 颿°ã¯ãã€ã¡ãŒãžãããã¡ã®ãã¬ãŒã æ°ã®åã蟌ã¿ãéå§ããå³æã«æ»ãå€ ãè¿ããŸãã ãã©ã¡ãŒã¿ èšè¿° hfg ãã¬ãŒã ã°ã©ããã³ãã«ããã¬ãŒã ã°ã©ããéžæããŸãã hbuf ã€ã¡ãŒãžãããã¡ãã³ãã«ãã€ã¡ãŒãžãããã¡ãéžæããŸãã X11_StartAcquire åŒã³åºãåŸãã€ã¡ãŒãžãããã¡ã®ãã¹ãŠã®ãã¬ãŒã ãããŒã¿ã§åããããŸãã BUFFER ããã³ X11_AllocateBuffer ãåç §ããŠãã ããã acqmode åã蟌ã¿ã¢ãŒãã¹ã€ãããæ¬¡ã®ããããã«ãªããŸãã å€ èšè¿° AMODE_SINGLE ã€ã¡ãŒãžãããã¡ã¯äžåºŠã ãåããããŸãã AMODE_CONT åã蟌ã¿ã忢ããã€ã¡ãŒãžãããã¡ã¯é£ç¶çã«åã ãããŸãã æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸããåã蟌ã¿ã®éå§åŸã峿ã«è¿ããŸãã㢠ããªã±ãŒã·ã§ã³ã¯ãã¹ããŒã¿ã¹ããããããŒãªã³ã°ããŠããŸãã¯å²ã蟌ã¿ã䜿ã£ãŠãåã蟌㿠ãå®äºãããã©ãããå€å®ããŸããé£ç¶ã¢ãŒããéžæãããŠããå Žåãã€ã¡ãŒãžãããã¡ã®æ åŸã®ãã¬ãŒã ãåããããããšãç¶ããŠããã«ãæåã®ãã¬ãŒã ãäžæžããããŸããã¢ããªã±ãŒ ã·ã§ã³ã¯ãSTATUS_READY ããããããŒãªã³ã° (ããã³ãªã»ãã) ããŠããŸãã¯å²ã蟌ã¿ã 䜿ã£ãŠãååå¥ãã¬ãŒã ã®å®äºãå€å®ããŸããAMODE_SINGLE ãéžæãããŠããå Žåã〠ã¡ãŒãžãããã¡ã®æçµãã¬ãŒã ãå®äºããæç¹ã§ãSTATUS_READY_ALL ããããèšå®ãã ãŸããAMODE_CONT ãéžæãããŠããå Žåãæåã®ãã¬ãŒã ã®åã蟌ã¿éå§æã«ãªã»ãã ã ã ã ã® ã§ ã STATUS_READY_ALL ã ã ã ã® ã ㌠㪠㳠㰠㯠信 é Œ ã§ ã 㟠ã ã ã STATUS_READY_ALL ãããã«é¢é£ä»ããããå²ã蟌ã¿ã¯ãããŸããã äŸ PCI pci; ECODE ecode; MODE mode = {DEF_MODE}; BUFFER buffer; DWORD frames = THAT_MANY; HFG hfg; DWORD status; 26 if (!(ecode = X11_InitSystem (&pci))) { /* assume we need the 1st frame grabber */ if (!(ecode = X11_GetHFG (&hfg, pci.PCIslot[0]))) { if (!(ecode = X11_AllocateBuffer (&mode, &buffer, frames))) { if (!(ecode = X11_StartAcquire (hfg, buffer.hbuf, timeout, &status))) { /* wait until acquisition complete */ while (!(ecode = X11_GetStatus (hfg, &status)) && !(status & STATUS_READY_ALL)) { } if (!ecode) { /* application code here */ } else { return ecode; } } else { return ecode; } } else { return ecode; } } else { return ecode; } } else { return ecode; } 27 X11_StopAcquire __declspec(dllexport) ECODE__stdcall X11_StopAcquire (hfg) /* ãã¬ãŒã ã°ã©ããã³ãã« */ HFG hfg; ãã©ã¡ãŒã¿ èšè¿° hfg ãã¬ãŒã ã°ã©ããã³ãã«ããã¬ãŒã ã°ã©ããéžæããŸãã X11_StopAcquire 颿°ã¯ãã€ã¡ãŒãžåã蟌ã¿ã忢ããŸããX11_StartAcquire ãåŒã³åºããŠå ã蟌ã¿ãéå§ãããšãã«éãããã®é¢æ°ã䜿çšããå¿ èŠããããŸãã æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãã 28 X11_GetStatus __declspec(dllexport) ECODE__stdcall X11_GetStatus (hfg, pStatus) HFG hfg; DWORD * pStatus; /* ãã¬ãŒã ã°ã©ããã³ãã« */ /* ã¹ããŒã¿ã¹å€ãåãåã倿°ã®ã¢ãã¬ã¹ */ X11_GetStatus 颿°ã¯ããã¬ãŒã ã°ã©ãã¹ããŒã¿ã¹ã¯ãŒãã®å€ãæ±ããŸãã ãã©ã¡ãŒã¿ èšè¿° hfg ãã¬ãŒã ã°ã©ããã³ãã«ããã¬ãŒã ã°ã©ããéžæããŸãã pStatus ã¹ããŒã¿ã¹å€ãåãåã倿°ã®ã¢ãã¬ã¹ã æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸããã¹ããŒã¿ã¹ã¯ãŒãã®åå¥ãããã«ã¯ã次 ã®æå³ããããŸãã å€ èšè¿° STATUS_READY ãã¬ãŒã åã蟌ã¿ãå®äºãã¢ããªã±ãŒã·ã§ã³ã«ãããªã»ããããå¿ èŠ ããããŸããX11_ResetStatus ãåç §ããŠãã ããã STATUS_READY_ALL ã€ã¡ãŒãžãããã¡ã®åã蟌ã¿ãå®äºãæåã®ãã¬ãŒã ã®åã蟌ã¿éå§ æã«èªåãªã»ãããããŸãã STATUS_VIDEO å ¥åã§ãããªã¹ããŒã¿ã¹å€æŽ (äŸïŒpresent ãã absent ãž) STATUS_HLOCK å ¥åã§æ°Žå¹³ããã¯ç¶æ å€æŽ STATUS_OFLOW ãªãŒããããŒæ€åº STATUS_HSYNC æ°ããã©ã€ã³ã®éå§ STATUS_VSYNC æ°ãããã£ãŒã«ãã®éå§ STATUS_FMT ãããªãã©ãŒããã倿Žã®æ€åº (äŸïŒNTSC ãã PAL ãž) STATUS_ERROR 転éãšã©ãŒçºçãããã¯ãããã®çµã¿åããã§ãã 29 X11_ResetStatus __declspec(dllexport) ECODE__stdcall X11_ResetStatus (hfg, mask) /* ãã¬ãŒã ã°ã©ããã³ãã« */ /* ãªã»ãããã¹ã¯ */ HFG hfg; DWORD mask; X11_ResetStatus 颿°ã¯ããã¬ãŒã ã°ã©ãã¹ããŒã¿ã¹ã¬ãžã¹ã¿ã®åå¥ãããããªã»ããããŸãã ãã©ã¡ãŒã¿ èšè¿° hfg ãã¬ãŒã ã°ã©ããã³ãã«ããã¬ãŒã ã°ã©ããéžæããŸãã mask å€ 1 ãæå®ãããšã ã¹ããŒã¿ã¹ã¬ãžã¹ã¿ã®å¯Ÿå¿ãããããããªã»ãããããŸãã æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸããã¹ããŒã¿ã¹ã¯ãŒãã®åå¥ãããã®æå³ã« ã€ããŠã¯ãX11_GetStatus ãåç §ããŠãã ããã 30 X11_GetHFG __declspec(dllexport) ECODE__stdcall X11_GetHFG (phfg, slot) /* ãã¬ãŒã ã°ã©ããã³ãã«ã®ã¢ãã¬ã¹ */ /* PCI ã¹ãããçªå· */ HFG * phfg; DWORD slot; X11_GetHFG 颿°ã¯ãæå®ããããããŒãã® PCI ã¹ãããçªå·ã«ã€ããŠããã¬ãŒã ã°ã©ããã³ ãã«ã®å€ãåãåºããŸãã ãã©ã¡ãŒã¿ èšè¿° phfg HFG å倿°ãžã®ãã€ã³ã¿ slot PCI ã¹ãããçªå· æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸããphfg ã®ãã€ã³ããã倿°ããã¬ãŒã ã°ã© ããã³ãã«ã®å€ã«èšå®ããŸãã äŸ PCI pci; ECODE ecode; HFG hfg[SYS_GRABBERS]; int i; if (!(ecode = X11_InitSystem (&pci))) { for (i = 0; i < pci.boards; i++) { if ((ecode = X11_GetHFG (&hfg[i], pci.PCIslot[i]))) { return ecode; } } /* application code here */ } else { return ecode; } 31 X11_WritePort __declspec(dllexport) ECODE__stdcall X11_WritePort (hfg, data, mask) /* ãã¬ãŒã ã°ã©ããã³ãã«ã®ã¢ãã¬ã¹ */ /* åºåããŒãã«æžã蟌ãããŒã¿ */ /* æžã蟌ã¿ãã¹ã¯ */ HFG hfg; DWORD data; DWORD mask; X11_WritePort 颿°ã¯ããã¬ãŒã ã°ã©ãã® 4 ãããåºåããŒãã«ããŒã¿ãæžã蟌ã¿ãŸãã ãã©ã¡ãŒã¿ èšè¿° hfg ãã¬ãŒã ã°ã©ããã³ãã«ããã¬ãŒã ã°ã©ããéžæããŸãã data åºåããŒãã«æžã蟌ãããŒã¿ãäžäœ 4 ãããã®ã¿ææã§ãã mask å€ 1 ãæå®ãããšã察å¿ãããããã®ä¿®æ£ãå¯èœã«ãªããŸãã ä»ã®ãããã«åœ±é¿ãäžããã«åã ã®ãããã®ä¿®æ£ãå¯èœã«ãªããŸãã æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãã X11_ReadPort __declspec(dllexport) ECODE__stdcall X11_ReadPort (hfg, pData) /* ãã¬ãŒã ã°ã©ããã³ãã«ã®ã¢ãã¬ã¹ */ /* ããŒã¿å€æ°ã®ã¢ãã¬ã¹ */ HFG hfg; DWORD * pData; X11_ReadPort 颿°ã¯ããã¬ãŒã ã°ã©ãã® 4 ãããå ¥åããŒãããããŒã¿ãèªã¿èŸŒã¿ãŸãã ãã©ã¡ãŒã¿ èšè¿° hfg ãã¬ãŒã ã°ã©ããã³ãã«ããã¬ãŒã ã°ã©ããéžæããŸãã pData äžäœ 4 ãããã«ããŒã¿ãåãåã DWORD 倿°ãžã®ãã€ã³ã¿ æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãã 32 X11_GetImageSize __declspec(dllexport) ECODE__stdcall X11_GetImageSize (pMode, pXsize, pYsize) MODE * pMode; DWORD * pXsize; DWORD * pYsize; /* MODE å倿°ã®ã¢ãã¬ã¹ */ /* æ°Žå¹³ãµã€ãºãåãåã倿°ã®ã¢ãã¬ã¹ */ /* åçŽãµã€ãºãåãåã倿°ã®ã¢ãã¬ã¹ */ X11_GetImageSize 颿°ã¯ãç¹å®ã¢ãŒãã«å¯Ÿå¿ããã€ã¡ãŒãžã®å¯žæ³ãåãåºããŸããè€é㪠ãã©ãŒãããã£ã³ã°ãªãã·ã§ã³ã䜿ã£ãŠããŠãã€ã¡ãŒãžå¯žæ³ãåãåºããªãã±ãŒã¹ã§åœ¹ã«ç«ã¡ ãŸããããšãã°ãåãåºãããå€ã䜿ã£ãŠããã£ã¹ãã¬ã€ã»ãŠã£ã³ããŠãå®çŸ©ããããšãã§ã ãŸãã ãã©ã¡ãŒã¿ èšè¿° pMODE ã¢ãŒãã®èšå®ãæ ŒçŽãã MODE å倿°ãžã®ãã€ã³ã¿ pXsize ãã¯ã»ã«å€ã§ã€ã¡ãŒãžã®æ°Žå¹³ãµã€ãºãåãåã DWORD ãžã®ãã€ã³ã¿ pYsize ãã¯ã»ã«å€ã§ã€ã¡ãŒãžã®åçŽãµã€ãºãåãåã DWORD ãžã®ãã€ã³ã¿ æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãã X11_SetMode __declspec(dllexport) ECODE__stdcall X11_SetMode (hfg, pMode) /* ãã¬ãŒã ã°ã©ããã³ãã«ã®ã¢ãã¬ã¹ */ /* MODE å倿°ã®ã¢ãã¬ã¹ */ HFG hfg; MODE * pMode; X11_SetMODE 倿°ã¯ãèŠæ±ããããã¬ãŒã ã°ã©ãã¢ãŒããèšå®ããŸãã ãã©ã¡ãŒã¿ èšè¿° hfg ãã¬ãŒã ã°ã©ããã³ãã«ããã¬ãŒã ã°ã©ããéžæããŸãã pMODE ã¢ãŒãã®èšå®ãæ ŒçŽãã MODE å倿°ãžã®ãã€ã³ã¿ æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãã æ³šèš X11_SetMODE 倿°é¢æ°åŒã³åºãã®çµæãšããŠãpMode ã®ãã€ã³ããã MODE 倿°ã®å€ãå€ æŽãããå ŽåããããŸããããšãã°ã(SCALE8 ãªã©)æ¢å®ã®ã¹ã±ãŒã«èšå®ã® 1 ã€ã䜿çšãããšã MODE ã® advanced éšåã®ã¡ã³ãã¯ããã«åŸã£ãŠèšå®ãããŸãã 33 X11_InterruptOn __declspec(dllexport) ECODE__stdcall X11_InterruptOn (pIntData) INT_DATA * pIntData; /* INT_DATA å倿°ã®ã¢ãã¬ã¹ */ X11_InterruptOn 颿°ã¯ãç¹å®ãã¬ãŒã ã°ã©ãã«ã€ããŠå²ã蟌ã¿ãæå¹ã«ããŸãã ãã©ã¡ãŒã¿ èšè¿° pIntData å²ã蟌ã¿ã®èšå®ãæ ŒçŽããã°ããŒãã«å€æ°ãžã®ãã€ã³ã¿ æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãã æ³šèš SX11.dll ã¯ãå²ã蟌ã¿ã®åŠçãšããŠãèš±å¯ãããå²ã蟌ã¿ãçºçãããšãã«ãŠã§ãŒã¯ã¢ããã ã䞊åã¹ã¬ãããçæããŸããã·ã¹ãã åŽã®å²ã蟌ã¿åŠçããã·ãŒãžã£ã¯ãpIntData åã®ã〠ã³ããã INT_DATA åã°ããŒãã«å€æ°ã«å¿ èŠãªããŒã¿ãã³ããŒããINT_DATA ã® func ã¡ã³ã ã®ãã€ã³ããããŠãŒã¶é¢æ°ãåŒã³åºããŸããINT_DATA æ§é äœã¯ã次ã®ã¡ã³ããæ ŒçŽããŸãã ã¡ã³ã èšè¿° hfg ãã¬ãŒã ã°ã©ããã³ãã«ããã¬ãŒã ã°ã©ããéžæããŸãã mask å²ã蟌ã¿ãã¹ã¯ãmask ã 0 ã«èšå®ãããšå²ã蟌ã¿ãç¡å¹ã«ãªããŸããæ¬¡ã®å€ ã« mask ãèšå®ãããš(è«çåã䜿çšã§ããŸã)ãæå®ã®å²ã蟌ã¿ãæå¹ã«ãªã㟠ãã status å€ èšè¿° STATUS_READY ãã¬ãŒã åã蟌ã¿ãå®äº STATUS_VIDEO å ¥åã§ãããªã¹ããŒã¿ã¹å€æŽ (äŸïŒpresent ãã absent ãž) STATUS_HLOCK å ¥åã§æ°Žå¹³ããã¯ç¶æ å€æŽ STATUS_OFLOW ãªãŒããããŒæ€åº STATUS_HSYNC æ°ããã©ã€ã³ã®éå§ STATUS_VSYNC æ°ãããã£ãŒã«ãã®éå§ STATUS_FMT ãããªãã©ãŒããã倿Žã®æ€åº (äŸïŒNTSC ãã PAL ãž) STATUS_ERROR 転éãšã©ãŒçºçãããã¯ãããã®çµã¿åããã§ãã ãã¬ãŒã ã°ã©ãã®ã¹ããŒã¿ã¹ãåå¥ãããã®æå³ã¯ãå²ã蟌ã¿ãã¹ã¯ã®ãã㫠察å¿ããŸããå²ã蟌ã¿çºçæã« status ã®å€ãèšå®ãããŸãã func ãŠãŒã¶å²ã蟌ã¿åŠç颿°ãžã®ãã€ã³ã¿ã颿°ã®æ»ãå€ã¯ DWORD ã§ãåŒæ°ã¯ ãšããŸããã 34 ã¹ã¬ããã®åªå é äœã¬ãã«ãåŠçããå²ã蟌ã¿ãæå®ããæŽæ°ã次ã®å€ããšã priority ãŸãã THREAD_PRIORITY_LOWEST THREAD_PRIORITY_BELOW_NORMAL THREAD_PRIORITY_NORMAL THREAD_PRIORITY_ABOVE_NORMAL THREAD_PRIORITY_HIGHEST THREAD_PRIORITY_TIME_CRITICAL total X11_InterruptOn åŒã³åºãåŸã«çºçããå²ã蟌ã¿ã®åèšæ° lost åŠçãããªãã£ãå²ã蟌ã¿ã®æ°ããŠãŒã¶é¢æ°ã®å®è¡äžã«çºçããå²ã蟌㿠äžèšã®äŸã«ç€ºãããã«ãã°ããŒãã«å€æ°ãçµç±ããŠãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãšãŠãŒã¶é¢æ°é ã§ããŒã¿ãçžäºã«åãæž¡ãããããšãã§ããŸããããã©ã«ãã§ãå²ã蟌ã¿ã¯ãã¹ãŠããªã»ãã æã«ãã¹ã¯ããããããŸããã€ãŸããç¡å¹åãããŸããå²ã蟌ã¿ã®ãã¹ã¯ãå€ããŠæå¹ã«ãã ã«ã¯ãX11_InterruptUnmask 颿°ãåŒã³åºããªããã°ãªããŸããããŸããã·ã¹ãã åŽã®å²ã蟌㿠åŠçããã·ãŒãžã£ãå²ã蟌ã¿ã«ãã¹ã¯ããããã®ã§ããã®é¢æ°ã¯ãå²ã蟌ã¿çºçåŸã«åŒã³åºã å¿ èŠããããŸãã äŸ /* global section */ /* define USER type to pass data to/from the user interrupt handling function. Assume componentsâ types are defined */ struct USER { SOMETYPE user1; ANOTHERTYPE user2; YETANOTHERTYPE user3; }; struct USER user; INT_DATA intdata; /* end of global section */ ECODE ecode; HFG hfg; BUFFER buffer; BOOL enough; /* Initialize the system, allocate buffer(s), get handles here */ /* Set up INT_DATA */ intdata.hfg = hfg; intdata.mask = STATUS_READY; intdata.func = UserFunc; //see below; intdata.priority = THREAD_PRIORITY_NORMAL; 35 /* Set up the necessary user data */ user.user2 = NOT_READY; //some user flag; /* Enable interrupt */ if (!(ecode = X11_InterruptOn (&intdata))) { if (!(ecode = X11_InterruptUnmask (hfg, STATUS_READY))) { /* start acquisition */ X11_StartAcquire (hfg, buffer.hbuf, AMODE_SINGLE); /* do whatever is necessary here, for example: */ while (!enough) { if (user.user2 == READY) { user.user2 = NOT_READY; /* start next acquisition */ X11_InterruptUnmask (hfg, STATUS_READY); X11_StartAcquire (hfg, buffer.hbuf, AMODE_SINGLE); /* image is ready, do something with it */ } } } else { return ecode; } } else { return ecode; } DWORD UserFunc (void) { /* do what you need to here, pass the data via USER */ user.user1 = 1; user.user2 = READY; // etc. return 0; } 36 X11_InterruptOff __declspec(dllexport) ECODE__stdcall X11_InterruptOff (pIntData) INT_DATA * pIntData; /* INT_DATA å倿°ã®ã¢ãã¬ã¹ */ X11_InterruptOff 颿°ã¯ãç¹å®ãã¬ãŒã ã°ã©ãã«ã€ããŠå²ã蟌ã¿ãç¡å¹ã«ããŸãã ãã©ã¡ãŒã¿ èšè¿° pIntData å²ã蟌ã¿ã®èšå®ãæ ŒçŽããã°ããŒãã«å€æ°ãžã®ãã€ã³ã¿ æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãã æ³šèš X11_InterruptOff 颿°ã®åŒæ°ã¯ãX11_InterruptOn ã®åŒã³åºãã«äœ¿çšããåŒæ°ãšåãã§ãªãã ã°ãªããŸããã X11_InterruptMask __declspec(dllexport) ECODE__stdcall X11_InterruptMask (pIntData) INT_DATA * pIntData; /* INT_DATA å倿°ã®ã¢ãã¬ã¹ */ X11_InterruptMask 颿°ã¯ãç¹å®ãã¬ãŒã ã°ã©ãã«ã€ããŠå²ã蟌ã¿ã«ãã¹ã¯ããããŸãã ãã©ã¡ãŒã¿ èšè¿° pIntData å²ã蟌ã¿ã®èšå®ãæ ŒçŽããã°ããŒãã«å€æ°ãžã®ãã€ã³ã¿ æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãã æ³šèš X11_InterruptMask 颿°ã¯ãããŒããŠã§ã¢ã¬ãã«ã§éžæãããå²ã蟌ã¿ãç¡å¹åããŸããå²ã 蟌ã¿åŠçããã·ãŒãžã£èªäœã¯åŒãç¶ãã¢ã¯ãã£ãã®ãŸãŸã§ããX11_InterruptMask 颿°ã®åŒæ° ã¯ãX11_InterruptOn ã®åŒã³åºãã«äœ¿çšããåŒæ°ãšåãã§ãªããã°ãªããŸããã 37 X11_InterruptUnmask __declspec(dllexport) ECODE__stdcall X11_InterruptUnmask (pIntData) INT_DATA * pIntData; /* INT_DATA å倿°ã®ã¢ãã¬ã¹ */ X11_InterruptUnmask 颿°ã¯ãç¹å®ãã¬ãŒã ã°ã©ãã«ã€ããŠå²ã蟌ã¿ã®ãã¹ã¯ãå€ããŸãã ãã©ã¡ãŒã¿ èšè¿° pIntData å²ã蟌ã¿ã®èšå®ãæ ŒçŽããã°ããŒãã«å€æ°ãžã®ãã€ã³ã¿ æ»ãå€ æåãããš 0ããã以å€ã¯ãšã©ãŒã³ãŒããæ»ããŸãã æ³šèš X11_InterruptUnmask 颿°ã¯ãããŒããŠã§ã¢ã¬ãã«ã§éžæãããå²ã蟌ã¿ãæå¹åããŸãã X11_InterruptUnmask 颿°ã®åŒæ°ã¯ãX11_InterruptOn ã®åŒã³åºãã«äœ¿çšããåŒæ°ãšåãã§ãª ããã°ãªããŸããã 38 Compact PCI ã·ãªãŒãº aPCI-8701 åæ±èª¬ææž ââââââââââââââââââââââââââââââ åççºè¡â2000 幎 7 æ 26 æ¥ ç¬¬ïŒççºè¡â2000 幎 8 æ 23 æ¥ çºè¡æâæ ªåŒäŒç€Ÿ ã¢ããã㯠ã·ã¹ãã ãµã€ãšã³ã¹ ã240-0005âç¥å¥å·ç暪æµåžä¿åã¶è°·åºç¥æžçº 134 YBP ãã€ãã¯ã»ã³ã¿ãŒ 1F elâ045-331-7575 ã¹âFaxâ045-331-7770 ââââââââââââââââââââââââââââââ èœäžã»ä¹±äžã¯ãåãæ¿ãããããŸãã äžèš±è€è£œ CPCI-046-000823 © ADTEK SYSTEM SCIENCE Co.,Ltd.â2000