vmr9.idl revision 3194da424708abdd288b28d96892b3a5f3f7df0b
/*
* Copyright 2008 Maarten Lankhorst
*
* 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
*/
import "unknwn.idl";
cpp_quote("#if 0")
interface IDirect3DSurface9;
interface IDirect3DDevice9;
cpp_quote("#endif")
interface IVMRSurface9;
interface IVMRSurfaceAllocator9;
interface IVMRSurfaceAllocatorEx9;
interface IVMRSurfaceAllocatorNotify9;
interface IVMRImagePresenter9;
interface IVMRImagePresenterConfig9;
interface IVMRMonitorConfig9;
interface IVMRWindowlessControl9;
interface IVMRMixerControl9;
interface IVMRImageCompositor9;
interface IVMRMixerBitmap9;
interface IVMRFilterConfig9;
interface IVMRAspectRatioControl9;
interface IVMRVideoStreamControl9;
{
VMR9Sample_SyncPoint = 0x1,
VMR9Sample_Preroll = 0x2,
VMR9Sample_Discontinuity = 0x4,
VMR9Sample_TimeValid = 0x8,
VMR9Sample_SrcDstRectsValid = 0x10
{
[
helpstring("IVMRImagePresenter9 interface"),
]
interface IVMRImagePresenter9 : IUnknown
{
};
{
VMR9AllocFlag_3DRenderTarget = 0x1,
VMR9AllocFlag_DXVATarget = 0x2,
VMR9AllocFlag_TextureSurface = 0x4,
VMR9AllocFlag_RGBDynamicSwitch = 0x10,
VMR9AllocFlag_UsageReserved = 0xe0,
VMR9AllocFlag_UsageMask = 0xff,
{
[
helpstring("IVMRSurfaceAllocator9 interface"),
]
interface IVMRSurfaceAllocator9 : IUnknown
{
HRESULT InitializeDevice([in] DWORD_PTR id, [in] VMR9AllocationInfo *allocinfo, [in, out] DWORD *numbuffers);
HRESULT GetSurface([in] DWORD_PTR id, [in] DWORD surfaceindex, [in] DWORD flags, [out] IDirect3DSurface9 **surface);
};
[
helpstring("IVMRSurfaceAllocatorEx9 interface"),
]
interface IVMRSurfaceAllocatorEx9 : IVMRSurfaceAllocator9
{
HRESULT GetSurfaceEx([in] DWORD_PTR id, [in] DWORD surfaceindex, [in] DWORD flags, [out] IDirect3DSurface9 **surface, [out] RECT *dest);
};
[
helpstring("IVMRSurfaceAllocatorNotify9 interface"),
]
interface IVMRSurfaceAllocatorNotify9 : IUnknown
{
HRESULT AllocateSurfaceHelper([in] VMR9AllocationInfo *allocinfo, [in, out] DWORD *numbuffers, [out] IDirect3DSurface9 **surface);
};
{
[
helpstring("IVMRWindowlessControl interface"),
]
interface IVMRWindowlessControl9 : IUnknown
{
HRESULT GetNativeVideoSize([out] LONG *width, [out] LONG *height, [out] LONG *arwidth, [out] LONG *arheight);
};
typedef enum _VMR9MixerPrefs
{
/* Decimation */
MixerPref9_NoDecimation = 0x1,
MixerPref9_DecimateOutput = 0x2,
MixerPref9_ARAdjustXorY = 0x4,
MixerPref9_NonSquareMixing = 0x8,
MixerPref9_DecimateMask = 0xf,
/* Filtering */
MixerPref9_BiLinearFiltering = 0x10,
MixerPref9_PointFiltering = 0x20,
MixerPref9_AnisotropicFiltering = 0x40,
MixerPref9_GaussianQuadFiltering = 0x100,
MixerPref9_FilteringReserved = 0xe00,
MixerPref9_FilteringMask = 0xff0,
/* Render target */
MixerPref9_RenderTargetRGB = 0x1000,
MixerPref9_RenderTargetYUV = 0x2000,
MixerPref9_RenderTargetReserved = 0xfc000,
MixerPref9_DynamicSwitchToBOB = 0x100000,
MixerPref9_DynamicDecimateBy2 = 0x200000,
MixerPref9_DynamicReserved = 0xc00000,
MixerPref9_DynamicMask = 0xf00000,
{
{
ProcAmpControl9_Brightness = 0x1,
ProcAmpControl9_Contrast = 0x2,
ProcAmpControl9_Hue = 0x4,
ProcAmpControl9_Saturation = 0x8,
ProcAmpControl9_Mask = 0xf
{
{
[
helpstring("IVMRMixerControl9 interface"),
]
interface IVMRMixerControl9 : IUnknown
{
HRESULT GetProcAmpControlRange([in] DWORD streamid, [in, out] VMR9ProcAmpControlRange *controlrange);
};
{
{
VMR9AlphaBitmap_Disable = 0x1,
VMR9AlphaBitmap_hDC = 0x2,
VMR9AlphaBitmap_EntireDDS = 0x4,
VMR9AlphaBitmap_SrcColorKey = 0x8,
VMR9AlphaBitmap_SrcRect = 0x10,
VMR9AlphaBitmap_FilterMode = 0x20
[
helpstring("IVMRMixerBitmap interface"),
]
interface IVMRMixerBitmap9 : IUnknown
{
};
[
helpstring("IVMRSurface interface"),
]
interface IVMRSurface9 : IUnknown
{
};
typedef enum _VMR9RenderPrefs
{
RenderPrefs9_Mask = 0x1
[
helpstring("IVMRImagePresenterConfig9 interface"),
]
interface IVMRImagePresenterConfig9 : IUnknown
{
};
[
helpstring("IVMRMixerStreamConfig interface"),
]
interface IVMRVideoStreamControl9: IUnknown
{
};
{
VMR9Mode_Windowed = 0x1,
VMR9Mode_Windowless = 0x2,
VMR9Mode_Renderless = 0x4,
VMR9Mode_Mask = 0x7
} VMR9Mode;
[
helpstring("IVMRFilterConfig9 interface"),
]
interface IVMRFilterConfig9 : IUnknown
{
};
[
helpstring("IVMRAspectRatioControl9 interface"),
]
interface IVMRAspectRatioControl9 : IUnknown
{
}
{
[
helpstring("IVMRMonitorConfig9 interface"),
]
interface IVMRMonitorConfig9 : IUnknown
{
HRESULT GetAvailableMonitors([out, size_is(arraysize)] VMR9MonitorInfo *info, [in] DWORD arraysize, [out] DWORD *numdev);
};
{
DeinterlacePref9_NextBest = 0x1,
DeinterlacePref9_BOB = 0x2,
DeinterlacePref9_Weave = 0x4,
DeinterlacePref9_Mask = 0x7
{
DeinterlaceTech9_EdgeFiltering = 0x10,
DeinterlaceTech9_FieldAdaptive = 0x20,
DeinterlaceTech9_PixelAdaptive = 0x40,
{
{
VMR9_SampleReserved = 1,
{
[
helpstring("IVMRDeinterlaceControl9 interface"),
]
interface IVMRDeinterlaceControl9 : IUnknown
{
HRESULT GetNumberOfDeinterlaceModes([in] VMR9VideoDesc *desc, [in, out] DWORD *nummodes, [out] GUID *modes);
HRESULT GetDeinterlaceModeCaps([in] GUID *mode, [in] VMR9VideoDesc *desc, [out] VMR9DeinterlaceCaps *caps);
};
[
helpstring("IVMRImageCompositor9 interface"),
]
interface IVMRImageCompositor9 : IUnknown
{
HRESULT CompositeImage([in] IUnknown *d3ddev, [in] IDirect3DSurface9 *d3dtarget, [in] AM_MEDIA_TYPE *mttarget,
};