#ifndef _VMR9_H #define _VMR9_H #if __GNUC__ >= 3 #pragma GCC system_header #endif #ifdef __cplusplus extern "C" { #endif /*--- DirectShow Reference - DirectShow Enumerated Types */ 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 enum { VMR9AlphaBitmap_Disable = 0x00000001, VMR9AlphaBitmap_hDC = 0x00000002, VMR9AlphaBitmap_EntireDDS = 0x00000004, VMR9AlphaBitmap_SrcColorKey = 0x00000008, VMR9AlphaBitmap_SrcRect = 0x00000010, VMR9AlphaBitmap_FilterMode = 0x00000020 } VMR9AlphaBitmapFlags; typedef enum { VMR9ARMode_None, VMR9ARMode_LetterBox } VMR9AspectRatioMode; typedef enum { DeinterlacePref9_NextBest = 0x01, DeinterlacePref9_BOB = 0x02, DeinterlacePref9_Weave = 0x04, DeinterlacePref9_Mask = 0x07 } VMR9DeinterlacePrefs; typedef enum { DeinterlaceTech9_Unknown = 0x0000, DeinterlaceTech9_BOBLineReplicate = 0x0001, DeinterlaceTech9_BOBVerticalStretch = 0x0002, DeinterlaceTech9_MedianFiltering = 0x0004, DeinterlaceTech9_EdgeFiltering = 0x0010, DeinterlaceTech9_FieldAdaptive = 0x0020, DeinterlaceTech9_PixelAdaptive = 0x0040, DeinterlaceTech9_MotionVectorSteered = 0x0080 } VMR9DeinterlaceTech; typedef enum { MixerPref9_NoDecimation = 0x00000001, MixerPref9_DecimateOutput = 0x00000002, MixerPref9_ARAdjustXorY = 0x00000004, MixerPref9_NonSquareMixing = 0x00000008, MixerPref9_DecimateMask = 0x0000000F, MixerPref9_BiLinearFiltering = 0x00000010, MixerPref9_PointFiltering = 0x00000020, MixerPref9_AnisotropicFiltering = 0x00000040, MixerPref9_PyramidalQuadFiltering = 0x00000080, MixerPref9_GaussianQuadFiltering = 0x00000100, MixerPref9_FilteringReserved = 0x00000E00, MixerPref9_FilteringMask = 0x00000FF0, MixerPref9_RenderTargetRGB = 0x00001000, MixerPref9_RenderTargetYUV = 0x00002000, MixerPref9_RenderTargetReserved = 0x000FC000, MixerPref9_RenderTargetMask = 0x000FF000 MixerPref9_DynamicSwitchToBOB = 0x00100000, MixerPref9_DynamicDecimateBy2 = 0x00200000, MixerPref9_DynamicReserved = 0x00C00000, MixerPref9_DynamicMask = 0x00F00000 } VMR9MixerPrefs; typedef enum VMR9Mode { VMR9Mode_Windowed = 0x00000001, VMR9Mode_Windowless = 0x00000002, VMR9Mode_Renderless = 0x00000004, VMR9Mode_Mask = 0x00000007 }; typedef enum { VMR9Sample_SyncPoint = 0x00000001, VMR9Sample_Preroll = 0x00000002, VMR9Sample_Discontinuity = 0x00000004, VMR9Sample_TimeValid = 0x00000008 } VMR9PresentationFlags; typedef enum { ProcAmpControl9_Brightness = 0x00000001, ProcAmpControl9_Contrast = 0x00000002, ProcAmpControl9_Hue = 0x00000004, ProcAmpControl9_Saturation = 0x00000008, ProcAmpControl9_Mask = 0x0000000F } VMR9ProcAmpControlFlags; typedef enum VMR9RenderPrefs { RenderPrefs9_DoNotRenderBorder = 0x00000001, RenderPrefs9_Mask = 0x00000001 }; typedef enum { VMR9AllocFlag_3DRenderTarget = 0x0001, VMR9AllocFlag_DXVATarget = 0x0002, VMR9AllocFlag_TextureSurface = 0x0004, VMR9AllocFlag_OffscreenSurface = 0x0008, VMR9AllocFlag_UsageReserved = 0x00F0, VMR9AllocFlag_UsageMask = 0x00FF } VMR9SurfaceAllocationFlags; /*--- DirectShow Reference - DirectShow Structures */ /********** typedef struct VMR9AllocationInfo{ DWORD dwFlags; DWORD dwWidth; DWORD dwHeight; D3DFORMAT Format; D3DPOOL Pool; DWORD MinBuffers; SIZE szAspectRatio; SIZE szNativeSize; }; **********/ typedef struct _VMR9DeinterlaceCaps { DWORD dwSize; DWORD dwNumPreviousOutputFrames; DWORD dwNumForwardRefSamples; DWORD dwNumBackwardRefSamples; VMRDeinterlaceTech DeinterlaceTechnology; } VMR9DeinterlaceCaps; typedef struct _VMR9Frequency { DWORD dwNumerator; DWORD dwDenominator; } VMR9Frequency; typedef struct { UINT uDevID; RECT rcMonitor; HMONITOR hMon; DWORD dwFlags; wchar_t szDevice[32]; wchar_t szDescription[512] LARGE_INTEGER liDriverVersion; DWORD dwVendorId; DWORD dwDeviceId; DWORD dwSubSysId; DWORD dwRevision; } VMR9MonitorInfo; typedef struct VMR9NormalizedRect{ float left; float top; float right; float bottom; }; /********** typedef struct { DWORD dwFlags; IDirect3DSurface9 *lpSurf; REFERENCE_TIME rtStart; REFERENCE_TIME rtEnd; SIZE szAspectRatio; RECT rcSrc; RECT rcDst; DWORD dwReserved1; DWORD dwReserved2; } VMR9PresentationInfo; **********/ typedef struct _VMR9ProcAmpControl { DWORD dwSize; DWORD dwFlags; float Contrast; float Brightness; float Hue; float Saturation; } VMR9ProcAmpControl; typedef struct _VMR9ProcAmpControlRange { DWORD dwSize; VMR9ProcAmpControlFlags dwProperty; float MinValue; float MaxValue; float DefaultValue; float StepSize; } VMR9ProcAmpControlRange; typedef struct _VMR9VideoDesc { DWORD dwSize; DWORD dwSampleWidth; DWORD dwSampleHeight; VMR9_SampleFormat SampleFormat; DWORD dwFourCC; VMR9Frequency InputSampleFreq; VMR9Frequency OutputFrameFreq; } VMR9VideoDesc; /********** typedef struct VMR9VideoStreamInfo{ IDirect3DSurface9 *pddsVideoSurface; DWORD dwWidth; DWORD dwHeight; DWORD dwStrmID; FLOAT fAlpha; VMR9NormalizedRect rNormal; REFERENCE_TIME rtStart; REFERENCE_TIME rtEnd; VMR9_SampleFormat SampleFormat; }; typedef struct VMR9AlphaBitmap{ DWORD dwFlags; HDC hdc; IDirect3DSurface9 *pDDS; RECT rSrc; VMR9NormalizedRect rDest; FLOAT fAlpha; COLORREF clrSrcKey; DWORD dwFilterMode; }; **********/ #ifdef __cplusplus } #endif #endif