summaryrefslogtreecommitdiffstats
path: root/sdk/dx8sdk/Include/DShowIDL/vmr9.idl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/vmr9.idl1057
1 files changed, 0 insertions, 1057 deletions
diff --git a/sdk/dx8sdk/Include/DShowIDL/vmr9.idl b/sdk/dx8sdk/Include/DShowIDL/vmr9.idl
deleted file mode 100644
index ae9245f2..00000000
--- a/sdk/dx8sdk/Include/DShowIDL/vmr9.idl
+++ /dev/null
@@ -1,1057 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//
-// Public Interfaces for the DX9 Video Mixing Renderer DShow filter
-//
-// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved.
-///////////////////////////////////////////////////////////////////////////////
-
-import "unknwn.idl";
-
-
-cpp_quote("#if 0")
-// This is temporary work around to persuade
-// MIDL to allow forward declarations.
-typedef DWORD IDirect3DDevice9;
-typedef DWORD IDirect3DSurface9;
-typedef DWORD D3DFORMAT;
-typedef DWORD D3DCOLOR;
-typedef DWORD D3DPOOL;
-typedef LONGLONG REFERENCE_TIME;
-typedef DWORD* HMONITOR;
-typedef struct {DWORD dw1; DWORD dw2;} AM_MEDIA_TYPE;
-cpp_quote ("#endif")
-
-
-// public interfaces supported by the VMR9
-
-interface IVMRSurface9;
-
-interface IVMRSurfaceAllocator9;
-interface IVMRSurfaceAllocatorNotify9;
-interface IVMRImagePresenter9;
-interface IVMRImagePresenterConfig9;
-interface IVMRMonitorConfig9;
-interface IVMRWindowlessControl9;
-
-interface IVMRMixerControl9;
-interface IVMRImageCompositor9;
-interface IVMRMixerBitmap9;
-
-
-interface IVMRFilterConfig9;
-interface IVMRAspectRatioControl9;
-interface IVMRVideoStreamControl9;
-
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Allocator Presenter interfaces
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-
-//=====================================================================
-//
-// IVMRImagePresenter9
-//
-//=====================================================================
-typedef enum {
- VMR9Sample_SyncPoint = 0x00000001,
- VMR9Sample_Preroll = 0x00000002,
- VMR9Sample_Discontinuity = 0x00000004,
- VMR9Sample_TimeValid = 0x00000008,
- VMR9Sample_SrcDstRectsValid= 0x00000010
-} VMR9PresentationFlags;
-
-
-typedef struct _VMR9PresentationInfo {
- DWORD dwFlags;
- IDirect3DSurface9* lpSurf;
- REFERENCE_TIME rtStart;
- REFERENCE_TIME rtEnd;
- SIZE szAspectRatio;
- RECT rcSrc;
- RECT rcDst;
- DWORD dwReserved1;
- DWORD dwReserved2;
-} VMR9PresentationInfo;
-
-[
- local,
- object,
- local,
- uuid(69188c61-12a3-40f0-8ffc-342e7b433fd7),
- helpstring("IVMRImagePresenter9 Interface"),
- pointer_default(unique)
-]
-interface IVMRImagePresenter9 : IUnknown
-{
- HRESULT StartPresenting(
- [in] DWORD_PTR dwUserID
- );
-
- HRESULT StopPresenting(
- [in] DWORD_PTR dwUserID
- );
-
- HRESULT PresentImage(
- [in] DWORD_PTR dwUserID,
- [in] VMR9PresentationInfo* lpPresInfo
- );
-};
-
-
-//=====================================================================
-//
-// IVMRSurfaceAllocator
-//
-//=====================================================================
-typedef enum {
- // surface types/usage
- VMR9AllocFlag_3DRenderTarget = 0x0001,
- VMR9AllocFlag_DXVATarget = 0x0002,
-
- //
- // VMR9AllocFlag_TextureSurface can be combined with
- // DXVATarget and 3DRenderTarget
- //
- VMR9AllocFlag_TextureSurface = 0x0004,
- VMR9AllocFlag_OffscreenSurface = 0x0008,
- VMR9AllocFlag_UsageReserved = 0x00F0,
- VMR9AllocFlag_UsageMask = 0x00FF
-
- // surface
-} VMR9SurfaceAllocationFlags;
-
-
-typedef struct _VMR9AllocationInfo {
- DWORD dwFlags; // see VMR9SurfaceAllocationFlags
- DWORD dwWidth;
- DWORD dwHeight;
- D3DFORMAT Format; // 0 means use a format compatible with the display
- D3DPOOL Pool;
- DWORD MinBuffers;
- SIZE szAspectRatio;
- SIZE szNativeSize;
-} VMR9AllocationInfo;
-
-[
- local,
- object,
- local,
- uuid(8d5148ea-3f5d-46cf-9df1-d1b896eedb1f),
- helpstring("IVMRSurfaceAllocator9 Interface"),
- pointer_default(unique)
-]
-interface IVMRSurfaceAllocator9 : IUnknown
-{
- HRESULT InitializeDevice(
- [in] DWORD_PTR dwUserID,
- [in] VMR9AllocationInfo* lpAllocInfo,
- [in, out] DWORD* lpNumBuffers
- );
-
- HRESULT TerminateDevice(
- [in] DWORD_PTR dwID
- );
-
- HRESULT GetSurface(
- [in] DWORD_PTR dwUserID,
- [in] DWORD SurfaceIndex,
- [in] DWORD SurfaceFlags,
- [out] IDirect3DSurface9** lplpSurface
- );
-
- HRESULT AdviseNotify(
- [in] IVMRSurfaceAllocatorNotify9* lpIVMRSurfAllocNotify
- );
-};
-
-
-//=====================================================================
-//
-// IVMRSurfaceAllocatorNotify9
-//
-//=====================================================================
-[
- local,
- object,
- local,
- uuid(dca3f5df-bb3a-4d03-bd81-84614bfbfa0c),
- helpstring("IVMRSurfaceAllocatorNotify9 Interface"),
- pointer_default(unique)
-]
-interface IVMRSurfaceAllocatorNotify9 : IUnknown
-{
- HRESULT AdviseSurfaceAllocator(
- [in] DWORD_PTR dwUserID,
- [in] IVMRSurfaceAllocator9* lpIVRMSurfaceAllocator
- );
-
- HRESULT SetD3DDevice(
- [in] IDirect3DDevice9* lpD3DDevice,
- [in] HMONITOR hMonitor
- );
-
- HRESULT ChangeD3DDevice(
- [in] IDirect3DDevice9* lpD3DDevice,
- [in] HMONITOR hMonitor
- );
-
- HRESULT AllocateSurfaceHelper(
- [in] VMR9AllocationInfo* lpAllocInfo,
- [in, out] DWORD* lpNumBuffers,
- [out] IDirect3DSurface9** lplpSurface
- );
-
- HRESULT NotifyEvent(
- [in] LONG EventCode,
- [in] LONG_PTR Param1,
- [in] LONG_PTR Param2
- );
-};
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Application control and configuration interfaces
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-//=====================================================================
-//
-// IVMRWindowlessControl9
-//
-//=====================================================================
-typedef enum {
- VMR9ARMode_None,
- VMR9ARMode_LetterBox
-} VMR9AspectRatioMode;
-
-[
- local,
- object,
- local,
- uuid(8f537d09-f85e-4414-b23b-502e54c79927),
- helpstring("IVMRWindowlessControl Interface"),
- pointer_default(unique)
-]
-interface IVMRWindowlessControl9 : IUnknown
-{
- //
- //////////////////////////////////////////////////////////
- // Video size and position information
- //////////////////////////////////////////////////////////
- //
- HRESULT GetNativeVideoSize(
- [out] LONG* lpWidth,
- [out] LONG* lpHeight,
- [out] LONG* lpARWidth,
- [out] LONG* lpARHeight
- );
-
- HRESULT GetMinIdealVideoSize(
- [out] LONG* lpWidth,
- [out] LONG* lpHeight
- );
-
- HRESULT GetMaxIdealVideoSize(
- [out] LONG* lpWidth,
- [out] LONG* lpHeight
- );
-
- HRESULT SetVideoPosition(
- [in] const LPRECT lpSRCRect,
- [in] const LPRECT lpDSTRect
- );
-
- HRESULT GetVideoPosition(
- [out] LPRECT lpSRCRect,
- [out] LPRECT lpDSTRect
- );
-
- HRESULT GetAspectRatioMode(
- [out] DWORD* lpAspectRatioMode
- );
-
- HRESULT SetAspectRatioMode(
- [in] DWORD AspectRatioMode
- );
-
- //
- //////////////////////////////////////////////////////////
- // Display and clipping management
- //////////////////////////////////////////////////////////
- //
- HRESULT SetVideoClippingWindow(
- [in] HWND hwnd
- );
-
- HRESULT RepaintVideo(
- [in] HWND hwnd,
- [in] HDC hdc
- );
-
- HRESULT DisplayModeChanged();
-
-
- //
- //////////////////////////////////////////////////////////
- // GetCurrentImage
- //
- // Returns the current image being displayed. This images
- // is returned in the form of packed Windows DIB.
- //
- // GetCurrentImage can be called at any time, also
- // the caller is responsible for free the returned memory
- // by calling CoTaskMemFree.
- //
- // Excessive use of this function will degrade video
- // playback performed.
- //////////////////////////////////////////////////////////
- //
- HRESULT GetCurrentImage(
- [out] BYTE** lpDib
- );
-
- //
- //////////////////////////////////////////////////////////
- // Border Color control
- //
- // The border color is color used to fill any area of the
- // the destination rectangle that does not contain video.
- // It is typically used in two instances. When the video
- // straddles two monitors and when the VMR is trying
- // to maintain the aspect ratio of the movies by letter
- // boxing the video to fit within the specified destination
- // rectangle. See SetAspectRatioMode above.
- //////////////////////////////////////////////////////////
- //
- HRESULT SetBorderColor(
- [in] COLORREF Clr
- );
-
- HRESULT GetBorderColor(
- [out] COLORREF* lpClr
- );
-};
-
-
-
-//=====================================================================
-//
-// IVMRMixerControl9
-//
-//=====================================================================
-
-typedef enum {
- MixerPref9_NoDecimation = 0x00000001, // No decimation - full size
- MixerPref9_DecimateOutput = 0x00000002, // decimate output by 2 in x & y
- MixerPref9_ARAdjustXorY = 0x00000004, // adjust the aspect ratio in x or y
- MixerPref9_NonSquareMixing = 0x00000008, // assume AP can handle non-square mixing, avoids intermediate scales
- MixerPref9_DecimateMask = 0x0000000F,
-
- MixerPref9_BiLinearFiltering = 0x00000010, // use bi-linear filtering
- MixerPref9_PointFiltering = 0x00000020, // use point filtering
- MixerPref9_AnisotropicFiltering = 0x00000040, //
- MixerPref9_PyramidalQuadFiltering = 0x00000080, // 4-sample tent
- MixerPref9_GaussianQuadFiltering = 0x00000100, // 4-sample gaussian
- MixerPref9_FilteringReserved = 0x00000E00, // bits reserved for future use.
- MixerPref9_FilteringMask = 0x00000FF0, // OR of all above flags
-
- MixerPref9_RenderTargetRGB = 0x00001000,
- MixerPref9_RenderTargetYUV = 0x00002000, // Uses DXVA to perform mixing
- MixerPref9_RenderTargetReserved = 0x000FC000, // bits reserved for future use.
- MixerPref9_RenderTargetMask = 0x000FF000, // OR of all above flags
-
- //
- // Dynamic changes that can be performed when the VMR's mixer is
- // configured to use the YUV Render target (see MixerPref_RenderTargetYUV)
- // These preferences can be applied while the graph is running and take effect
- // when the next frame is composed by the mixer.
- //
- MixerPref9_DynamicSwitchToBOB = 0x00100000,
- MixerPref9_DynamicDecimateBy2 = 0x00200000,
-
- MixerPref9_DynamicReserved = 0x00C00000,
- MixerPref9_DynamicMask = 0x00F00000
-
-} VMR9MixerPrefs;
-
-
-//
-// Normalized relative rectangle
-// Coordinate ranges: x=[0...1) y=[0...1)
-// Where the output window goes from 0,0 (closed inclusive lower bound)
-// to 1,1 (open exclusive upper bound)
-//
-typedef struct _VMR9NormalizedRect
-{
- float left;
- float top;
- float right;
- float bottom;
-} VMR9NormalizedRect;
-
-
-
-typedef enum {
- ProcAmpControl9_Brightness = 0x00000001,
- ProcAmpControl9_Contrast = 0x00000002,
- ProcAmpControl9_Hue = 0x00000004,
- ProcAmpControl9_Saturation = 0x00000008,
- ProcAmpControl9_Mask = 0x0000000F
-} VMR9ProcAmpControlFlags;
-
-typedef struct _VMR9ProcAmpControl
-{
- DWORD dwSize;
- DWORD dwFlags;
- float Brightness;
- float Contrast;
- float Hue;
- float Saturation;
-} VMR9ProcAmpControl;
-
-typedef struct _VMR9ProcAmpControlRange
-{
- DWORD dwSize;
- VMR9ProcAmpControlFlags dwProperty; // see VMR9ProcAmpControlFlags above
- float MinValue;
- float MaxValue;
- float DefaultValue;
- float StepSize;
-} VMR9ProcAmpControlRange;
-
-
-[
- local,
- object,
- local,
- uuid(1a777eaa-47c8-4930-b2c9-8fee1c1b0f3b),
- helpstring("IVMRMixerControl9 Interface"),
- pointer_default(unique)
-]
-interface IVMRMixerControl9 : IUnknown
-{
- HRESULT SetAlpha(
- [in] DWORD dwStreamID,
- [in] float Alpha // Source alpha premultication factor (global alpha for source)
- );
-
- HRESULT GetAlpha(
- [in] DWORD dwStreamID,
- [out] float* pAlpha
- );
-
- HRESULT SetZOrder(
- [in] DWORD dwStreamID,
- [in] DWORD dwZ
- );
-
- HRESULT GetZOrder(
- [in] DWORD dwStreamID,
- [out] DWORD* pZ
- );
-
- HRESULT SetOutputRect(
- [in] DWORD dwStreamID,
- [in] const VMR9NormalizedRect *pRect
- );
-
- HRESULT GetOutputRect(
- [in] DWORD dwStreamID,
- [out] VMR9NormalizedRect *pRect
- );
-
- HRESULT SetBackgroundClr(
- [in] COLORREF ClrBkg
- );
-
- HRESULT GetBackgroundClr(
- [in] COLORREF* lpClrBkg
- );
-
- HRESULT SetMixingPrefs(
- [in] DWORD dwMixerPrefs // a combination of VMRMixingPrefFlags
- );
-
- HRESULT GetMixingPrefs(
- [out] DWORD* pdwMixerPrefs
- );
-
- HRESULT SetProcAmpControl(
- [in] DWORD dwStreamID,
- [in] VMR9ProcAmpControl* lpClrControl
- );
-
- HRESULT GetProcAmpControl(
- [in] DWORD dwStreamID,
- [in, out] VMR9ProcAmpControl* lpClrControl
- );
-
- HRESULT GetProcAmpControlRange(
- [in] DWORD dwStreamID,
- [in, out] VMR9ProcAmpControlRange* lpClrControl
- );
-};
-
-
-//=====================================================================
-//
-// IVMRMixerBitmap9
-//
-//=====================================================================
-
-typedef struct _VMR9AlphaBitmap
-{
- DWORD dwFlags; // flags word
- HDC hdc; // DC for the bitmap to copy
- IDirect3DSurface9* pDDS; // D3D surface to copy
- RECT rSrc; // rectangle to copy from the DC/DDS
- VMR9NormalizedRect rDest; // output rectangle in composition space
- FLOAT fAlpha; // opacity of the bitmap
- COLORREF clrSrcKey; // src color key
- DWORD dwFilterMode; // See "SetMixerPrefs"
-} VMR9AlphaBitmap;
-
-
-typedef enum {
-
- // Disable the alpha bitmap for now
- VMR9AlphaBitmap_Disable = 0x00000001,
-
- // Take the bitmap from the HDC rather than the DirectDraw surface
- VMR9AlphaBitmap_hDC = 0x00000002,
-
- // Take the entire DDraw surface - rSrc is ignored
- VMR9AlphaBitmap_EntireDDS = 0x00000004,
-
- // Indicates that the clrTrans value is valid and should be
- // used when blending
- VMR9AlphaBitmap_SrcColorKey = 0x00000008,
-
- // Indicates that the rSrc rectangle is valid and specifies a
- // sub-rectangle of the of original app image to be blended.
- // Use of this parameter enables "Image Strips"
- VMR9AlphaBitmap_SrcRect = 0x00000010,
-
- // Indicates that dwFilterMode parameter is valid and should be
- // used to overide the default filtering method used by the VMR.
- // MixerPref_PointFiltering is particulaly useful for images that
- // contain text and do not need to be stretch prior to blending with
- // the video content.
- VMR9AlphaBitmap_FilterMode = 0x00000020
-} VMR9AlphaBitmapFlags;
-
-[
- object,
- local,
- uuid(ced175e5-1935-4820-81bd-ff6ad00c9108),
- helpstring("IVMRMixerBitmap Interface"),
- pointer_default(unique)
-]
-interface IVMRMixerBitmap9 : IUnknown
-{
- // Set bitmap, location to blend it, and blending value
- HRESULT SetAlphaBitmap(
- [in] const VMR9AlphaBitmap* pBmpParms
- );
-
- // Change bitmap location, size and blending value,
- // graph must be running for change to take effect.
- HRESULT UpdateAlphaBitmapParameters(
- [in] const VMR9AlphaBitmap* pBmpParms
- );
-
- // Get bitmap, location to blend it, and blending value
- HRESULT GetAlphaBitmapParameters(
- [out] VMR9AlphaBitmap* pBmpParms
- );
-};
-
-
-
-//=====================================================================
-//
-// IVMRSurface9
-//
-//=====================================================================
-[
- local,
- object,
- local,
- uuid(dfc581a1-6e1f-4c3a-8d0a-5e9792ea2afc),
- helpstring("IVMRSurface Interface"),
- pointer_default(unique)
-]
-interface IVMRSurface9 : IUnknown
-{
- HRESULT IsSurfaceLocked();
-
- HRESULT LockSurface(
- [out] BYTE** lpSurface
- );
-
- HRESULT UnlockSurface();
-
- HRESULT GetSurface(
- [out] IDirect3DSurface9** lplpSurface
- );
-};
-
-
-
-//=====================================================================
-//
-// IID_IVMRImagePresenterConfig9 - this interface allows applications
-// to configure the default Microsoft provided allocator-presenter
-// inorder to simplify the implementation of their own
-// allocator-presenter plug-in.
-//
-//=====================================================================
-typedef enum {
- RenderPrefs9_DoNotRenderBorder = 0x00000001, // app paints color keys
- RenderPrefs9_Mask = 0x00000001, // OR of all above flags
-} VMR9RenderPrefs;
-[
- local,
- object,
- local,
- uuid(45c15cab-6e22-420a-8043-ae1f0ac02c7d),
- helpstring("IVMRImagePresenterConfig9 Interface"),
- pointer_default(unique)
-]
-
-interface IVMRImagePresenterConfig9 : IUnknown
-{
-
- HRESULT SetRenderingPrefs(
- [in] DWORD dwRenderFlags // see VMRRenderPrefs for valid flags
- );
-
- HRESULT GetRenderingPrefs(
- [out] DWORD* dwRenderFlags // see VMRRenderPrefs for valid flags
- );
-
-}
-
-
-
-
-//=====================================================================
-//
-// IVMRVideoStreamControl9
-//
-//=====================================================================
-[
- object,
- local,
- uuid(d0cfe38b-93e7-4772-8957-0400c49a4485),
- helpstring("IVMRMixerStreamConfig Interface"),
- pointer_default(unique)
-]
-interface IVMRVideoStreamControl9: IUnknown
-{
-
- HRESULT SetStreamActiveState(
- [in] BOOL fActive
- );
-
- HRESULT GetStreamActiveState(
- [out] BOOL* lpfActive
- );
-};
-
-
-typedef enum {
- VMR9Mode_Windowed = 0x00000001,
- VMR9Mode_Windowless = 0x00000002,
- VMR9Mode_Renderless = 0x00000004,
-
- // not a valid value to pass to SetRenderMode
- VMR9Mode_Mask = 0x00000007, // OR of all above flags
-} VMR9Mode;
-
-[
- object,
- local,
- uuid(5a804648-4f66-4867-9c43-4f5c822cf1b8),
- helpstring("IVMRFilterConfig9 Interface"),
- pointer_default(unique)
-]
-interface IVMRFilterConfig9 : IUnknown
-{
- HRESULT SetImageCompositor(
- [in] IVMRImageCompositor9* lpVMRImgCompositor
- );
-
- HRESULT SetNumberOfStreams(
- [in] DWORD dwMaxStreams
- );
-
- HRESULT GetNumberOfStreams(
- [out] DWORD* pdwMaxStreams
- );
-
- HRESULT SetRenderingPrefs(
- [in] DWORD dwRenderFlags // a combination of VMR9RenderPrefs
- );
-
- HRESULT GetRenderingPrefs(
- [out] DWORD* pdwRenderFlags
- );
-
- HRESULT SetRenderingMode(
- [in] DWORD Mode // a combination of VMRMode
- );
-
- HRESULT GetRenderingMode(
- [out] DWORD* pMode
- );
-}
-
-//=====================================================================
-//
-// IVMRAspectRatioControl9
-//
-//=====================================================================
-[
- object,
- local,
- uuid(00d96c29-bbde-4efc-9901-bb5036392146),
- helpstring("IVMRAspectRatioControl9 Interface"),
- pointer_default(unique)
-]
-interface IVMRAspectRatioControl9 : IUnknown
-{
- HRESULT GetAspectRatioMode(
- [out] LPDWORD lpdwARMode
- );
-
- HRESULT SetAspectRatioMode(
- [in] DWORD dwARMode
- );
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// VMR Multimon configuration interface
-//
-///////////////////////////////////////////////////////////////////////////////
-#define VMR9DEVICENAMELEN 32
-#define VMR9DEVICEDESCRIPTIONLEN 512
-
-typedef struct _VMR9MonitorInfo {
- UINT uDevID;
- RECT rcMonitor;
- HMONITOR hMon;
- DWORD dwFlags; // described in MONITORINFOEX, currently only MONITORINFOF_PRIMARY
- wchar_t szDevice[VMR9DEVICENAMELEN];
- wchar_t szDescription[VMR9DEVICEDESCRIPTIONLEN];
- LARGE_INTEGER liDriverVersion;
- DWORD dwVendorId;
- DWORD dwDeviceId;
- DWORD dwSubSysId;
- DWORD dwRevision;
- //
-} VMR9MonitorInfo;
-
-[
- object,
- local,
- uuid(46c2e457-8ba0-4eef-b80b-0680f0978749),
- helpstring("IVMRMonitorConfig9 Interface"),
- pointer_default(unique)
-]
-interface IVMRMonitorConfig9 : IUnknown
-{
- // Use this method on a Multi-Monitor system to specify to the
- // mixer filter which Direct Draw driver should be used when connecting
- // to an upstream decoder filter.
- //
- HRESULT SetMonitor(
- [in] UINT uDev
- );
-
- // Use this method to determine the direct draw object that will be used when
- // connecting the mixer filter to an upstream decoder filter.
- //
- HRESULT GetMonitor(
- [out] UINT *puDev
- );
-
- // Use this method on a multi-monitor system to specify to the
- // mixer filter the default Direct Draw device to use when
- // connecting to an upstream filter. The default direct draw device
- // can be overriden for a particular connection by SetMonitor method
- // described above.
- //
- HRESULT SetDefaultMonitor(
- [in] UINT uDev
- );
-
- // Use this method on a multi-monitor system to determine which
- // is the default direct draw device the overlay mixer filter
- // will use when connecting to an upstream filter.
- //
- HRESULT GetDefaultMonitor(
- [out] UINT* puDev
- );
-
- // Use this method to get a list of Direct Draw device GUIDs and thier
- // associated monitor information that the mixer can use when
- // connecting to an upstream decoder filter. Passing down a NULL pInfo
- // parameter allows the app to determine the required array size (returned
- // in pdwNumDevices). Otherwise, dwNumDevices returns the actual
- // number of devices retrieved.
- //
- HRESULT GetAvailableMonitors(
- [out, size_is(dwMaxInfoArraySize)] VMR9MonitorInfo* pInfo,
- [in] DWORD dwMaxInfoArraySize, // in array members
- [out] DWORD* pdwNumDevices // actual number of devices retrieved
- );
-};
-
-
-//=====================================================================
-//
-// IVMRDeinterlaceControl
-//
-// New interfaced introduced into the WindowsXP SP1 release of the VMR.
-// This interface allows applications to control the DX-VA deinterlacing
-// support provided by the VMR.
-//
-// The VMR needs to be set into "mixing" mode for this interface to work.
-//
-// SetDeinterlaceMode is only effective for new connections made to the
-// VMR. It should be noted that the graphics device driver may refuse
-// to use the specified deinterlace mode, in which case 3 fallback
-// policies are offered by the VMR, these being:
-//
-// 1. Fallback to the next best mode offered by the driver.
-// 2. Fallback to the BOB deinterlace mode.
-// 3. Fallback to the WEAVE deinterlace mode (ie. turn deinterlacing off).
-//
-//=====================================================================
-
-typedef enum {
- DeinterlacePref9_NextBest = 0x01,
- DeinterlacePref9_BOB = 0x02,
- DeinterlacePref9_Weave = 0x04,
- DeinterlacePref9_Mask = 0x07
-} VMR9DeinterlacePrefs;
-
-typedef enum {
-
- // the algorithm is unknown or proprietary
- DeinterlaceTech9_Unknown = 0x0000,
-
- // the algorithm creates the missing lines by repeating
- // the line either above or below it - this method will look very jaggy and
- // isn't recommended
- DeinterlaceTech9_BOBLineReplicate = 0x0001,
-
-
- // the algorithm creates the missing lines by vertically stretching each
- // video field by a factor of two, for example by averaging two lines or
- // using a [-1, 9, 9, -1]/16 filter across four lines.
- // Slight vertical adjustments are made to ensure that the resulting image
- // does not "bob" up and down.
- DeinterlaceTech9_BOBVerticalStretch = 0x0002,
-
- // the pixels in the missing line are recreated by a median filtering operation
- DeinterlaceTech9_MedianFiltering = 0x0004,
-
- // the pixels in the missing line are recreated by an edge filter.
- // In this process, spatial directional filters are applied to determine
- // the orientation of edges in the picture content, and missing
- // pixels are created by filtering along (rather than across) the
- // detected edges.
- DeinterlaceTech9_EdgeFiltering = 0x0010,
-
- // the pixels in the missing line are recreated by switching on a field by
- // field basis between using either spatial or temporal interpolation
- // depending on the amount of motion.
- DeinterlaceTech9_FieldAdaptive = 0x0020,
-
- // the pixels in the missing line are recreated by switching on a pixel by pixel
- // basis between using either spatial or temporal interpolation depending on
- // the amount of motion..
- DeinterlaceTech9_PixelAdaptive = 0x0040,
-
- // Motion Vector Steering identifies objects within a sequence of video
- // fields. The missing pixels are recreated after first aligning the
- // movement axes of the individual objects in the scene to make them
- // parallel with the time axis.
- DeinterlaceTech9_MotionVectorSteered = 0x0080
-
-} VMR9DeinterlaceTech;
-
-typedef struct _VMR9Frequency {
- DWORD dwNumerator;
- DWORD dwDenominator;
-} VMR9Frequency;
-
-typedef enum _VMR9_SampleFormat {
- VMR9_SampleReserved = 1,
- VMR9_SampleProgressiveFrame = 2,
- VMR9_SampleFieldInterleavedEvenFirst = 3,
- VMR9_SampleFieldInterleavedOddFirst = 4,
- VMR9_SampleFieldSingleEven = 5,
- VMR9_SampleFieldSingleOdd = 6,
-} VMR9_SampleFormat;
-
-typedef struct _VMR9VideoDesc {
- DWORD dwSize;
- DWORD dwSampleWidth;
- DWORD dwSampleHeight;
- VMR9_SampleFormat SampleFormat;
- DWORD dwFourCC;
- VMR9Frequency InputSampleFreq;
- VMR9Frequency OutputFrameFreq;
-} VMR9VideoDesc;
-
-
-typedef struct _VMR9DeinterlaceCaps {
- DWORD dwSize;
- DWORD dwNumPreviousOutputFrames;
- DWORD dwNumForwardRefSamples;
- DWORD dwNumBackwardRefSamples;
- VMR9DeinterlaceTech DeinterlaceTechnology;
-} VMR9DeinterlaceCaps;
-
-[
- object,
- local,
- uuid(a215fb8d-13c2-4f7f-993c-003d6271a459),
- helpstring("IVMRDeinterlaceControl9 Interface"),
- pointer_default(unique)
-]
-interface IVMRDeinterlaceControl9 : IUnknown
-{
- //
- // For the specified video description returns the
- // number of deinterlacing modes available to the VMR.
- // The deinterlacing modes are returned in descending
- // quality order ie. the best quality mode is at
- // lpdwNumDeinterlaceModes[0], the next best at
- // lpdwNumDeinterlaceModes[1] and so on.
- //
- // To determine how big an array of guids to pass to the
- // GetNumberOfDeinterlaceModes method call
- // GetNumberOfDeinterlaceModes(lpVideoDescription, &dwNumModes, NULL);
- //
- HRESULT GetNumberOfDeinterlaceModes(
- [in] VMR9VideoDesc* lpVideoDescription,
- [in] [out] LPDWORD lpdwNumDeinterlaceModes,
- [out] LPGUID lpDeinterlaceModes
- );
-
- //
- // For the given video description get the capabilities of the
- // specified de-interlace mode.
- //
- HRESULT GetDeinterlaceModeCaps(
- [in] LPGUID lpDeinterlaceMode,
- [in] VMR9VideoDesc* lpVideoDescription,
- [out] VMR9DeinterlaceCaps* lpDeinterlaceCaps
- );
-
- //
- // Get/Set the deinterlace mode that you would like the
- // VMR to use when de-interlacing the specified stream.
- // It should be noted that the VMR may not actually be able
- // to use the requested deinterlace mode, in which case the
- // the VMR will fall back to other de-interlace modes as specified
- // by the de-interlace preferences (see SetDeinterlacePrefs below).
- //
- HRESULT GetDeinterlaceMode(
- [in] DWORD dwStreamID,
- [out] LPGUID lpDeinterlaceMode // returns GUID_NULL if SetDeinterlaceMode
- ); // has not been called yet.
-
- HRESULT SetDeinterlaceMode(
- [in] DWORD dwStreamID, // use 0xFFFFFFFF to set mode for all streams
- [in] LPGUID lpDeinterlaceMode // GUID_NULL == turn deinterlacing off
- );
-
-
- HRESULT GetDeinterlacePrefs(
- [out] LPDWORD lpdwDeinterlacePrefs
- );
-
- HRESULT SetDeinterlacePrefs(
- [in] DWORD dwDeinterlacePrefs
- );
-
- //
- // Get the DeinterlaceMode currently in use for the specified
- // video stream (ie. pin). The returned GUID will be NULL if
- // the de-interlacing h/w has not been created by the VMR at the
- // time the function is called, or if the VMR determines that
- // this stream should not or can be de-interlaced.
- //
- HRESULT GetActualDeinterlaceMode(
- [in] DWORD dwStreamID,
- [out] LPGUID lpDeinterlaceMode
- );
-};
-
-
-//=====================================================================
-//
-// IVMRImageCompositor9
-//
-//=====================================================================
-
-typedef struct _VMR9VideoStreamInfo {
- IDirect3DSurface9* pddsVideoSurface;
- DWORD dwWidth, dwHeight;
- DWORD dwStrmID;
- FLOAT fAlpha;
- VMR9NormalizedRect rNormal;
- REFERENCE_TIME rtStart;
- REFERENCE_TIME rtEnd;
- VMR9_SampleFormat SampleFormat;
-} VMR9VideoStreamInfo;
-[
- local,
- object,
- local,
- uuid(4a5c89eb-df51-4654-ac2a-e48e02bbabf6),
- helpstring("IVMRImageCompositor9 Interface"),
- pointer_default(unique)
-]
-interface IVMRImageCompositor9 : IUnknown
-{
- HRESULT InitCompositionDevice(
- [in] IUnknown* pD3DDevice
- );
-
- HRESULT TermCompositionDevice(
- [in] IUnknown* pD3DDevice
- );
-
- HRESULT SetStreamMediaType(
- [in] DWORD dwStrmID,
- [in] AM_MEDIA_TYPE* pmt,
- [in] BOOL fTexture
- );
-
- HRESULT CompositeImage(
- [in] IUnknown* pD3DDevice,
- [in] IDirect3DSurface9* pddsRenderTarget,
- [in] AM_MEDIA_TYPE* pmtRenderTarget,
- [in] REFERENCE_TIME rtStart,
- [in] REFERENCE_TIME rtEnd,
- [in] D3DCOLOR dwClrBkGnd,
- [in] VMR9VideoStreamInfo* pVideoStreamInfo,
- [in] UINT cStreams
- );
-};