Mercurial > mplayer.hg
annotate stream/tvi_dshow.h @ 32272:fd4cd29b6121
Automatic downmix using the pan filter when the requested channel count is 2
and the codec does not support it natively.
Patch by Clment Bsch, ubitux gmail com
author | cigaes |
---|---|
date | Sun, 26 Sep 2010 08:45:40 +0000 |
parents | ce0122361a39 |
children |
rev | line source |
---|---|
30426
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
1 /* |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
2 * This file is part of MPlayer. |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
3 * |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
4 * MPlayer is free software; you can redistribute it and/or modify |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
7 * (at your option) any later version. |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
8 * |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
9 * MPlayer is distributed in the hope that it will be useful, |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
12 * GNU General Public License for more details. |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
13 * |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
14 * You should have received a copy of the GNU General Public License along |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
17 */ |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
30127
diff
changeset
|
18 |
26029 | 19 #ifndef MPLAYER_TVI_DSHOW_H |
20 #define MPLAYER_TVI_DSHOW_H | |
24744 | 21 |
22 /// \defgroup tvi_dshow TV driver (Directshow) | |
23 | |
24 #define INITGUID | |
25 #include <inttypes.h> | |
27846
87da3db93a44
vfw.h needs a windows.h include before on MinGW64.
reimar
parents:
26029
diff
changeset
|
26 #include <windows.h> |
24744 | 27 //#include <ole2.h> |
28 #include <vfw.h> | |
29 #include "loader/dshow/mediatype.h" | |
30 #include "loader/dshow/guids.h" | |
31 | |
32 #define wtoa(strW,strA,lenA) WideCharToMultiByte(0,0,strW,-1,strA,lenA,NULL,NULL) | |
33 #define atow(strA,strW,lenW) MultiByteToWideChar(0,0,strA,strlen(strA),strW,lenW) | |
34 | |
35 typedef struct DISPPARAMS *LPDISPPARAMS; | |
36 typedef struct IFileSinkFilter *LPFILESINKFILTER; | |
37 typedef struct IAMCopyCaptureFileProgress *LPAMCOPYCAPTUREFILEPROGRESS; | |
38 typedef struct IErrorLog *LPERRORLOG; | |
39 typedef struct IAMTunerNotification *LPAMTUNERNOTIFICATION; | |
40 typedef struct IFilterGraph *LPFILTERGRAPH; | |
41 typedef struct IBaseFilter *LPBASEFILTER; | |
42 typedef struct IPin *LPPIN; | |
43 typedef struct IEnumPins *LPENUMPINS; | |
44 typedef struct IEnumFilters *LPENUMFILTERS; | |
45 typedef struct IEnumMediaTypes *LPENUMMEDIATYPES; | |
46 typedef struct IReferenceClock *LPREFERENCECLOCK; | |
47 typedef struct IMediaSample *LPMEDIASAMPLE; | |
48 typedef struct IVideoWindow *LPVIDEOWINDOW; | |
49 | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27846
diff
changeset
|
50 typedef struct |
24744 | 51 { |
52 long cBuffers; | |
53 long cbBuffer; | |
54 long cbAlign; | |
55 long cbPrefix; | |
56 }ALLOCATOR_PROPERTIES; | |
57 | |
58 typedef | |
59 enum tagTunerInputType { TunerInputCable = 0, | |
60 TunerInputAntenna = TunerInputCable + 1 | |
61 } TunerInputType; | |
62 typedef enum tagAMTunerModeType { | |
63 AMTUNER_MODE_DEFAULT = 0x0000, | |
64 AMTUNER_MODE_TV = 0x0001, | |
65 AMTUNER_MODE_FM_RADIO = 0x0002, | |
66 AMTUNER_MODE_AM_RADIO = 0x0004, | |
67 AMTUNER_MODE_DSS = 0x0008 | |
68 } AMTunerModeType; | |
69 enum tagAMTunerSubChannel { AMTUNER_SUBCHAN_NO_TUNE = -2, | |
70 AMTUNER_SUBCHAN_DEFAULT = -1 | |
71 } AMTunerSubChannel; | |
72 typedef enum tagVideoProcAmpProperty { | |
73 VideoProcAmp_Brightness, | |
74 VideoProcAmp_Contrast, | |
75 VideoProcAmp_Hue, | |
76 VideoProcAmp_Saturation, | |
77 VideoProcAmp_Sharpness, | |
78 VideoProcAmp_Gamma, | |
79 VideoProcAmp_ColorEnable, | |
80 VideoProcAmp_WhiteBalance, | |
81 VideoProcAmp_BacklightCompensation, | |
82 VideoProcAmp_Gain | |
83 } VideoProcAmpProperty; | |
84 | |
85 typedef long OAFilterState; | |
86 typedef | |
87 enum tagAnalogVideoStandard { AnalogVideo_None = 0, | |
88 AnalogVideo_NTSC_M = 0x1, | |
89 AnalogVideo_NTSC_M_J = 0x2, | |
90 AnalogVideo_NTSC_433 = 0x4, | |
91 AnalogVideo_PAL_B = 0x10, | |
92 AnalogVideo_PAL_D = 0x20, | |
93 AnalogVideo_PAL_G = 0x40, | |
94 AnalogVideo_PAL_H = 0x80, | |
95 AnalogVideo_PAL_I = 0x100, | |
96 AnalogVideo_PAL_M = 0x200, | |
97 AnalogVideo_PAL_N = 0x400, | |
98 AnalogVideo_PAL_60 = 0x800, | |
99 AnalogVideo_SECAM_B = 0x1000, | |
100 AnalogVideo_SECAM_D = 0x2000, | |
101 AnalogVideo_SECAM_G = 0x4000, | |
102 AnalogVideo_SECAM_H = 0x8000, | |
103 AnalogVideo_SECAM_K = 0x10000, | |
104 AnalogVideo_SECAM_K1 = 0x20000, | |
105 AnalogVideo_SECAM_L = 0x40000, | |
106 AnalogVideo_SECAM_L1 = 0x80000 | |
107 } AnalogVideoStandard; | |
108 | |
109 | |
110 typedef LONG_PTR OAHWND; | |
111 typedef enum tagPhysicalConnectorType { PhysConn_Video_Tuner = 1, | |
112 PhysConn_Video_Composite = PhysConn_Video_Tuner + 1, | |
113 PhysConn_Video_SVideo = PhysConn_Video_Composite + 1, | |
114 PhysConn_Video_RGB = PhysConn_Video_SVideo + 1, | |
115 PhysConn_Video_YRYBY = PhysConn_Video_RGB + 1, | |
116 PhysConn_Video_SerialDigital = PhysConn_Video_YRYBY + 1, | |
117 PhysConn_Video_ParallelDigital = PhysConn_Video_SerialDigital + 1, | |
118 PhysConn_Video_SCSI = PhysConn_Video_ParallelDigital + 1, | |
119 PhysConn_Video_AUX = PhysConn_Video_SCSI + 1, | |
120 PhysConn_Video_1394 = PhysConn_Video_AUX + 1, | |
121 PhysConn_Video_USB = PhysConn_Video_1394 + 1, | |
122 PhysConn_Video_VideoDecoder = PhysConn_Video_USB + 1, | |
123 PhysConn_Video_VideoEncoder = PhysConn_Video_VideoDecoder + 1, | |
124 PhysConn_Video_SCART = PhysConn_Video_VideoEncoder + 1, | |
125 PhysConn_Video_Black = PhysConn_Video_SCART + 1, | |
126 PhysConn_Audio_Tuner = 0x1000, | |
127 PhysConn_Audio_Line = PhysConn_Audio_Tuner + 1, | |
128 PhysConn_Audio_Mic = PhysConn_Audio_Line + 1, | |
129 PhysConn_Audio_AESDigital = PhysConn_Audio_Mic + 1, | |
130 PhysConn_Audio_SPDIFDigital = PhysConn_Audio_AESDigital + 1, | |
131 PhysConn_Audio_SCSI = PhysConn_Audio_SPDIFDigital + 1, | |
132 PhysConn_Audio_AUX = PhysConn_Audio_SCSI + 1, | |
133 PhysConn_Audio_1394 = PhysConn_Audio_AUX + 1, | |
134 PhysConn_Audio_USB = PhysConn_Audio_1394 + 1, | |
135 PhysConn_Audio_AudioDecoder = PhysConn_Audio_USB + 1 | |
136 } PhysicalConnectorType; | |
137 | |
25607
9d0b189ce1b2
Fix illegal identifiers: Names starting with __ or _ and uppercase are reserved
diego
parents:
24744
diff
changeset
|
138 typedef struct VIDEO_STREAM_CONFIG_CAPS { |
24744 | 139 GUID guid; // will be MEDIATYPE_Video |
140 ULONG VideoStandard; // logical OR of all AnalogVideoStandards | |
141 // supported | |
142 SIZE InputSize; // the inherent size of the incoming signal | |
143 // (every pixel unique) | |
144 SIZE MinCroppingSize; // smallest rcSrc cropping rect allowed | |
145 SIZE MaxCroppingSize; // largest rcSrc cropping rect allowed | |
146 int CropGranularityX; // granularity of cropping size | |
147 int CropGranularityY; | |
148 int CropAlignX; // alignment of cropping rect | |
149 int CropAlignY; | |
150 SIZE MinOutputSize; // smallest bitmap stream can produce | |
151 SIZE MaxOutputSize; // largest bitmap stream can produce | |
152 int OutputGranularityX; // granularity of output bitmap size | |
153 int OutputGranularityY; | |
154 int StretchTapsX; // 0, no stretch, 1 pix dup, 2 interp, ... | |
155 int StretchTapsY; // Describes quality of hardware scaler | |
156 int ShrinkTapsX; // | |
157 int ShrinkTapsY; // | |
158 LONGLONG MinFrameInterval; // 100 nS units | |
159 LONGLONG MaxFrameInterval; | |
160 LONG MinBitsPerSecond; | |
161 LONG MaxBitsPerSecond; | |
162 } VIDEO_STREAM_CONFIG_CAPS, *PVIDEO_STREAM_CONFIG_CAPS; | |
163 | |
25607
9d0b189ce1b2
Fix illegal identifiers: Names starting with __ or _ and uppercase are reserved
diego
parents:
24744
diff
changeset
|
164 typedef struct AUDIO_STREAM_CONFIG_CAPS { |
24744 | 165 GUID guid; |
166 ULONG MinimumChannels; | |
167 ULONG MaximumChannels; | |
168 ULONG ChannelsGranularity; | |
169 ULONG MinimumBitsPerSample; | |
170 ULONG MaximumBitsPerSample; | |
171 ULONG BitsPerSampleGranularity; | |
172 ULONG MinimumSampleFrequency; | |
173 ULONG MaximumSampleFrequency; | |
174 ULONG SampleFrequencyGranularity; | |
175 } AUDIO_STREAM_CONFIG_CAPS; | |
176 | |
177 typedef enum tagVideoProcAmpFlags { | |
178 VideoProcAmp_Flags_Auto = 0x0001, | |
179 VideoProcAmp_Flags_Manual = 0x0002 | |
180 } VideoProcAmpFlags; | |
181 typedef enum { | |
182 PINDIR_INPUT = 0, | |
183 PINDIR_OUTPUT | |
184 } PIN_DIRECTION; | |
185 | |
186 #define KSPROPERTY_SUPPORT_GET 1 | |
187 #define KSPROPERTY_SUPPORT_SET 2 | |
188 typedef struct { | |
189 GUID Set; | |
190 ULONG Id; | |
191 ULONG Flags; | |
192 } KSIDENTIFIER; | |
193 | |
194 typedef KSIDENTIFIER KSPROPERTY; | |
195 | |
196 | |
197 typedef struct { | |
198 KSPROPERTY Property; | |
199 ULONG Mode; // IN: KSPROPERTY_TUNER_MODE | |
200 ULONG StandardsSupported; // KS_AnalogVideo_* (if TV or DSS) | |
201 ULONG MinFrequency; // Hz | |
202 ULONG MaxFrequency; // Hz | |
203 ULONG TuningGranularity; // Hz | |
204 ULONG NumberOfInputs; // count of inputs | |
205 ULONG SettlingTime; // milliSeconds | |
206 ULONG Strategy; // KS_TUNER_STRATEGY | |
207 } KSPROPERTY_TUNER_MODE_CAPS_S, *PKSPROPERTY_TUNER_MODE_CAPS_S; | |
208 | |
209 typedef struct { | |
210 KSPROPERTY Property; | |
211 ULONG Mode; // IN: KSPROPERTY_TUNER_MODE | |
212 } KSPROPERTY_TUNER_MODE_S, *PKSPROPERTY_TUNER_MODE_S; | |
213 | |
214 typedef struct { | |
215 KSPROPERTY Property; | |
216 ULONG Frequency; // Hz | |
217 ULONG LastFrequency; // Hz (last known good) | |
218 ULONG TuningFlags; // KS_TUNER_TUNING_FLAGS | |
219 ULONG VideoSubChannel; // DSS | |
220 ULONG AudioSubChannel; // DSS | |
221 ULONG Channel; // VBI decoders | |
222 ULONG Country; // VBI decoders | |
223 } KSPROPERTY_TUNER_FREQUENCY_S, *PKSPROPERTY_TUNER_FREQUENCY_S; | |
224 typedef struct { | |
225 KSPROPERTY Property; | |
226 ULONG CurrentFrequency; | |
227 ULONG PLLOffset; | |
228 ULONG SignalStrength; | |
229 ULONG Busy; | |
230 } KSPROPERTY_TUNER_STATUS_S, *PKSPROPERTY_TUNER_STATUS_S; | |
231 typedef enum { | |
232 KS_TUNER_TUNING_EXACT = 1, // No fine tuning | |
233 KS_TUNER_TUNING_FINE, // Fine grained search | |
234 KS_TUNER_TUNING_COARSE, // Coarse search | |
235 } KS_TUNER_TUNING_FLAGS; | |
236 | |
237 typedef enum { | |
238 KSPROPERTY_TUNER_CAPS, // R -overall device capabilities | |
239 KSPROPERTY_TUNER_MODE_CAPS, // R -capabilities in this mode | |
240 KSPROPERTY_TUNER_MODE, // RW -set a mode (TV, FM, AM, DSS) | |
241 KSPROPERTY_TUNER_STANDARD, // R -get TV standard (only if TV mode) | |
242 KSPROPERTY_TUNER_FREQUENCY, // RW -set/get frequency | |
243 KSPROPERTY_TUNER_INPUT, // RW -select an input | |
244 KSPROPERTY_TUNER_STATUS, // R -tuning status | |
245 KSPROPERTY_TUNER_IF_MEDIUM // R O-Medium for IF or Transport Pin | |
246 } KSPROPERTY_TUNER; | |
247 typedef enum { | |
248 KS_TUNER_STRATEGY_PLL = 0X01, // Tune by PLL offset | |
249 KS_TUNER_STRATEGY_SIGNAL_STRENGTH = 0X02, // Tune by signal strength | |
250 KS_TUNER_STRATEGY_DRIVER_TUNES = 0X04, // Driver does fine tuning | |
251 } KS_TUNER_STRATEGY; | |
252 typedef enum tagTVAudioMode { | |
253 AMTVAUDIO_MODE_MONO = 0x0001, | |
254 AMTVAUDIO_MODE_STEREO = 0x0002, | |
255 AMTVAUDIO_MODE_LANG_A = 0x0010, | |
256 AMTVAUDIO_MODE_LANG_B = 0x0020, | |
257 AMTVAUDIO_MODE_LANG_C = 0x0040, | |
258 } TVAudioMode; | |
259 | |
25607
9d0b189ce1b2
Fix illegal identifiers: Names starting with __ or _ and uppercase are reserved
diego
parents:
24744
diff
changeset
|
260 typedef struct FilterInfo { |
24744 | 261 WCHAR achName[128]; |
262 LPFILTERGRAPH pGraph; | |
263 } FILTER_INFO; | |
264 | |
25607
9d0b189ce1b2
Fix illegal identifiers: Names starting with __ or _ and uppercase are reserved
diego
parents:
24744
diff
changeset
|
265 typedef struct PinInfo { |
24744 | 266 LPBASEFILTER pFilter; |
267 PIN_DIRECTION dir; | |
268 unsigned short achName[128]; | |
269 } PIN_INFO; | |
270 //----------------------------------- | |
271 | |
272 | |
273 #undef INTERFACE | |
274 #define INTERFACE IPin | |
275 DECLARE_INTERFACE(IPin) | |
276 { | |
277 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
278 STDMETHOD_(long, AddRef) (THIS); | |
279 STDMETHOD_(long, Release) (THIS); | |
280 STDMETHOD(Connect) (THIS_ IPin *, AM_MEDIA_TYPE *); | |
281 STDMETHOD(ReceiveConnection) (THIS_ IPin *, const AM_MEDIA_TYPE *); | |
282 STDMETHOD(Disconnect) (THIS); | |
283 STDMETHOD(ConnectedTo) (THIS_ IPin **); | |
284 STDMETHOD(ConnectionMediaType) (THIS_ AM_MEDIA_TYPE * pmt); | |
285 STDMETHOD(QueryPinInfo) (THIS_ PIN_INFO *); | |
286 STDMETHOD(QueryDirection) (THIS_ PIN_DIRECTION *); | |
287 STDMETHOD(QueryId) (THIS_ unsigned short **); | |
288 STDMETHOD(QueryAccept) (THIS_ const AM_MEDIA_TYPE *); | |
289 STDMETHOD(EnumMediaTypes) (THIS_ LPENUMMEDIATYPES *); | |
290 STDMETHOD(QueryInternalConnections) (THIS_ IPin **, unsigned long *); | |
291 STDMETHOD(EndOfStream) (THIS); | |
292 STDMETHOD(BeginFlush) (THIS); | |
293 STDMETHOD(EndFlush) (THIS); | |
294 STDMETHOD(NewSegment) (THIS_ REFERENCE_TIME, REFERENCE_TIME, double); | |
295 }; | |
296 | |
297 #undef INTERFACE | |
298 #define INTERFACE IBaseFilter | |
299 DECLARE_INTERFACE(IBaseFilter) | |
300 { | |
301 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
302 STDMETHOD_(long, AddRef) (THIS); | |
303 STDMETHOD_(long, Release) (THIS); | |
304 STDMETHOD(GetClassID) (THIS_ CLSID * pClassID); | |
305 STDMETHOD(Stop) (THIS); | |
306 STDMETHOD(Pause) (THIS); | |
307 STDMETHOD(Run) (THIS_ REFERENCE_TIME tStart); | |
308 STDMETHOD(GetState) (THIS_ unsigned long, void *); | |
309 STDMETHOD(SetSyncSource) (THIS_ LPREFERENCECLOCK); | |
310 STDMETHOD(GetSyncSource) (THIS_ LPREFERENCECLOCK *); | |
311 STDMETHOD(EnumPins) (THIS_ LPENUMPINS *); | |
312 STDMETHOD(FindPin) (THIS_ const unsigned short *, LPPIN *); | |
313 STDMETHOD(QueryFilterInfo) (THIS_ void *); | |
314 STDMETHOD(JoinFilterGraph) (THIS_ LPFILTERGRAPH, | |
315 const unsigned short *); | |
316 STDMETHOD(QueryVendorInfo) (THIS_ unsigned short **); | |
317 }; | |
318 | |
319 #undef INTERFACE | |
320 #define INTERFACE IAMTVTuner | |
321 DECLARE_INTERFACE(IAMTVTuner) | |
322 { | |
323 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
324 STDMETHOD_(long, AddRef) (THIS); | |
325 STDMETHOD_(long, Release) (THIS); | |
326 STDMETHOD(put_Channel) (THIS_ long, long, long); | |
327 STDMETHOD(get_Channel) (THIS_ long *, long *, long *); | |
328 STDMETHOD(ChannelMinMax) (THIS_ long *, long *); | |
329 STDMETHOD(put_CountryCode) (THIS_ long); | |
330 STDMETHOD(get_CountryCode) (THIS_ long *); | |
331 STDMETHOD(put_TuningSpace) (THIS_ long); | |
332 STDMETHOD(get_TuningSpace) (THIS_ long *); | |
333 STDMETHOD(Logon) (THIS_ HANDLE); | |
334 STDMETHOD(Logout) (IAMTVTuner *); | |
335 STDMETHOD(SignalPresen) (THIS_ long *); | |
336 STDMETHOD(put_Mode) (THIS_ AMTunerModeType); | |
337 STDMETHOD(get_Mode) (THIS_ AMTunerModeType *); | |
338 STDMETHOD(GetAvailableModes) (THIS_ long *); | |
339 STDMETHOD(RegisterNotificationCallBack) (THIS_ LPAMTUNERNOTIFICATION, | |
340 long); | |
341 STDMETHOD(UnRegisterNotificationCallBack) (THIS_ | |
342 LPAMTUNERNOTIFICATION); | |
343 STDMETHOD(get_AvailableTVFormats) (THIS_ long *); | |
344 STDMETHOD(get_TVFormat) (THIS_ long *); | |
345 STDMETHOD(AutoTune) (THIS_ long, long *); | |
346 STDMETHOD(StoreAutoTune) (IAMTVTuner *); | |
347 STDMETHOD(get_NumInputConnections) (THIS_ long *); | |
348 STDMETHOD(put_InputType) (THIS_ long, TunerInputType); | |
349 STDMETHOD(get_InputType) (THIS_ long, TunerInputType *); | |
350 STDMETHOD(put_ConnectInput) (THIS_ long); | |
351 STDMETHOD(get_ConnectInput) (THIS_ long *); | |
352 STDMETHOD(get_VideoFrequency) (THIS_ long *); | |
353 STDMETHOD(get_AudioFrequency) (THIS_ long *); | |
354 }; | |
355 | |
356 #undef INTERFACE | |
357 #define INTERFACE IMediaControl | |
358 DECLARE_INTERFACE(IMediaControl) | |
359 { | |
360 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
361 STDMETHOD_(long, AddRef) (THIS); | |
362 STDMETHOD_(long, Release) (THIS); | |
363 STDMETHOD(GetTypeInfoCount) (THIS_ UINT *); | |
364 STDMETHOD(GetTypeInfo) (THIS_ UINT, LCID, LPTYPEINFO *); | |
365 STDMETHOD(GetIDsOfNames) (THIS_ REFIID, LPOLESTR *, UINT, LCID, | |
366 DISPID *); | |
367 STDMETHOD(Invoke) (THIS_ DISPID, REFIID, LCID, WORD, LPDISPPARAMS, | |
368 VARIANT *, EXCEPINFO *, UINT *); | |
369 STDMETHOD(Run) (THIS); | |
370 STDMETHOD(Pause) (THIS); | |
371 STDMETHOD(Stop) (THIS); | |
372 STDMETHOD(GetState) (THIS_ LONG, OAFilterState *); | |
373 STDMETHOD(RenderFile) (THIS_ BSTR); | |
374 STDMETHOD(AddSourceFilter) (THIS_ BSTR, LPDISPATCH *); | |
375 STDMETHOD(get_FilterCollection) (THIS_ LPDISPATCH *); | |
376 STDMETHOD(get_RegFilterCollection) (THIS_ LPDISPATCH *); | |
377 STDMETHOD(StopWhenReady) (IMediaControl *); | |
378 }; | |
379 | |
380 #undef INTERFACE | |
381 #define INTERFACE IGraphBuilder | |
382 DECLARE_INTERFACE(IGraphBuilder) | |
383 { | |
384 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
385 STDMETHOD_(long, AddRef) (THIS); | |
386 STDMETHOD_(long, Release) (THIS); | |
387 STDMETHOD(AddFilter) (THIS_ IBaseFilter *, LPCWSTR); | |
388 STDMETHOD(RemoveFilter) (THIS_ IBaseFilter *); | |
389 STDMETHOD(EnumFilters) (THIS_ LPENUMFILTERS *); | |
390 STDMETHOD(FindFilterByName) (THIS_ LPCWSTR, IBaseFilter **); | |
391 STDMETHOD(ConnectDirect) (THIS_ IPin *, IPin *, const AM_MEDIA_TYPE *); | |
392 STDMETHOD(Reconnect) (THIS_ IPin *); | |
393 STDMETHOD(Disconnect) (THIS_ IPin *); | |
394 STDMETHOD(SetDefaultSyncSource) (IGraphBuilder *); | |
395 STDMETHOD(Connect) (THIS_ IPin *, IPin *); | |
396 STDMETHOD(Render) (THIS_ IPin *); | |
397 STDMETHOD(RenderFile) (THIS_ LPCWSTR, LPCWSTR); | |
398 STDMETHOD(AddSourceFilter) (THIS_ LPCWSTR, LPCWSTR, IBaseFilter **); | |
399 STDMETHOD(SetLogFile) (THIS_ DWORD_PTR); | |
400 STDMETHOD(Abort) (IGraphBuilder *); | |
401 STDMETHOD(ShouldOperationContinue) (IGraphBuilder *); | |
402 }; | |
403 | |
404 | |
405 #undef INTERFACE | |
406 #define INTERFACE ICaptureGraphBuilder2 | |
407 DECLARE_INTERFACE(ICaptureGraphBuilder2) | |
408 { | |
409 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
410 STDMETHOD_(long, AddRef) (THIS); | |
411 STDMETHOD_(long, Release) (THIS); | |
412 STDMETHOD(SetFiltergraph) (THIS_ IGraphBuilder *); | |
413 STDMETHOD(GetFiltergraph) (THIS_ IGraphBuilder **); | |
414 STDMETHOD(SetOutputFileName) (THIS_ const GUID *, LPCOLESTR, | |
415 IBaseFilter **, LPFILESINKFILTER *); | |
416 STDMETHOD(FindInterface) (THIS_ const GUID *, const GUID *, | |
417 IBaseFilter *, REFIID, void **); | |
418 STDMETHOD(RenderStream) (THIS_ const GUID *, const GUID *, IUnknown *, | |
419 IBaseFilter *, IBaseFilter *); | |
420 STDMETHOD(ControlStream) (THIS_ const GUID *, const GUID *, | |
421 IBaseFilter *, REFERENCE_TIME *, | |
422 REFERENCE_TIME *, WORD, WORD); | |
423 STDMETHOD(AllocCapFile) (THIS_ LPCOLESTR, DWORDLONG); | |
424 STDMETHOD(CopyCaptureFile) (THIS_ LPOLESTR, LPOLESTR, int, | |
425 LPAMCOPYCAPTUREFILEPROGRESS); | |
426 STDMETHOD(FindPin) (THIS_ IUnknown *, PIN_DIRECTION, const GUID *, | |
427 const GUID *, BOOL, int, IPin **); | |
428 }; | |
429 | |
430 #undef INTERFACE | |
431 #define INTERFACE ICreateDevEnum | |
432 DECLARE_INTERFACE(ICreateDevEnum) | |
433 { | |
434 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
435 STDMETHOD_(long, AddRef) (THIS); | |
436 STDMETHOD_(long, Release) (THIS); | |
437 STDMETHOD(CreateClassEnumerator) (THIS_ REFCLSID, IEnumMoniker **, | |
438 DWORD); | |
439 }; | |
440 | |
441 #undef INTERFACE | |
442 #define INTERFACE IAMCrossbar | |
443 DECLARE_INTERFACE(IAMCrossbar) | |
444 { | |
445 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
446 STDMETHOD_(long, AddRef) (THIS); | |
447 STDMETHOD_(long, Release) (THIS); | |
448 STDMETHOD(get_PinCounts) (THIS_ long *, long *); | |
449 STDMETHOD(CanRoute) (THIS_ long, long); | |
450 STDMETHOD(Route) (THIS_ long, long); | |
451 STDMETHOD(get_IsRoutedTo) (THIS_ long, long *); | |
452 STDMETHOD(get_CrossbarPinInfo) (THIS_ BOOL, long, long *, long *); | |
453 }; | |
454 | |
30127
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
455 #ifndef __IPropertyBag_INTERFACE_DEFINED__ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
456 #define __IPropertyBag_INTERFACE_DEFINED__ |
24744 | 457 #undef INTERFACE |
458 #define INTERFACE IPropertyBag | |
459 DECLARE_INTERFACE(IPropertyBag) | |
460 { | |
461 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
462 STDMETHOD_(long, AddRef) (THIS); | |
463 STDMETHOD_(long, Release) (THIS); | |
464 STDMETHOD(Read) (THIS_ LPCOLESTR, LPVARIANT, LPERRORLOG); | |
465 STDMETHOD(Write) (THIS_ LPCOLESTR, LPVARIANT); | |
466 }; | |
30127
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
467 #endif |
24744 | 468 |
469 #undef INTERFACE | |
470 #define INTERFACE IAMStreamConfig | |
471 DECLARE_INTERFACE(IAMStreamConfig) | |
472 { | |
473 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
474 STDMETHOD_(long, AddRef) (THIS); | |
475 STDMETHOD_(long, Release) (THIS); | |
476 HRESULT(STDMETHODCALLTYPE * SetFormat) (THIS_ AM_MEDIA_TYPE *); | |
477 HRESULT(STDMETHODCALLTYPE * GetFormat) (THIS_ AM_MEDIA_TYPE **); | |
478 HRESULT(STDMETHODCALLTYPE * GetNumberOfCapabilities) (THIS_ int *,int *); | |
479 HRESULT(STDMETHODCALLTYPE * GetStreamCaps) (THIS_ int,AM_MEDIA_TYPE **, BYTE *); | |
480 }; | |
481 | |
482 #undef INTERFACE | |
483 #define INTERFACE IAMVideoProcAmp | |
484 DECLARE_INTERFACE(IAMVideoProcAmp) | |
485 { | |
486 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
487 STDMETHOD_(long, AddRef) (THIS); | |
488 STDMETHOD_(long, Release) (THIS); | |
489 STDMETHOD(GetRange) (THIS_ long, long *, long *, long *, long *,long *); | |
490 STDMETHOD(Set) (THIS_ long, long, long); | |
491 STDMETHOD(Get) (THIS_ long, long *, long *); | |
492 }; | |
493 | |
494 #undef INTERFACE | |
495 #define INTERFACE IKsPropertySet | |
496 DECLARE_INTERFACE(IKsPropertySet) | |
497 { | |
498 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
499 STDMETHOD_(long, AddRef) (THIS); | |
500 STDMETHOD_(long, Release) (THIS); | |
501 HRESULT(STDMETHODCALLTYPE * Set) (THIS_ REFGUID, DWORD, LPVOID, DWORD,LPVOID, DWORD); | |
502 HRESULT(STDMETHODCALLTYPE * Get) (THIS_ REFGUID, DWORD, LPVOID, DWORD,LPVOID, DWORD, DWORD *); | |
503 HRESULT(STDMETHODCALLTYPE * QuerySupported) (THIS_ REFGUID, DWORD,DWORD *); | |
504 }; | |
505 | |
506 #undef INTERFACE | |
507 #define INTERFACE IAMAnalogVideoDecoder | |
508 DECLARE_INTERFACE(IAMAnalogVideoDecoder) | |
509 { | |
510 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
511 STDMETHOD_(long, AddRef) (THIS); | |
512 STDMETHOD_(long, Release) (THIS); | |
513 STDMETHOD(get_AvailableTVFormats) (THIS_ long *); | |
514 STDMETHOD(put_TVFormat) (THIS_ long); | |
515 STDMETHOD(get_TVFormat) (THIS_ long *); | |
516 STDMETHOD(get_HorizontalLocked) (THIS_ long *); | |
517 STDMETHOD(put_VCRHorizontalLocking) (THIS_ long); | |
518 STDMETHOD(get_VCRHorizontalLocking) (THIS_ long *); | |
519 STDMETHOD(get_NumberOfLines) (THIS_ long *); | |
520 STDMETHOD(put_OutputEnable) (THIS_ long); | |
521 STDMETHOD(get_OutputEnable) (THIS_ long *); | |
522 }; | |
523 | |
524 #undef INTERFACE | |
525 #define INTERFACE IAMTVAudio | |
526 DECLARE_INTERFACE(IAMTVAudio) | |
527 { | |
528 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
529 STDMETHOD_(long, AddRef) (THIS); | |
530 STDMETHOD_(long, Release) (THIS); | |
531 STDMETHOD(GetHardwareSupportedTVAudioModes) (THIS_ long *); | |
532 STDMETHOD(GetAvailableTVAudioModes) (THIS_ long *); | |
533 STDMETHOD(get_TVAudioMode) (THIS_ long *); | |
534 STDMETHOD(put_TVAudioMode) (THIS_ long); | |
535 STDMETHOD(RegisterNotificationCallBack) (THIS_ LPAMTUNERNOTIFICATION, | |
536 long); | |
537 STDMETHOD(UnRegisterNotificationCallBack) (THIS_ | |
538 LPAMTUNERNOTIFICATION); | |
539 }; | |
540 | |
541 | |
542 #undef INTERFACE | |
543 #define INTERFACE ISampleGrabberCB | |
544 DECLARE_INTERFACE(ISampleGrabberCB) | |
545 { | |
546 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
547 STDMETHOD_(long, AddRef) (THIS); | |
548 STDMETHOD_(long, Release) (THIS); | |
549 STDMETHOD(SampleCB) (THIS_ double, LPMEDIASAMPLE); | |
550 STDMETHOD(BufferCB) (THIS_ double, BYTE *, long); | |
551 }; | |
552 | |
553 #undef INTERFACE | |
554 #define INTERFACE ISampleGrabber | |
555 DECLARE_INTERFACE(ISampleGrabber) | |
556 { | |
557 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
558 STDMETHOD_(long, AddRef) (THIS); | |
559 STDMETHOD_(long, Release) (THIS); | |
560 STDMETHOD(SetOneShot) (THIS_ BOOL); | |
561 STDMETHOD(SetMediaType) (THIS_ const AM_MEDIA_TYPE *); | |
562 STDMETHOD(GetConnectedMediaType) (THIS_ AM_MEDIA_TYPE *); | |
563 STDMETHOD(SetBufferSamples) (THIS_ BOOL); | |
564 STDMETHOD(GetCurrentBuffer) (THIS_ long *, long *); | |
565 STDMETHOD(GetCurrentSample) (THIS_ LPMEDIASAMPLE *); | |
566 STDMETHOD(SetCallback) (THIS_ ISampleGrabberCB *, long); | |
567 }; | |
568 | |
569 #undef INTERFACE | |
570 #define INTERFACE IFilterGraph | |
571 DECLARE_INTERFACE(IFilterGraph) | |
572 { | |
573 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
574 STDMETHOD_(long, AddRef) (THIS); | |
575 STDMETHOD_(long, Release) (THIS); | |
576 STDMETHOD(AddFilter) (THIS_ LPBASEFILTER, LPCWSTR); | |
577 STDMETHOD(RemoveFilter) (THIS_ LPBASEFILTER); | |
578 STDMETHOD(EnumFilters) (THIS_ LPENUMFILTERS *); | |
579 STDMETHOD(FindFilterByName) (THIS_ LPCWSTR, LPBASEFILTER *); | |
580 STDMETHOD(ConnectDirect) (THIS_ IPin *, IPin *, const AM_MEDIA_TYPE *); | |
581 STDMETHOD(Reconnect) (THIS_ LPPIN); | |
582 STDMETHOD(Disconnect) (THIS_ LPPIN); | |
583 STDMETHOD(SetDefaultSyncSource) (THIS); | |
584 }; | |
585 | |
586 #undef INTERFACE | |
587 #define INTERFACE IAMAudioInputMixer | |
588 DECLARE_INTERFACE(IAMAudioInputMixer) | |
589 { | |
590 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
591 STDMETHOD_(long, AddRef) (THIS); | |
592 STDMETHOD_(long, Release) (THIS); | |
593 STDMETHOD(put_Enable) (THIS_ BOOL); | |
594 STDMETHOD(get_Enable) (THIS_ BOOL *); | |
595 STDMETHOD(put_Mono) (THIS_ BOOL); | |
596 STDMETHOD(get_Mono) (THIS_ BOOL *); | |
597 STDMETHOD(put_MixLevel) (THIS_ double); | |
598 STDMETHOD(get_MixLevel) (THIS_ double *); | |
599 STDMETHOD(put_Pan) (THIS_ double); | |
600 STDMETHOD(get_Pan) (THIS_ double *); | |
601 STDMETHOD(put_Loudness) (THIS_ BOOL); | |
602 STDMETHOD(get_Loudness) (THIS_ BOOL *); | |
603 STDMETHOD(put_Treble) (THIS_ double); | |
604 STDMETHOD(get_Treble) (THIS_ double *); | |
605 STDMETHOD(get_TrebleRange) (THIS_ double *); | |
606 STDMETHOD(put_Bass) (THIS_ double); | |
607 STDMETHOD(get_Bass) (THIS_ double *); | |
608 STDMETHOD(get_BassRange) (THIS_ double *); | |
609 }; | |
610 | |
611 | |
612 #undef INTERFACE | |
613 #define INTERFACE IMediaSample | |
614 DECLARE_INTERFACE(IMediaSample) | |
615 { | |
616 STDMETHOD(QueryInterface) (THIS_ const GUID *, void **); | |
617 STDMETHOD_(long, AddRef) (THIS); | |
618 STDMETHOD_(long, Release) (THIS); | |
619 STDMETHOD(GetPointer )(THIS_ unsigned char** ); | |
620 STDMETHOD_(LONG,GetSize )(THIS); | |
621 STDMETHOD(GetTime )(THIS_ REFERENCE_TIME* ,REFERENCE_TIME* ); | |
622 STDMETHOD(SetTime )(THIS_ REFERENCE_TIME* ,REFERENCE_TIME* ); | |
623 STDMETHOD(IsSyncPoint )(THIS); | |
624 STDMETHOD(SetSyncPoint )(THIS_ long ); | |
625 STDMETHOD(IsPreroll )(THIS); | |
626 STDMETHOD(SetPreroll )(THIS_ long ); | |
627 STDMETHOD_(LONG,GetActualDataLength)(THIS); | |
628 STDMETHOD(SetActualDataLength )(THIS_ long ); | |
629 STDMETHOD(GetMediaType )(THIS_ AM_MEDIA_TYPE** ); | |
630 STDMETHOD(SetMediaType )(THIS_ AM_MEDIA_TYPE* ); | |
631 STDMETHOD(IsDiscontinuity )(THIS); | |
632 STDMETHOD(SetDiscontinuity )(THIS_ long ); | |
633 STDMETHOD(GetMediaTime )(THIS_ long long* ,long long* ); | |
634 STDMETHOD(SetMediaTime )(THIS_ long long* ,long long* ); | |
635 }; | |
636 | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27846
diff
changeset
|
637 |
24744 | 638 #undef INTERFACE |
639 #define INTERFACE IAMBufferNegotiation | |
640 DECLARE_INTERFACE(IAMBufferNegotiation) | |
641 { | |
642 STDMETHOD(QueryInterface )(THIS_ REFIID ,void **); | |
643 STDMETHOD_(ULONG,AddRef )(THIS); | |
644 STDMETHOD_(ULONG,Release )(THIS); | |
645 STDMETHOD(SuggestAllocatorProperties )(THIS_ const ALLOCATOR_PROPERTIES *); | |
646 STDMETHOD(GetAllocatorProperties )(THIS_ ALLOCATOR_PROPERTIES *); | |
647 }; | |
648 | |
649 | |
650 #undef INTERFACE | |
651 #define INTERFACE IVideoWindow | |
652 DECLARE_INTERFACE(IVideoWindow) | |
653 { | |
654 STDMETHOD(QueryInterface )(THIS_ REFIID ,void **); | |
655 STDMETHOD_(ULONG,AddRef )(THIS); | |
656 STDMETHOD_(ULONG,Release )(THIS); | |
657 STDMETHOD(GetTypeInfoCount) (THIS_ UINT * ); | |
658 STDMETHOD(GetTypeInfo) (THIS_ UINT ,LCID , ITypeInfo ** ); | |
659 STDMETHOD(GetIDsOfNames) (THIS_ REFIID ,LPOLESTR * , UINT ,LCID , DISPID * ); | |
660 STDMETHOD(Invoke) (THIS_ DISPID ,REFIID , LCID , WORD ,void *, VARIANT * ,EXCEPINFO * , UINT * ); | |
661 STDMETHOD(put_Caption) (THIS_ BSTR ); | |
662 STDMETHOD(get_Caption) (THIS_ BSTR * ); | |
663 STDMETHOD(put_WindowStyle) (THIS_ long ); | |
664 STDMETHOD(get_WindowStyle) (THIS_ long *); | |
665 STDMETHOD(put_WindowStyleEx) (THIS_ long ); | |
666 STDMETHOD(get_WindowStyleEx) (THIS_ long *); | |
667 STDMETHOD(put_AutoShow) (THIS_ long ); | |
668 STDMETHOD(get_AutoShow) (THIS_ long *); | |
669 STDMETHOD(put_WindowState) (THIS_ long ); | |
670 STDMETHOD(get_WindowState) (THIS_ long *); | |
671 STDMETHOD(put_BackgroundPalette) (THIS_ long ); | |
672 STDMETHOD(get_BackgroundPalette) (THIS_ long *); | |
673 STDMETHOD(put_Visible) (THIS_ long ); | |
674 STDMETHOD(get_Visible) (THIS_ long *); | |
675 STDMETHOD(put_Left) (THIS_ long ); | |
676 STDMETHOD(get_Left) (THIS_ long *); | |
677 STDMETHOD(put_Width) (THIS_ long ); | |
678 STDMETHOD(get_Width) (THIS_ long *); | |
679 STDMETHOD(put_Top) (THIS_ long ); | |
680 STDMETHOD(get_Top) (THIS_ long *); | |
681 STDMETHOD(put_Height) (THIS_ long ); | |
682 STDMETHOD(get_Height) (THIS_ long *); | |
683 STDMETHOD(put_Owner) (THIS_ OAHWND ); | |
684 STDMETHOD(get_Owner) (THIS_ OAHWND * ); | |
685 STDMETHOD(put_MessageDrain) (THIS_ OAHWND ); | |
686 STDMETHOD(get_MessageDrain) (THIS_ OAHWND * ); | |
687 STDMETHOD(get_BorderColor) (THIS_ long *); | |
688 STDMETHOD(put_BorderColor) (THIS_ long ); | |
689 STDMETHOD(get_FullScreenMode) (THIS_ long *); | |
690 STDMETHOD(put_FullScreenMode) (THIS_ long ); | |
691 STDMETHOD(SetWindowForeground) (THIS_ long ); | |
692 STDMETHOD(NotifyOwnerMessage) (THIS_ OAHWND ,long , LONG_PTR ,LONG_PTR ); | |
693 STDMETHOD(SetWindowPosition) (THIS_ long ,long , long ,long ); | |
694 STDMETHOD(GetWindowPosition) (THIS_ long *,long *, long *,long *); | |
695 STDMETHOD(GetMinIdealImageSize) (THIS_ long *, long *); | |
696 STDMETHOD(GetMaxIdealImageSize) (THIS_ long *, long *); | |
697 STDMETHOD(GetRestorePosition) (THIS_ long *,long *, long *,long *); | |
698 STDMETHOD(HideCursor) (THIS_ long ); | |
699 STDMETHOD(IsCursorHidden) (THIS_ long *); | |
700 }; | |
701 | |
30127
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
702 #ifndef DECLARE_ENUMERATOR_ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
703 #define DECLARE_ENUMERATOR_(I,T) \ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
704 DECLARE_INTERFACE_(I,IUnknown) \ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
705 { \ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
706 STDMETHOD(QueryInterface)(I*, REFIID,PVOID*); \ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
707 STDMETHOD_(ULONG,AddRef)(I*); \ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
708 STDMETHOD_(ULONG,Release)(I*); \ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
709 STDMETHOD(Next)(I*, ULONG,T*,ULONG*); \ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
710 STDMETHOD(Skip)(I*, ULONG); \ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
711 STDMETHOD(Reset)(I*); \ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
712 STDMETHOD(Clone)(I*, I**); \ |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
713 } |
774aa6f7399e
Several hacks to fix compilation of tvi_dshow on MinGW64.
reimar
parents:
29263
diff
changeset
|
714 #endif |
24744 | 715 DECLARE_ENUMERATOR_(IEnumFilters, LPBASEFILTER); |
716 DECLARE_ENUMERATOR_(IEnumPins, LPPIN); | |
717 DECLARE_ENUMERATOR_(IEnumMediaTypes, AM_MEDIA_TYPE *); | |
718 | |
719 #define OLE_CALL(p,method) (p)->lpVtbl->method(p) | |
720 #ifdef __GNUC__ | |
721 #define OLE_CALL_ARGS(p, method, a1, args...) (p)->lpVtbl->method(p, a1, ##args) | |
722 #else | |
723 #define OLE_CALL_ARGS(p, method, ...) (p)->lpVtbl->method(p, __VA_ARGS__) | |
724 #endif | |
725 #define OLE_RELEASE_SAFE(p) if(p){ OLE_CALL((IUnknown*)p,Release); p=NULL;} | |
726 #define OLE_QUERYINTERFACE(p,iface,ptr) OLE_CALL_ARGS((IUnknown*)p,QueryInterface,&iface,(void*)&ptr) | |
727 | |
26029 | 728 #endif /* MPLAYER_TVI_DSHOW_H */ |