Author: greatlrd Date: Sun May 27 17:27:51 2007 New Revision: 26922
URL: http://svn.reactos.org/svn/reactos?rev=26922&view=rev Log: adding Vmrender.idl compatible with ms dxsdk 2004 dec
Added: trunk/reactos/include/dxsdk/Vmrender.idl (with props) Modified: trunk/reactos/include/dxsdk/ (props changed) trunk/reactos/include/dxsdk/dxsdk.rbuild
Propchange: trunk/reactos/include/dxsdk/ ------------------------------------------------------------------------------ --- svn:ignore (original) +++ svn:ignore Sun May 27 17:27:51 2007 @@ -11,3 +11,4 @@ tvratings.h dyngraph.h dmodshow.h +Vmrender.h
Added: trunk/reactos/include/dxsdk/Vmrender.idl URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/dxsdk/Vmrender.idl?... ============================================================================== --- trunk/reactos/include/dxsdk/Vmrender.idl (added) +++ trunk/reactos/include/dxsdk/Vmrender.idl Sun May 27 17:27:51 2007 @@ -1,0 +1,498 @@ + +cpp_quote("#if 0") + + import "unknwn.idl"; + typedef int DWORD; + typedef int REFERENCE_TIME; + typedef int HMONITOR; + typedef int AM_MEDIA_TYPE; + + typedef DWORD* LPDIRECTDRAW7; + typedef DWORD* LPDIRECTDRAWSURFACE7; + typedef DWORD* LPDDPIXELFORMAT; + typedef DWORD* LPBITMAPINFOHEADER; + typedef struct {DWORD dw1; DWORD dw2;} DDCOLORKEY; + typedef DDCOLORKEY* LPDDCOLORKEY; +cpp_quote ("#endif") + +cpp_quote("#include <ddraw.h>") + +cpp_quote("#define VMRBITMAP_DISABLE 0x00000001") +cpp_quote("#define VMRBITMAP_HDC 0x00000002") +cpp_quote("#define VMRBITMAP_ENTIREDDS 0x00000004") +cpp_quote("#define VMRBITMAP_SRCCOLORKEY 0x00000008") +cpp_quote("#define VMRBITMAP_SRCRECT 0x00000010") + +interface IVMRSurface; +interface IVMRSurfaceAllocator; +interface IVMRSurfaceAllocatorNotify; +interface IVMRImagePresenter; +interface IVMRImagePresenterConfig; +interface IVMRWindowlessControl; +interface IVMRMixerControl; +interface IVMRMixerBitmap; +interface IVMRFilterConfig; +interface IVMRAspectRatioControl; +interface IVMRDeinterlaceControl; +interface IVMRMonitorConfig; +interface IVMRImageCompositor; +interface IVMRVideoStreamControl; + +#define VMRDEVICENAMELEN 32 +#define VMRDEVICEDESCRIPTIONLEN 256 + +typedef enum +{ + VMRSample_SyncPoint = 0x00000001, + VMRSample_Preroll = 0x00000002, + VMRSample_Discontinuity = 0x00000004, + VMRSample_TimeValid = 0x00000008, + VMRSample_SrcDstRectsValid= 0x00000010 +} VMRPresentationFlags; + +typedef enum +{ + AMAP_PIXELFORMAT_VALID = 0x01, + AMAP_3D_TARGET = 0x02, + AMAP_ALLOW_SYSMEM = 0x04, + AMAP_FORCE_SYSMEM = 0x08, + AMAP_DIRECTED_FLIP = 0x10, + AMAP_DXVA_TARGET = 0x20 +} VMRSurfaceAllocationFlags; + +typedef enum +{ + VMR_ARMODE_NONE, + VMR_ARMODE_LETTER_BOX +} VMR_ASPECT_RATIO_MODE; + + +typedef enum +{ + MixerPref_NoDecimation = 0x00000001, + MixerPref_DecimateOutput = 0x00000002, + MixerPref_ARAdjustXorY = 0x00000004, + MixerPref_DecimationReserved = 0x00000008, + MixerPref_DecimateMask = 0x0000000F, + MixerPref_BiLinearFiltering = 0x00000010, + MixerPref_PointFiltering = 0x00000020, + MixerPref_FilteringMask = 0x000000F0, + MixerPref_RenderTargetRGB = 0x00000100, + MixerPref_RenderTargetYUV = 0x00001000, + MixerPref_RenderTargetYUV420 = 0x00000200, + MixerPref_RenderTargetYUV422 = 0x00000400, + MixerPref_RenderTargetYUV444 = 0x00000800, + MixerPref_RenderTargetReserved = 0x0000E000, + MixerPref_RenderTargetMask = 0x0000FF00, + MixerPref_DynamicSwitchToBOB = 0x00010000, + MixerPref_DynamicDecimateBy2 = 0x00020000, + MixerPref_DynamicReserved = 0x000C0000, + MixerPref_DynamicMask = 0x000F0000 +} VMRMixerPrefs; + +typedef enum +{ + RenderPrefs_RestrictToInitialMonitor = 0x00000000, + RenderPrefs_ForceOffscreen = 0x00000001, + RenderPrefs_ForceOverlays = 0x00000002, + RenderPrefs_AllowOverlays = 0x00000000, + RenderPrefs_AllowOffscreen = 0x00000000, + RenderPrefs_DoNotRenderColorKeyAndBorder = 0x00000008, + RenderPrefs_Reserved = 0x00000010, + RenderPrefs_PreferAGPMemWhenMixing = 0x00000020, + + RenderPrefs_Mask = 0x0000003f, +} VMRRenderPrefs; + +typedef enum +{ + VMRMode_Windowed = 0x00000001, + VMRMode_Windowless = 0x00000002, + VMRMode_Renderless = 0x00000004, + VMRMode_Mask = 0x00000007, +} VMRMode; + +enum +{ + MAX_NUMBER_OF_STREAMS = 16 +}; + +typedef enum +{ + DeinterlacePref_NextBest = 0x01, + DeinterlacePref_BOB = 0x02, + DeinterlacePref_Weave = 0x04, + DeinterlacePref_Mask = 0x07 +} VMRDeinterlacePrefs; + +typedef enum +{ + DeinterlaceTech_Unknown = 0x0000, + DeinterlaceTech_BOBLineReplicate = 0x0001, + DeinterlaceTech_BOBVerticalStretch = 0x0002, + DeinterlaceTech_MedianFiltering = 0x0004, + DeinterlaceTech_EdgeFiltering = 0x0010, + DeinterlaceTech_FieldAdaptive = 0x0020, + DeinterlaceTech_PixelAdaptive = 0x0040, + DeinterlaceTech_MotionVectorSteered = 0x0080 +} VMRDeinterlaceTech; + +typedef struct tagVMRPRESENTATIONINFO +{ + DWORD dwFlags; + LPDIRECTDRAWSURFACE7 lpSurf; + REFERENCE_TIME rtStart; + REFERENCE_TIME rtEnd; + SIZE szAspectRatio; + RECT rcSrc; + RECT rcDst; + DWORD dwTypeSpecificFlags; + DWORD dwInterlaceFlags; +} VMRPRESENTATIONINFO; + +typedef struct tagVMRALLOCATIONINFO +{ + DWORD dwFlags; + LPBITMAPINFOHEADER lpHdr; + LPDDPIXELFORMAT lpPixFmt; + SIZE szAspectRatio; + DWORD dwMinBuffers; + DWORD dwMaxBuffers; + DWORD dwInterlaceFlags; + SIZE szNativeSize; +} VMRALLOCATIONINFO; + +typedef struct _NORMALIZEDRECT +{ + float left; + float top; + float right; + float bottom; +} NORMALIZEDRECT, *PNORMALIZEDRECT; + +typedef struct tagVMRGUID +{ + GUID* pGUID; + GUID GUID; +} VMRGUID; + +typedef struct tagVMRMONITORINFO +{ + VMRGUID guid; + RECT rcMonitor; + HMONITOR hMon; + DWORD dwFlags; + wchar_t szDevice[VMRDEVICENAMELEN]; + wchar_t szDescription[VMRDEVICEDESCRIPTIONLEN]; + LARGE_INTEGER liDriverVersion; + DWORD dwVendorId; + DWORD dwDeviceId; + DWORD dwSubSysId; + DWORD dwRevision; +} VMRMONITORINFO; + +typedef struct _VMRFrequency +{ + DWORD dwNumerator; + DWORD dwDenominator; +} VMRFrequency; + +typedef struct _VMRVideoDesc +{ + DWORD dwSize; + DWORD dwSampleWidth; + DWORD dwSampleHeight; + BOOL SingleFieldPerSample; + DWORD dwFourCC; + VMRFrequency InputSampleFreq; + VMRFrequency OutputFrameFreq; +} VMRVideoDesc; + +typedef struct _VMRDeinterlaceCaps +{ + DWORD dwSize; + DWORD dwNumPreviousOutputFrames; + DWORD dwNumForwardRefSamples; + DWORD dwNumBackwardRefSamples; + VMRDeinterlaceTech DeinterlaceTechnology; +} VMRDeinterlaceCaps; + +typedef struct _VMRALPHABITMAP +{ + DWORD dwFlags; + HDC hdc; + LPDIRECTDRAWSURFACE7 pDDS; + RECT rSrc; + NORMALIZEDRECT rDest; + FLOAT fAlpha; + COLORREF clrSrcKey; +} VMRALPHABITMAP, *PVMRALPHABITMAP; + +typedef struct _VMRVIDEOSTREAMINFO +{ + LPDIRECTDRAWSURFACE7 pddsVideoSurface; + DWORD dwWidth; + DWORD dwHeight; + FLOAT dwStrmID; + FLOAT fAlpha; + DDCOLORKEY ddClrKey; + NORMALIZEDRECT rNormal; +} VMRVIDEOSTREAMINFO; + + + +[ + local, + object, + local, + uuid(CE704FE7-E71E-41fb-BAA2-C4403E1182F5), + pointer_default(unique) +] +interface IVMRImagePresenter : IUnknown +{ + HRESULT StartPresenting([in] DWORD_PTR dwUserID); + HRESULT StopPresenting([in] DWORD_PTR dwUserID); + HRESULT PresentImage([in] DWORD_PTR dwUserID, [in] VMRPRESENTATIONINFO* lpPresInfo); +}; + +[ + local, + object, + local, + uuid(31ce832e-4484-458b-8cca-f4d7e3db0b52), + pointer_default(unique) +] +interface IVMRSurfaceAllocator : IUnknown +{ + HRESULT AllocateSurface([in] DWORD_PTR dwUserID, [in] VMRALLOCATIONINFO* lpAllocInfo, [in] [out] DWORD* lpdwActualBuffers, [out] LPDIRECTDRAWSURFACE7 *lplpSurface); + HRESULT FreeSurface([in] DWORD_PTR dwID); + HRESULT PrepareSurface([in] DWORD_PTR dwUserID, [in] LPDIRECTDRAWSURFACE7 lpSurface, [in] DWORD dwSurfaceFlags); + HRESULT AdviseNotify([in] IVMRSurfaceAllocatorNotify* lpIVMRSurfAllocNotify); +}; + +[ + local, + object, + local, + uuid(aada05a8-5a4e-4729-af0b-cea27aed51e2), + pointer_default(unique) +] +interface IVMRSurfaceAllocatorNotify : IUnknown +{ + HRESULT AdviseSurfaceAllocator([in] DWORD_PTR dwUserID, [in] IVMRSurfaceAllocator* lpIVRMSurfaceAllocator); + HRESULT SetDDrawDevice([in] LPDIRECTDRAW7 lpDDrawDevice, [in] HMONITOR hMonitor); + HRESULT ChangeDDrawDevice([in] LPDIRECTDRAW7 lpDDrawDevice, [in] HMONITOR hMonitor); + HRESULT RestoreDDrawSurfaces(); + HRESULT NotifyEvent([in] LONG EventCode, [in] LONG_PTR Param1, [in] LONG_PTR Param2); + HRESULT SetBorderColor([in] COLORREF clrBorder); +}; + +[ + local, + object, + local, + uuid(0eb1088c-4dcd-46f0-878f-39dae86a51b7), + pointer_default(unique) +] +interface IVMRWindowlessControl : IUnknown +{ + 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); + HRESULT SetVideoClippingWindow([in] HWND hwnd); + HRESULT RepaintVideo([in] HWND hwnd, [in] HDC hdc); + HRESULT DisplayModeChanged(); + HRESULT GetCurrentImage([out] BYTE** lpDib); + HRESULT SetBorderColor([in] COLORREF Clr); + HRESULT GetBorderColor([out] COLORREF* lpClr); + HRESULT SetColorKey([in] COLORREF Clr); + HRESULT GetColorKey([out] COLORREF* lpClr); +}; + +[ + local, + object, + local, + uuid(1c1a17b0-bed0-415d-974b-dc6696131599), + pointer_default(unique) +] +interface IVMRMixerControl : IUnknown +{ + HRESULT SetAlpha([in] DWORD dwStreamID, [in] float Alpha); + 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 NORMALIZEDRECT *pRect); + HRESULT GetOutputRect([in] DWORD dwStreamID, [out] NORMALIZEDRECT *pRect); + HRESULT SetBackgroundClr([in] COLORREF ClrBkg); + HRESULT GetBackgroundClr([in] COLORREF* lpClrBkg); + HRESULT SetMixingPrefs([in] DWORD dwMixerPrefs); + HRESULT GetMixingPrefs([out] DWORD* pdwMixerPrefs); +}; + +[ + object, + local, + uuid(9cf0b1b6-fbaa-4b7f-88cf-cf1f130a0dce), + pointer_default(unique) +] +interface IVMRMonitorConfig : IUnknown +{ + HRESULT SetMonitor([in] const VMRGUID *pGUID); + HRESULT GetMonitor([out] VMRGUID *pGUID); + HRESULT SetDefaultMonitor([in] const VMRGUID *pGUID); + HRESULT GetDefaultMonitor([out] VMRGUID *pGUID); + HRESULT GetAvailableMonitors([out, size_is(dwMaxInfoArraySize)] VMRMONITORINFO* pInfo, [in] DWORD dwMaxInfoArraySize, [out] DWORD* pdwNumDevices); +}; + + +[ + object, + local, + uuid(9e5530c5-7034-48b4-bb46-0b8a6efc8e36), + pointer_default(unique) +] +interface IVMRFilterConfig : IUnknown +{ + HRESULT SetImageCompositor([in] IVMRImageCompositor* lpVMRImgCompositor); + HRESULT SetNumberOfStreams([in] DWORD dwMaxStreams); + HRESULT GetNumberOfStreams([out] DWORD* pdwMaxStreams); + HRESULT SetRenderingPrefs([in] DWORD dwRenderFlags); + HRESULT GetRenderingPrefs([out] DWORD* pdwRenderFlags); + HRESULT SetRenderingMode([in] DWORD Mode); + HRESULT GetRenderingMode([out] DWORD* pMode); +} + + +[ + object, + local, + uuid(ede80b5c-bad6-4623-b537-65586c9f8dfd), + pointer_default(unique) +] +interface IVMRAspectRatioControl : IUnknown +{ + HRESULT GetAspectRatioMode([out] LPDWORD lpdwARMode); + HRESULT SetAspectRatioMode([in] DWORD dwARMode); +} + +[ + object, + local, + uuid(bb057577-0db8-4e6a-87a7-1a8c9a505a0f), + pointer_default(unique) +] +interface IVMRDeinterlaceControl : IUnknown +{ + + HRESULT GetNumberOfDeinterlaceModes([in] VMRVideoDesc* lpVideoDescription, [in] [out] LPDWORD lpdwNumDeinterlaceModes, [out] LPGUID lpDeinterlaceModes); + HRESULT GetDeinterlaceModeCaps([in] LPGUID lpDeinterlaceMode, [in] VMRVideoDesc* lpVideoDescription, [in] [out] VMRDeinterlaceCaps* lpDeinterlaceCaps); + HRESULT GetDeinterlaceMode([in] DWORD dwStreamID, [out] LPGUID lpDeinterlaceMode ); + HRESULT SetDeinterlaceMode([in] DWORD dwStreamID, [in] LPGUID lpDeinterlaceMode); + HRESULT GetDeinterlacePrefs([out] LPDWORD lpdwDeinterlacePrefs); + HRESULT SetDeinterlacePrefs([in] DWORD dwDeinterlacePrefs); + HRESULT GetActualDeinterlaceMode([in] DWORD dwStreamID, [out] LPGUID lpDeinterlaceMode); +} + +[ + object, + local, + uuid(1E673275-0257-40aa-AF20-7C608D4A0428), + pointer_default(unique) +] +interface IVMRMixerBitmap : IUnknown +{ + HRESULT SetAlphaBitmap([in] const VMRALPHABITMAP *pBmpParms); + HRESULT UpdateAlphaBitmapParameters([in] PVMRALPHABITMAP pBmpParms); + HRESULT GetAlphaBitmapParameters([out] PVMRALPHABITMAP pBmpParms); +}; + +[ + local, + object, + local, + uuid(7a4fb5af-479f-4074-bb40-ce6722e43c82), + pointer_default(unique) +] +interface IVMRImageCompositor : IUnknown +{ + HRESULT InitCompositionTarget([in] IUnknown* pD3DDevice, [in] LPDIRECTDRAWSURFACE7 pddsRenderTarget); + HRESULT TermCompositionTarget([in] IUnknown* pD3DDevice, [in] LPDIRECTDRAWSURFACE7 pddsRenderTarget); + HRESULT SetStreamMediaType([in] DWORD dwStrmID, [in] AM_MEDIA_TYPE* pmt, [in] BOOL fTexture); + HRESULT CompositeImage([in] IUnknown* pD3DDevice, [in] LPDIRECTDRAWSURFACE7 pddsRenderTarget, [in] AM_MEDIA_TYPE* pmtRenderTarget, [in] REFERENCE_TIME rtStart, [in] REFERENCE_TIME rtEnd, [in] DWORD dwClrBkGnd, [in] VMRVIDEOSTREAMINFO* pVideoStreamInfo, [in] UINT cStreams); +}; + +[ + object, + local, + uuid(058d1f11-2a54-4bef-bd54-df706626b727), + pointer_default(unique) +] +interface IVMRVideoStreamControl: IUnknown +{ + HRESULT SetColorKey([in] LPDDCOLORKEY lpClrKey); + HRESULT GetColorKey([out] LPDDCOLORKEY lpClrKey); + HRESULT SetStreamActiveState([in] BOOL fActive); + HRESULT GetStreamActiveState([out] BOOL* lpfActive); +}; + +[ + local, + object, + local, + uuid(a9849bbe-9ec8-4263-b764-62730f0d15d0), + pointer_default(unique) +] +interface IVMRSurface : IUnknown +{ + HRESULT IsSurfaceLocked(); + HRESULT LockSurface([out] BYTE** lpSurface); + HRESULT UnlockSurface(); + HRESULT GetSurface([out] LPDIRECTDRAWSURFACE7 *lplpSurface); +}; + +[ + local, + object, + local, + uuid(9f3a1c85-8555-49ba-935f-be5b5b29d178), + pointer_default(unique) +] + +interface IVMRImagePresenterConfig : IUnknown +{ + HRESULT SetRenderingPrefs([in] DWORD dwRenderFlags); + HRESULT GetRenderingPrefs([out] DWORD* dwRenderFlags); +} + +[ + local, + object, + local, + uuid(e6f7ce40-4673-44f1-8f77-5499d68cb4ea), + pointer_default(unique) +] + +interface IVMRImagePresenterExclModeConfig : IVMRImagePresenterConfig +{ + HRESULT SetXlcModeDDObjAndPrimarySurface([in] LPDIRECTDRAW7 lpDDObj, [in] LPDIRECTDRAWSURFACE7 lpPrimarySurf); + HRESULT GetXlcModeDDObjAndPrimarySurface([out] LPDIRECTDRAW7* lpDDObj, [out] LPDIRECTDRAWSURFACE7* lpPrimarySurf); +} + +[ + local, + object, + local, + uuid(aac18c18-e186-46d2-825d-a1f8dc8e395a), + pointer_default(unique) +] +interface IVPManager : IUnknown +{ + HRESULT SetVideoPortIndex([in] DWORD dwVideoPortIndex); + HRESULT GetVideoPortIndex([out] DWORD* pdwVideoPortIndex); +}; +
Propchange: trunk/reactos/include/dxsdk/Vmrender.idl ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/reactos/include/dxsdk/dxsdk.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/dxsdk/dxsdk.rbuild?... ============================================================================== --- trunk/reactos/include/dxsdk/dxsdk.rbuild (original) +++ trunk/reactos/include/dxsdk/dxsdk.rbuild Sun May 27 17:27:51 2007 @@ -12,4 +12,5 @@ <file>tvratings.idl</file> <file>vidcap.idl</file> <file>Videoacc.idl</file> + <file>Vmrender.idl</file> </module>