source: pacpusframework/branches/2.0-beta1/include/extlib/uEye/uEyeCaptureInterface.h@ 89

Last change on this file since 89 was 89, checked in by morasjul, 11 years ago

PACPUS 2.0 Beta deployed in new branch

Major changes:
-Add communication interface between components
-Add examples for communications interface (TestComponents)
-Move to Qt5 support

  • Property svn:executable set to *
File size: 31.5 KB
Line 
1// The uEye Capture Device Filter supports a range of standard interfaces.
2// These interfaces are:
3// The Filter exposes: IAMVideoProcAmp
4// IAMVideoControl
5// IAMDroppedFrames
6// IAMFilterMiscFlags
7// IKsPropertySet
8// IuEyeCapture - specific uEye interface
9// IuEyeCaptureEx - specific uEye interface
10// IuEyeAutoFeatures - specific uEye interface
11// IuEyeFaceDetection - specific uEye interface
12// IuEyeImageStabilization - specific uEye interface
13// ISpecifyPropertyPages
14// The Capture Pin exposes: IAMCameraControl
15// IKsPropertySet
16// IAMStreamConfig
17// IuEyeCapturePin - specific uEye interface
18// ISpecifyPropertyPages
19// Some functionalities of the cameras are not mentioned in this standards.
20// Therefore this file defines some additional interfaces, providing control
21// over the missing features.
22
23#ifndef _UEYE_CAPTURE_INTERFACE_
24#define _UEYE_CAPTURE_INTERFACE_
25
26#include <initguid.h>
27
28const char uEyeCaptureInterfaceVersion[] = "3.0.0";
29
30
31// ============================================================================
32/*! \defgroup IuEyeCapturePin uEye Capture Pin Interface
33 * Proprietary interface for extra functionality exposed by the capture pin.
34 * It controls mainly the pixelclock settings for sensor read in
35 * \{
36 */
37// ============================================================================
38
39// {67030826-2EE0-44e7-BE1A-6A3BDB5B47FE}
40DEFINE_GUID(IID_IuEyeCapturePin,
41 0x67030826, 0x2ee0, 0x44e7, 0xbe, 0x1a, 0x6a, 0x3b, 0xdb, 0x5b, 0x47, 0xfe);
42
43interface IuEyeCapturePin : public IUnknown
44{
45 //! Returns the sum (in MHz) of pixelclock.
46 /*!
47 * \param lClock Receives the overall pixelclock sum.
48 * \return HRESULT 0 on success, error code otherwise.
49 * \see GetPixelClock
50 */
51 STDMETHOD(GetUsedBandwith)(long *lClock) = 0;
52
53 //! Returns the pixelclock for the connected camera.
54 /*!
55 * \param plClock Receives the current pixel clock.
56 * \return HRESULT 0 on success, error code otherwise.
57 * \see GetPixelClockRange, SetPixelClock
58 */
59 STDMETHOD(GetPixelClock)(long *plClock) = 0;
60
61 //! Returns the min, max and default value for the pixelclock.
62 /*!
63 * \param plMin Receives the minimum possible pixel clock.
64 * \param plMax Receives the maximum possible pixel clock.
65 * \param plDefault Receives the default pixel clock value.
66 * \return HRESULT 0 on success, error code otherwise.
67 * \see GetPixelClock, SetPixelClock
68 */
69 STDMETHOD(GetPixelClockRange)(long *plMin, long *plMax, long *plDefault) = 0;
70
71 //! Sets the Pixelclock (in MHz) for the connected device.
72 /*!
73 * \param lClock The pixel clock in MHz to set.
74 * \return HRESULT 0 on success, CO_E_NOT_SUPPORTED if not supported, error code otherwise.
75 * \see GetPixelClock, GetPixelClockRange
76 */
77 STDMETHOD(SetPixelClock)(long lClock) = 0;
78
79 //! Queries which color mode to use when RGB8 mediatype is selected.
80 /*!
81 * \param plMode Receives the currently selected RGB8 colormode.
82 * \return HRESULT 0 on success, error code otherwise.
83 * \see SetRGB8ColorMode
84 */
85 STDMETHOD(GetRGB8ColorMode)(long *plMode) = 0;
86
87 //! Determines which color mode to use when RGB8 mediatype is selected.
88 /*!
89 * Specifies whether Y8 or raw bayer pattern is used with RGB8 mode
90 * possible values are 11 for raw bayer pattern (on bayer color
91 * cameras), or 6 for monochrome images.
92 * \param lMode Specifies the color mode used for RGB8 mode.
93 * \return HRESULT 0 on success, error code otherwise.
94 * \see GetRGB8ColorMode
95 */
96 STDMETHOD(SetRGB8ColorMode)(long lMode) = 0;
97
98 //! Queries the current possible min, max and interval for exposure time.
99 /*!
100 * Gets the actual min, max and interval values for exposure time.
101 * Values are given in us unit.
102 * \param plMinExp Receives the minimum possible exposure time.
103 * \param plMaxExp Receives the maximum possible exposure time.
104 * \param plInterval Receives the current possible step width.
105 * \return HRESULT 0 on success, error code otherwise.
106 * \see GetExposureTime, SetExposureTime, SetPixelClock
107 *
108 * \note This range may change depending on framerate and pixelclock
109 * settings.
110 */
111 STDMETHOD(GetExposureRange)(long *plMinExp, long *plMaxExp, long *plInterval) = 0;
112
113 //! Queries the current exposure time
114 /*!
115 * \param plExp Receives the current exposure time in us.
116 * \return HRESULT 0 on success, error code otherwise.
117 * \see GetExposureRange, SetExposureTime
118 */
119 STDMETHOD(GetExposureTime)(long *plExp ) = 0;
120
121 //Sets the Exposure Time, more finer than the IAMCameraControl Interface function can do (2^n vs )
122 // the parameter is divided by 1000.
123 //! Sets the exposure time of the camera.
124 /*!
125 * This function sets the exposure time in units of Microseconds and
126 * thus allows a finer exposure time granularity than the function of
127 * the IAMCameraControl Interface does. (2^n seconds vs. x us).
128 * \param lExp Specifies the exposure time to use (in us).
129 * \return HRESULT 0 on success, error code otherwise.
130 * \see GetExposureTime, GetExposureRange
131 */
132 STDMETHOD(SetExposureTime)(long lExp) = 0;
133};
134
135/*!
136 * \}
137 */ // end of group uEyeCaptureInterface
138
139//structs needed by some functions
140#ifndef DS_EXPORT
141# define DS_EXPORT
142# ifdef CAMERAINFO
143# undef CAMERAINFO
144# endif
145typedef struct
146{
147 char SerNo[12]; // e.g. "12345-1234" (11 char)
148 char ID[20]; // e.g. "IDS GmbH"
149 char Version[10]; // e.g. "V1.00" (9 char)
150 char Date[12]; // e.g. "11.11.1999" (11 char)
151 unsigned char Select; // 0 (contains board select number for multi board support)
152 unsigned char Type; // 1 (contains board type)
153 char Reserved[8]; // (7 char)
154} CAMERAINFO, *PCAMERAINFO;
155
156# ifdef _SENSORINFO
157# undef _SENSORINFO
158# endif
159# ifdef SENSORINFO
160# undef SENSORINFO
161# endif
162typedef struct _SENSORINFO
163{
164 WORD SensorID; // e.g. IS_SENSOR_UI121X_C
165 char strSensorName[32]; // e.g. "UI-121X-C"
166 char nColorMode; // e.g. IS_COLORMODE_BAYER
167 DWORD nMaxWidth; // e.g. 1280
168 DWORD nMaxHeight; // e.g. 1024
169 BOOL bMasterGain; // e.g. FALSE
170 BOOL bRGain; // e.g. TRUE
171 BOOL bGGain; // e.g. TRUE
172 BOOL bBGain; // e.g. TRUE
173 BOOL bGlobShutter; // e.g. TRUE
174 char Reserved[16]; // not used
175} SENSORINFO, *PSENSORINFO;
176#endif // DS_EXPORT
177
178// ============================================================================
179/*! \defgroup IuEyeCapture uEye Capture Interface
180 * Proprietary interfaces for extra functionality exposed by the capture filter
181 * It adds functions for hot pixel and whitebalance user control as well as
182 * parameter persistence.
183 * \{
184 */
185// ============================================================================
186
187// {7BDFA675-E6BF-449e-8349-5F62AE9E0023}
188DEFINE_GUID(IID_IuEyeCapture,
189 0x7bdfa675, 0xe6bf, 0x449e, 0x83, 0x49, 0x5f, 0x62, 0xae, 0x9e, 0x0, 0x23);
190
191interface IuEyeCapture : public IUnknown
192{
193 // OBSOLETE: function will return CO_E_NOT_SUPPORTED and do nothing.
194 STDMETHOD(GetWhiteBalanceMultipliers)(long *plRed, long *plGreen, long *plBlue) = 0;
195
196 // OBSOLETE: function will return CO_E_NOT_SUPPORTED and do nothing.
197 STDMETHOD(SetWhiteBalanceMultipliers)(long lRed, long lGreen, long lBlue) = 0;
198
199 // Queries the number of connected camera devices.
200 // OBSOLETE
201 STDMETHOD(GetNumberOfCameras)(long *plNr) = 0;
202
203 //! Returns the device info for the connected camera as a pair of CAMERAINFO and SENSORINFO
204 /*!
205 * \param psInfo Receives the SENSORINFO
206 * \param pcInfo Receives the CAMERAINFO
207 * \return HRESULT 0 on success, error code otherwise.
208 */
209 STDMETHOD(GetDeviceInfo)(SENSORINFO *psInfo, CAMERAINFO *pcInfo) = 0;
210
211 //! Queries the Version of the installed uEye Driver files
212 /*!
213 * \param pVersion Receives the Version of connected cameras.
214 * \return HRESULT 0 on success, error code otherwise.
215 *
216 * \note This is not the Version of the uEye capture device filter but
217 * the Version of the underlying driver files.
218 */
219 STDMETHOD(GetDLLVersion)(long *pVersion) = 0;
220
221 // Returns a pair of lists, containing of CAMERAINFO and SENSORINFO structures, which holds
222 // information of the available cameras.
223 // OBSOLETE
224 STDMETHOD(GetListOfCameras)(CAMERAINFO **cInfo, SENSORINFO **sInfo, long *lNr) = 0;
225
226 // Tries to connect the filter to another camera.
227 // OBSOLETE
228 STDMETHOD(ConnectToCamera)(long lIndex) = 0;
229
230 //! Activates or deactivates the hot pixel correction.
231 /*!
232 * \param lEnable Set to 1 to activate or 0 to deactivate correction.
233 * \return HRESULT 0 on success, error code otherwise.
234 * \see GetBadPixelCorrection
235 */
236 STDMETHOD(SetBadPixelCorrection)(long lEnable) = 0;
237
238 //! Queries the current state of the hot pixel correction unit.
239 /*!
240 * \param plEnable Receives 1 if hot pixel correction is enabled.
241 * \return HRESULT 0 on success, error code otherwise.
242 * \see SetBadPixelCorrection
243 */
244 STDMETHOD(GetBadPixelCorrection)(long *plEnable) = 0;
245
246 //! Loads previous stored camera settings.
247 /*!
248 * \return HRESULT 0 on success, error code otherwise.
249 * \see SaveSettings
250 */
251 STDMETHOD(LoadSettings)(void) = 0;
252
253 //! Stores the current set camera settings in the registry.
254 /*!
255 * \return HRESULT 0 on success, error code otherwise.
256 * \see LoadSettings
257 *
258 * \note Data will be stored individual for each uEye UI model (e.g. UI1410-C).
259 */
260 STDMETHOD(SaveSettings)(void) = 0;
261
262 //! Resets the camera parameters to the driver defaults.
263 /*!
264 * \return HRESULT 0 on success, error code otherwise.
265 * \see LoadParameters, SaveParameters
266 *
267 * \note You may not be able to reset parameters while the filter is
268 * connected or running.
269 */
270 STDMETHOD(ResetDefaults)(void) = 0;
271};
272
273
274// {E179D0EE-E0BB-42d6-BAB9-FFDF2277E887}
275DEFINE_GUID(IID_IuEyeCaptureEx,
276 0xe179d0ee, 0xe0bb, 0x42d6, 0xba, 0xb9, 0xff, 0xdf, 0x22, 0x77, 0xe8, 0x87);
277
278interface IuEyeCaptureEx : public IuEyeCapture
279{
280 //! Activates or deactivates the additional gain amplification
281 /*!
282 * \param lGainBoost Set to 1 to activate or 0 to deactivate extra amplification.
283 * \return HRESULT 0 on success, error code otherwise.
284 * \see GetGainBoost
285 */
286 STDMETHOD(SetGainBoost)(long lGainBoost) = 0;
287
288 //! Queries the current state of the extra amplification.
289 /*!
290 * \param plGainBoost Receives 1 if extra amplification is enabled.
291 * \return HRESULT 0 on success, error code otherwise.
292 * \see SetGainBoost
293 */
294 STDMETHOD(GetGainBoost)(long *plGainBoost) = 0;
295
296 //! Activates or deactivates the hardware gamma.
297 /*!
298 * \param lHWGamma Set to 1 to activate or 0 to deactivate hw gamma.
299 * \return HRESULT 0 on success, error code otherwise.
300 * \see GetHardwareGamma
301 */
302 STDMETHOD(SetHardwareGamma)(long lHWGamma) = 0;
303
304 //! Queries the current state of hardware gamma.
305 /*!
306 * \param plHWGamma Receives 1 if hw gamma is enabled.
307 * \return HRESULT 0 on success, error code otherwise.
308 * \see SetHardwareGamma
309 */
310 STDMETHOD(GetHardwareGamma)(long *plHWGamma) = 0;
311
312 //! Load the parameters from a file or camera EEPRom userset.
313 /*!
314 * Detailed description missing
315 * \param cszFileName Filename or EEPRom userset to load parameters from.
316 * \return HRESULT 0 on success, error code otherwise.
317 * \see SaveParameters, ResetDefaults
318 *
319 * \note You may not be able to load parameters while the filter is
320 * connected or running.
321 */
322 STDMETHOD(LoadParameters)(const char* cszFileName) = 0;
323
324 //! Stores the current parameters to file or camera EEPRom userset.
325 /*!
326 * \param cszFileName Filename or EEPRom userset to store parameters to.
327 * \return HRESULT 0 on success, error code otherwise.
328 * \see LoadParameters, ResetDefaults
329 */
330 STDMETHOD(SaveParameters)(const char* cszFileName) = 0;
331};
332
333
334/*!
335* \}
336*/ // end of group uEyeCaptureInterface
337
338
339// ============================================================================
340/*! \defgroup IuEyeAutoFeatures uEye Auto Feature Interface
341* Proprietary interface for uEye auto feature control exposed by the capture
342* filter. Allows a DirectShow based program to control and query all auto
343* feature related parameters that are not accessible via direct show functions.
344* \{
345*/
346// ============================================================================
347
348// {666A7ED1-C64F-47e8-A8D2-E381FD353315}
349DEFINE_GUID(IID_IuEyeAutoFeatures,
350 0x666a7ed1, 0xc64f, 0x47e8, 0xa8, 0xd2, 0xe3, 0x81, 0xfd, 0x35, 0x33, 0x15);
351
352interface IuEyeAutoFeatures : public IUnknown
353{
354 //! Specifies the brightness reference value which should be achieved by auto gain and auto exposure.
355 /*!
356 * \param lReference The reference value the controller should reach.
357 * \return HRESULT 0 on success, error code otherwise.
358 * \see GetAutoBrightnessReference, SetAutoBrightnessMaxExposure, SetAutoBrightnessMaxGain
359 */
360 STDMETHOD(SetAutoBrightnessReference)(long lReference) = 0;
361
362 //! Queries the actual set reference value for auto brightness control.
363 /*!
364 * \param plReference Receives the current value for reference.
365 * \return HRESULT 0 on success, error code otherwise.
366 * \see SetAutoBrightnessReference
367 */
368 STDMETHOD(GetAutoBrightnessReference)(long* plReference) = 0;
369
370 //! Upper limit of the exposure time when used to control the image brightness automatically.
371 /*!
372 * \param lMaxExposure Maximum exposure time (in us Units) the controller is allowed to set.
373 * \return HRESULT 0 on success, error code otherwise.
374 * \see GetAutoBrightnessMaxExposure, SetAutoBrightnessMaxGain, SetAutoBrightnessReference
375 */
376 STDMETHOD(SetAutoBrightnessMaxExposure)(long lMaxExposure) = 0;
377
378 //! Queries the actual set upper limit of automatic controlled exposure time.
379 /*!
380 * \param plMaxExposure Receives the currently allowed maximum exposure time (us Units)
381 * \return HRESULT 0 on success, error code otherwise.
382 * \see SetAutoBrightnessMaxExposure
383 */
384 STDMETHOD(GetAutoBrightnessMaxExposure)(long* plMaxExposure) = 0;
385
386 //! Upper limit of gain when used to control the image brightness automatically.
387 /*!
388 * \param lMaxGain Maximum master gain value the controller is allowed to set.
389 * \return HRESULT 0 on success, error code otherwise.
390 * \see SetAutoBrightnessMaxExposure, GetAutoBrightnessMaxGain, SetAutoBrightnessReference
391 */
392 STDMETHOD(SetAutoBrightnessMaxGain)(long lMaxGain) = 0;
393
394 //! Queries the actual set upper limit of automatic controlled master gain amplifier.
395 /*!
396 * \param plMaxGain Receives the currently allowed maximum gain value.
397 * \return HRESULT 0 on success, error code otherwise.
398 * \see SetAutoBrightnessMaxGain
399 */
400 STDMETHOD(GetAutoBrightnessMaxGain)(long* plMaxGain) = 0;
401
402 //! Controls the percentage of examined images for the automatic brightness control unit.
403 /*!
404 * \param lSpeed The desired speed in a range of 1%(slow) to 100%(fast).
405 * \return HRESULT 0 on success, error code otherwise.
406 * \see GetAutoBrightnessSpeed, SetAutoBrightnessReference
407 */
408 STDMETHOD(SetAutoBrightnessSpeed)(long lSpeed) = 0;
409
410 //! Queries the actual set rate at which image brightness is examined.
411 /*!
412 * \param plSpeed Receives the currently set examination speed.
413 * \return HRESULT 0 on success, error code otherwise.
414 * \see SetAutoBrightnessSpeed
415 */
416 STDMETHOD(GetAutoBrightnessSpeed)(long* plSpeed) = 0;
417
418 //! Specifies the area of interest within the image in which the brightness should be examined.
419 /*!
420 * \param lXPos Left bound of the area of interest.
421 * \param lYPos Upper bound of the area of interest.
422 * \param lWidth Width of the area of interest.
423 * \param lHeight Height of the area of interest.
424 * \return HRESULT 0 on success, error code otherwise.
425 * \see GetAutoBrightnessAOI
426 */
427 STDMETHOD(SetAutoBrightnessAOI)(long lXPos, long lYPos, long lWidth, long lHeight) = 0;
428
429 //! Queries the actual used area of interest in which the brightness is examined.
430 /*!
431 * \param plXPos Receives the left bound.
432 * \param plYPos Receives the upper bound.
433 * \param plWidth Receives the width.
434 * \param plHeight Receives the height.
435 * \return HRESULT 0 on success, error code otherwise.
436 * \see SetAutoBrightnessAOI
437 */
438 STDMETHOD(GetAutoBrightnessAOI)(long* plXPos, long* plYPos, long* plWidth, long* plHeight) = 0;
439
440 //! Specifies relative offsets between the individual color channels when used by the automatic whitebalance control unit.
441 /*!
442 * \param lRedOffset Offset for the red gain channel relative to the green one.
443 * \param lBlueOffset Offset for the blue gain channel relative to the green one.
444 * \return HRESULT 0 on success, error code otherwise.
445 * \see GetAutoWBGainOffsets, SetAutoWBGainRange
446 */
447 STDMETHOD(SetAutoWBGainOffsets)(long lRedOffset, long lBlueOffset) = 0;
448
449 //! Queries the actual set color channel offsets for automatic whitebalance.
450 /*!
451 * \param plRedOffset Receives the red to green channel offset.
452 * \param plBlueOffset Receives the blue to green channel offset.
453 * \return HRESULT 0 on success, error code otherwise.
454 * \see SetAutoWBGainOffsets
455 */
456 STDMETHOD(GetAutoWBGainOffsets)(long* plRedOffset, long* plBlueOffset) = 0;
457
458 //! Limits the range the automatic whitebalance controller unit is allowed to use when adjusting the RGB gain channels.
459 /*!
460 * \param lMinRGBGain Minimum allowed gain value.
461 * \param lMaxRGBGain Maximum allowed gain value.
462 * \return HRESULT 0 on success, error code otherwise.
463 * \see GetAutoWBGainRange, SetAutoWBGainOffsets
464 */
465 STDMETHOD(SetAutoWBGainRange)(long lMinRGBGain, long lMaxRGBGain) = 0;
466
467 //! Queries the actual allowed gain range for the automatic whitebalance controller unit.
468 /*!
469 * \param plMinRGBGain Receives the currently allowed minimal gain value.
470 * \param plMaxRGBGain Receives the currently allowed maximal gain value.
471 * \return HRESULT 0 on success, error code otherwise.
472 * \see SetAutoWBGainRange
473 */
474 STDMETHOD(GetAutoWBGainRange)(long* plMinRGBGain, long* plMaxRGBGain) = 0;
475
476 //! Controls the percentage of examined images for the automatic whitebalance control unit.
477 /*!
478 * \param lSpeed The desired speed in a range of 1%(slow) to 100%(fast).
479 * \return HRESULT 0 on success, error code otherwise.
480 * \see SetAutoWBGainRange, SetAutoWBGainOffsets
481 */
482 STDMETHOD(SetAutoWBSpeed)(long lSpeed) = 0;
483
484 //! Queries the actual set rate at which the images whitebalance is examined.
485 /*!
486 * \param plSpeed Receives the currently set examination speed.
487 * \return HRESULT 0 on success, error code otherwise.
488 * \see SetAutoWBSpeed
489 */
490 STDMETHOD(GetAutoWBSpeed)(long* plSpeed) = 0;
491
492 //! Specifies the area of interest within the image in which the whitebalance should be examined.
493 /*!
494 * \param lXPos Left bound of the area of interest.
495 * \param lYPos Upper bound of the area of interest.
496 * \param lWidth Width of the area of interest.
497 * \param lHeight Height of the area of interest.
498 * \return HRESULT 0 on success, error code otherwise.
499 * \see GetAutoWBAOI
500 */
501 STDMETHOD(SetAutoWBAOI)(long lXPos, long lYPos, long lWidth, long lHeight) = 0;
502
503 //! Queries the actual used area of interest in which the whitebalance is examined.
504 /*!
505 * \param plXPos Receives the left bound.
506 * \param plYPos Receives the upper bound.
507 * \param plWidth Receives the width.
508 * \param plHeight Receives the height.
509 * \return HRESULT 0 on success, error code otherwise.
510 * \see SetAutoWBAOI
511 */
512 STDMETHOD(GetAutoWBAOI)(long* plXPos, long* plYPos, long* plWidth, long* plHeight) = 0;
513};
514/*!
515 * \}
516 */ // end of group IuEyeAutoFeatures
517
518
519// ============================================================================
520/*! \defgroup IuEyeFaceDetection uEye Face Detection Interface
521* Proprietary interface for uEye face detection control exposed by the capture
522* filter. Allows a DirectShow based program to control and query the face detection
523* feature related parameters that are not accessible via direct show functions.
524* \{
525*/
526// ============================================================================
527
528#ifndef DS_EXPORT
529# define DS_EXPORT
530# ifdef _UEYETIME
531# undef _UEYETIME
532# endif
533# ifdef UEYETIME
534# undef UEYETIME
535# endif
536/*!
537 * \brief uEye time data type.
538 * Used in \see FDT_INFO_EL.
539 */
540typedef struct _UEYETIME
541{
542 WORD wYear;
543 WORD wMonth;
544 WORD wDay;
545 WORD wHour;
546 WORD wMinute;
547 WORD wSecond;
548 WORD wMilliseconds;
549 BYTE byReserved[10];
550} UEYETIME;
551#endif /* DS_EXPORT */
552
553#ifndef DS_EXPORT
554# define DS_EXPORT
555# ifdef S_FDT_INFO_EL
556# undef S_FDT_INFO_EL
557# endif
558# ifdef FDT_INFO_EL
559# undef FDT_INFO_EL
560# endif
561/*!
562 * \brief uEye face detection info element data type.
563 * Info on a single detected face as listed by \see FDT_INFO_LIST.
564 */
565typedef struct S_FDT_INFO_EL
566{
567 INT nFacePosX; /*< Start X position. */
568 INT nFacePosY; /*< Start Y position. */
569 INT nFaceWidth; /*< Face width. */
570 INT nFaceHeight; /*< Face height. */
571 INT nAngle; /*< Face Angle (0...360° clockwise, 0° at twelve o'clock position. -1: undefined ). */
572 UINT nPosture; /*< Face posture. */
573 UEYETIME TimestampSystem; /*< System time stamp (device query time) . */
574 UINT64 nReserved; /*< Reserved for future use. */
575 UINT nReserved2[4]; /*< Reserved for future use. */
576} FDT_INFO_EL;
577#endif /* DS_EXPORT */
578
579#ifndef DS_EXPORT
580# define DS_EXPORT
581# ifdef S_FDT_INFO_LIST
582# undef S_FDT_INFO_LIST
583# endif
584# ifdef FDT_INFO_LIST
585# undef FDT_INFO_LIST
586# endif
587/*!
588 * \brief uEye face detection info list data type.
589 * List of detected faces, lists \see FDT_INFO_EL objects.
590 */
591typedef struct S_FDT_INFO_LIST
592{
593 UINT nSizeOfListEntry; /*< Size of one list entry in byte(in). */
594 UINT nNumDetectedFaces; /*< Number of detected faces(out). */
595 UINT nNumListElements; /*< Number of list elements(in). */
596 UINT nReserved[4]; /*< reserved for future use(out). */
597 FDT_INFO_EL FaceEntry[1]; /*< First face entry. */
598} FDT_INFO_LIST;
599#endif /* DS_EXPORT */
600
601// {E122A994-FC4D-445b-B21C-308B674844E0}
602DEFINE_GUID(IID_IuEyeFaceDetection,
603 0xe122a994, 0xfc4d, 0x445b, 0xb2, 0x1c, 0x30, 0x8b, 0x67, 0x48, 0x44, 0xe0);
604
605interface IuEyeFaceDetection : public IUnknown
606{
607 /*!
608 * \brief Query for support of the face detection feature.
609 * \param pbSupported output location for result.
610 * \return HRESULT: S_OK on success, error code otherwise.
611 */
612 STDMETHOD(FDT_IsSupported)(bool* pbSupported) = 0;
613
614 /*!
615 * \brief Query the current 'enabled' status of the face detection feature.
616 * \param pbEnabled output location for result.
617 * \return HRESULT: S_OK on success, error code otherwise.
618 */
619 STDMETHOD(FDT_IsEnabled)(bool* pbEnabled) = 0;
620
621 /*!
622 * \brief Set the 'enabled' status of the face detection feature.
623 * \param bEnable new 'enabled' status.
624 * \return HRESULT: S_OK on success, error code otherwise.
625 */
626 STDMETHOD(FDT_Enable)(bool bEnable) = 0;
627
628 /*!
629 * \brief Query the current 'suspended' status of the face detection feature.
630 * \param pbSuspended output location for result.
631 * \return HRESULT: S_OK on success, error code otherwise.
632 */
633 STDMETHOD(FDT_IsSuspended)(bool* pbSuspended) = 0;
634
635 /*!
636 * \brief Set the 'suspended' status of the face detection feature.
637 * \param bSuspend new 'suspended' status.
638 * \return HRESULT: S_OK on success, error code otherwise.
639 */
640 STDMETHOD(FDT_Suspend)(bool bSuspend) = 0;
641
642 /*!
643 * \brief Query the current enabled status of the face detection's 'search angle' subfeature.
644 * \param pbEnabled output location for result.
645 * \return HRESULT: S_OK on success, error code otherwise.
646 */
647 STDMETHOD(FDT_IsSearchAngleEnabled)(bool* pbEnabled) = 0;
648
649 /*!
650 * \brief Set the 'enabled' status of the face detection's 'search angle' feature.
651 * \param bSuspend new 'suspended' status.
652 * \return HRESULT: S_OK on success, error code otherwise.
653 */
654 STDMETHOD(FDT_EnableSearchAngle)(bool bEnable) = 0;
655
656 /*!
657 * \brief Query the current search angle.
658 * \param pulAngle output location for result.
659 * \return HRESULT: S_OK on success, error code otherwise.
660 */
661 STDMETHOD(FDT_GetSearchAngle)(long* pulAngle) = 0;
662
663 /*!
664 * \brief Set the new search angle.
665 * \param ulAngle output location for result.
666 * \return HRESULT: S_OK on success, error code otherwise.
667 */
668 STDMETHOD(FDT_SetSearchAngle)(long ulAngle) = 0;
669
670 /*!
671 * \brief Query the last determined face list.
672 * \param pFaceList output location for result: preallocated object of type \see FDT_INFO_LIST.
673 * \param ulSize size of pFaceList in bytes.
674 * \return HRESULT: S_OK on success, error code otherwise.
675 */
676 STDMETHOD(FDT_GetFaceList)(void* pFaceList, unsigned long ulSize) = 0;
677
678 /*!
679 * \brief Query the last determined number of faces.
680 * \param pulNumFaces output location for result.
681 * \return HRESULT: S_OK on success, error code otherwise.
682 */
683 STDMETHOD(FDT_GetNumFaces)(unsigned long* pulNumFaces) = 0;
684
685 /*!
686 * \brief Query the maximum number of faces that the feature can detect in an image.
687 * \param pulMaxNumFaces output location for result.
688 * \return HRESULT: S_OK on success, error code otherwise.
689 */
690 STDMETHOD(FDT_GetMaxNumFaces)(unsigned long* pulMaxNumFaces) = 0;
691
692 /*!
693 * \brief Query the current maximum number of overlay drawings that the feature will show in an image.
694 * \param pulMaxNumOvl output location for result.
695 * \return HRESULT: S_OK on success, error code otherwise.
696 */
697 STDMETHOD(FDT_GetMaxNumOvl)(unsigned long* pulMaxNumOvl) = 0;
698
699 /*!
700 * \brief Set the new maximum number of overlay drawings that the feature will show in an image.
701 * \param ulMaxNumOvl the new setting.
702 * \return HRESULT: S_OK on success, error code otherwise.
703 */
704 STDMETHOD(FDT_SetMaxNumOvl)(unsigned long ulMaxNumOvl) = 0;
705
706 /*!
707 * \brief Query the current linewidth for the overlay drawings.
708 * \param pulLineWidthOvl output location for result.
709 * \return HRESULT: S_OK on success, error code otherwise.
710 */
711 STDMETHOD(FDT_GetLineWidthOvl)(unsigned long* pulLineWidthOvl) = 0;
712
713 /*!
714 * \brief Set the new linewidth for the overlay drawings.
715 * \param ulLineWidthOvl the new setting.
716 * \return HRESULT: S_OK on success, error code otherwise.
717 */
718 STDMETHOD(FDT_SetLineWidthOvl)(unsigned long ulLineWidthOvl) = 0;
719
720 /*!
721 * \brief Query the resolution.
722 * \param pulHorzRes output location for result horizontal resolution.
723 * \param pulVertRes output location for result vertical resolution.
724 * \return HRESULT: S_OK on success, error code otherwise.
725 */
726 STDMETHOD(FDT_GetResolution)(unsigned long* pulHorzRes, unsigned long* pulVertRes) = 0;
727
728 /*!
729 * \brief Generic access to the face detection feature.
730 * \return E_NOTIMPL
731 * \note the generic access interface is provided for future use.
732 */
733 STDMETHOD(FDT_GenericAccess)(unsigned long ulCommand, void* pParam, unsigned long ulSize) = 0;
734};
735/*!
736 * \}
737 */ // end of group IuEyeFaceDetection
738
739
740// ============================================================================
741/*! \defgroup IuEyeImageStabilization uEye Image Stabilization Interface
742* Proprietary interface for uEye image stabilization control exposed by the capture
743* filter. Allows a DirectShow based program to control and query the image stabilization
744* feature related parameters that are not accessible via direct show functions.
745* \{
746*/
747// ============================================================================
748
749// {D24BA219-7426-45b9-960A-126246ED0897}
750DEFINE_GUID(IID_IuEyeImageStabilization,
751 0xd24ba219, 0x7426, 0x45b9, 0x96, 0xa, 0x12, 0x62, 0x46, 0xed, 0x8, 0x97);
752
753interface IuEyeImageStabilization : public IUnknown
754{
755 /*!
756 * \brief Query for support of the image stabilization feature.
757 * \param pbSupported output location for result.
758 * \return HRESULT: S_OK on success, error code otherwise.
759 */
760 STDMETHOD(ImgStab_IsSupported)(bool* pbSupported) = 0;
761
762 /*!
763 * \brief Query the current 'enabled' status of the image stabilization feature.
764 * \param pbEnabled output location for result.
765 * \return HRESULT: S_OK on success, error code otherwise.
766 */
767 STDMETHOD(ImgStab_IsEnabled)(bool* pbEnabled) = 0;
768
769 /*!
770 * \brief Set the 'enabled' status of the image stabilization feature.
771 * \param bEnable new 'enabled' status.
772 * \return HRESULT: S_OK on success, error code otherwise.
773 */
774 STDMETHOD(ImgStab_Enable)(bool bEnable) = 0;
775
776 /*!
777 * \brief Generic access to the image stabilization feature.
778 * \return E_NOTIMPL
779 * \note the generic access interface is provided for future use.
780 */
781 STDMETHOD(ImgStab_GenericAccess)(unsigned long ulCommand, void* pParam, unsigned long ulSize) = 0;
782};
783/*!
784 * \}
785 */ // end of group IuEyeImageStabilization
786
787#endif // #ifndef _UEYE_CAPTURE_INTERFACE_
Note: See TracBrowser for help on using the repository browser.