mirror of https://github.com/UMSKT/xpmgr.git
474 lines
13 KiB
Plaintext
474 lines
13 KiB
Plaintext
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// File: vidcap.idl
|
|
//
|
|
// Contents: Video Capture and Topology Interface Definitions
|
|
//
|
|
// History: first published in XP SP2 (ISelector,IKsTopologyInfo)
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
import "unknwn.idl";
|
|
import "strmif.idl";
|
|
|
|
// The preprocessor directives here ensure that KSTOPOLOGY_CONNECTION is defined in the correct way
|
|
// Constraint is that ks.h cannot be included in the idl file. The directives below ensure that
|
|
// 1) KSTOPOLOGY_CONNECTION is locally defined for purposes of building the idl file itself.
|
|
// 2) An app can include vidcap.h and ks.h in either order.
|
|
// 3) The structure definition for KSTOPOLOGY_CONNECTION does not show up in vidcap.h since ks.h gets included.
|
|
// Look at vidcap.h to understand exactly what gets generated.
|
|
cpp_quote("#include \"ks.h\"")
|
|
cpp_quote("#ifndef _KS_")
|
|
typedef struct {
|
|
ULONG FromNode;
|
|
ULONG FromNodePin;
|
|
ULONG ToNode;
|
|
ULONG ToNodePin;
|
|
} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;
|
|
cpp_quote("#endif")
|
|
|
|
|
|
// IKsTopologyInfo interface
|
|
[
|
|
object,
|
|
local,
|
|
uuid(720D4AC0-7533-11D0-A5D6-28DB04C10000),
|
|
pointer_default(unique)
|
|
]
|
|
interface IKsTopologyInfo : IUnknown
|
|
{
|
|
HRESULT get_NumCategories([out] DWORD *pdwNumCategories);
|
|
HRESULT get_Category([in] DWORD dwIndex, [out] GUID *pCategory);
|
|
HRESULT get_NumConnections([out] DWORD *pdwNumConnections);
|
|
HRESULT get_ConnectionInfo([in] DWORD dwIndex, [out] KSTOPOLOGY_CONNECTION *pConnectionInfo);
|
|
HRESULT get_NodeName([in] DWORD dwNodeId, [out, annotation("__out_bcount_opt(dwBufSize)")] WCHAR *pwchNodeName, [in] DWORD dwBufSize, [out, annotation("__out")] DWORD *pdwNameLen);
|
|
HRESULT get_NumNodes([out] DWORD *pdwNumNodes);
|
|
HRESULT get_NodeType([in] DWORD dwNodeId, [out] GUID *pNodeType);
|
|
HRESULT CreateNodeInstance([in] DWORD dwNodeId, [in] REFIID iid, [out] void **ppvObject);
|
|
}
|
|
|
|
|
|
// ISelector interface
|
|
[
|
|
object,
|
|
local,
|
|
uuid(1ABDAECA-68B6-4F83-9371-B413907C7B9F),
|
|
pointer_default(unique)
|
|
]
|
|
interface ISelector : IUnknown
|
|
{
|
|
HRESULT get_NumSources([out] DWORD *pdwNumSources);
|
|
HRESULT get_SourceNodeId([out] DWORD *pdwPinId);
|
|
HRESULT put_SourceNodeId([in] DWORD dwPinId);
|
|
}
|
|
|
|
// ICameraControl interface
|
|
[
|
|
object,
|
|
local,
|
|
uuid(2BA1785D-4D1B-44EF-85E8-C7F1D3F20184),
|
|
pointer_default(unique)
|
|
]
|
|
interface ICameraControl : IUnknown
|
|
{
|
|
HRESULT get_Exposure(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Exposure(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Exposure(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_Focus(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Focus(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Focus(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_Iris(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Iris(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Iris(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_Zoom(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Zoom(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Zoom(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_FocalLengths(
|
|
[out] long *plOcularFocalLength,
|
|
[out] long *plObjectiveFocalLengthMin,
|
|
[out] long *plObjectiveFocalLengthMax);
|
|
HRESULT get_Pan(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Pan(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Pan(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_Tilt(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Tilt(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Tilt(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_PanTilt(
|
|
[out] long *pPanValue,
|
|
[out] long *pTiltValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_PanTilt(
|
|
[in] long PanValue,
|
|
[in] long TiltValue,
|
|
[in] long Flags);
|
|
HRESULT get_Roll(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Roll(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Roll(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_ExposureRelative(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_ExposureRelative(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_ExposureRelative(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_FocusRelative(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_FocusRelative(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_FocusRelative(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_IrisRelative(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_IrisRelative(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_IrisRelative(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_ZoomRelative(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_ZoomRelative(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_ZoomRelative(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_PanRelative(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_PanRelative(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT get_TiltRelative(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_TiltRelative(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_TiltRelative(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_PanTiltRelative(
|
|
[out] long *pPanValue,
|
|
[out] long *pTiltValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_PanTiltRelative(
|
|
[in] long PanValue,
|
|
[in] long TiltValue,
|
|
[in] long Flags);
|
|
HRESULT getRange_PanRelative(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_RollRelative(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_RollRelative(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_RollRelative(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
HRESULT get_ScanMode(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_ScanMode(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT get_PrivacyMode(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_PrivacyMode(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
}
|
|
|
|
|
|
// IVideoProcAmp interface
|
|
[
|
|
object,
|
|
local,
|
|
uuid(4050560E-42A7-413a-85C2-09269A2D0F44),
|
|
pointer_default(unique)
|
|
]
|
|
interface IVideoProcAmp : IUnknown
|
|
{
|
|
HRESULT get_BacklightCompensation(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_BacklightCompensation(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_BacklightCompensation(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_Brightness(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Brightness (
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Brightness(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_ColorEnable(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_ColorEnable(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_ColorEnable(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_Contrast(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Contrast(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Contrast(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_Gamma(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Gamma(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Gamma(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_Saturation(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Saturation(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Saturation(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_Sharpness(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Sharpness(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Sharpness(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_WhiteBalance(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_WhiteBalance(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_WhiteBalance(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_Gain(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Gain(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Gain(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_Hue(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_Hue(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_Hue(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_DigitalMultiplier(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_DigitalMultiplier(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_DigitalMultiplier(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_PowerlineFrequency(
|
|
[out] long *pValue,
|
|
[out] long *pFlags);
|
|
HRESULT put_PowerlineFrequency(
|
|
[in] long Value,
|
|
[in] long Flags);
|
|
HRESULT getRange_PowerlineFrequency(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[out] long* pCapsFlag);
|
|
|
|
HRESULT get_WhiteBalanceComponent(
|
|
[out] long *pValue1,
|
|
[out] long *pValue2,
|
|
[in, out] long *pFlags);
|
|
HRESULT put_WhiteBalanceComponent(
|
|
[in] long Value1,
|
|
[in] long Value2,
|
|
[in] long Flags);
|
|
HRESULT getRange_WhiteBalanceComponent(
|
|
[out] long *pMin,
|
|
[out] long *pMax,
|
|
[out] long *pSteppingDelta,
|
|
[out] long* pDefault,
|
|
[in, out] long* pCapsFlag);
|
|
}
|
|
|
|
// IKsNodeControl interface
|
|
[
|
|
object,
|
|
local,
|
|
uuid(11737C14-24A7-4bb5-81A0-0D003813B0C4),
|
|
pointer_default(unique)
|
|
]
|
|
interface IKsNodeControl :IUnknown
|
|
{
|
|
HRESULT put_NodeId([in] DWORD dwNodeId);
|
|
HRESULT put_KsControl([in] PVOID pKsControl);
|
|
}
|
|
|