3 * Copyright 2012, 2013 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 #pragma GCC system_header
33 /*--- DirectShow Reference - DirectShow Enumerated Types */
34 typedef enum _VMR9_SampleFormat {
35 VMR9_SampleReserved = 1,
36 VMR9_SampleProgressiveFrame = 2,
37 VMR9_SampleFieldInterleavedEvenFirst = 3,
38 VMR9_SampleFieldInterleavedOddFirst = 4,
39 VMR9_SampleFieldSingleEven = 5,
40 VMR9_SampleFieldSingleOdd = 6
43 VMR9AlphaBitmap_Disable = 0x00000001,
44 VMR9AlphaBitmap_hDC = 0x00000002,
45 VMR9AlphaBitmap_EntireDDS = 0x00000004,
46 VMR9AlphaBitmap_SrcColorKey = 0x00000008,
47 VMR9AlphaBitmap_SrcRect = 0x00000010,
48 VMR9AlphaBitmap_FilterMode = 0x00000020
49 } VMR9AlphaBitmapFlags;
53 } VMR9AspectRatioMode;
55 DeinterlacePref9_NextBest = 0x01,
56 DeinterlacePref9_BOB = 0x02,
57 DeinterlacePref9_Weave = 0x04,
58 DeinterlacePref9_Mask = 0x07
59 } VMR9DeinterlacePrefs;
61 DeinterlaceTech9_Unknown = 0x0000,
62 DeinterlaceTech9_BOBLineReplicate = 0x0001,
63 DeinterlaceTech9_BOBVerticalStretch = 0x0002,
64 DeinterlaceTech9_MedianFiltering = 0x0004,
65 DeinterlaceTech9_EdgeFiltering = 0x0010,
66 DeinterlaceTech9_FieldAdaptive = 0x0020,
67 DeinterlaceTech9_PixelAdaptive = 0x0040,
68 DeinterlaceTech9_MotionVectorSteered = 0x0080
69 } VMR9DeinterlaceTech;
71 MixerPref9_NoDecimation = 0x00000001,
72 MixerPref9_DecimateOutput = 0x00000002,
73 MixerPref9_ARAdjustXorY = 0x00000004,
74 MixerPref9_NonSquareMixing = 0x00000008,
75 MixerPref9_DecimateMask = 0x0000000F,
76 MixerPref9_BiLinearFiltering = 0x00000010,
77 MixerPref9_PointFiltering = 0x00000020,
78 MixerPref9_AnisotropicFiltering = 0x00000040,
79 MixerPref9_PyramidalQuadFiltering = 0x00000080,
80 MixerPref9_GaussianQuadFiltering = 0x00000100,
81 MixerPref9_FilteringReserved = 0x00000E00,
82 MixerPref9_FilteringMask = 0x00000FF0,
83 MixerPref9_RenderTargetRGB = 0x00001000,
84 MixerPref9_RenderTargetYUV = 0x00002000,
85 MixerPref9_RenderTargetReserved = 0x000FC000,
86 MixerPref9_RenderTargetMask = 0x000FF000
87 MixerPref9_DynamicSwitchToBOB = 0x00100000,
88 MixerPref9_DynamicDecimateBy2 = 0x00200000,
89 MixerPref9_DynamicReserved = 0x00C00000,
90 MixerPref9_DynamicMask = 0x00F00000
92 typedef enum VMR9Mode {
93 VMR9Mode_Windowed = 0x00000001,
94 VMR9Mode_Windowless = 0x00000002,
95 VMR9Mode_Renderless = 0x00000004,
96 VMR9Mode_Mask = 0x00000007
99 VMR9Sample_SyncPoint = 0x00000001,
100 VMR9Sample_Preroll = 0x00000002,
101 VMR9Sample_Discontinuity = 0x00000004,
102 VMR9Sample_TimeValid = 0x00000008
103 } VMR9PresentationFlags;
105 ProcAmpControl9_Brightness = 0x00000001,
106 ProcAmpControl9_Contrast = 0x00000002,
107 ProcAmpControl9_Hue = 0x00000004,
108 ProcAmpControl9_Saturation = 0x00000008,
109 ProcAmpControl9_Mask = 0x0000000F
110 } VMR9ProcAmpControlFlags;
111 typedef enum VMR9RenderPrefs {
112 RenderPrefs9_DoNotRenderBorder = 0x00000001,
113 RenderPrefs9_Mask = 0x00000001
116 VMR9AllocFlag_3DRenderTarget = 0x0001,
117 VMR9AllocFlag_DXVATarget = 0x0002,
118 VMR9AllocFlag_TextureSurface = 0x0004,
119 VMR9AllocFlag_OffscreenSurface = 0x0008,
120 VMR9AllocFlag_UsageReserved = 0x00F0,
121 VMR9AllocFlag_UsageMask = 0x00FF
122 } VMR9SurfaceAllocationFlags;
123 /*--- DirectShow Reference - DirectShow Structures */
125 typedef struct VMR9AllocationInfo{
136 typedef struct _VMR9DeinterlaceCaps {
138 DWORD dwNumPreviousOutputFrames;
139 DWORD dwNumForwardRefSamples;
140 DWORD dwNumBackwardRefSamples;
141 VMRDeinterlaceTech DeinterlaceTechnology;
142 } VMR9DeinterlaceCaps;
143 typedef struct _VMR9Frequency {
152 wchar_t szDevice[32];
153 wchar_t szDescription[512]
154 LARGE_INTEGER liDriverVersion;
160 typedef struct VMR9NormalizedRect{
169 IDirect3DSurface9 *lpSurf;
170 REFERENCE_TIME rtStart;
171 REFERENCE_TIME rtEnd;
177 } VMR9PresentationInfo;
179 typedef struct _VMR9ProcAmpControl
187 } VMR9ProcAmpControl;
188 typedef struct _VMR9ProcAmpControlRange
191 VMR9ProcAmpControlFlags dwProperty;
196 } VMR9ProcAmpControlRange;
197 typedef struct _VMR9VideoDesc {
200 DWORD dwSampleHeight;
201 VMR9_SampleFormat SampleFormat;
203 VMR9Frequency InputSampleFreq;
204 VMR9Frequency OutputFrameFreq;
207 typedef struct VMR9VideoStreamInfo{
208 IDirect3DSurface9 *pddsVideoSurface;
213 VMR9NormalizedRect rNormal;
214 REFERENCE_TIME rtStart;
215 REFERENCE_TIME rtEnd;
216 VMR9_SampleFormat SampleFormat;
218 typedef struct VMR9AlphaBitmap{
221 IDirect3DSurface9 *pDDS;
223 VMR9NormalizedRect rDest;