af062818b47340eef15700d2f0211576ba3506eevboxsync/*
af062818b47340eef15700d2f0211576ba3506eevboxsync * Copyright 2008 Maarten Lankhorst
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is free software; you can redistribute it and/or
af062818b47340eef15700d2f0211576ba3506eevboxsync * modify it under the terms of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License as published by the Free Software Foundation; either
af062818b47340eef15700d2f0211576ba3506eevboxsync * version 2.1 of the License, or (at your option) any later version.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is distributed in the hope that it will be useful,
af062818b47340eef15700d2f0211576ba3506eevboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
af062818b47340eef15700d2f0211576ba3506eevboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
af062818b47340eef15700d2f0211576ba3506eevboxsync * Lesser General Public License for more details.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * You should have received a copy of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License along with this library; if not, write to the Free Software
af062818b47340eef15700d2f0211576ba3506eevboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync/*
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync * a choice of LGPL license versions is made available with the language indicating
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync * of the LGPL is applied is otherwise unspecified.
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync */
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncimport "unknwn.idl";
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynccpp_quote("#if 0")
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IDirect3DSurface9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IDirect3DDevice9;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LONGLONG REFERENCE_TIME;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef DWORD D3DFORMAT;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef DWORD D3DPOOL;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef HANDLE HMONITOR;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct { char dummy; } AM_MEDIA_TYPE;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct { char dummy; } D3DCOLOR;
af062818b47340eef15700d2f0211576ba3506eevboxsynccpp_quote("#endif")
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRSurface9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRSurfaceAllocator9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRSurfaceAllocatorEx9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRSurfaceAllocatorNotify9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRImagePresenter9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRImagePresenterConfig9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRMonitorConfig9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRWindowlessControl9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRMixerControl9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRImageCompositor9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRMixerBitmap9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRFilterConfig9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRAspectRatioControl9;
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRVideoStreamControl9;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _VMR9PresentationFlags
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9Sample_SyncPoint = 0x1,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9Sample_Preroll = 0x2,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9Sample_Discontinuity = 0x4,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9Sample_TimeValid = 0x8,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9Sample_SrcDstRectsValid = 0x10
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9PresentationFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VMR9PresentationInfo
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags; /* Flags defined above */
af062818b47340eef15700d2f0211576ba3506eevboxsync IDirect3DSurface9 *lpSurf;
af062818b47340eef15700d2f0211576ba3506eevboxsync REFERENCE_TIME rtStart;
af062818b47340eef15700d2f0211576ba3506eevboxsync REFERENCE_TIME rtEnd;
af062818b47340eef15700d2f0211576ba3506eevboxsync SIZE szAspectRatio;
af062818b47340eef15700d2f0211576ba3506eevboxsync RECT rcSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync RECT rcDst;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwReserved1;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwReserved2;
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9PresentationInfo;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(69188c61-12a3-40f0-8ffc-342e7b433fd7),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRImagePresenter9 interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRImagePresenter9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT StartPresenting([in] DWORD_PTR id);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT StopPresenting([in] DWORD_PTR id);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT PresentImage([in] DWORD_PTR id, [in] VMR9PresentationInfo *info);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _VMR9SurfaceAllocationFlags
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AllocFlag_3DRenderTarget = 0x1,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AllocFlag_DXVATarget = 0x2,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AllocFlag_TextureSurface = 0x4,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AllocFlag_OffscreenSurface = 0x8,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AllocFlag_RGBDynamicSwitch = 0x10,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AllocFlag_UsageReserved = 0xe0,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AllocFlag_UsageMask = 0xff,
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9SurfaceAllocationFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VMR9AllocationInfo
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags; /* Flags defined above */
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwWidth;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwHeight;
af062818b47340eef15700d2f0211576ba3506eevboxsync D3DFORMAT Format;
af062818b47340eef15700d2f0211576ba3506eevboxsync D3DPOOL Pool;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD MinBuffers;
af062818b47340eef15700d2f0211576ba3506eevboxsync SIZE szAspectRatio;
af062818b47340eef15700d2f0211576ba3506eevboxsync SIZE szNativeSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9AllocationInfo;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(8d5148ea-3f5d-46cf-9df1-d1b896eedb1f),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRSurfaceAllocator9 interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRSurfaceAllocator9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT InitializeDevice([in] DWORD_PTR id, [in] VMR9AllocationInfo *allocinfo, [in, out] DWORD *numbuffers);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT TerminateDevice([in] DWORD_PTR id);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetSurface([in] DWORD_PTR id, [in] DWORD surfaceindex, [in] DWORD flags, [out] IDirect3DSurface9 **surface);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT AdviseNotify([in] IVMRSurfaceAllocatorNotify9 *allocnotify);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(6de9a68a-a928-4522-bf57-655ae3866456),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRSurfaceAllocatorEx9 interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRSurfaceAllocatorEx9 : IVMRSurfaceAllocator9
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetSurfaceEx([in] DWORD_PTR id, [in] DWORD surfaceindex, [in] DWORD flags, [out] IDirect3DSurface9 **surface, [out] RECT *dest);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(dca3f5df-bb3a-4d03-bd81-84614bfbfa0c),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRSurfaceAllocatorNotify9 interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRSurfaceAllocatorNotify9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT AdviseSurfaceAllocator([in] DWORD_PTR id, [in] IVMRSurfaceAllocator9 *alloc);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetD3DDevice([in] IDirect3DDevice9 *device, [in] HMONITOR monitor);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT ChangeD3DDevice([in] IDirect3DDevice9 *device, [in] HMONITOR monitor);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT AllocateSurfaceHelper([in] VMR9AllocationInfo *allocinfo, [in, out] DWORD *numbuffers, [out] IDirect3DSurface9 **surface);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT NotifyEvent([in] LONG code, [in] LONG_PTR param1, [in] LONG_PTR param2);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _VMR9AspectRatioMode
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9ARMode_None,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9ARMode_LetterBox
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9AspectRatioMode;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(8f537d09-f85e-4414-b23b-502e54c79927),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRWindowlessControl interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRWindowlessControl9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetNativeVideoSize([out] LONG *width, [out] LONG *height, [out] LONG *arwidth, [out] LONG *arheight);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetMinIdealVideoSize([out] LONG *width, [out] LONG *height);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetMaxIdealVideoSize([out] LONG *width, [out] LONG *height);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetVideoPosition([in] const RECT *source, [in] const RECT *dest);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetVideoPosition([out] RECT *source, [out] RECT *dest);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetAspectRatioMode([out] DWORD *mode);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetAspectRatioMode([in] DWORD mode);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetVideoClippingWindow([in] HWND hwnd);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT RepaintVideo([in] HWND hwnd, [in] HDC hdc);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT DisplayModeChanged();
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetCurrentImage([out] BYTE **dib);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetBorderColor([in] COLORREF color);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetBorderColor([out] COLORREF *color);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _VMR9MixerPrefs
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync /* Decimation */
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_NoDecimation = 0x1,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_DecimateOutput = 0x2,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_ARAdjustXorY = 0x4,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_NonSquareMixing = 0x8,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_DecimateMask = 0xf,
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync /* Filtering */
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_BiLinearFiltering = 0x10,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_PointFiltering = 0x20,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_AnisotropicFiltering = 0x40,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_PyramidalQuadFiltering = 0x80,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_GaussianQuadFiltering = 0x100,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_FilteringReserved = 0xe00,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_FilteringMask = 0xff0,
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync /* Render target */
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_RenderTargetRGB = 0x1000,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_RenderTargetYUV = 0x2000,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_RenderTargetReserved = 0xfc000,
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_DynamicSwitchToBOB = 0x100000,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_DynamicDecimateBy2 = 0x200000,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_DynamicReserved = 0xc00000,
af062818b47340eef15700d2f0211576ba3506eevboxsync MixerPref9_DynamicMask = 0xf00000,
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9MixerPrefs;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VMR9NormalizedRect
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT left;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT top;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT right;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT bottom;
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9NormalizedRect;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _VMR9ProcAmpControlFlags
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync ProcAmpControl9_Brightness = 0x1,
af062818b47340eef15700d2f0211576ba3506eevboxsync ProcAmpControl9_Contrast = 0x2,
af062818b47340eef15700d2f0211576ba3506eevboxsync ProcAmpControl9_Hue = 0x4,
af062818b47340eef15700d2f0211576ba3506eevboxsync ProcAmpControl9_Saturation = 0x8,
af062818b47340eef15700d2f0211576ba3506eevboxsync ProcAmpControl9_Mask = 0xf
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9ProcAmpControlFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VMR9ProcAmpControl
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT Brightness;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT Contrast;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT Hue;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT Saturation;
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9ProcAmpControl;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VMR9ProcAmpControlRange
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9ProcAmpControlFlags dwProperty;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT MinValue;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT MaxValue;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT DefaultValue;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT StepSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9ProcAmpControlRange;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(1a777eaa-47c8-4930-b2c9-8fee1c1b0f3b),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRMixerControl9 interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRMixerControl9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetAlpha([in] DWORD streamid, [in] FLOAT alpha);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetAlpha([in] DWORD streamid, [out] FLOAT *alpha);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetZOrder([in] DWORD streamid, [in] DWORD zorder);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetZOrder([in] DWORD streamid, [out] DWORD *zorder);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetOutputRect([in] DWORD streamid, [in] const VMR9NormalizedRect *rect);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetOutputRect([in] DWORD streamid, [out] VMR9NormalizedRect *rect);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetBackgroundClr([in] COLORREF back);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetBackgroundClr([out] COLORREF *back);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetMixingPrefs([in] DWORD mixingprefs);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetMixingPrefs([out] DWORD *mixingprefs);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetProcAmpControl([in] DWORD streamid, [in] VMR9ProcAmpControl *control);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetProcAmpControl([in] DWORD streamid, [in, out] VMR9ProcAmpControl *control);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetProcAmpControlRange([in] DWORD streamid, [in, out] VMR9ProcAmpControlRange *controlrange);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VMR9AlphaBitmap
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync HDC hdc;
af062818b47340eef15700d2f0211576ba3506eevboxsync IDirect3DSurface9 *pDDS;
af062818b47340eef15700d2f0211576ba3506eevboxsync RECT rSrc;
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9NormalizedRect *rDest;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT fAlpha;
af062818b47340eef15700d2f0211576ba3506eevboxsync COLORREF clrSrcKey;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFilterMode;
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9AlphaBitmap;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _VMR9AlphaBitmapFlags
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AlphaBitmap_Disable = 0x1,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AlphaBitmap_hDC = 0x2,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AlphaBitmap_EntireDDS = 0x4,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AlphaBitmap_SrcColorKey = 0x8,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AlphaBitmap_SrcRect = 0x10,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9AlphaBitmap_FilterMode = 0x20
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9AlphaBitmapFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(ced175e5-1935-4820-81bd-ff6ad00c9108),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRMixerBitmap interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRMixerBitmap9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetAlphaBitmap([in] const VMR9AlphaBitmap *bitmap);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT UpdateAlphaBitmapParameters([in] const VMR9AlphaBitmap *bitmap);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetAlphaBitmapParameters([out] VMR9AlphaBitmap *bitmap);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(dfc581a1-6e1f-4c3a-8d0a-5e9792ea2afc),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRSurface interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRSurface9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT IsSurfaceLocked();
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT LockSurface([out] BYTE **surface);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT UnlockSurface();
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetSurface([out] IDirect3DSurface9 **surface);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _VMR9RenderPrefs
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync RenderPrefs9_DoNotRenderBorder = 0x1,
af062818b47340eef15700d2f0211576ba3506eevboxsync RenderPrefs9_Mask = 0x1
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9RenderPrefs;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(45c15cab-6e22-420a-8043-ae1f0ac02c7d),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRImagePresenterConfig9 interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRImagePresenterConfig9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetRenderingPrefs([in] DWORD renderflags);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetRenderingPrefs([out] DWORD *renderflags);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(d0cfe38b-93e7-4772-8957-0400c49a4485),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRMixerStreamConfig interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRVideoStreamControl9: IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetStreamActiveState([in] BOOL active);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetStreamActiveState([out] BOOL *active);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _VMR9Mode
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9Mode_Windowed = 0x1,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9Mode_Windowless = 0x2,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9Mode_Renderless = 0x4,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9Mode_Mask = 0x7
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9Mode;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(5a804648-4f66-4867-9c43-4f5c822cf1b8),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRFilterConfig9 interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRFilterConfig9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetImageCompositor([in] IVMRImageCompositor9 *compositor);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetNumberOfStreams([in] DWORD max);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetNumberOfStreams([out] DWORD *max);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetRenderingPrefs([in] DWORD renderflags);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetRenderingPrefs([out] DWORD *renderflags);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetRenderingMode([in] DWORD mode);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetRenderingMode([out] DWORD *mode);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(00d96c29-bbde-4efc-9901-bb5036392146),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRAspectRatioControl9 interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRAspectRatioControl9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetAspectRatioMode([out] DWORD *mode);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetAspectRatioMode([in] DWORD mode);
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VMR9DEVICENAMELEN 32
af062818b47340eef15700d2f0211576ba3506eevboxsync#define VMR9DEVICEDESCRIPTIONLEN 512
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VMR9MonitorInfo
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync UINT uDevID;
af062818b47340eef15700d2f0211576ba3506eevboxsync RECT rcMonitor;
af062818b47340eef15700d2f0211576ba3506eevboxsync HMONITOR hMon;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync WCHAR szDevice[VMR9DEVICENAMELEN];
af062818b47340eef15700d2f0211576ba3506eevboxsync WCHAR szDescription[VMR9DEVICEDESCRIPTIONLEN];
af062818b47340eef15700d2f0211576ba3506eevboxsync LARGE_INTEGER liDriverVersion;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwVendorId;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwDeviceId;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSubSysId;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwRevision;
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9MonitorInfo;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(46c2e457-8ba0-4eef-b80b-0680f0978749),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRMonitorConfig9 interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRMonitorConfig9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetMonitor([in] UINT uDev);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetMonitor([out] UINT *uDev);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetDefaultMonitor([in] UINT uDev);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetDefaultMonitor([out] UINT *uDev);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetAvailableMonitors([out, size_is(arraysize)] VMR9MonitorInfo *info, [in] DWORD arraysize, [out] DWORD *numdev);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _VMR9DeinterlacePrefs
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlacePref9_NextBest = 0x1,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlacePref9_BOB = 0x2,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlacePref9_Weave = 0x4,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlacePref9_Mask = 0x7
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9DeinterlacePrefs;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _VMR9DeinterlaceTech
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlaceTech9_Unknown = 0,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlaceTech9_BOBLineReplicate = 0x1,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlaceTech9_BOBVerticalStretch = 0x2,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlaceTech9_MedianFiltering = 0x4,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlaceTech9_EdgeFiltering = 0x10,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlaceTech9_FieldAdaptive = 0x20,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlaceTech9_PixelAdaptive = 0x40,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeinterlaceTech9_MotionVectorSteered = 0x80
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9DeinterlaceTech;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VMR9Frequency
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwNumerator;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwDenominator;
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9Frequency;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _VMR9_SampleFormat
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9_SampleReserved = 1,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9_SampleProgressiveFrame = 2,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9_SampleFieldInterleavedEvenFirst = 3,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9_SampleFieldInterleavedOddFirst = 4,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9_SampleFieldSingleEven = 5,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9_SampleFieldSingleOdd = 6,
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9_SampleFormat;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VMR9VideoDesc
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSampleWidth;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSampleHeight;
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9_SampleFormat SampleFormat;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwFourCC;
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9Frequency InputSampleFreq;
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9Frequency OutputFrameFreq;
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9VideoDesc;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VMR9DeinterlaceCaps {
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwNumPreviousOutputFrames;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwNumForwardRefSamples;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwNumBackwardRefSamples;
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9DeinterlaceTech DeinterlaceTechnology;
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9DeinterlaceCaps;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(a215fb8d-13c2-4f7f-993c-003d6271a459),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRDeinterlaceControl9 interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRDeinterlaceControl9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetNumberOfDeinterlaceModes([in] VMR9VideoDesc *desc, [in, out] DWORD *nummodes, [out] GUID *modes);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetDeinterlaceModeCaps([in] GUID *mode, [in] VMR9VideoDesc *desc, [out] VMR9DeinterlaceCaps *caps);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetDeinterlaceMode([in] DWORD streamid, [out] GUID *mode);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetDeinterlaceMode([in] DWORD streamid, [in] GUID *mode);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetDeinterlacePrefs([out] DWORD *prefs);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT SetDeinterlacePrefs([in] DWORD prefs);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT GetActualDeinterlaceMode([in] DWORD streamid, [out] GUID *mode);
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VMR9VideoStreamInfo {
af062818b47340eef15700d2f0211576ba3506eevboxsync IDirect3DSurface9 *pddsVideoSurface;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwWidth;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwHeight;
af062818b47340eef15700d2f0211576ba3506eevboxsync DWORD dwStrmID;
af062818b47340eef15700d2f0211576ba3506eevboxsync FLOAT fAlpha;
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9NormalizedRect rNormal;
af062818b47340eef15700d2f0211576ba3506eevboxsync REFERENCE_TIME rtStart;
af062818b47340eef15700d2f0211576ba3506eevboxsync REFERENCE_TIME rtEnd;
af062818b47340eef15700d2f0211576ba3506eevboxsync VMR9_SampleFormat SampleFormat;
af062818b47340eef15700d2f0211576ba3506eevboxsync} VMR9VideoStreamInfo;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync[
af062818b47340eef15700d2f0211576ba3506eevboxsync local,
af062818b47340eef15700d2f0211576ba3506eevboxsync object,
af062818b47340eef15700d2f0211576ba3506eevboxsync uuid(4a5c89eb-df51-4654-ac2a-e48e02bbabf6),
af062818b47340eef15700d2f0211576ba3506eevboxsync helpstring("IVMRImageCompositor9 interface"),
af062818b47340eef15700d2f0211576ba3506eevboxsync pointer_default(unique)
af062818b47340eef15700d2f0211576ba3506eevboxsync]
af062818b47340eef15700d2f0211576ba3506eevboxsyncinterface IVMRImageCompositor9 : IUnknown
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT InitCompositionDevice([in] IUnknown *d3ddev);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT TermCompositionDevice([in] IUnknown *d3ddev);
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT CompositeImage([in] IUnknown *d3ddev, [in] IDirect3DSurface9 *d3dtarget, [in] AM_MEDIA_TYPE *mttarget,
af062818b47340eef15700d2f0211576ba3506eevboxsync [in] REFERENCE_TIME start, [in] REFERENCE_TIME stop, D3DCOLOR back,
af062818b47340eef15700d2f0211576ba3506eevboxsync [in] VMR9VideoStreamInfo *info, [in] UINT streams);
af062818b47340eef15700d2f0211576ba3506eevboxsync};