ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

vmrender.idl
Go to the documentation of this file.
00001 
00002 cpp_quote("#if 0")
00003 
00004     import "unknwn.idl";
00005 
00006     typedef DWORD* LPDIRECTDRAW7;
00007     typedef DWORD* LPDIRECTDRAWSURFACE7;
00008     typedef DWORD* LPDDPIXELFORMAT;
00009     typedef DWORD* LPBITMAPINFOHEADER;
00010     typedef struct {DWORD dw1; DWORD dw2;} DDCOLORKEY;
00011     typedef DDCOLORKEY*    LPDDCOLORKEY;
00012 cpp_quote ("#endif")
00013 
00014 cpp_quote("#include <ddraw.h>")
00015 
00016 cpp_quote("#define VMRBITMAP_DISABLE            0x00000001")
00017 cpp_quote("#define VMRBITMAP_HDC                0x00000002")
00018 cpp_quote("#define VMRBITMAP_ENTIREDDS          0x00000004")
00019 cpp_quote("#define VMRBITMAP_SRCCOLORKEY        0x00000008")
00020 cpp_quote("#define VMRBITMAP_SRCRECT            0x00000010")
00021 
00022 interface IVMRSurface;
00023 interface IVMRSurfaceAllocator;
00024 interface IVMRSurfaceAllocatorNotify;
00025 interface IVMRImagePresenter;
00026 interface IVMRImagePresenterConfig;
00027 interface IVMRWindowlessControl;
00028 interface IVMRMixerControl;
00029 interface IVMRMixerBitmap;
00030 interface IVMRFilterConfig;
00031 interface IVMRAspectRatioControl;
00032 interface IVMRDeinterlaceControl;
00033 interface IVMRMonitorConfig;
00034 interface IVMRImageCompositor;
00035 interface IVMRVideoStreamControl;
00036 
00037 #define VMRDEVICENAMELEN 32
00038 #define VMRDEVICEDESCRIPTIONLEN  256
00039 
00040 typedef enum
00041 {
00042     VMRSample_SyncPoint = 0x00000001,
00043     VMRSample_Preroll = 0x00000002,
00044     VMRSample_Discontinuity = 0x00000004,
00045     VMRSample_TimeValid = 0x00000008,
00046     VMRSample_SrcDstRectsValid= 0x00000010
00047 } VMRPresentationFlags;
00048 
00049 typedef enum
00050 {
00051     AMAP_PIXELFORMAT_VALID = 0x01,
00052     AMAP_3D_TARGET = 0x02,
00053     AMAP_ALLOW_SYSMEM = 0x04,
00054     AMAP_FORCE_SYSMEM = 0x08,
00055     AMAP_DIRECTED_FLIP = 0x10,
00056     AMAP_DXVA_TARGET = 0x20
00057 } VMRSurfaceAllocationFlags;
00058 
00059 typedef enum
00060 {
00061     VMR_ARMODE_NONE,
00062     VMR_ARMODE_LETTER_BOX
00063 } VMR_ASPECT_RATIO_MODE;
00064 
00065 
00066 typedef enum
00067 {
00068     MixerPref_NoDecimation = 0x00000001,
00069     MixerPref_DecimateOutput = 0x00000002,
00070     MixerPref_ARAdjustXorY = 0x00000004,
00071     MixerPref_DecimationReserved = 0x00000008,
00072     MixerPref_DecimateMask = 0x0000000F,
00073     MixerPref_BiLinearFiltering = 0x00000010,
00074     MixerPref_PointFiltering = 0x00000020,
00075     MixerPref_FilteringMask = 0x000000F0,
00076     MixerPref_RenderTargetRGB = 0x00000100,
00077     MixerPref_RenderTargetYUV = 0x00001000,
00078     MixerPref_RenderTargetYUV420 = 0x00000200,
00079     MixerPref_RenderTargetYUV422 = 0x00000400,
00080     MixerPref_RenderTargetYUV444 = 0x00000800,
00081     MixerPref_RenderTargetReserved = 0x0000E000,
00082     MixerPref_RenderTargetMask = 0x0000FF00,
00083     MixerPref_DynamicSwitchToBOB = 0x00010000,
00084     MixerPref_DynamicDecimateBy2 = 0x00020000,
00085     MixerPref_DynamicReserved = 0x000C0000,
00086     MixerPref_DynamicMask = 0x000F0000
00087 } VMRMixerPrefs;
00088 
00089 typedef enum
00090 {
00091     RenderPrefs_RestrictToInitialMonitor = 0x00000000,
00092     RenderPrefs_ForceOffscreen = 0x00000001,
00093     RenderPrefs_ForceOverlays = 0x00000002,
00094     RenderPrefs_AllowOverlays = 0x00000000,
00095     RenderPrefs_AllowOffscreen = 0x00000000,
00096     RenderPrefs_DoNotRenderColorKeyAndBorder = 0x00000008,
00097     RenderPrefs_Reserved = 0x00000010,
00098     RenderPrefs_PreferAGPMemWhenMixing = 0x00000020,
00099 
00100     RenderPrefs_Mask = 0x0000003f,
00101 } VMRRenderPrefs;
00102 
00103 typedef enum
00104 {
00105     VMRMode_Windowed = 0x00000001,
00106     VMRMode_Windowless = 0x00000002,
00107     VMRMode_Renderless = 0x00000004,
00108     VMRMode_Mask = 0x00000007,
00109 } VMRMode;
00110 
00111 enum
00112 {
00113     MAX_NUMBER_OF_STREAMS = 16
00114 };
00115 
00116 typedef enum
00117 {
00118     DeinterlacePref_NextBest = 0x01,
00119     DeinterlacePref_BOB = 0x02,
00120     DeinterlacePref_Weave = 0x04,
00121     DeinterlacePref_Mask = 0x07
00122 } VMRDeinterlacePrefs;
00123 
00124 typedef enum
00125 {
00126     DeinterlaceTech_Unknown = 0x0000,
00127     DeinterlaceTech_BOBLineReplicate = 0x0001,
00128     DeinterlaceTech_BOBVerticalStretch = 0x0002,
00129     DeinterlaceTech_MedianFiltering = 0x0004,
00130     DeinterlaceTech_EdgeFiltering = 0x0010,
00131     DeinterlaceTech_FieldAdaptive = 0x0020,
00132     DeinterlaceTech_PixelAdaptive = 0x0040,
00133     DeinterlaceTech_MotionVectorSteered = 0x0080
00134 } VMRDeinterlaceTech;
00135 
00136 typedef struct tagVMRPRESENTATIONINFO
00137 {
00138     DWORD dwFlags;
00139     LPDIRECTDRAWSURFACE7 lpSurf;
00140     REFERENCE_TIME rtStart;
00141     REFERENCE_TIME rtEnd;
00142     SIZE szAspectRatio;
00143     RECT rcSrc;
00144     RECT rcDst;
00145     DWORD dwTypeSpecificFlags;
00146     DWORD dwInterlaceFlags;
00147 } VMRPRESENTATIONINFO;
00148 
00149 typedef struct tagVMRALLOCATIONINFO
00150 {
00151     DWORD dwFlags;
00152     LPBITMAPINFOHEADER lpHdr;
00153     LPDDPIXELFORMAT lpPixFmt;
00154     SIZE szAspectRatio;
00155     DWORD dwMinBuffers;
00156     DWORD dwMaxBuffers;
00157     DWORD dwInterlaceFlags;
00158     SIZE szNativeSize;
00159 } VMRALLOCATIONINFO;
00160 
00161 typedef struct _NORMALIZEDRECT
00162 {
00163     float left;
00164     float top;
00165     float right;
00166     float bottom;
00167 } NORMALIZEDRECT, *PNORMALIZEDRECT;
00168 
00169 typedef struct tagVMRGUID
00170 {
00171     struct _GUID *pGUID, GUID;
00172 } VMRGUID;
00173 
00174 typedef struct tagVMRMONITORINFO
00175 {
00176     VMRGUID guid;
00177     RECT rcMonitor;
00178     HMONITOR hMon;
00179     DWORD dwFlags;
00180     wchar_t szDevice[VMRDEVICENAMELEN];
00181     wchar_t szDescription[VMRDEVICEDESCRIPTIONLEN];
00182     LARGE_INTEGER liDriverVersion;
00183     DWORD dwVendorId;
00184     DWORD dwDeviceId;
00185     DWORD dwSubSysId;
00186     DWORD dwRevision;
00187 } VMRMONITORINFO;
00188 
00189 typedef struct _VMRFrequency
00190 {
00191     DWORD dwNumerator;
00192     DWORD dwDenominator;
00193 } VMRFrequency;
00194 
00195 typedef struct _VMRVideoDesc
00196 {
00197     DWORD dwSize;
00198     DWORD dwSampleWidth;
00199     DWORD dwSampleHeight;
00200     BOOL SingleFieldPerSample;
00201     DWORD dwFourCC;
00202     VMRFrequency InputSampleFreq;
00203     VMRFrequency OutputFrameFreq;
00204 } VMRVideoDesc;
00205 
00206 typedef struct _VMRDeinterlaceCaps
00207 {
00208     DWORD dwSize;
00209     DWORD dwNumPreviousOutputFrames;
00210     DWORD dwNumForwardRefSamples;
00211     DWORD dwNumBackwardRefSamples;
00212     VMRDeinterlaceTech  DeinterlaceTechnology;
00213 } VMRDeinterlaceCaps;
00214 
00215 typedef struct _VMRALPHABITMAP
00216 {
00217     DWORD dwFlags;
00218     HDC hdc;
00219     LPDIRECTDRAWSURFACE7 pDDS;
00220     RECT rSrc;
00221     NORMALIZEDRECT rDest;
00222     FLOAT fAlpha;
00223     COLORREF clrSrcKey;
00224 } VMRALPHABITMAP, *PVMRALPHABITMAP;
00225 
00226 typedef struct _VMRVIDEOSTREAMINFO
00227 {
00228     LPDIRECTDRAWSURFACE7 pddsVideoSurface;
00229     DWORD dwWidth;
00230     DWORD dwHeight;
00231     FLOAT dwStrmID;
00232     FLOAT fAlpha;
00233     DDCOLORKEY ddClrKey;
00234     NORMALIZEDRECT rNormal;
00235 } VMRVIDEOSTREAMINFO;
00236 
00237 
00238 
00239 [
00240     local,
00241     object,
00242     uuid(CE704FE7-E71E-41fb-BAA2-C4403E1182F5),
00243     pointer_default(unique)
00244 ]
00245 interface IVMRImagePresenter : IUnknown
00246 {
00247     HRESULT StartPresenting([in] DWORD_PTR dwUserID);
00248     HRESULT StopPresenting([in] DWORD_PTR dwUserID);
00249     HRESULT PresentImage([in] DWORD_PTR dwUserID, [in] VMRPRESENTATIONINFO* lpPresInfo);
00250 };
00251 
00252 [
00253     local,
00254     object,
00255     uuid(31ce832e-4484-458b-8cca-f4d7e3db0b52),
00256     pointer_default(unique)
00257 ]
00258 interface IVMRSurfaceAllocator : IUnknown
00259 {
00260     HRESULT AllocateSurface([in] DWORD_PTR dwUserID, [in] VMRALLOCATIONINFO* lpAllocInfo, [in] [out] DWORD* lpdwActualBuffers, [out] LPDIRECTDRAWSURFACE7 *lplpSurface);
00261     HRESULT FreeSurface([in] DWORD_PTR dwID);
00262     HRESULT PrepareSurface([in] DWORD_PTR dwUserID, [in] LPDIRECTDRAWSURFACE7 lpSurface, [in] DWORD dwSurfaceFlags);
00263     HRESULT AdviseNotify([in] IVMRSurfaceAllocatorNotify* lpIVMRSurfAllocNotify);
00264 };
00265 
00266 [
00267     local,
00268     object,
00269     uuid(aada05a8-5a4e-4729-af0b-cea27aed51e2),
00270     pointer_default(unique)
00271 ]
00272 interface IVMRSurfaceAllocatorNotify : IUnknown
00273 {
00274     HRESULT AdviseSurfaceAllocator([in] DWORD_PTR dwUserID, [in] IVMRSurfaceAllocator* lpIVRMSurfaceAllocator);
00275     HRESULT SetDDrawDevice([in] LPDIRECTDRAW7 lpDDrawDevice, [in] HMONITOR hMonitor);
00276     HRESULT ChangeDDrawDevice([in] LPDIRECTDRAW7 lpDDrawDevice, [in] HMONITOR hMonitor);
00277     HRESULT RestoreDDrawSurfaces();
00278     HRESULT NotifyEvent([in] LONG EventCode, [in] LONG_PTR Param1, [in] LONG_PTR Param2);
00279     HRESULT SetBorderColor([in] COLORREF clrBorder);
00280 };
00281 
00282 [
00283     local,
00284     object,
00285     uuid(0eb1088c-4dcd-46f0-878f-39dae86a51b7),
00286     pointer_default(unique)
00287 ]
00288 interface IVMRWindowlessControl : IUnknown
00289 {
00290     HRESULT GetNativeVideoSize([out] LONG* lpWidth, [out] LONG* lpHeight, [out] LONG* lpARWidth, [out] LONG* lpARHeight);
00291     HRESULT GetMinIdealVideoSize([out] LONG* lpWidth, [out] LONG* lpHeight);
00292     HRESULT GetMaxIdealVideoSize([out] LONG* lpWidth, [out] LONG* lpHeight);
00293     HRESULT SetVideoPosition([in] const LPRECT lpSRCRect, [in] const LPRECT lpDSTRect);
00294     HRESULT GetVideoPosition([out] LPRECT lpSRCRect, [out] LPRECT lpDSTRect);
00295     HRESULT GetAspectRatioMode([out] DWORD* lpAspectRatioMode);
00296     HRESULT SetAspectRatioMode([in] DWORD AspectRatioMode);
00297     HRESULT SetVideoClippingWindow([in] HWND hwnd);
00298     HRESULT RepaintVideo([in] HWND hwnd, [in] HDC hdc);
00299     HRESULT DisplayModeChanged();
00300     HRESULT GetCurrentImage([out] BYTE** lpDib);
00301     HRESULT SetBorderColor([in] COLORREF Clr);
00302     HRESULT GetBorderColor([out] COLORREF* lpClr);
00303     HRESULT SetColorKey([in] COLORREF Clr);
00304     HRESULT GetColorKey([out] COLORREF* lpClr);
00305 };
00306 
00307 [
00308     local,
00309     object,
00310     uuid(1c1a17b0-bed0-415d-974b-dc6696131599),
00311     pointer_default(unique)
00312 ]
00313 interface IVMRMixerControl : IUnknown
00314 {
00315     HRESULT SetAlpha([in] DWORD dwStreamID, [in] float Alpha);
00316     HRESULT GetAlpha([in] DWORD dwStreamID, [out] float* pAlpha);
00317     HRESULT SetZOrder([in] DWORD dwStreamID, [in] DWORD dwZ);
00318     HRESULT GetZOrder([in] DWORD dwStreamID, [out] DWORD* pZ);
00319     HRESULT SetOutputRect([in] DWORD dwStreamID, [in] const NORMALIZEDRECT *pRect);
00320     HRESULT GetOutputRect([in] DWORD dwStreamID, [out] NORMALIZEDRECT *pRect);
00321     HRESULT SetBackgroundClr([in] COLORREF ClrBkg);
00322     HRESULT GetBackgroundClr([in] COLORREF* lpClrBkg);
00323     HRESULT SetMixingPrefs([in] DWORD dwMixerPrefs);
00324     HRESULT GetMixingPrefs([out] DWORD* pdwMixerPrefs);
00325 };
00326 
00327 [
00328     object,
00329     local,
00330     uuid(9cf0b1b6-fbaa-4b7f-88cf-cf1f130a0dce),
00331     pointer_default(unique)
00332 ]
00333 interface IVMRMonitorConfig : IUnknown
00334 {
00335     HRESULT SetMonitor([in] const VMRGUID *pGUID);
00336     HRESULT GetMonitor([out] VMRGUID *pGUID);
00337     HRESULT SetDefaultMonitor([in] const VMRGUID *pGUID);
00338     HRESULT GetDefaultMonitor([out] VMRGUID *pGUID);
00339     HRESULT GetAvailableMonitors([out, size_is(dwMaxInfoArraySize)] VMRMONITORINFO* pInfo, [in] DWORD dwMaxInfoArraySize, [out] DWORD* pdwNumDevices);
00340 };
00341 
00342 
00343 [
00344     object,
00345     local,
00346     uuid(9e5530c5-7034-48b4-bb46-0b8a6efc8e36),
00347     pointer_default(unique)
00348 ]
00349 interface IVMRFilterConfig : IUnknown
00350 {
00351     HRESULT SetImageCompositor([in] IVMRImageCompositor* lpVMRImgCompositor);
00352     HRESULT SetNumberOfStreams([in] DWORD dwMaxStreams);
00353     HRESULT GetNumberOfStreams([out] DWORD* pdwMaxStreams);
00354     HRESULT SetRenderingPrefs([in] DWORD dwRenderFlags);
00355     HRESULT GetRenderingPrefs([out] DWORD* pdwRenderFlags);
00356     HRESULT SetRenderingMode([in] DWORD Mode);
00357     HRESULT GetRenderingMode([out] DWORD* pMode);
00358 }
00359 
00360 
00361 [
00362     object,
00363     local,
00364     uuid(ede80b5c-bad6-4623-b537-65586c9f8dfd),
00365     pointer_default(unique)
00366 ]
00367 interface IVMRAspectRatioControl : IUnknown
00368 {
00369     HRESULT GetAspectRatioMode([out] LPDWORD lpdwARMode);
00370     HRESULT SetAspectRatioMode([in] DWORD dwARMode);
00371 }
00372 
00373 [
00374     object,
00375     local,
00376     uuid(bb057577-0db8-4e6a-87a7-1a8c9a505a0f),
00377     pointer_default(unique)
00378 ]
00379 interface IVMRDeinterlaceControl : IUnknown
00380 {
00381 
00382     HRESULT GetNumberOfDeinterlaceModes([in] VMRVideoDesc* lpVideoDescription, [in] [out] LPDWORD lpdwNumDeinterlaceModes, [out] LPGUID lpDeinterlaceModes);
00383     HRESULT GetDeinterlaceModeCaps([in] LPGUID lpDeinterlaceMode, [in] VMRVideoDesc* lpVideoDescription, [in] [out] VMRDeinterlaceCaps* lpDeinterlaceCaps);
00384     HRESULT GetDeinterlaceMode([in] DWORD dwStreamID, [out] LPGUID lpDeinterlaceMode );
00385     HRESULT SetDeinterlaceMode([in] DWORD dwStreamID, [in] LPGUID lpDeinterlaceMode);
00386     HRESULT GetDeinterlacePrefs([out] LPDWORD lpdwDeinterlacePrefs);
00387     HRESULT SetDeinterlacePrefs([in] DWORD dwDeinterlacePrefs);
00388     HRESULT GetActualDeinterlaceMode([in] DWORD dwStreamID, [out] LPGUID lpDeinterlaceMode);
00389 }
00390 
00391 [
00392     object,
00393     local,
00394     uuid(1E673275-0257-40aa-AF20-7C608D4A0428),
00395     pointer_default(unique)
00396 ]
00397 interface IVMRMixerBitmap : IUnknown
00398 {
00399     HRESULT SetAlphaBitmap([in] const VMRALPHABITMAP *pBmpParms);
00400     HRESULT UpdateAlphaBitmapParameters([in] PVMRALPHABITMAP pBmpParms);
00401     HRESULT GetAlphaBitmapParameters([out] PVMRALPHABITMAP pBmpParms);
00402 };
00403 
00404 [
00405     local,
00406     object,
00407     uuid(7a4fb5af-479f-4074-bb40-ce6722e43c82),
00408     pointer_default(unique)
00409 ]
00410 interface IVMRImageCompositor : IUnknown
00411 {
00412     HRESULT InitCompositionTarget([in] IUnknown* pD3DDevice, [in] LPDIRECTDRAWSURFACE7 pddsRenderTarget);
00413     HRESULT TermCompositionTarget([in] IUnknown* pD3DDevice, [in] LPDIRECTDRAWSURFACE7 pddsRenderTarget);
00414     HRESULT SetStreamMediaType([in] DWORD dwStrmID, [in] AM_MEDIA_TYPE* pmt, [in] BOOL fTexture);
00415     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);
00416 };
00417 
00418 [
00419     object,
00420     local,
00421     uuid(058d1f11-2a54-4bef-bd54-df706626b727),
00422     pointer_default(unique)
00423 ]
00424 interface IVMRVideoStreamControl: IUnknown
00425 {
00426     HRESULT SetColorKey([in] LPDDCOLORKEY lpClrKey);
00427     HRESULT GetColorKey([out] LPDDCOLORKEY lpClrKey);
00428     HRESULT SetStreamActiveState([in] BOOL fActive);
00429     HRESULT GetStreamActiveState([out] BOOL* lpfActive);
00430 };
00431 
00432 [
00433     local,
00434     object,
00435     uuid(a9849bbe-9ec8-4263-b764-62730f0d15d0),
00436     pointer_default(unique)
00437 ]
00438 interface IVMRSurface : IUnknown
00439 {
00440     HRESULT IsSurfaceLocked();
00441     HRESULT LockSurface([out] BYTE** lpSurface);
00442     HRESULT UnlockSurface();
00443     HRESULT GetSurface([out] LPDIRECTDRAWSURFACE7 *lplpSurface);
00444 };
00445 
00446 [
00447     local,
00448     object,
00449     uuid(9f3a1c85-8555-49ba-935f-be5b5b29d178),
00450     pointer_default(unique)
00451 ]
00452 
00453 interface IVMRImagePresenterConfig : IUnknown
00454 {
00455     HRESULT SetRenderingPrefs([in] DWORD dwRenderFlags);
00456     HRESULT GetRenderingPrefs([out] DWORD* dwRenderFlags);
00457 }
00458 
00459 [
00460     local,
00461     object,
00462     uuid(e6f7ce40-4673-44f1-8f77-5499d68cb4ea),
00463     pointer_default(unique)
00464 ]
00465 
00466 interface IVMRImagePresenterExclModeConfig : IVMRImagePresenterConfig
00467 {
00468     HRESULT SetXlcModeDDObjAndPrimarySurface([in] LPDIRECTDRAW7 lpDDObj, [in] LPDIRECTDRAWSURFACE7 lpPrimarySurf);
00469     HRESULT GetXlcModeDDObjAndPrimarySurface([out] LPDIRECTDRAW7* lpDDObj, [out] LPDIRECTDRAWSURFACE7* lpPrimarySurf);
00470 }
00471 
00472 [
00473     local,
00474     object,
00475     uuid(aac18c18-e186-46d2-825d-a1f8dc8e395a),
00476     pointer_default(unique)
00477 ]
00478 interface IVPManager : IUnknown
00479 {
00480     HRESULT SetVideoPortIndex([in] DWORD dwVideoPortIndex);
00481     HRESULT GetVideoPortIndex([out] DWORD* pdwVideoPortIndex);
00482 };
00483 

Generated on Wed May 23 2012 04:28:42 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.