ÄÆ °ËÃâ¿¡ °ü·ÃµÈ µ¥ÀÌÅÍ´Â ÄÆ °ËÃâ Çì´õ ÆÄÀÏ, dmbshot.h¿¡ ÀÖ´Â ±¸Á¶·Î ÀúÀåµË´Ï´Ù. ¸¹Àº ÄÆ °ËÃâ API´Â Çϳª ÀÌ»óÀÇ ÀÌ·¯ÇÑ ±¸Á¶¸¦ Áö½ÃÇÒ °ÍÀ» ¿äûÇÕ´Ï´Ù. ÀÌ ±¸Á¶ÀÇ ÀϺκÐÀº ÀÔ·ÂÀ¸·Î Video Extender°¡ »ç¿ëÇÏ´Â µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, ÄÆ Á¦¾î ±¸Á¶¿¡´Â ÄÆ °ËÃâÀ» Á¦¾îÇÏ´Â Á¤º¸°¡ ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ ±¸Á¶´Â ±×°ÍÀÌ ºñµð¿À¿¡¼ °Ë»öÇÏ´Â µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇØ Video Extender¿¡ ÀÇÇØ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, ºñµð¿À ÇÁ·¹ÀÓ µ¥ÀÌÅÍ ±¸Á¶¿¡´Â ÇÁ·¹ÀÓÀÇ Çȼ¿ ³»¿ëÀÌ ÀÖ½À´Ï´Ù.
ÄÆ °ËÃâ¿ëÀ¸·Î »ç¿ëµÇ´Â ±¸Á¶´Â DBvIOType, DBvShotControl, DBvShotType, DBvFrameData ¹× DBvStoryboardCtrlÀÔ´Ï´Ù.
DBvIOType µ¥ÀÌÅÍ ±¸Á¶¿¡´Â ±×°ÍÀÇ Çü½Ä, Â÷¿ø, ÇÁ·¹ÀÓ ¼ö¿Í °°Àº ºñµð¿À¿¡ ´ëÇÑ µ¥ÀÌÅͰ¡ ÀÖ½À´Ï´Ù. µ¥ÀÌÅÍ ±¸Á¶´Â ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ.
typedef struct { FILE *hFile; /* file handle for the video */ char vhandle[255]; /* video handle (if from database) char vtable[255]; /* video table name (if from database) */ char vcolumn[255]; /* video column name (if from database) */ char vFile[255]; /* name of video file */ char idxFile[255]; /* name of index file */ char isIdx; /* 1 if the index exists, 0 otherwise */ char isInDb; /* 1 if from DB, 0 if from file */ int format; /* Format of the video */ unsigned long dx, dy; /* Dimensions of the video */ unsigned long totalFrames; /* TotalFrames in the video */ unsigned long markFrame; /* used by shot detection */ unsigned long currentFrame; /* The current video frame */ DBvFrameData fd; /* Frame data for current frame */ DBvDCFrameData fdDc; /* Frame data for DC images */ unsigned char BGRValid; /* reserved */ unsigned short usDeviceID; /* reserved */ unsigned long hwnd; /* reserved */ int videoReset; /* Flag if video is opened or seeked */ int firstshot; /* Used internally to indicate the first call */ void *reserved /* reserved */ } DBvIOType;
DBvShotControl µ¥ÀÌÅÍ ±¸Á¶¿¡´Â °ËÃâ ¹æ¹ý°ú °°Àº ÄÆ °ËÃâÀ» Á¦¾îÇÏ´Â µ¥ »ç¿ëµÇ´Â Á¤º¸°¡ ÀÖ½À´Ï´Ù. µ¥ÀÌÅÍ ±¸Á¶´Â ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ.
typedef struct { unsigned long reserved; unsigned long method; /* detection method */ #define DETECT_CORRELATION 0x00000001 #define DETECT_HISTOGRAM 0x00000002 #define DETECT_CORRHIST 0x00000003 #define DETECT_CORRHISTDISS 0x00000004 int normalCorrValue; /* Correlation threshold */ int sceneCutSkipXY; /* reserved */ int CorrHistThresh; /* Histogram threshold */ int DissThresh; /* Dissolve threshold */ int DissCacheSize; /* Dissolve cache size */ int DissNumCaches; /* Dissolve cache number */ int minShotSize; /* Minimum frames in a shot */ } DBvShotControl;
´ÙÀ½ Ç¥¿¡¼´Â DBvShotControl¿¡ ÀÖ´Â °¢°¢ÀÇ Çʵå¿Í ±×°ÍÀÌ Çã¿ëÇÏ´Â ±âº» ¼³Á¤°ªÀ» ¼³¸íÇÕ´Ï´Ù. ÀÌ·¯ÇÑ Çʵ带 ±âº»°ªÀ¸·Î ÃʱâÈÇÏ·Á¸é, ÄÆ °ËÃâ µ¥ÀÌÅÍ ±¸Á¶¿¡¼ °ª ÃʱâÈ¿¡ ¼³¸íµÈ °Íó·³ DBvInitShotControl API¸¦ »ç¿ëÇϽʽÿÀ.
DBvShotControl ¼³Á¤Àº ºñµð¿À À¯Çü¿¡ µû¶ó ´Ù¸¨´Ï´Ù.
°è¼öÈÇÑ ºñµð¿À¿¡¼ Àå¸é º¯°æÀº ³»¿ë°ú Çü½Ä¿¡ µû¶ó »ó´çÈ÷ ´Ù¸¨´Ï´Ù. ¶ÇÇÑ
Àå¸é º¯°æ ¾Ë°í¸®ÁòÀÇ Á¤È®µµ´Â ºñµð¿À¿¡ µû¶ó ´Ù¸¨´Ï´Ù. Àüü ÇÁ·¹ÀÓ
¸ð¾ç¿¡¼ ¾ÆÁÖ ´Ù¸£°Ô Á¤ÀÇµÈ Àå¸é º¯°æÀº ´õ¿í ¹Ì¹¦ÇÑ º¯°æ À¯Çü ¶Ç´Â
Àüü »ö»ó ³»¿ëÀÌ µ¿ÀÏÇÑ º¯°æº¸´Ù ´õ Á¤È®È÷ °ËÃâµË´Ï´Ù.
±âº» DBvShotControl ÇÊµå ¼³Á¤ÀÌ ÀÀ¿ëÇÁ·Î±×·¥ ´ëºÎºÐ¿¡ ´ëÇØ ¼öÇàÀÌ
¿øÈ°ÇÒÁö¶óµµ, °ËÃâÇÏÁö ¾Ê°Å³ª À߸ø °ËÃâÇÏ´Â °æ¿ì¸¦ ÁÙÀ̱â À§ÇØ
ÀÌ·¯ÇÑ ¼³Á¤À» Á¶Á¤ÇØ¾ß ÇÕ´Ï´Ù.
DBvShotType µ¥ÀÌÅÍ ±¸Á¶¿¡´Â ½ÃÀÛ ÇÁ·¹ÀÓ ¹øÈ£, ³¡ ÇÁ·¹ÀÓ ¹øÈ£ ¹× ´ëÇ¥ ÇÁ·¹ÀÓ ¹øÈ£¿Í ´ëÇ¥ ÇÁ·¹ÀÓ°ú °°Àº ÄÆ¿¡ ´ëÇÑ Á¤º¸¿Í ´ëÇ¥ ÇÁ·¹ÀÓÀÇ Çȼ¿ ³»¿ë¿¡ ´ëÇÑ Æ÷ÀÎÅͰ¡ ÀÖ½À´Ï´Ù. µ¥ÀÌÅÍ ±¸Á¶´Â ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ.
typedef struct { unsigned long startFrame; /* starting frame number */ unsigned long endFrame; /* ending frame number */ unsigned long repFrame; /* representative frame number */ DBvFrameData fd; /* data for representative shot */ unsigned long dx; /* frame data width in pixels */ unsigned long dy; /* frame data height in pixels */ char *comment; /* shot remark */ } DBvShotType;
DBvFrameData µ¥ÀÌÅÍ ±¸Á¶¿¡´Â ÇÁ·¹ÀÓÀÇ Çȼ¿ ³»¿ëÀÌ ÀÖ½À´Ï´Ù. µ¥ÀÌÅÍ ±¸Á¶´Â ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ.
typedef struct /* video frame data */ { /* MPEG 1 pixels */ unsigned char *luminance; /* Luminance pixel plane (black and white) */ unsigned char *Cr; /* Cr pixel plane */ unsigned char *Cb; /* Cb pixel plane */ unsigned char *reserved; } DBvFrameData;
DBvStoryboardCtrl µ¥ÀÌÅÍ ±¸Á¶¿¡´Â ºñµð¿À īŻ·Î±×¿¡ ÀúÀåµÈ ÄÆ¿¡ ´ëÇÑ ´ëÇ¥ ÇÁ·¹ÀÓÀÇ Á¾·ù¿Í ¼ö¸¦ Á¦¾îÇÏ´Â °ªÀÌ ÀÖ½À´Ï´Ù. ÀÌ °ªµéÀÇ ÀÌ¿ë ¹æ¹ý¿¡ ´ëÇÑ ¼³¸íÀº ½ºÅ丮º¸µå ºôµå¸¦ ÂüÁ¶ÇϽʽÿÀ. µ¥ÀÌÅÍ ±¸Á¶´Â ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ.
typedef struct { int thresh1; /* threshold for small to medium scenes */ int thresh2; /* threshold for medium to large scenes */ int delta; /* offset used for representative frames */ } DBvStoryboardCtrl;
´ÙÀ½ Å×À̺í´Â DBvStoryboardCtrl¿¡ ÀÖ´Â °¢°¢ÀÇ Çʵå¿Í ±×ÀÇ ±âº» ¼³Á¤°ªÀ» ¼³¸íÇÕ´Ï´Ù. ÀÌ ÇʵåµéÀ» ±âº»°ªÀ¸·Î ÃʱâÈÇÏ·Á¸é, ÄÆ °ËÃâ µ¥ÀÌÅÍ ±¸Á¶¿¡¼ °ª ÃʱâÈ¿¡ ¼³¸íµÈ °Íó·³ DBvInitStoryboardCtrl API¸¦ »ç¿ëÇϽʽÿÀ.
DBvStoryboardCtrl ¼³Á¤Àº ºñµð¿À À¯Çü¿¡ µû¶ó ´Ù¸¨´Ï´Ù:
½ºÅ丮º¸µå¿¡ ¼±ÅÃÀûÀÎ ÇÁ·¹ÀÓ Á¾·ù¿Í ¼ö´Â ºñµð¿À À¯Çü¿¡ µû¶ó ´Ù¸¨´Ï´Ù.
±âº» DBvStoryboardCtrl ÇÊµå ¼³Á¤ÀÌ ´Ù¾çÇÑ ºñµð¿À À¯Çü¿¡ ´ëÇØ Àß
ÀÛµ¿µÇ´õ¶óµµ, ºñµð¿ÀÀÇ ½ÃÇè ºÎºÐÁýÇÕ¿¡ ÀÌ·¯ÇÑ ¼³Á¤À» »ç¿ëÇØ º¼
¼ö ÀÖ½À´Ï´Ù. ±×·± ´ÙÀ½ ºñµð¿ÀÀÇ ´õ Å« ÁýÇÕ¿ë ½ºÅ丮º¸µå¸¦
ºôµåÇϱâ Àü¿¡ ÀûÀýÇÑ °ªÀ¸·Î ¼³Á¤À» Á¶Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Çʵå | ÀÇ¹Ì |
---|---|
thresh1 | ªÀº ÄÆÀÇ ÀÓ°è °ªÀ» ½Äº°ÇÕ´Ï´Ù .
thresh1º¸´Ù ÀÛÀº ¼öÀÇ ÇÁ·¹ÀÓÀ» °®´Â ÄÆÀÌ ÂªÀº ÄÆÀÔ´Ï´Ù.
īŻ·Î±×ȵȴٸé, ªÀº ÄÆ¿¡ ´ëÇÑ Á¤º¸´Â ÇϳªÀÇ
´ëÇ¥ ÇÁ·¹ÀÓ(Áß°£ ÇÁ·¹ÀÓ)À» Æ÷ÇÔÇÒ °ÍÀÔ´Ï´Ù.
±âº»°ªÀº 90ÀÔ´Ï´Ù. thresh1°ªÀÌ -1·Î ¼³Á¤µÈ´Ù¸é, ÄÆÀº ªÀº ÄÆÀ¸·Î °£ÁÖµÉ °ÍÀÔ´Ï´Ù(½ÇÁ¦ ±æÀÌ¿Í »ó°ü¾øÀÌ). |
thresh2 | Áß´ëÇü ÄÆÀÇ ÀÓ°è °ªÀ» ½Äº°ÇÕ´Ï´Ù.
thresh1 °ª ÀÌ»ó thresh2 °ª ÀÌÇÏÀÇ ÇÁ·¹ÀÓÀ» °®´Â ÄÆÀº Áß°£ ÄÆÀ¸·Î
°£Áֵ˴ϴÙ. īŻ·Î±×ȵȴٸé, Áß°£ ÄÆ¿¡ ´ëÇÑ Á¤º¸´Â µÎ °³ÀÇ
´ëÇ¥ ÇÁ·¹ÀÓÀ» Æ÷ÇÔÇÒ °ÍÀÔ´Ï´Ù. ´ëÇ¥ ÇÁ·¹ÀÓ À§Ä¡´Â µ¨Å¸ ÇÊµå °ªÀ¸·Î
Á¦¾îµË´Ï´Ù. thresh2 °ª ÃʰúÀÎ ÄÆÀº ±ä ÄÆÀ¸·Î °£Áֵ˴ϴÙ.
īŻ·Î±×ȵȴٸé, ±ä ÄÆ¿¡ ´ëÇÑ Á¤º¸´Â ¼¼°³ÀÇ ´ëÇ¥ ÇÁ·¹ÀÓÀ» Æ÷ÇÔÇÒ
°ÍÀÔ´Ï´Ù. óÀ½°ú ¸¶Áö¸· ´ëÇ¥ ÇÁ·¹ÀÓ À§Ä¡´Â µ¨Å¸ ÇÊµå °ªÀ¸·Î
Á¦¾îµË´Ï´Ù. µÎ ¹øÂ° ÇÁ·¹ÀÓÀº Áß°£ ÇÁ·¹ÀÓÀÔ´Ï´Ù.
±âº»°ªÀº 150ÀÔ´Ï´Ù. thresh2 °ªÀÌ -1·Î ¼³Á¤µÈ´Ù¸é, ÄÆÀº ªÀº ÄÆÀ¸·Î °£ÁÖµÉ °ÍÀÔ´Ï´Ù(½ÇÁ¦ ±æÀÌ¿Í »ó°ü¾øÀÌ). |
delta | ´ëÇ¥ ÇÁ·¹ÀÓÀ¸·Î »ç¿ëµÇ´Â ¿É¼ÂÀ» È®ÀÎÇÕ´Ï´Ù.
Áß°£ ÄÆ°ú ±ä ÄÆ¿¡ ´ëÇØ, óÀ½ ´ëÇ¥ ÇÁ·¹ÀÓÀº ÄÆÀÇ Ã³À½¿¡¼ µ¨Å¸ÀÇ ÇÁ·¹ÀÓ ¼ö±îÁöÀÇ ¿É¼ÂÀÔ´Ï´Ù.
¸¶Áö¸· ´ëÇ¥ ÇÁ·¹ÀÓÀº ÄÆÀÇ ¸¶Áö¸·¿¡¼ µ¨Å¸ÀÇ ÇÁ·¹ÀÓ ¼ö±îÁöÀÇ ¿É¼ÂÀÔ´Ï´Ù.
±âº»°ªÀº 5ÀÔ´Ï´Ù. |
DBvShotControl µ¥ÀÌÅÍ ±¸Á¶¿¡¼ °ªÀº ÄÆ °ËÃâÀ» Á¦¾îÇÕ´Ï´Ù. DBvStoryboardCtrl µ¥ÀÌÅÍ ±¸Á¶¿¡ °ªÀº ½ºÅ丮º¸µåÀÇ ºôµå¸¦ Á¦¾îÇÕ´Ï´Ù. ÀÌ·¯ÇÑ µ¥ÀÌÅÍ ±¸Á¶¿¡ ´ëÇÑ Çʵå¿ë °ªÀ» ¸íÈ®È÷ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, ÀÌ ±¸Á¶¿¡ ÀÖ´Â °ªÀ» ±âº»°ªÀ¸·Î ÃʱâÈÇÒ ¼ö ÀÖ½À´Ï´Ù. DBvStoryboardCtrl µ¥ÀÌÅÍ ±¸Á¶¿¡ ÀÖ´Â ±âº»°ªÀº Ç¥ 10À» ÂüÁ¶ÇϽʽÿÀ. DBvStoryboardCtrl µ¥ÀÌÅÍ ±¸Á¶¿¡ ÀÖ´Â ±âº»°ªÀº Ç¥ 11À» ÂüÁ¶ÇϽʽÿÀ.
DBvShotControl µ¥ÀÌÅÍ ±¸Á¶¿¡ °ªÀ» ÃʱâÈÇÏ·Á¸é DBvInitShotControl API¸¦ »ç¿ëÇϽʽÿÀ. API »ç¿ë½Ã, ÄÆ Á¦¾î ±¸Á¶¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ÀÇ ¸í·É¹®Àº DBvShotControl ±¸Á¶¿¡ ÀÖ´Â Çʵ带 ±âº»°ªÀ¸·Î ÃʱâÈÇÕ´Ï´Ù.
DBvShotControl shotCtrl; rc=DBvInitShotControl( shotCtrl); /* pointer to shot control structure */
DBvInitStoryboardCtrl API¸¦ »ç¿ëÇÏ¿© DBvStoryboardCtrl ±¸Á¶¿¡ ÀÖ´Â °ªÀ» ÃʱâÈÇϽʽÿÀ. API »ç¿ë½Ã, ½ºÅ丮º¸µå Á¦¾î ±¸Á¶¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ÀÇ ¸í·É¹®Àº DBvStoryboardCtrl ±¸Á¶¿¡ ÀÖ´Â Çʵ带 ±âº»°ªÀ¸·Î ÃʱâÈÇÕ´Ï´Ù.
DBvStoryboardCtrl sbCtrl; rc=DBvInitStoryboardCtrl( sbCtrl); /* pointer to storyboard control structure */