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