Mercurial > mplayer.hg
annotate stream/tvi_dshow.h @ 31816:ab9824b6acc7
dvd: Improve seeking by chapters.
The current code seeks to the start of the chapter. From this position, it then
tries to figure out the starting cell. This is completely suboptimal and error
prone since the starting cell can be directly deduced from the chapter.
patch by Olivier Rolland, billl users.sourceforge net
author | diego |
---|---|
date | Sun, 01 Aug 2010 22:51:15 +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 */ |