|  | /* | 
|  | * Copyright (C) 2008 Maarten Lankhorst | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | cpp_quote("#if 0") | 
|  | typedef DWORD IDirectDrawSurface7; | 
|  | typedef DWORD IDirectDraw7; | 
|  | typedef DWORD *LPBITMAPINFOHEADER; | 
|  | typedef DWORD *LPDDPIXELFORMAT; | 
|  | typedef struct { DWORD dw1, dw2; } DDCOLORKEY; | 
|  | cpp_quote("#endif") | 
|  | cpp_quote("#include <ddraw.h>") | 
|  |  | 
|  | interface IVMRSurface; | 
|  | interface IVMRSurfaceAllocator; | 
|  | interface IVMRSurfaceAllocatorNotify; | 
|  | interface IVMRImagePresenter; | 
|  | interface IVMRImagePresenterNotify; | 
|  | interface IVMRWindowlessControl; | 
|  | interface IVMRMixerControl; | 
|  | interface IVMRMixerBitmap; | 
|  | interface IVMRFilterConfig; | 
|  | interface IVMRAspectRatioControl; | 
|  | interface IVMRDeinterlaceControl; | 
|  | interface IVMRMonitorConfig; | 
|  | interface IVMRImageCompositor; | 
|  | interface IVMRVideoStreamControl; | 
|  |  | 
|  | typedef enum _VMRPresentationFlags | 
|  | { | 
|  | VMRSample_SyncPoint = 0x01, | 
|  | VMRSample_Preroll = 0x02, | 
|  | VMRSample_Discontinuity = 0x04, | 
|  | VMRSample_TimeValid = 0x08, | 
|  | VMRSample_SrcDstRectsValid = 0x10 | 
|  | } VMRPresentationFlags; | 
|  |  | 
|  | typedef struct tagVMRPRESENTATIONINFO | 
|  | { | 
|  | DWORD dwFlags; | 
|  | IDirectDrawSurface7 *lpSurf; | 
|  | REFERENCE_TIME rtStart, rtEnd; | 
|  | SIZE szAspectRatio; | 
|  | RECT rcSrc, rcDst; | 
|  | DWORD dwTypeSpecificFlags; | 
|  | DWORD dwInterlaceFlags; | 
|  | } VMRPRESENTATIONINFO; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(ce704fe7-e71e-41fb-baa2-c4403e1182f5), | 
|  | helpstring("IVMRImagePresenter interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRImagePresenter : IUnknown | 
|  | { | 
|  | HRESULT StartPresenting([in] DWORD_PTR id); | 
|  | HRESULT StopPresenting([in] DWORD_PTR id); | 
|  | HRESULT PresentImage([in] DWORD_PTR id, [in] VMRPRESENTATIONINFO *info); | 
|  | }; | 
|  |  | 
|  | typedef enum _VMRSurfaceAllocationFlags | 
|  | { | 
|  | AMAP_PIXELFORMAT_VALID = 0x01, | 
|  | AMAP_3D_TARGET = 0x02, | 
|  | AMAP_ALLOW_SYSMEM = 0x04, | 
|  | AMAP_FORCE_SYSMEM = 0x08, | 
|  | AMAP_DIRECTED_FLIP = 0x10, | 
|  | AMAP_DXVA_TARGET = 0x20 | 
|  | } VMRSurfaceAllocationFlags; | 
|  |  | 
|  | typedef struct tagVMRALLOCATIONINFO | 
|  | { | 
|  | DWORD dwFlags; | 
|  | LPBITMAPINFOHEADER lpHdr; | 
|  | LPDDPIXELFORMAT lpPixFmt; | 
|  | SIZE szAspectRatio; | 
|  | DWORD dwMinBuffers; | 
|  | DWORD dwMaxBuffers; | 
|  | DWORD dwInterlaceFlags; | 
|  | SIZE szNativeSize; | 
|  | } VMRALLOCATIONINFO; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(31ce832e-4484-458b-8cca-f4d7e3db0b52), | 
|  | helpstring("IVMRSurfaceAllocator interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRSurfaceAllocator : IUnknown | 
|  | { | 
|  | HRESULT AllocateSurface([in] DWORD_PTR id, [in] VMRALLOCATIONINFO *allocinfo, [in, out] DWORD *buffers, IDirectDrawSurface7 **surface); | 
|  | HRESULT FreeSurface([in] DWORD_PTR id); | 
|  | HRESULT PrepareSurface([in] DWORD_PTR id, [in] IDirectDrawSurface7 *surface, [in] DWORD dwSurfaceFlags); | 
|  | HRESULT AdviseNotify([in] IVMRSurfaceAllocatorNotify *notify); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(aada05a8-5a4e-4729-af0b-cea27aed51e2), | 
|  | helpstring("IVMRSurfaceAllocatorNotify interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRSurfaceAllocatorNotify : IUnknown | 
|  | { | 
|  | HRESULT AdviseSurfaceAllocator([in] DWORD_PTR id, [in] IVMRSurfaceAllocator *allocator); | 
|  | HRESULT SetDDrawDevice([in] IDirectDraw7 *device, [in] HMONITOR monitor); | 
|  | HRESULT ChangeDDrawDevice([in] IDirectDraw7 *device, [in] HMONITOR monitor); | 
|  | HRESULT RestoreDDrawSurfaces(); | 
|  | HRESULT NotifyEvent([in] LONG EventCode, [in] LONG_PTR p1, [in] LONG_PTR p2); | 
|  | HRESULT SetBorderColor([in] COLORREF border); | 
|  | }; | 
|  |  | 
|  | typedef enum _VMR_ASPECT_RATIO_MODE | 
|  | { | 
|  | VMR_ARMODE_NONE, | 
|  | VMR_ARMODE_LETTER_BOX | 
|  | } VMR_ASPECT_RATIO_MODE; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(0eb1088c-4dcd-46f0-878f-39dae86a51b7), | 
|  | helpstring("IVMRWindowlessControl interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRWindowlessControl : IUnknown | 
|  | { | 
|  | HRESULT GetNativeVideoSize([out] LONG *width, [out] LONG *height, [out] LONG *ar_width, [out] LONG *ar_height); | 
|  | HRESULT GetMinIdealVideoSize([out] LONG *width, [out] LONG *height); | 
|  | HRESULT GetMaxIdealVideoSize([out] LONG *width, [out] LONG *height); | 
|  | HRESULT SetVideoPosition([in] const RECT *src_rect, [in] const RECT *dst_rect); | 
|  | HRESULT GetVideoPosition([out] RECT *src_rect, [out] RECT *dst_rect); | 
|  | HRESULT GetAspectRatioMode([out] DWORD *mode); | 
|  | HRESULT SetAspectRatioMode([in] DWORD mode); | 
|  | HRESULT SetVideoClippingWindow([in] HWND hwnd); | 
|  | HRESULT RepaintVideo([in] HWND hwnd, [in] HDC hdc); | 
|  | HRESULT DisplayModeChanged(); | 
|  | HRESULT GetCurrentImage([out] BYTE **data); | 
|  | HRESULT SetBorderColor([in] COLORREF border); | 
|  | HRESULT GetBorderColor([out] COLORREF *border); | 
|  | HRESULT SetColorKey([in] COLORREF key); | 
|  | HRESULT GetColorKey([out] COLORREF *key); | 
|  | }; | 
|  |  | 
|  | typedef enum _VMRMixerPrefs | 
|  | { | 
|  | MixerPref_NoDecimation = 0x0001, | 
|  | MixerPref_DecimateOutput = 0x0002, | 
|  | MixerPref_ARAdjustXorY = 0x0004, | 
|  | MixerPref_DecimationReserved = 0x0008, | 
|  | MixerPref_DecimateMask = 0x000f, | 
|  |  | 
|  | MixerPref_BiLinearFiltering = 0x0010, | 
|  | MixerPref_PointFiltering = 0x0020, | 
|  | MixerPref_FinteringMask = 0x00f0, | 
|  |  | 
|  | MixerPref_RenderTargetRGB = 0x0100, | 
|  | MixerPref_RenderTargetYUV = 0x1000, | 
|  | MixerPref_RenderTargetYUV420 = 0x0200, | 
|  | MixerPref_RenderTargetYUV422 = 0x0400, | 
|  | MixerPref_RenderTargetYUV444 = 0x0800, | 
|  | MixerPref_RenderTargetReserved = 0xe000, | 
|  | MixerPref_RenderTargetMask = 0xff00, | 
|  |  | 
|  | MixerPref_DynamicSwitchToBOB = 0x10000, | 
|  | MixerPref_DynamicDecimateBy2 = 0x20000, | 
|  | MixerPref_DynamicReserved = 0xc0000, | 
|  | MixerPref_DynamicMask = 0xf0000 | 
|  | } VMRMixerPrefs; | 
|  |  | 
|  | typedef struct _NORMALIZEDRECT | 
|  | { | 
|  | FLOAT left, top, right, bottom; | 
|  | } NORMALIZEDRECT; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(1c1a17b0-bed0-415d-974b-dc6696131599), | 
|  | helpstring("IVMRMixerControl interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRMixerControl : IUnknown | 
|  | { | 
|  | HRESULT SetAlpha([in] DWORD id, [in] FLOAT alpha); | 
|  | HRESULT GetAlpha([in] DWORD id, [out] FLOAT *alpha); | 
|  | HRESULT SetZOrder([in] DWORD id, [in] DWORD z); | 
|  | HRESULT GetZOrder([in] DWORD id, [out] DWORD *z); | 
|  | HRESULT SetOutputRect([in] DWORD id, [in] const NORMALIZEDRECT *rect); | 
|  | HRESULT SetBackgroundClr([in] COLORREF background); | 
|  | HRESULT GetBackgroundClr([out] COLORREF *background); | 
|  | HRESULT SetMixingPrefs([in] DWORD prefs); | 
|  | HRESULT GetMixingPrefs([out] DWORD *prefs); | 
|  | }; | 
|  |  | 
|  | typedef struct tagVMRGUID | 
|  | { | 
|  | struct _GUID *pGUID, GUID; | 
|  | } VMRGUID; | 
|  |  | 
|  | #define VMRDEVICENAMELEN 32 | 
|  | #define VMRDEVICEDESCRIPTIONLEN 256 | 
|  |  | 
|  | typedef struct tagVMRMONITORINFO | 
|  | { | 
|  | VMRGUID guid; | 
|  | RECT rcMonitor; | 
|  | HMONITOR hMon; | 
|  | DWORD dwFlags; | 
|  | WCHAR szDevice[VMRDEVICENAMELEN]; | 
|  | WCHAR szDescription[VMRDEVICEDESCRIPTIONLEN]; | 
|  | LARGE_INTEGER liDriverVersion; | 
|  | DWORD dwVendorId; | 
|  | DWORD dwDeviceId; | 
|  | DWORD dwSubSysId; | 
|  | DWORD dwRevision; | 
|  | } VMRMONITORINFO; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(9cf0b1b6-fbaa-4b7f-88cf-cf1f130a0dce), | 
|  | helpstring("IVMRMonitorConfig interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRMonitorConfig : IUnknown | 
|  | { | 
|  | HRESULT SetMonitor([in] const VMRGUID *vmrguid); | 
|  | HRESULT GetMonitor([out] VMRGUID *vmrguid); | 
|  | HRESULT SetDefaultMonitor([in] const VMRGUID *vmrguid); | 
|  | HRESULT GetDefaultMonitor([out] VMRGUID *vmrguid); | 
|  | HRESULT GetAvailableMonitors([out, size_is(array_size)] VMRMONITORINFO *info, [in] DWORD array_size, [out] DWORD *retrieved); | 
|  | } | 
|  |  | 
|  | typedef enum _VMRRenderPrefs | 
|  | { | 
|  | RenderPrefs_RestrictToInitialMonitor = 0x00, | 
|  | RenderPrefs_ForceOffScreen = 0x01, | 
|  | RenderPrefs_ForceOverlays = 0x02, | 
|  | RenderPrefs_AllowOverlays = 0x00, | 
|  | RenderPrefs_AllowOffscreen = 0x00, | 
|  | RenderPrefs_DoNotRenderColorKeyAndBorder = 0x08, | 
|  | RenderPrefs_Reserved = 0x10, | 
|  | RenderPrefs_PreferAGPMemWhenMixing = 0x20, | 
|  | RenderPrefs_Mask = 0x3f | 
|  | } VMRRenderPrefs; | 
|  |  | 
|  | typedef enum _VMRMode | 
|  | { | 
|  | VMRMode_Windowed = 0x1, | 
|  | VMRMode_Windowless = 0x2, | 
|  | VMRMode_Renderless = 0x4, | 
|  | VMRMode_Mask = 0x7 | 
|  | } VMRMode; | 
|  |  | 
|  | enum { MAX_NUMBER_OF_STREAMS = 16 }; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(9e5530c5-7034-48b4-bb46-0b8a6efc8e36), | 
|  | helpstring("IVMRFilterConfig interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRFilterConfig : IUnknown | 
|  | { | 
|  | HRESULT SetImageCompositor([in] IVMRImageCompositor *compositor); | 
|  | HRESULT SetNumberOfStreams([in] DWORD streams); | 
|  | HRESULT GetNumberOfStreams([out] DWORD *streams); | 
|  | HRESULT SetRenderingPrefs([in] DWORD prefs); | 
|  | HRESULT GetRenderingPrefs([out] DWORD *prefs); | 
|  | HRESULT SetRenderingMode([in] DWORD mode); | 
|  | HRESULT GetRenderingMode([out] DWORD *mode); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(ede80b5c-bad6-4623-b537-65586c9f8dfd), | 
|  | helpstring("IVMRAspectRatioControl interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRAspectRatioControl : IUnknown | 
|  | { | 
|  | HRESULT GetAspectRatioMode([out] DWORD *armode); | 
|  | HRESULT SetAspectRatioMode([in] DWORD armode); | 
|  | }; | 
|  |  | 
|  | typedef enum _VMRDeinterlacePrefs | 
|  | { | 
|  | DeinterlacePref_NextBest = 0x1, | 
|  | DeinterlacePref_BOB = 0x2, | 
|  | DeinterlacePref_Weave = 0x4, | 
|  | DeinterlacePref_Mask = 0x7 | 
|  | } VMRDeinterlacePrefs; | 
|  |  | 
|  | typedef enum _VMRDeinterlaceTech | 
|  | { | 
|  | DeinterlaceTech_Unknown = 0x00, | 
|  | DeinterlaceTech_BOBLineReplicate = 0x01, | 
|  | DeinterlaceTech_BOBVerticalStretch = 0x02, | 
|  | DeinterlaceTech_MedianFiltering = 0x04, | 
|  | DeinterlaceTech_EdgeFiltering = 0x08, | 
|  | DeinterlaceTech_FieldAdaptive = 0x10, | 
|  | DeinterlaceTech_PixelAdaptive = 0x20, | 
|  | DeinterlaceTech_MotionVectorSteered = 0x80 | 
|  | } VMRDeinterlaceTech; | 
|  |  | 
|  | typedef struct _VMRFrequency | 
|  | { | 
|  | DWORD dwNumerator, dwDenominator; | 
|  | } VMRFrequency; | 
|  |  | 
|  | typedef struct _VMRVideoDesc | 
|  | { | 
|  | DWORD dwSize; | 
|  | DWORD dwSampleWidth; | 
|  | DWORD dwSampleHeight; | 
|  | BOOL SingleFieldPerSample; | 
|  | DWORD dwFourCC; | 
|  | VMRFrequency InputSampleFreq; | 
|  | VMRFrequency OutputFrameFreq; | 
|  | } VMRVideoDesc; | 
|  |  | 
|  | typedef struct _VMRDeinterlaceCaps | 
|  | { | 
|  | DWORD dwSize; | 
|  | DWORD dwNumPreviousOutputFrames; | 
|  | DWORD dwNumForwardRefSamples; | 
|  | DWORD dwNumBackwardRefSamples; | 
|  | VMRDeinterlaceTech DeinterlaceTechnology; | 
|  | } VMRDeinterlaceCaps; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(bb057577-0db8-4e6a-87a7-1a8c9a505a0f), | 
|  | helpstring("IVMRDeinterlaceControl interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRDeinterlaceControl : IUnknown | 
|  | { | 
|  | HRESULT GetNumberOfDeinterlaceModes([in] VMRVideoDesc *desc, [in, out] DWORD *num_modes, [out] GUID *modes); | 
|  | HRESULT GetDeinterlaceModeCaps([in] GUID *mode, [in] VMRVideoDesc *desc, [in, out] VMRDeinterlaceCaps *caps); | 
|  | HRESULT GetDeinterlaceMode([in] DWORD id, [out] GUID *mode); | 
|  | HRESULT SetDeinterlaceMode([in] DWORD id, [in] GUID *mode); | 
|  | HRESULT GetDeinterlacePrefs([out] DWORD *prefs); | 
|  | HRESULT SetDeinterlacePrefs([in] DWORD prefs); | 
|  | HRESULT GetActualDeinterlaceMode([in] DWORD id, [out] GUID *mode); | 
|  | }; | 
|  |  | 
|  | typedef struct _VMRALPHABITMAP | 
|  | { | 
|  | DWORD dwFlags; | 
|  | HDC hdc; | 
|  | IDirectDrawSurface7 *pDDS; | 
|  | RECT rSrc; | 
|  | RECT rDest; | 
|  | FLOAT fAlpha; | 
|  | COLORREF clrSrcKey; | 
|  | } VMRALPHABITMAP, *PVMRALPHABITMAP; | 
|  |  | 
|  | cpp_quote("#define VMRBITMAP_DISABLE (0x01)") | 
|  | cpp_quote("#define VMRBITMAP_HDC (0x02)") | 
|  | cpp_quote("#define VMRBITMAP_ENTIREDDS (0x04)") | 
|  | cpp_quote("#define VMRBITMAP_SRCCOLORKEY (0x08)") | 
|  | cpp_quote("#define VMRBITMAP_SRCRECT (0x10)") | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(1e673275-0257-40aa-af20-7c608d4a0428), | 
|  | helpstring("IVMRMixerBitmap interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRMixerBitmap : IUnknown | 
|  | { | 
|  | HRESULT SetAlphaBitmap([in] const VMRALPHABITMAP *params); | 
|  | HRESULT UpdateAlphaBitmapParameters([in] VMRALPHABITMAP *params); | 
|  | HRESULT GetAlphaBitmapParameters([out] VMRALPHABITMAP *params); | 
|  | }; | 
|  |  | 
|  | typedef struct _VMRVIDEOSTREAMINFO | 
|  | { | 
|  | IDirectDrawSurface7 *pddsVideoSurface; | 
|  | DWORD dwWidth; | 
|  | DWORD dwHeight; | 
|  | DWORD dwStrmID; | 
|  | FLOAT fAlpha; | 
|  | DDCOLORKEY ddClrKey; | 
|  | NORMALIZEDRECT rNormal; | 
|  | } VMRVIDEOSTREAMINFO; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(7a4fb5af-479f-4074-bb40-ce6722e43c82), | 
|  | helpstring("IVMRImageCompositor interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRImageCompositor : IUnknown | 
|  | { | 
|  | HRESULT InitCompositionTarget([in] IUnknown *d3ddev, [in] IDirectDrawSurface7 *rendertarget); | 
|  | HRESULT TermCompositionTarget([in] IUnknown *d3ddev, [in] IDirectDrawSurface7 *rendertarget); | 
|  | HRESULT SetStreamMediaType([in] DWORD id, [in] AM_MEDIA_TYPE *pmt, [in] BOOL texture); | 
|  | HRESULT CompositeImage([in] IUnknown *d3ddev, [in] IDirectDrawSurface7 *rendertarget, | 
|  | [in] AM_MEDIA_TYPE *pmt, [in] REFERENCE_TIME start, [in] REFERENCE_TIME stop, | 
|  | [in] DWORD backgrnd, [in] VMRVIDEOSTREAMINFO *info, [in] UINT streams); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(058d1f11-2a54-4bef-bd54-df706626b727), | 
|  | helpstring("IVMRVideoStreamControl interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRVideoStreamControl : IUnknown | 
|  | { | 
|  | HRESULT SetColorKey([in] DDCOLORKEY *key); | 
|  | HRESULT GetColorKey([out] DDCOLORKEY *key); | 
|  | HRESULT SetStreamActiveState([in] BOOL active); | 
|  | HRESULT GetStreamActiveState([out] BOOL *active); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(9f3a1c85-8555-49ba-935f-be5b5b29d178), | 
|  | helpstring("IVMRImagePresenterConfig interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRImagePresenterConfig : IUnknown | 
|  | { | 
|  | HRESULT SetRenderingPrefs([in] DWORD prefs); | 
|  | HRESULT GetRenderingPrefs([out] DWORD *prefs); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(e6f7ce40-4673-44f1-8f77-5499d68cb4ea), | 
|  | helpstring("IVMRImagePresenterExclModeConfig interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVMRImagePresenterExclModeConfig : IVMRImagePresenterConfig | 
|  | { | 
|  | HRESULT SetXlcModeDDObjAndPrimarySurface([in] IDirectDraw7 *dddev, [in] IDirectDrawSurface7 *ddsurface); | 
|  | HRESULT GetXlcModeDDObjAndPrimarySurface([out] IDirectDraw7 **dddev, [out] IDirectDrawSurface7 **ddsurface); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(aac18c18-e186-46d2-825d-a1f8dc8e395a), | 
|  | helpstring("IVPManager interface"), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IVPManager : IUnknown | 
|  | { | 
|  | HRESULT SetVideoPortIndex([in] DWORD index); | 
|  | HRESULT GetVideoPortIndex([out] DWORD *index); | 
|  | }; |