¹êÅç¤T¡B¼v­µ²á¤Ñ«Ç¡]PART III¡^

 

¨ç¦¡®w»¡©ú:

 

u        Video Capture¨ç¦¡®w

³o­Ó¨ç¦¡®w¥D­n¨Ï¥Î¤U¦C¸ê®Æµ²ºc¡G

1. CAPTUREPARAMS¡G³o­Ó¸ê®Æµ²ºc¥D­n¥]§t¤F¤@¨ÇÂ^¨ú¼v¹³ªº°Ñ¼Æ¡C¥H¤U¦C¥X´X­Ó¤ñ¸û­«­nªº¦¨­û¡G

(1)                DWORD dwRequestMicroSecPerFrame¡G¥Nªí¬Û¾F¨â­ÓframeªºÂ^¨ú®É¶¡¶¡¹j¡A¨ä³æ¦ì¬°microsecond¡C­Y­È¬°66667«h¥Nªíframe rate¬°15¡C

(2)                BOOL fYield¡G­Y¨ä­È¬°TRUE¡A«hªí¥ÜWindows·|¥H¥t¤@­Óthread¨Ó®·®»¼v¹³¡A¦]¦¹¨Ï¥ÎªÌ¥i¥H¦b®·®»¼v¹³®É¤´µM¥i¥HÄ~Äò¨Ï¥Îµ{¦¡¡F­Y¨ä­È¬°FALSE¡A«hµ{¦¡·|¦b®·®»¼v¹³«áÅã¥Ü¦£¸Lª¬ºA(·Æ¹«´å¼Ð¬°º|¤æ¹Ï¥Ü)¡A¦]¦¹¨Ï¥ÎªÌµLªk¦A¹ïµ{¦¡¤U©R¥O¡C

(3)                BOOL fCaptureAudio¡G¨ä­È¥Nªí¥Ü§_­n¦P®ÉÂ^¨úÁn­µ¸ê®Æ¡C¥»¹êÅç³]¨ä¬°FALSE¡C

 

2. BITMAPINFO¡G³o­Ó¸ê®Æµ²ºc©MÂI°}¹Ï®§®§¬ÛÃö¡A¥D­n©w¸q¤F¼v¹³Â^¨ú¤U¨Ó¤§«áÅã¥Ü¦b¿Ã¹õ¤W¡BÀx¦s¦b°O¾ÐÅé¤ÎÀɮתº®æ¦¡¡C¨ä¤¤¥]§t¤F¨â­Ó¦¨­û¡G

(1)  BITMAPINFOHEADER bmiHeader¡G³o¬O¤@­Ó´y­z¼v¹³©Ê½èªº¸ê®Æµ²ºc¡A¨ä¤¤¦¨­û°O¸ü¤F¼v¹³ªº¤j¤p¡Bcolor depth¡B¥H¤ÎÀ£ÁYªº¤è¦¡¡C¦bVideo Capture¡BVideo Compression Manager¡BDrawDib¨ç¦¡®w¡A¬Æ¦Ü¬O¥u­n¦³Ãö©óÂI°}¹ÏªºÀ³¥Î³£·|¨Ï¥Î¨ì¡A¥i¥H»¡¬O¥»¹êÅçvideo³¡¤À³Ì­«­nªº¸ê®Æµ²ºc¡C

(2)  RGBQUAD bmiColors¡G«ü¦Vcolor table²Ä¤@­Ó¤¸¯Àªº¦ì§}¡CColor table¥D­n°O¿ý³o­Ó¹Ï§Î©Ò¨Ï¥ÎªºÃC¦âªí¥Üªk¤¤¨C¤@ºØÃC¦â¹ïÀ³¨ìRGBªí¥Üªkªº­È¡C

 

¥H¤U«K²³æ¤¶²Ð¥»¹êÅç¥D­n¨Ï¥Îªº¨ç¦¡¤Î¥¨¶°¡G

1. capCreateCaptureWindow¡Gcapture windows¦b·§©À¤Wº¡Ãþ¦üWindows¼Ð·Ç±±¨î¶µ(¦pButton¡BCheck Box¡BRadio Buttonµ¥)¡A¨Ï¥ÎªÌ¹ïcapture windows¤U©R¥O¡A¦A¥Ñcapture windows­t³d©MµwÅédriver·¾³q¥H§¹¦¨¼v¹³Â^¨ú¤u§@¡C¦]¦¹²Ä¤@¨B«K¥²»Ý°õ¦æ¦¹¨ç¦¡¨Ó«Ø¥ßcapture windows¨Ã±o¨ì¨ähandle¡C

2. capDriverConnect¡G³o­Ó¥¨¶°¥D­n¬O±N«Ø¥ß¦nªºcapture windows©MµwÅédriver³sµ²¡C

3. capCaptureGetSetup¤ÎcapCaptureSetSetup¡G«eªÌ¥D­n¬O¨ú±ocapture windowsªºCAPTUREPARAMS¡A¦b±N¨ä­×§ï¤§«á¡A¦A§Q¥Î«áªÌ¨Ó³]©w¡C

4. capGetVideoFormat¤ÎcapSetVideoFormat¡G«eªÌ¥D­n¬O¨ú±ocapture windowsªºBITMAPINFO¡A¦b±N¨ä­×§ï¤§«á¡A¦A§Q¥Î«áªÌ¨Ó³]©w¡C

5. capSetCallbackOnVideoStream¡G³o­Ó¨ç¦¡¥D­n¬O¿é¤J¤@­Ócallback ¨ç¦¡ªº¦ì§}¡A¨Ï±o·íWindows¨CÂ^¨ú¨ì¤@­Óframe®É·|©I¥s³o¤@­Ó¨ç¦¡¡A¨Ã±Nframe¤º®e·í§@¨ç¦¡ªº¿é¤J°Ñ¼Æ¡C¥»¹êÅç«K¬O¦b³o¤@­Ó¨ç¦¡¤¤°õ¦æÀ£ÁYªº¤u§@¡A¨Ã±NÀ£ÁY¦nªºframe¥HWindows Sockets¨ç¦¡°e¥X¡C

6. capCaptureSequenceNoFile¡G³o­Ó¥¨¶°¥D­n¬O©R¥Ocapture windows¶}©lÂ^¨ú¼v¹³¡C

7. capCaptureStop¡G³o­Ó¥¨¶°¥D­n¬O©R¥Ocapture windows°±¤îÂ^¨ú¼v¹³¡C

8. capDriverDisConnect¡G³o­Ó¥¨¶°¥D­n¬O±Ncapture windows©Mµw¸Ñ°£³sµ²¡C¦³¤@ÂI¥²»Ýª`·N¡A¦b°õ¦æ¦¹¥¨¶°¤§«e¥²»Ý¥ý°õ¦æcapSetCallbackOnVideoStream¡A¨ä¤¤¨ç¦¡ªº¦ì§}¶ñ¤JNULL¡C

 

u        Video Compression Manager¨ç¦¡®w

³o­Ó¨ç¦¡®w¥D­n¨Ï¥Î¤U¦C¸ê®Æµ²ºc¡G

1. COMPVARS¡G³o­Ó¸ê®Æµ²ºc¥D­n¬O°O¿ý©Ò¦³©MÀ£ÁY¬ÛÃöªº¸ê°T¡A¥H¤U¦C¥X´X­Ó¤ñ¸û­«­nªº¦¨­û¡G

(1)  DWORD fccHandler¡Gcompressor¦WºÙ

(2)  LPBITMAPINFO lpbiIn¡G«ü¦V«ÝÀ£ÁY¼v¹³¤§BITMAPINFOªº«ü¼Ð

(3)  LPBITMAPINFO lpbiOut¡G«ü¦VÀ£ÁY§¹¼v¹³¤§BITMAPINFOªº«ü¼Ð

(4)  LONG lKey¡G¥Nªíkey-frame rate¡C©Ò¿×key frame¬O«ü¦¹frame¦b¸ÑÀ£ÁY®É¤£»Ý¨Ì¿à«e­±ªºframe¡C

(5)  LONG lQ¡G¥Nªí¼v¹³À£ÁY«áªº«~½è¡A¬°¤¶©ó1¦Ü10000ªº¤@­Ó¾ã¼Æ

 

¥H¤U«K²³æ¤¶²Ð¥»¹êÅç¥D­n¨Ï¥Îªº¨ç¦¡¤Î¥¨¶°¡G

1. ICLocate¡G¿é¤J«ü¦VÀ£ÁY«e«áBITMAPINFOªº«ü¼Ð¡A¥H¤Î±ý¨Ï¥Î¤§codecs¡C

2. ICCompressorChoose¡G¦¹¨ç¦¡·|©I¥s¤@­Ó¨t²Î¤º«Øªº¹ï¸Ü²°¡A¨ä¤¤¥]§t©Ò¦³¥i¥H¨Ï¥Îªºcodecs¥H¤Î¨ä¬ÛÃö°Ñ¼Æ¡F¨Ï¥Î¦¹¨ç¦¡ªºÀuÂI¦b©ó¹ï¸Ü²°µ²§ô®É¨t²Î·|¦Û°Ê±NCOMPVARS¸ê®Æµ²ºcªì¨Ï¤Æ¡Aµ{¦¡³]­pªÌ«K¤£¥Î¶O¤ß¦b©ó°Ñ¼Æ­È¤§³]­p¡C

3. ICCompressQuery¡G¦¹¨ç¦¡¥D­n¦b¸ß°Ýcompressor¬O§_¤ä´©¬YºØÀ£ÁY¤è¦¡¡C¿é¤J°Ñ¼Æ¬°compressor handle¤Î«ü¦VÀ£ÁY«e«áBITMAPINFOªº«ü¼Ð¡A¦¹¨ç¦¡·|¶Ç¦^¸ß°Ýµ²ªG¡C

4. ICCompressBegin¡G¦¹¨ç¦¡­n¨D¨t²Î·Ç³Æ¬ÛÃö¸ê·½¥H¨ÑÀ£ÁY¤§¥Î¡C

5. ICCompress¡G¦¹¨ç¦¡À£ÁY¬Y¤@­Óframe¡C

6. ICCompressEnd¡G¦¹¨ç¦¡ÂkÁÙ¬ÛÃö¸ê·½µ¹¨t²Î¡C

7. ICDecompressQuery¡G¦¹¨ç¦¡¥D­n¦b¸ß°Ýdecompressor¬O§_·h´©¬YºØ¸ÑÀ£ÁY¤è¦¡¡C

8. ICDecompressBegin¡G¦¹¨ç¦¡­n¨D¨t²Î·Ç³Æ¬ÛÃö¸ê·½¥H¨Ñ¸ÑÀ£ÁY¤§¥Î

9. ICDecompress¡G¦¹¨ç¦¡¸ÑÀ£ÁY¬Y¤@­Óframe¡C

10.             ICDecompressEnd¡G¦¹¨ç¦¡ÂkÁÙ¬ÛÃö¸ê·½µ¹¨t²Î¡C

11.             ICCompressorFree¡G¦¹¨ç¦¡ÂkÁÙCOMPVARS©Ò¦û¥Î¤§¸ê·½¡C

 

u        DrawDib¨ç¦¡®w

DrawDib¨ç¦¡®w©Ò¨Ï¥Îªº¸ê®Æµ²ºc¥D­n¬OBITMAPINFO¡A¤w¦b¥ý«e¤¶²Ð¹L¡C¥H¤U«K¤¶²Ð¥»¹êÅç¥D­n¨Ï¥Î¨ìªº¨ç¦¡¥H¤Î¥¨¶°¡G

1. DrawDibOpen¡G¦¹¨ç¦¡¥D­n¦b¶}±ÒDrawDib°ÊºA³sµ²¨ç¦¡®w¡B«Ø¥ß¤@­ÓDrawDib DC¡B¤Î·Ç³Æ¬ÛÃöªº¨t²Î¸ê·½¡C

2. DrawDibBegin¡G¦¹¨ç¦¡¥D­n¦bªì©l¤ÆDrawDib DC¡A¿é¤J°Ñ¼Æ¬°¼v¹³¤j¤p¥H¤Î¼v¹³ªºBITMAPINFO¸ê®Æµ²ºc¡C

3. DrawDibDraw¡G¦¹¨ç¦¡±N¼v¦b¿Ã¹õ¤Wø¥X¡C

4. DrawDibEnd¡G¦¹¨ç¦¡¥D­n¦b±NDrawDib DC¬ÛÃö³]©wÁÙ­ì¡C

5. DrawDibClose¡G¦¹¨ç¦¡·|Ãö³¬DrawDib DC¨ÃÂkÁÙ¬ÛÃö¸ê·½¡C

 

u        Waveform Audio¨ç¦¡®w

¥H¤U²³æ¤¶²Ð¨ä¥D­nªº¸ê®Æµ²ºc¡G

1.   WAVEFORMATEX¡G³o­Ó¸ê®Æµ²ºc©w¸q¤FÁn­µ¸ê®Æªº¬ÛÃö°Ñ¼Æ¡A¥H¤U¦C¥X¨ä­«­n¦¨­û¡G

(1)  WORD wFormatTag¡GÁn­µªº®æ¦¡¡C¨Ò¦pWAVE_FORMAT_PCM«K¥Nªí¨Ï¥ÎPCM®æ¦¡¡C

(2)  WORD nChannels¡G¨Ï¥ÎªºÁn¹D¼Æ¡C¨ä­È¬°1¥Nªí¬°³æÁn¹D¡A¬°2¥Nªí¬°¥ßÅéÁn¹D¡C

(3)  DWORD nSamplesPerSec¡GÁn­µªº¨ú¼ËÀW²v¡A¨ä­È¬°¨C¬íªº¨ú¼Ë¼Æ¡C

(4)  DWORD nAvgBytesPerSec¡G¸ê®Æªºdata rate¡A³æ¦ì¬°¨C¬íÄÁ²£¥Íªºbytes¼Æ¡C

(5)  WORD wBitsPerSample¡G¨C­Ó¨ú¼Ë»Ý¥H¦h¤Ö­Ó¦ì¤¸¨Óªí¥Ü¡C

 

2.   WAVEHDR¡G«e­±´£¨ìªºVideo for Windows¨ç¦¡®w¤¤¥Î¨ÓÀx¦s¼v¹³ªº°O¾ÐÅé¨t²Î·|¦Û¦æ·Ç³Æ¡A¦ý¦bWaveform Audio¨ç¦¡®w¤¤µ{¦¡³]­pªÌ¥²»Ý¦Û¦æ·Ç³Æ°O¾ÐÅé¥H¨Ñ¨t²Î¨Ï¥Î¡CWAVEHDR«K¬O¥Î¨Ó´y­z¨C¤@¶ô°O¾ÐÅ骺¸ê®Æµ²ºc¡A¥H¤U¦C¨ä­«­n¦¨­û¡G

(1)  LPSTR lpData¡Gµ{¦¡³]­pªÌ¥²»Ý·Ç³Æ¤@¶ô°O¾ÐÅé¡AµM«á¥H¦¹«ü¼Ð«ü¦V°O¾ÐÅ骺¦ì§}¡C

(2)  DWORD dwBufferLength¡G¤W¤@°Ñ¼Æ©Ò«ü°O¾ÐÅ骺¤j¤p¡A³æ¦ì¬°¦ì¤¸²Õ¡C

 

¦b¶}©l¿ý­µ¤§«á¡A¨t²Î·í¶ñº¡¤@¶ô°O¾ÐÅ餧«á·|°e¥XMM_WIM_DATA°T®§¡A¦b¥»¹êÅ礤¦¬¨ì¦¹°T®§¤§«á«K­n±N°O¾ÐÅé¸ê®Æ¥HWindows Sockets¨ç¦¡°e¥X¡C¦]¦¹¦b³]­pµ{¦¡®É¥²»Ý·Ç³Æ¦h¶ô°O¾ÐÅé¡A¨Ï±o·íÀ³¥Îµ{¦¡±N¤@¶ô°O¾ÐÅé°e¥X®É¡A¤´µM¥i¥HÄ~Äò±NÁn­µ¸ê®Æ¦s¦Ü¨ä¥L°O¾ÐÅé¡C

   

¥H¤U«K¤¶²Ð¿ý­µ®É¥»¹êÅç¥D­n¨Ï¥Î¨ìªº¨ç¦¡¥H¤Î¥¨¶°¡G

1. waveInOpen¡G¦¹¨ç¦¡¿é¤JWAVEFORMATEX¸ê®Æµ²ºc¥H¿ï¾Ü¾A·íªº¿ý­µ³]³Æ¡A¨Ã§i¶D¨t²Î·í¶ñº¡¤@¶ô°O¾ÐÅé®É¬O­n°e¥XMM_WIM_DATA°T®§ÁÙ¬O­n©I¥s¤@­Ócallback¨ç¦¡¡C

2. waveInPrepareHeader¤ÎwaveInAddBuffer¡G¦¹¨â¨ç¦¡¬O¥Î¨Ó·Ç³Æ°O¾ÐÅé¡C

3. waveInStart¡G¦¹¨ç¦¡§iª¾¨t²Î¶}©l¿ý­µ¡C

4. waveInStop¡G¦¹¨ç¦¡§iª¾¨t²Î°±¤î¿ý­µ¡C

5. waveInUnprepareHeader¡G¦¹¨ç¦¡¥Î¨ÓÂkÁÙ¦bwaveInPrepareHeader©Ò·Ç³Æªº°O¾ÐÅé¡C

6. waveInClose¡G¦¹¨ç¦¡¥Î¨ÓÃö³¬¿ý­µ³]³Æ¡C

 

¥H¤U«K¤¶²Ð©ñ­µ®É¥»¹êÅç¥D­n¨Ï¥Î¨ìªº¨ç¦¡¥H¤Î¥¨¶°¡G

1.                waveOutOpen¡G¦¹¨ç¦¡¿é¤JWAVEFORMATEX¸ê®Æµ²ºc¥H¿ï¾Ü¾A·íªº©ñ­µ³]³Æ¡C

2.                waveOutPrepareHeader¡G¦¹¨ç¦¡¥Î¨Ó·Ç³Æ°O¾ÐÅé¡C

3.                waveOutWrite¡G¦¹¨ç¦¡§iª¾¨t²Î¶}©l¼½©ñ¬Y¶ô°O¾ÐÅé©ÒÀx¦sªº¸ê®Æ¡C

4.                waveOutReset¡G¦¹¨ç¦¡§iª¾¨t²Î°±¤î¼½©ñ¨Ã±N¦¹¶ô°O¾ÐÅéµø¬°¤w¼½©ñ¡C

5.                waveOutClose¡G¦¹¨ç¦¡¥Î¨ÓÃö³¬©ñ­µ³]³Æ¡C