vmrender.idl revision af062818b47340eef15700d2f0211576ba3506ee
/*
* Copyright (C) 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
*/
cpp_quote("#if 0")
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;
{
VMRSample_SyncPoint = 0x01,
VMRSample_Preroll = 0x02,
VMRSample_Discontinuity = 0x04,
VMRSample_TimeValid = 0x08,
VMRSample_SrcDstRectsValid = 0x10
{
[
helpstring("IVMRImagePresenter interface"),
]
interface IVMRImagePresenter : IUnknown
{
};
{
AMAP_PIXELFORMAT_VALID = 0x01,
AMAP_3D_TARGET = 0x02,
AMAP_ALLOW_SYSMEM = 0x04,
AMAP_FORCE_SYSMEM = 0x08,
AMAP_DIRECTED_FLIP = 0x10,
AMAP_DXVA_TARGET = 0x20
{
[
helpstring("IVMRSurfaceAllocator interface"),
]
interface IVMRSurfaceAllocator : IUnknown
{
HRESULT AllocateSurface([in] DWORD_PTR id, [in] VMRALLOCATIONINFO *allocinfo, [in, out] DWORD *buffers, IDirectDrawSurface7 **surface);
HRESULT PrepareSurface([in] DWORD_PTR id, [in] IDirectDrawSurface7 *surface, [in] DWORD dwSurfaceFlags);
};
[
helpstring("IVMRSurfaceAllocatorNotify interface"),
]
interface IVMRSurfaceAllocatorNotify : IUnknown
{
};
{
[
helpstring("IVMRWindowlessControl interface"),
]
interface IVMRWindowlessControl : IUnknown
{
HRESULT GetNativeVideoSize([out] LONG *width, [out] LONG *height, [out] LONG *ar_width, [out] LONG *ar_height);
};
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
{
[
helpstring("IVMRMixerControl interface"),
]
interface IVMRMixerControl : IUnknown
{
};
{
} VMRGUID;
{
[
helpstring("IVMRMonitorConfig interface"),
]
interface IVMRMonitorConfig : IUnknown
{
HRESULT GetAvailableMonitors([out, size_is(array_size)] VMRMONITORINFO *info, [in] DWORD array_size, [out] DWORD *retrieved);
}
typedef enum _VMRRenderPrefs
{
RenderPrefs_ForceOffScreen = 0x01,
RenderPrefs_ForceOverlays = 0x02,
RenderPrefs_AllowOverlays = 0x00,
RenderPrefs_AllowOffscreen = 0x00,
RenderPrefs_Reserved = 0x10,
RenderPrefs_Mask = 0x3f
{
VMRMode_Windowed = 0x1,
VMRMode_Windowless = 0x2,
VMRMode_Renderless = 0x4,
VMRMode_Mask = 0x7
} VMRMode;
enum { MAX_NUMBER_OF_STREAMS = 16 };
[
helpstring("IVMRFilterConfig interface"),
]
interface IVMRFilterConfig : IUnknown
{
};
[
helpstring("IVMRAspectRatioControl interface"),
]
interface IVMRAspectRatioControl : IUnknown
{
};
{
DeinterlacePref_NextBest = 0x1,
DeinterlacePref_BOB = 0x2,
DeinterlacePref_Weave = 0x4,
DeinterlacePref_Mask = 0x7
{
DeinterlaceTech_Unknown = 0x00,
DeinterlaceTech_BOBLineReplicate = 0x01,
DeinterlaceTech_MedianFiltering = 0x04,
DeinterlaceTech_EdgeFiltering = 0x08,
DeinterlaceTech_FieldAdaptive = 0x10,
DeinterlaceTech_PixelAdaptive = 0x20,
{
} VMRFrequency;
{
} VMRVideoDesc;
{
[
helpstring("IVMRDeinterlaceControl interface"),
]
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);
};
{
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)")
[
helpstring("IVMRMixerBitmap interface"),
]
interface IVMRMixerBitmap : IUnknown
{
};
{
[
helpstring("IVMRImageCompositor interface"),
]
interface IVMRImageCompositor : IUnknown
{
};
[
helpstring("IVMRVideoStreamControl interface"),
]
interface IVMRVideoStreamControl : IUnknown
{
};
[
helpstring("IVMRImagePresenterConfig interface"),
]
interface IVMRImagePresenterConfig : IUnknown
{
};
[
helpstring("IVMRImagePresenterExclModeConfig interface"),
]
{
HRESULT SetXlcModeDDObjAndPrimarySurface([in] IDirectDraw7 *dddev, [in] IDirectDrawSurface7 *ddsurface);
HRESULT GetXlcModeDDObjAndPrimarySurface([out] IDirectDraw7 **dddev, [out] IDirectDrawSurface7 **ddsurface);
};
[
helpstring("IVPManager interface"),
]
interface IVPManager : IUnknown
{
};