OSDN Git Service

Prepare environment for Earnie's tools.
[mingw/mingw-org-wsl.git] / wslapi / include / strmif.h
1 #ifndef _STRMIF_H
2 #define _STRMIF_H
3 #if __GNUC__ >= 3
4 #pragma GCC system_header
5 #endif
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 /*--- DirectShow Reference - DirectShow Enumerated Types - TVAudioMode Enumeration */
12 #define TVAUDIO_MODE_MASK 0x000000FF
13 #define TVAUDIO_PRESET_MASK 0x0000FF00
14 /*--- DirectShow Reference - DirectShow Data Types */
15 typedef LONGLONG REFERENCE_TIME;
16 typedef double REFTIME;
17 /*--- DirectShow Reference - Constants and GUIDs */
18 enum {
19         MERIT_PREFERRED = 0x800000,
20         MERIT_NORMAL = 0x600000,
21         MERIT_UNLIKELY = 0x400000,
22         MERIT_DO_NOT_USE = 0x200000,
23         MERIT_SW_COMPRESSOR = 0x100000,
24         MERIT_HW_COMPRESSOR = 0x100050
25 };
26 /*--- DirectShow Reference - DirectShow Enumerated Types */
27 typedef enum _AM_AUDIO_RENDERER_STAT_PARAM {
28         AM_AUDREND_STAT_PARAM_BREAK_COUNT = 1,
29         AM_AUDREND_STAT_PARAM_SLAVE_MODE,
30         AM_AUDREND_STAT_PARAM_SILENCE_DUR,
31         AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR,
32         AM_AUDREND_STAT_PARAM_DISCONTINUITIES,
33         AM_AUDREND_STAT_PARAM_SLAVE_RATE,
34         AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR,
35         AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR,
36         AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR,
37         AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR,
38         AM_AUDREND_STAT_PARAM_BUFFERFULLNESS,
39         AM_AUDREND_STAT_PARAM_JITTER
40 } AM_AUDIO_RENDERER_STAT_PARAM;
41 typedef enum _AM_DVD_GRAPH_FLAGS {
42         AM_DVD_HWDEC_PREFER = 0x01,
43         AM_DVD_HWDEC_ONLY = 0x02,
44         AM_DVD_SWDEC_PREFER = 0x04,
45         AM_DVD_SWDEC_ONLY = 0x08,
46         AM_DVD_NOVPE = 0x100,
47         AM_DVD_VMR9_ONLY = 0x800,
48         AM_DVD_EVR_ONLY = 0x1000
49 } AM_DVD_GRAPH_FLAGS;
50 typedef enum _AM_DVD_STREAM_FLAGS {
51         AM_DVD_STREAM_VIDEO = 0x01,
52         AM_DVD_STREAM_AUDIO = 0x02,
53         AM_DVD_STREAM_SUBPIC = 0x04
54 } AM_DVD_STREAM_FLAGS;
55 typedef enum _AM_FILTER_MISC_FLAGS {
56         AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x00000001,
57         AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x00000002
58 } AM_FILTER_MISC_FLAGS;
59 typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS {
60         AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001,
61         AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002,
62         AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004
63 } AM_GRAPH_CONFIG_RECONNECT_FLAGS;
64 typedef enum _AM_INTF_SEARCH_FLAGS {
65         AM_INTF_SEARCH_INPUT_PIN = 0x00000001,
66         AM_INTF_SEARCH_OUTPUT_PIN = 0x00000002,
67         AM_INTF_SEARCH_FILTER = 0x00000004
68 } AM_INTF_SEARCH_FLAGS;
69 typedef enum _AM_OVERLAY_NOTIFY_FLAGS {
70         AM_OVERLAY_NOTIFY_VISIBLE_CHANGE = 0x00000001,
71         AM_OVERLAY_NOTIFY_SOURCE_CHANGE = 0x00000002,
72         AM_OVERLAY_NOTIFY_DEST_CHANGE = 0x00000004
73 } AM_OVERLAY_NOTIFY_FLAGS;
74 typedef enum _AM_PIN_CONNECTION_BLOCK_FLAGS {
75         AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001,
76         AM_PIN_PUSH_THROUGH_DATA = 0x00000002
77 } AM_PIN_CONNECTION_BLOCK_FLAGS;
78 typedef enum _AM_PUSHSOURCE_FLAGS {
79         AM_PUSHSOURCECAPS_INTERNAL_RM = 0x00000001,
80         AM_PUSHSOURCECAPS_NOT_LIVE = 0x00000002,
81         AM_PUSHSOURCECAPS_PRIVATE_CLOCK = 0x00000004,
82         AM_PUSHSOURCEREQS_USE_STREAM_CLOCK = 0x00010000
83 } AM_PUSHSOURCE_FLAGS;
84 typedef enum tagAM_SAMPLE_PROPERTY_FLAGS {
85         AM_SAMPLE_SPLICEPOINT = 0x01,
86         AM_SAMPLE_PREROLL = 0x02,
87         AM_SAMPLE_DATADISCONTINUITY = 0x04,
88         AM_SAMPLE_TYPECHANGED = 0x08,
89         AM_SAMPLE_TIMEVALID = 0x10,
90         AM_SAMPLE_TIMEDISCONTINUITY = 0x40,
91         AM_SAMPLE_FLUSH_ON_PAUSE = 0x80,
92         AM_SAMPLE_STOPVALID = 0x100,
93         AM_SAMPLE_ENDOFSTREAM = 0x200,
94         AM_STREAM_MEDIA = 0,
95         AM_STREAM_CONTROL = 1
96 } AM_SAMPLE_PROPERTY_FLAGS;
97 typedef enum AM_SEEKING_SeekingCapabilities {
98         AM_SEEKING_CanSeekAbsolute = 0x1,
99         AM_SEEKING_CanSeekForwards = 0x2,
100         AM_SEEKING_CanSeekBackwards = 0x4,
101         AM_SEEKING_CanGetCurrentPos = 0x8,
102         AM_SEEKING_CanGetStopPos = 0x10,
103         AM_SEEKING_CanGetDuration = 0x20,
104         AM_SEEKING_CanPlayBackwards = 0x40,
105         AM_SEEKING_CanDoSegments = 0x80,
106         AM_SEEKING_Source = 0x100
107 } AM_SEEKING_SEEKING_CAPABILITIES;
108 typedef enum {
109         AM_STREAM_INFO_START_DEFINED = 0x00000001,
110         AM_STREAM_INFO_STOP_DEFINED = 0x00000002,
111         AM_STREAM_INFO_DISCARDING = 0x00000004,
112         AM_STREAM_INFO_STOP_SEND_EXTRA = 0x00000010
113 } AM_STREAM_INFO_FLAGS;
114 enum AMOVERLAYFX {
115         AMOVERFX_NOFX = 0x00000000,
116         AMOVERFX_MIRRORLEFTRIGHT = 0x00000002,
117         AMOVERFX_MIRRORUPDOWN = 0x00000004,
118         AMOVERFX_DEINTERLACE = 0x00000008
119 };
120 typedef enum _AMRESCTL_RESERVEFLAGS {
121         AMRESCTL_RESERVEFLAGS_RESERVE = 0x00,
122         AMRESCTL_RESERVEFLAGS_UNRESERVE = 0x01
123 } AMRESCTL_RESERVEFLAGS;
124 typedef enum tagAMTunerModeType {
125         AMTUNER_MODE_DEFAULT = 0x0000,
126         AMTUNER_MODE_TV = 0x0001,
127         AMTUNER_MODE_FM_RADIO = 0x0002,
128         AMTUNER_MODE_AM_RADIO = 0x0004,
129         AMTUNER_MODE_DSS = 0x0008
130 } AMTunerModeType;
131 typedef enum tagAnalogVideoStandard {
132         AnalogVideo_None = 0x00000000,
133         AnalogVideo_NTSC_M = 0x00000001,
134         AnalogVideo_NTSC_M_J = 0x00000002,
135         AnalogVideo_NTSC_433 = 0x00000004,
136         AnalogVideo_PAL_B = 0x00000010,
137         AnalogVideo_PAL_D = 0x00000020,
138         AnalogVideo_PAL_H = 0x00000080,
139         AnalogVideo_PAL_I = 0x00000100,
140         AnalogVideo_PAL_M = 0x00000200,
141         AnalogVideo_PAL_N = 0x00000400,
142         AnalogVideo_PAL_60 = 0x00000800,
143         AnalogVideo_SECAM_B = 0x00001000,
144         AnalogVideo_SECAM_D = 0x00002000,
145         AnalogVideo_SECAM_G = 0x00004000,
146         AnalogVideo_SECAM_H = 0x00008000,
147         AnalogVideo_SECAM_K = 0x00010000,
148         AnalogVideo_SECAM_K1 = 0x00020000,
149         AnalogVideo_SECAM_L = 0x00040000,
150         AnalogVideo_SECAM_L1 = 0x00080000,
151         AnalogVideo_PAL_N_COMBO = 0x00100000
152 } AnalogVideoStandard;
153 typedef enum {
154         CameraControl_Flags_Auto = 0x0001,
155         CameraControl_Flags_Manual = 0x0002
156 } CameraControlFlags;
157 typedef enum {
158         CameraControl_Pan = 1,
159         CameraControl_Tilt,
160         CameraControl_Roll,
161         CameraControl_Zoom,
162         CameraControl_Exposure,
163         CameraControl_Iris,
164         CameraControl_Focus
165 } CameraControlProperty;
166 typedef enum {
167         CompressionCaps_CanQuality = 0x01,
168         CompressionCaps_CanCrunch = 0x02,
169         CompressionCaps_CanKeyFrame = 0x04,
170         CompressionCaps_CanBFrame = 0x08,
171         CompressionCaps_CanWindow = 0x10
172 } CompressionCaps;
173 typedef enum {
174         DECIMATION_LEGACY,
175         DECIMATION_USE_DECODER_ONLY,
176         DECIMATION_USE_VIDEOPORT_ONLY,
177         DECIMATION_USE_OVERLAY_ONLY,
178         DECIMATION_DEFAULT
179 } DECIMATION_USAGE;
180 typedef enum tagDVD_AUDIO_APPMODE {
181         DVD_AudioMode_None = 0,
182         DVD_AudioMode_Karaoke = 1,
183         DVD_AudioMode_Surround = 2,
184         DVD_AudioMode_Other = 3
185 } DVD_AUDIO_APPMODE;
186 typedef enum tagDVD_AUDIO_FORMAT {
187         DVD_AudioFormat_AC3 = 0,
188         DVD_AudioFormat_MPEG1 = 1,
189         DVD_AudioFormat_MPEG1_DRC = 2,
190         DVD_AudioFormat_MPEG2 = 3,
191         DVD_AudioFormat_MPEG2_DRC = 4,
192         DVD_AudioFormat_LPCM = 5,
193         DVD_AudioFormat_DTS = 6,
194         DVD_AudioFormat_SDDS = 7,
195         DVD_AudioFormat_Other = 8
196 } DVD_AUDIO_FORMAT;
197 typedef enum tagDVD_AUDIO_LANG_EXT {
198         DVD_AUD_EXT_NotSpecified = 0,
199         DVD_AUD_EXT_Captions = 1,
200         DVD_AUD_EXT_VisuallyImpaired = 2,
201         DVD_AUD_EXT_DirectorComments1 = 3,
202         DVD_AUD_EXT_DirectorComments2 = 4
203 } DVD_AUDIO_LANG_EXT;
204 typedef enum {
205         DVD_CMD_FLAG_None = 0x00000000,
206         DVD_CMD_FLAG_Flush = 0x00000001,
207         DVD_CMD_FLAG_SendEvents = 0x00000002,
208         DVD_CMD_FLAG_Block = 0x00000004,
209         DVD_CMD_FLAG_StartWhenRendered = 0x00000008,
210         DVD_CMD_FLAG_EndAfterRendered = 0x00000010
211 } DVD_CMD_FLAGS;
212 typedef enum tagDVD_DISC_SIDE {
213         DVD_SIDE_A,
214         DVD_SIDE_B
215 } DVD_DISC_SIDE;
216 typedef enum tagDVD_DOMAIN {
217         DVD_DOMAIN_FirstPlay,
218         DVD_DOMAIN_VideoManagerMenu,
219         DVD_DOMAIN_VideoTitleSetMenu,
220         DVD_DOMAIN_Title,
221         DVD_DOMAIN_Stop
222 } DVD_DOMAIN;
223 typedef enum tagDVD_FRAMERATE {
224         DVD_FPS_25 = 1,
225         DVD_FPS_30NonDrop = 3
226 } DVD_FRAMERATE;
227 typedef enum tagDVD_KARAOKE_ASSIGNMENT {
228         DVD_Assignment_reserved0 = 0,
229         DVD_Assignment_reserved1 = 1,
230         DVD_Assignment_LR = 2,
231         DVD_Assignment_LRM = 3,
232         DVD_Assignment_LR1 = 4,
233         DVD_Assignment_LRM1 = 5,
234         DVD_Assignment_LR12 = 6,
235         DVD_Assignment_LRM12 = 7
236 } DVD_KARAOKE_ASSIGNMENT;
237 typedef enum tagDVD_KARAOKE_CONTENTS {
238         DVD_Karaoke_GuideVocal1 = 0x0001,
239         DVD_Karaoke_GuideVocal2 = 0x0002,
240         DVD_Karaoke_GuideMelody1 = 0x0004,
241         DVD_Karaoke_GuideMelody2 = 0x0008,
242         DVD_Karaoke_GuideMelodyA = 0x0010,
243         DVD_Karaoke_GuideMelodyB = 0x0020,
244         DVD_Karaoke_SoundEffectA = 0x0040,
245         DVD_Karaoke_SoundEffectB = 0x0080
246 } DVD_KARAOKE_CONTENTS;
247 typedef enum tagDVD_KARAOKE_DOWNMIX {
248         DVD_Mix_0to0 = 0x0001,
249         DVD_Mix_1to0 = 0x0002,
250         DVD_Mix_2to0 = 0x0004,
251         DVD_Mix_3to0 = 0x0008,
252         DVD_Mix_4to0 = 0x0010,
253         DVD_Mix_Lto0 = 0x0020,
254         DVD_Mix_Rto0 = 0x0040,
255         DVD_Mix_0to1 = 0x0100,
256         DVD_Mix_1to1 = 0x0200,
257         DVD_Mix_2to1 = 0x0400,
258         DVD_Mix_3to1 = 0x0800,
259         DVD_Mix_4to1 = 0x1000,
260         DVD_Mix_Lto1 = 0x2000,
261         DVD_Mix_Rto1 = 0x4000
262 } DVD_KARAOKE_DOWNMIX;
263 typedef enum tagDVD_MENU_ID {
264         DVD_MENU_Title = 2,
265         DVD_MENU_Root = 3,
266         DVD_MENU_Subpicture = 4,
267         DVD_MENU_Audio = 5,
268         DVD_MENU_Angle = 6,
269         DVD_MENU_Chapter = 7
270 } DVD_MENU_ID;
271 typedef enum {
272         DVD_ResetOnStop = 1,
273         DVD_NotifyParentalLevelChange = 2,
274         DVD_HMSF_TimeCodeEvents = 3,
275         DVD_AudioDuringFFwdRew = 4,
276         DVD_EnableNonblockingAPIs = 5,
277         DVD_CacheSizeInMB = 6,
278         DVD_EnablePortableBookmarks = 7
279 } DVD_OPTION_FLAG;
280 typedef enum tagDVD_PARENTAL_LEVEL {
281         DVD_PARENTAL_LEVEL_8 = 0x8000,
282         DVD_PARENTAL_LEVEL_7 = 0x4000,
283         DVD_PARENTAL_LEVEL_6 = 0x2000,
284         DVD_PARENTAL_LEVEL_5 = 0x1000,
285         DVD_PARENTAL_LEVEL_4 = 0x0800,
286         DVD_PARENTAL_LEVEL_3 = 0x0400,
287         DVD_PARENTAL_LEVEL_2 = 0x0200,
288         DVD_PARENTAL_LEVEL_1 = 0x0100
289 } DVD_PARENTAL_LEVEL;
290 typedef enum tagDVD_PREFERRED_DISPLAY_MODE {
291         DISPLAY_CONTENT_DEFAULT = 0,
292         DISPLAY_16x9 = 1,
293         DISPLAY_4x3_PANSCAN_PREFERRED = 2,
294         DISPLAY_4x3_LETTERBOX_PREFERRED = 3
295 } DVD_PREFERRED_DISPLAY_MODE;
296 typedef enum tagDVD_RELATIVE_BUTTON {
297         DVD_Relative_Upper = 1,
298         DVD_Relative_Lower = 2,
299         DVD_Relative_Left = 3,
300         DVD_Relative_Right = 4
301 } DVD_RELATIVE_BUTTON;
302 typedef enum tagDVD_SUBPICTURE_LANG_EXT {
303         DVD_SP_EXT_NotSpecified = 0,
304         DVD_SP_EXT_Caption_Normal = 1,
305         DVD_SP_EXT_Caption_Big = 2,
306         DVD_SP_EXT_Caption_Children = 3,
307         DVD_SP_EXT_CC_Normal = 5,
308         DVD_SP_EXT_CC_Big = 6,
309         DVD_SP_EXT_CC_Children = 7,
310         DVD_SP_EXT_Forced = 9,
311         DVD_SP_EXT_DirectorComments_Normal = 13,
312         DVD_SP_EXT_DirectorComments_Big = 14,
313         DVD_SP_EXT_DirectorComments_Children = 15
314 } DVD_SUBPICTURE_LANG_EXT;
315 typedef enum tagDVD_SUBPICTURE_TYPE {
316         DVD_SPType_NotSpecified = 0,
317         DVD_SPType_Language = 1,
318         DVD_SPType_Other = 2
319 } DVD_SUBPICTURE_TYPE;
320 typedef enum tagDVD_SUBPICTURE_CODING {
321         DVD_SPCoding_RunLength = 0,
322         DVD_SPCoding_Extended = 1,
323         DVD_SPCoding_Other = 2
324 } DVD_SUBPICTURE_CODING;
325 enum DVD_TextCharSet {
326         DVD_CharSet_Unicode = 0,
327         DVD_CharSet_ISO646 = 1,
328         DVD_CharSet_JIS_Roman_Kanji = 2,
329         DVD_CharSet_ISO8859_1 = 3,
330         DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana = 4
331 };
332 enum DVD_TextStringType {
333         DVD_Struct_Volume = 0x01,
334         DVD_Struct_Title = 0x02,
335         DVD_Struct_ParentalID = 0x03,
336         DVD_Struct_PartOfTitle = 0x04,
337         DVD_Struct_Cell = 0x05,
338         DVD_Stream_Audio = 0x10,
339         DVD_Stream_Subpicture = 0x11,
340         DVD_Stream_Angle = 0x12,
341         DVD_Channel_Audio = 0x20,
342         DVD_General_Name = 0x30,
343         DVD_General_Comments = 0x31,
344         DVD_Title_Series = 0x38,
345         DVD_Title_Movie = 0x39,
346         DVD_Title_Video = 0x3a,
347         DVD_Title_Album = 0x3b,
348         DVD_Title_Song = 0x3c,
349         DVD_Title_Other = 0x3f,
350         DVD_Title_Sub_Series = 0x40,
351         DVD_Title_Sub_Movie = 0x41,
352         DVD_Title_Sub_Video = 0x42,
353         DVD_Title_Sub_Album = 0x43,
354         DVD_Title_Sub_Song = 0x44,
355         DVD_Title_Sub_Other = 0x47,
356         DVD_Title_Orig_Series = 0x48,
357         DVD_Title_Orig_Movie = 0x49,
358         DVD_Title_Orig_Video = 0x4a,
359         DVD_Title_Orig_Album = 0x4b,
360         DVD_Title_Orig_Song = 0x4c,
361         DVD_Title_Orig_Other = 0x4f,
362         DVD_Other_Scene = 0x50,
363         DVD_Other_Cut = 0x51,
364         DVD_Other_Take = 0x52
365 };
366 typedef enum tagDVD_TIMECODE_FLAGS {
367         DVD_TC_FLAG_25fps = 0x00000001,
368         DVD_TC_FLAG_30fps = 0x00000002,
369         DVD_TC_FLAG_DropFrame = 0x00000004,
370         DVD_TC_FLAG_Interpolated = 0x00000008
371 } DVD_TIMECODE_FLAGS;
372 typedef enum tagDVD_TITLE_APPMODE {
373         DVD_AppMode_Not_Specified = 0,
374         DVD_AppMode_Karaoke = 1,
375         DVD_AppMode_Other = 3
376 } DVD_TITLE_APPMODE;
377 typedef enum tagDVD_VIDEO_COMPRESSION {
378         DVD_VideoCompression_Other = 0,
379         DVD_VideoCompression_MPEG1 = 1,
380         DVD_VideoCompression_MPEG2 = 2
381 } DVD_VIDEO_COMPRESSION;
382 typedef enum _DVDECODERRESOLUTION {
383         DVDECODERRESOLUTION_720x480 = 1000,
384         DVDECODERRESOLUTION_360x240 = 1001,
385         DVDECODERRESOLUTION_180x120 = 1002,
386         DVDECODERRESOLUTION_88x60 = 1003
387 } DVDECODERRESOLUTION;
388 typedef enum _DVRESOLUTION {
389         DVRESOLUTION_FULL = 1000,
390         DVRESOLUTION_HALF = 1001,
391         DVRESOLUTION_QUARTER = 1002,
392         DVRESOLUTION_DC = 1003
393 } DVRESOLUTION;
394 typedef enum _DVENCODERFORMAT {
395         DVENCODERFORMAT_DVSD = 2007,
396         DVENCODERFORMAT_DVHD = 2008,
397         DVENCODERFORMAT_DVSL = 2009
398 } DVENCODERFORMAT;
399 typedef enum _DVENCODERRESOLUTION {
400         DVENCODERRESOLUTION_720x480 = 2012,
401         DVENCODERRESOLUTION_360x240 = 2013,
402         DVENCODERRESOLUTION_180x120 = 2014,
403         DVENCODERRESOLUTION_88x60 = 2015
404 } DVENCODERRESOLUTION;
405 typedef enum _DVENCODERVIDEOFORMAT {
406         DVENCODERVIDEOFORMAT_NTSC = 2000,
407         DVENCODERVIDEOFORMAT_PAL = 2001
408 } DVENCODERVIDEOFORMAT;
409 typedef enum _FilterState {
410         State_Stopped,
411         State_Paused,
412         State_Running
413 } FILTER_STATE;
414 typedef enum {
415         INTERLEAVE_NONE,
416         INTERLEAVE_CAPTURE,
417         INTERLEAVE_FULL,
418         INTERLEAVE_NONE_BUFFERED
419 } InterleavingMode;
420 typedef enum {
421         PhysConn_Video_Tuner = 1,
422         PhysConn_Video_Composite,
423         PhysConn_Video_SVideo,
424         PhysConn_Video_RGB,
425         PhysConn_Video_YRYBY,
426         PhysConn_Video_SerialDigital,
427         PhysConn_Video_ParallelDigital,
428         PhysConn_Video_SCSI,
429         PhysConn_Video_AUX,
430         PhysConn_Video_1394,
431         PhysConn_Video_USB,
432         PhysConn_Video_VideoDecoder,
433         PhysConn_Video_VideoEncoder,
434         PhysConn_Video_SCART,
435         PhysConn_Video_Black,
436         PhysConn_Audio_Tuner = 4096,
437         PhysConn_Audio_Line,
438         PhysConn_Audio_Mic,
439         PhysConn_Audio_AESDigital,
440         PhysConn_Audio_SPDIFDigital,
441         PhysConn_Audio_SCSI,
442         PhysConn_Audio_AUX,
443         PhysConn_Audio_1394,
444         PhysConn_Audio_USB,
445         PhysConn_Audio_AudioDecoder
446 } PhysicalConnectorType;
447 typedef enum _PinDirection {
448         PINDIR_INPUT,
449         PINDIR_OUTPUT
450 } PIN_DIRECTION;
451 typedef enum {
452         Famine,
453         Flood
454 } QualityMessageType;
455 enum {
456         REG_PINFLAG_B_ZERO = 0x1,
457         REG_PINFLAG_B_RENDERER = 0x2,
458         REG_PINFLAG_B_MANY = 0x4,
459         REG_PINFLAG_B_OUTPUT = 0x8
460 } REG_PINFLAG;
461 typedef enum _REM_FILTER_FLAGS {
462         REMFILTERF_LEAVECONNECTED = 0x00000001
463 } REM_FILTER_FLAGS;
464 typedef enum {
465         TunerInputCable,
466         TunerInputAntenna
467 } TunerInputType;
468 typedef enum tagTVAudioMode {
469         AMTVAUDIO_MODE_MONO = 0x0001,
470         AMTVAUDIO_MODE_STEREO = 0x0002,
471         AMTVAUDIO_MODE_LANG_A = 0x0010,
472         AMTVAUDIO_MODE_LANG_B = 0x0020,
473         AMTVAUDIO_MODE_LANG_C = 0x0040,
474         AMTVAUDIO_PRESET_STEREO = 0x0200,
475         AMTVAUDIO_PRESET_LANG_A = 0x1000,
476         AMTVAUDIO_PRESET_LANG_B = 0x2000,
477         AMTVAUDIO_PRESET_LANG_C = 0x4000
478 } TVAudioMode;
479 typedef enum {
480         UOP_FLAG_Play_Title_Or_AtTime = 0x00000001,
481         UOP_FLAG_Play_Chapter = 0x00000002,
482         UOP_FLAG_Play_Title = 0x00000004,
483         UOP_FLAG_Stop = 0x00000008,
484         UOP_FLAG_ReturnFromSubMenu = 0x00000010,
485         UOP_FLAG_Play_Chapter_Or_AtTime = 0x00000020,
486         UOP_FLAG_PlayPrev_Or_Replay_Chapter = 0x00000040,
487         UOP_FLAG_PlayNext_Chapter = 0x00000080,
488         UOP_FLAG_Play_Forwards = 0x00000100,
489         UOP_FLAG_Play_Backwards = 0x00000200,
490         UOP_FLAG_ShowMenu_Title = 0x00000400,
491         UOP_FLAG_ShowMenu_Root = 0x00000800,
492         UOP_FLAG_ShowMenu_SubPic = 0x00001000,
493         UOP_FLAG_ShowMenu_Audio = 0x00002000,
494         UOP_FLAG_ShowMenu_Angle = 0x00004000,
495         UOP_FLAG_ShowMenu_Chapter = 0x00008000,
496         UOP_FLAG_Resume = 0x00010000,
497         UOP_FLAG_Select_Or_Activate_Button = 0x00020000,
498         UOP_FLAG_Still_Off = 0x00040000,
499         UOP_FLAG_Pause_On = 0x00080000,
500         UOP_FLAG_Select_Audio_Stream = 0x00100000,
501         UOP_FLAG_Select_SubPic_Stream = 0x00200000,
502         UOP_FLAG_Select_Angle = 0x00400000,
503         UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode = 0x00800000,
504         UOP_FLAG_Select_Video_Mode_Preference = 0x01000000
505 } VALID_UOP_FLAG;
506 typedef enum {
507         VfwCaptureDialog_Source = 0x01,
508         VfwCaptureDialog_Format = 0x02,
509         VfwCaptureDialog_Display = 0x04
510 } VfwCaptureDialogs;
511 typedef enum {
512         VfwCompressDialog_Config = 0x01,
513         VfwCompressDialog_About = 0x02,
514         VfwCompressDialog_QueryConfig = 0x04,
515         VfwCompressDialog_QueryAbout = 0x08
516 } VfwCompressDialogs;
517 typedef enum tagVideoControlFlags {
518         VideoControlFlag_FlipHorizontal = 0x0001,
519         VideoControlFlag_FlipVertical = 0x0002,
520         VideoControlFlag_ExternalTriggerEnable = 0x0004,
521         VideoControlFlag_Trigger = 0x0008
522 } VideoControlFlags;
523 typedef enum {
524         ConstantBitRate = 0,
525         VariableBitRateAverage,
526         VariableBitRatePeak
527 } VIDEOENCODER_BITRATE_MODE;
528 typedef enum tagVideoProcAmpFlags {
529         VideoProcAmp_Flags_Auto = 0x0001,
530         VideoProcAmp_Flags_Manual = 0x0002
531 } VideoProcAmpFlags;
532 typedef enum tagVideoProcAmpProperty {
533         VideoProcAmp_Brightness,
534         VideoProcAmp_Contrast,
535         VideoProcAmp_Hue,
536         VideoProcAmp_Saturation,
537         VideoProcAmp_Sharpness,
538         VideoProcAmp_Gamma,
539         VideoProcAmp_ColorEnable,
540         VideoProcAmp_WhiteBalance,
541         VideoProcAmp_BacklightCompensation,
542         VideoProcAmp_Gain
543 } VideoProcAmpProperty;
544 enum VMR_ASPECT_RATIO_MODE {
545         VMR_ARMODE_NONE,
546         VMR_ARMODE_LETTER_BOX
547 };
548 typedef enum {
549         DeinterlacePref_NextBest = 0x01,
550         DeinterlacePref_BOB = 0x02,
551         DeinterlacePref_Weave = 0x04,
552         DeinterlacePref_Mask = 0x07
553 } VMRDeinterlacePrefs;
554 typedef enum {
555         DeinterlaceTech_Unknown = 0x0000,
556         DeinterlaceTech_BOBLineReplicate = 0x0001,
557         DeinterlaceTech_BOBVerticalStretch = 0x0002,
558         DeinterlaceTech_MedianFiltering = 0x0004,
559         DeinterlaceTech_EdgeFiltering = 0x0010,
560         DeinterlaceTech_FieldAdaptive = 0x0020,
561         DeinterlaceTech_PixelAdaptive = 0x0040,
562         DeinterlaceTech_MotionVectorSteered = 0x0080
563 } VMRDeinterlaceTech;
564 typedef enum {
565         MixerPref_NoDecimation = 0x00000001,
566         MixerPref_DecimateOutput = 0x00000002,
567         MixerPref_ARAdjustXorY = 0x00000004,
568         MixerPref_DecimationReserved = 0x00000008,
569         MixerPref_DecimateMask = 0x0000000F,
570         MixerPref_BiLinearFiltering = 0x00000010,
571         MixerPref_PointFiltering = 0x00000020,
572         MixerPref_FilteringMask = 0x000000F0,
573         MixerPref_RenderTargetRGB = 0x00000100,
574         MixerPref_RenderTargetYUV = 0x00001000,
575         MixerPref_RenderTargetYUV420 = 0x00000200,
576         MixerPref_RenderTargetYUV422 = 0x00000400,
577         MixerPref_RenderTargetYUV444 = 0x00000800,
578         MixerPref_RenderTargetReserved = 0x0000E000,
579         MixerPref_RenderTargetMask = 0x0000FF00,
580         MixerPref_DynamicSwitchToBOB = 0x00010000,
581         MixerPref_DynamicDecimateBy2 = 0x00020000,
582         MixerPref_DynamicReserved = 0x000C0000,
583         MixerPref_DynamicMask = 0x000F0000
584 } VMRMixerPrefs;
585 enum VMRMode {
586         VMRMode_Windowed = 0x00000001,
587         VMRMode_Windowless = 0x00000002,
588         VMRMode_Renderless = 0x00000004,
589         VMRMode_Mask = 0x00000007
590 };
591 typedef enum {
592         VMRSample_SyncPoint = 0x00000001,
593         VMRSample_Preroll = 0x00000002,
594         VMRSample_Discontinuity = 0x00000004,
595         VMRSample_TimeValid = 0x00000008
596 } VMRPresentationFlags;
597 typedef enum {
598         RenderPrefs_ForceOffscreen = 0x00000001,
599         RenderPrefs_ForceOverlays = 0x00000002,
600         RenderPrefs_AllowOverlays = 0x00000000,
601         RenderPrefs_AllowOffscreen = 0x00000000,
602         RenderPrefs_DoNotRenderColorKeyAndBorder = 0x00000008,
603         RenderPrefs_RestrictToInitialMonitor = 0x00000010,
604         RenderPrefs_PreferAGPMemWhenMixing = 0x00000020,
605         RenderPrefs_Mask = 0x0000003f
606 } VMRRenderPrefs;
607 typedef enum {
608         AMAP_PIXELFORMAT_VALID = 0x01,
609         AMAP_3D_TARGET = 0x02,
610         AMAP_ALLOW_SYSMEM = 0x04,
611         AMAP_FORCE_SYSMEM = 0x08,
612         AMAP_DIRECTED_FLIP = 0x10,
613         AMAP_DXVA_TARGET = 0x20
614 } VMRSurfaceAllocationFlags;
615 /*--- DirectShow Reference - DirectShow Structures */
616 typedef struct _AllocatorProperties {
617         long cBuffers;
618         long cbBuffer;
619         long cbAlign;
620         long cbPrefix;
621 } ALLOCATOR_PROPERTIES;
622 typedef struct {
623         HRESULT hrVPEStatus;
624         BOOL bDvdVolInvalid;
625         BOOL bDvdVolUnknown;
626         BOOL bNoLine21In;
627         BOOL bNoLine21Out;
628         int iNumStreams;
629         int iNumStreamsFailed;
630         DWORD dwFailedStreamsFlag;
631 } AM_DVD_RENDERSTATUS;
632 typedef struct _AMCOPPCommand {
633         GUID macKDI;
634         GUID guidCommandID;
635         DWORD dwSequence;
636         DWORD cbSizeData;
637         BYTE CommandData[4056];
638 } AMCOPPCommand,*LPAMCOPPCommand;
639 typedef struct _AMCOPPSignature {
640         BYTE Signature[256];
641 } AMCOPPSignature;
642 typedef struct _AMCOPPStatusInput {
643         GUID rApp;
644         GUID guidStatusRequestID;
645         DWORD dwSequence;
646         DWORD cbSizeData;
647         BYTE StatusData[4056];
648 } AMCOPPStatusInput,*LPAMCOPPStatusInput;
649 typedef struct _AMCOPPStatusOutput {
650         GUID macKDI;
651         DWORD cbSizeData;
652         BYTE COPPStatus[4076];
653 } AMCOPPStatusOutput,*LPAMCOPPStatusOutput;
654 typedef struct _AMMediaType {
655         GUID majortype;
656         GUID subtype;
657         BOOL bFixedSizeSamples;
658         BOOL bTemporalCompression;
659         ULONG lSampleSize;
660         GUID formattype;
661         IUnknown *pUnk;
662         ULONG cbFormat;
663         BYTE *pbFormat;
664 } AM_MEDIA_TYPE;
665 typedef struct tagAM_SAMPLE2_PROPERTIES {
666         DWORD cbData;
667         DWORD dwTypeSpecificFlags;
668         DWORD dwSampleFlags;
669         LONG lActual;
670         REFERENCE_TIME tStart;
671         REFERENCE_TIME tStop;
672         DWORD dwStreamId;
673         AM_MEDIA_TYPE *pMediaType;
674         BYTE *pbBuffer;
675         LONG cbBuffer;
676 } AM_SAMPLE2_PROPERTIES;
677 typedef struct {
678         REFERENCE_TIME tStart;
679         REFERENCE_TIME tStop;
680         DWORD dwStartCookie;
681         DWORD dwStopCookie;
682         DWORD dwFlags;
683 } AM_STREAM_INFO;
684 typedef struct {
685         const CLSID *clsMajorType;
686         const CLSID *clsMinorType;
687 } REGPINTYPES;
688 typedef REGPINTYPES AMOVIESETUP_MEDIATYPE,*PAMOVIESETUP_MEDIATYPE,*LPAMOVIESETUP_MEDIATYPE;
689 typedef struct {
690         LPWSTR strName;
691         BOOL bRendered;
692         BOOL bOutput;
693         BOOL bZero;
694         BOOL bMany;
695         const CLSID *clsConnectsToFilter;
696         const WCHAR *strConnectsToPin;
697         UINT nMediaTypes;
698         const REGPINTYPES *lpMediaType;
699 } REGFILTERPINS;
700 typedef REGFILTERPINS AMOVIESETUP_PIN,*PAMOVIESETUP_PIN,*LPAMOVIESETUP_PIN;
701 typedef struct _AMOVIESETUP_FILTER {
702         const CLSID *clsID;
703         const WCHAR *strName;
704         DWORD dwMerit;
705         UINT nPins;
706         const AMOVIESETUP_PIN *lpPin;
707 } AMOVIESETUP_FILTER,*PAMOVIESETUP_FILTER,*LPAMOVIESETUP_FILTER;
708 typedef struct _AUDIO_STREAM_CONFIG_CAPS {
709         GUID guid;
710         ULONG MinimumChannels;
711         ULONG MaximumChannels;
712         ULONG ChannelsGranularity;
713         ULONG MinimumBitsPerSample;
714         ULONG MaximumBitsPerSample;
715         ULONG BitsPerSampleGranularity;
716         ULONG MinimumSampleFrequency;
717         ULONG MaximumSampleFrequency;
718         ULONG SampleFrequencyGranularity;
719 } AUDIO_STREAM_CONFIG_CAPS;
720 struct CodecAPIEventData {
721         GUID guid;
722         DWORD dataLength;
723         DWORD reserved[3];
724 };
725 typedef struct tagCOLORKEY {
726         DWORD KeyType;
727         DWORD PaletteIndex;
728         COLORREF LowColorValue;
729         COLORREF HighColorValue;
730 } COLORKEY;
731 #define CK_NOCOLORKEY 0x00000000
732 #define CK_INDEX 0x00000001
733 #define CK_RGB 0x00000002
734 typedef struct {
735         DWORD dw1;
736         DWORD dw2;
737 } DDCOLORKEY;
738 typedef struct tagDVD_AudioAttributes {
739         DVD_AUDIO_APPMODE AppMode;
740         DVD_AUDIO_FORMAT AudioFormat;
741         LCID Language;
742         DVD_AUDIO_LANG_EXT LanguageExtension;
743         BOOL fHasMultichannelInfo;
744         DWORD dwFrequency;
745         BYTE bQuantization;
746         BYTE bNumberOfChannels;
747         DWORD dwReserved[2];
748 } DVD_AudioAttributes;
749 typedef struct tagDVD_DECODER_CAPS {
750         DWORD dwSize;
751         DWORD dwAudioCaps;
752         double dFwdMaxRateVideo;
753         double dFwdMaxRateAudio;
754         double dFwdMaxRateSP;
755         double dBwdMaxRateVideo;
756         double dBwdMaxRateAudio;
757         double dBwdMaxRateSP;
758         DWORD dwRes1;
759         DWORD dwRes2;
760         DWORD dwRes3;
761         DWORD dwRes4;
762 } DVD_DECODER_CAPS;
763 #define DVD_AUDIO_CAPS_AC3 0x00000001
764 #define DVD_AUDIO_CAPS_MPEG2 0x00000002
765 #define DVD_AUDIO_CAPS_LPCM 0x00000004
766 #define DVD_AUDIO_CAPS_DTS 0x00000008
767 #define DVD_AUDIO_CAPS_SDDS 0x00000010
768 typedef struct tagDVD_HMSF_TIMECODE {
769         BYTE bHours;
770         BYTE bMinutes;
771         BYTE bSeconds;
772         BYTE bFrames;
773 } DVD_HMSF_TIMECODE;
774 typedef struct tagDVD_KaraokeAttributes {
775         BYTE bVersion;
776         BOOL fMasterOfCeremoniesInGuideVocal1;
777         BOOL fDuet;
778         DVD_KARAOKE_ASSIGNMENT ChannelAssignment;
779         WORD wChannelContents[8];
780 } DVD_KaraokeAttributes;
781 typedef struct tagDVD_MUA_Coeff {
782         double log2_alpha;
783         double log2_beta;
784 } DVD_MUA_Coeff;
785 typedef struct tagDVD_MUA_MixingInfo {
786         BOOL fMixTo0;
787         BOOL fMixTo1;
788         BOOL fMix0InPhase;
789         BOOL fMix1InPhase;
790         DWORD dwSpeakerPosition;
791 } DVD_MUA_MixingInfo;
792 #define KSAUDIO_SPEAKER_LEFT 0x00000001
793 #define KSAUDIO_SPEAKER_RIGHT 0x00000002
794 #define KSAUDIO_SPEAKER_CENTER 0x00000004
795 #define KSAUDIO_SPEAKER_SURROUND_LEFT 0x00000008
796 #define KSAUDIO_SPEAKER_SURROUND_RIGHT 0x00000010
797 #define KSAUDIO_SPEAKER_SUBWOOFER 0x00000020
798 #define KSAUDIO_SPEAKER_LEFT_OF_CENTER 0x00000040
799 #define KSAUDIO_SPEAKER_RIGHT_OF_CENTER 0x00000080
800 #define KSAUDIO_SPEAKER_SURROUND_MONO 0x00000100
801 #define KSAUDIO_SPEAKER_SIDE_LEFT 0x00000200
802 #define KSAUDIO_SPEAKER_SIDE_RIGHT 0x00000400
803 #define KSAUDIO_SPEAKER_TOP 0x00000800
804 typedef struct tagDVD_MultichannelAudioAttributes {
805         DVD_MUA_MixingInfo Info[8];
806         DVD_MUA_Coeff Coeff[8];
807 } DVD_MultichannelAudioAttributes;
808 typedef struct tagDVD_PLAYBACK_LOCATION {
809         ULONG TitleNum;
810         ULONG ChapterNum;
811         ULONG TimeCode;
812 } DVD_PLAYBACK_LOCATION;
813 typedef struct tagDVD_PLAYBACK_LOCATION2 {
814         ULONG TitleNum;
815         ULONG ChapterNum;
816         DVD_HMSF_TIMECODE TimeCode;
817         ULONG TimeCodeFlags;
818 } DVD_PLAYBACK_LOCATION2;
819 typedef struct tagDVD_SubpictureAttributes {
820         DVD_SUBPICTURE_TYPE Type;
821         DVD_SUBPICTURE_CODING CodingMode;
822         LCID Language;
823         DVD_SUBPICTURE_LANG_EXT LanguageExtension;
824 } DVD_SubpictureAttributes;
825 typedef struct tagDVD_TIMECODE {
826         ULONG Hours1:4;
827         ULONG Hours10:4;
828         ULONG Minutes1:4;
829         ULONG Minutes10:4;
830         ULONG Seconds1:4;
831         ULONG Seconds10:4;
832         ULONG Frames1:4;
833         ULONG Frames10:2;
834         ULONG FrameRateCode:2;
835 } DVD_TIMECODE;
836 typedef struct tagDVD_VideoAttributes {
837         BOOL fPanscanPermitted;
838         BOOL fLetterboxPermitted;
839         ULONG ulAspectX;
840         ULONG ulAspectY;
841         ULONG ulFrameRate;
842         ULONG ulFrameHeight;
843         DVD_VIDEO_COMPRESSION Compression;
844         BOOL fLine21Field1InGOP;
845         BOOL fLine21Field2InGOP;
846         ULONG ulSourceResolutionX;
847         ULONG ulSourceResolutionY;
848         BOOL fIsSourceLetterboxed;
849         BOOL fIsFilmMode;
850 } DVD_VideoAttributes;
851 struct tagDVD_MenuAttributes {
852         BOOL fCompatibleRegion[8];
853         DVD_VideoAttributes VideoAttributes;
854         BOOL fAudioPresent;
855         DVD_AudioAttributes AudioAttributes;
856         BOOL fSubpicturePresent;
857         DVD_SubpictureAttributes SubpictureAttributes;
858 } DVD_MenuAttributes;
859 typedef struct tagDVD_TitleMainAttributes {
860         DVD_TITLE_APPMODE AppMode;
861         DVD_VideoAttributes VideoAttributes;
862         ULONG ulNumberOfAudioStreams;
863         DVD_AudioAttributes AudioAttributes[8];
864         DVD_MultichannelAudioAttributes MultichannelAudioAttributes[8];
865         ULONG ulNumberOfSubpictureStreams;
866         DVD_SubpictureAttributes SubpictureAttributes[32];
867 } DVD_TitleAttributes;
868 typedef struct tag_DVINFO {
869         DWORD dwDVAAuxSrc;
870         DWORD dwDVAAuxCtl;
871         DWORD dwDVAAuxSrc1;
872         DWORD dwDVAAuxCtl1;
873         DWORD dwDVVAuxSrc;
874         DWORD dwDVVAuxCtl;
875         DWORD dwDVReserved[2];
876 } DVINFO,*PDVINFO;
877 /***************
878 #define MAX_FILTER_NAME 128
879 typedef struct _FilterInfo {
880         WCHAR achName[MAX_FILTER_NAME];
881         IFilterGraph *pGraph;
882 } FILTER_INFO;
883 ***************/
884 typedef struct _NORMALIZEDRECT {
885         float left;
886         float top;
887         float right;
888         float bottom;
889 } NORMALIZEDRECT,*PNORMALIZEDRECT;
890 #define MAX_PIN_NAME 128
891 typedef struct _PinInfo {
892         IBaseFilter *pFilter;
893         PIN_DIRECTION dir;
894         WCHAR achName[MAX_PIN_NAME];
895 } PIN_INFO;
896 typedef struct{
897         QualityMessageType Type;
898         long Proportion;
899         REFERENCE_TIME Late;
900         REFERENCE_TIME TimeStamp;
901 } Quality;
902 typedef struct {
903         CLSID clsMedium;
904         DWORD dw1;
905         DWORD dw2;
906 } REGPINMEDIUM;
907 typedef struct {
908         DWORD dwFlags;
909         UINT cInstances;
910         UINT nMediaTypes;
911         const REGPINTYPES *lpMediaType;
912         UINT nMediums;
913         const REGPINMEDIUM *lpMedium;
914         const CLSID *clsPinCategory;
915 } REGFILTERPINS2;
916 typedef struct {
917         DWORD dwVersion;
918         DWORD dwMerit;
919         union {
920                 struct {
921                         ULONG cPins;
922                         const REGFILTERPINS *rgPins;
923                 };
924                 struct {
925                         ULONG cPins2;
926                         const REGFILTERPINS2 *rgPins2;
927                 };
928         };
929 } REGFILTER2;
930 typedef struct {
931         ULONG stream_id;
932         DWORD dwMediaSampleContent;
933         ULONG ulSubstreamFilterValue;
934         int iDataOffset;
935 } STREAM_ID_MAP;
936 #define MPEG2_PROGRAM_STREAM_MAP 0x00000000
937 #define MPEG2_PROGRAM_ELEMENTARY_STREAM 0x00000001
938 #define MPEG2_PROGRAM_DIRECTORY_PES_PACKET 0x00000002
939 #define MPEG2_PROGRAM_PACK_HEADER 0x00000003
940 #define MPEG2_PROGRAM_PES_STREAM 0x00000004
941 #define MPEG2_PROGRAM_SYSTEM_HEADER 0x00000005
942 #define SUBSTREAM_FILTER_VAL_NONE 0x10000000
943 typedef struct tagTIMECODE {
944         WORD wFrameRate;
945         WORD wFrameFract;
946         DWORD dwFrames;
947 } TIMECODE;
948 #define ED_FORMAT_SMPTE_30 0x00001196
949 #define ED_FORMAT_SMPTE_30DROP 0x00001197
950 #define ED_FORMAT_SMPTE_25 0x00001198
951 #define ED_FORMAT_SMPTE_24 0x00001199
952 typedef struct tagTIMECODE_SAMPLE {
953         LONGLONG qwTick;
954         TIMECODE timecode;
955         DWORD dwUser;
956         DWORD dwFlags;
957 } TIMECODE_SAMPLE;
958 /*#define AM_TIMECODE_FLAG_FCM */
959 /*#define AM_TIMECODE_FLAG_CF */
960 /*#define AM_TIMECODE_FLAG_FIELD */
961 /*#define AM_TIMECODE_FLAG_DF */
962 /*#define AM_TIMECODE_COLORFRAME */
963 /*#define AM_TIMECODE_COLORSEQUENCE */
964 /*#define AM_TIMECODE_FILMSEQUENCE_TYPE */
965 typedef struct _VIDEO_STREAM_CONFIG_CAPS {
966         GUID guid;
967         ULONG VideoStandard;
968         SIZE InputSize;
969         SIZE MinCroppingSize;
970         SIZE MaxCroppingSize;
971         int CropGranularityX;
972         int CropGranularityY;
973         int CropAlignX;
974         int CropAlignY;
975         SIZE MinOutputSize;
976         SIZE MaxOutputSize;
977         int OutputGranularityX;
978         int OutputGranularityY;
979         int StretchTapsX;
980         int StretchTapsY;
981         int ShrinkTapsX;
982         int ShrinkTapsY;
983         LONGLONG MinFrameInterval;
984         LONGLONG MaxFrameInterval;
985         LONG MinBitsPerSecond;
986         LONG MaxBitsPerSecond;
987 } VIDEO_STREAM_CONFIG_CAPS;
988 typedef struct tagVMRALLOCATIONINFO {
989         DWORD dwFlags;
990         LPBITMAPINFOHEADER lpHdr;
991         LPDDPIXELFORMAT lpPixFmt;
992         SIZE szAspectRatio;
993         DWORD dwMinBuffers;
994         DWORD dwMaxBuffers;
995         DWORD dwInterlaceFlags;
996         SIZE szNativeSize;
997 } VMRALLOCATIONINFO;
998 /**********
999 typedef struct _VMRALPHABITMAP {
1000         DWORD dwFlags;
1001         HDC hdc;
1002         LPDIRECTDRAWSURFACE7 pDDS;
1003         RECT rSrc;
1004         NORMALIZEDRECT rDest;
1005         FLOAT fAlpha;
1006         COLORREF clrSrcKey;
1007 } VMRALPHABITMAP,*PVMRALPHABITMAP;
1008 **********/
1009 #define VMRBITMAP_DISABLE 0x00000001
1010 #define VMRBITMAP_HDC 0x00000002
1011 #define VMRBITMAP_ENTIREDDS 0x00000004
1012 #define VMRBITMAP_SRCCOLORKEY 0x00000008
1013 #define VMRBITMAP_SRCRECT 0x00000010
1014 typedef struct _VMRDeinterlaceCaps {
1015         DWORD dwSize;
1016         DWORD dwNumPreviousOutputFrames;
1017         DWORD dwNumForwardRefSamples;
1018         DWORD dwNumBackwardRefSamples;
1019         VMRDeinterlaceTech DeinterlaceTechnology;
1020 } VMRDeinterlaceCaps;
1021 typedef struct _VMRFrequency {
1022         DWORD dwNumerator;
1023         DWORD dwDenominator;
1024 } VMRFrequency;
1025 typedef struct tagVMRGUID {
1026         GUID *pGUID;
1027         GUID GUID;
1028 } VMRGUID;
1029 typedef struct tagVMRMONITORINFO {
1030         VMRGUID guid;
1031         RECT rcMonitor;
1032         HMONITOR hMon;
1033         DWORD dwFlags;
1034         wchar_t szDevice[32];
1035         wchar_t szDescription[256];
1036 } VMRMONITORINFO;
1037 /**********
1038 typedef struct tagVMRPRESENTATIONINFO {
1039         DWORD dwFlags;
1040         LPDIRECTDRAWSURFACE7 lpSurf;
1041         REFERENCE_TIME rtStart;
1042         REFERENCE_TIME rtEnd;
1043         SIZE szAspectRatio;
1044         RECT rcSrc;
1045         RECT rcDst;
1046         DWORD dwTypeSpecificFlags;
1047         DWORD dwInterlaceFlags;
1048 } VMRPRESENTATIONINFO;
1049 **********/
1050 typedef struct _VMRVideoDesc {
1051         DWORD dwSize;
1052         DWORD dwSampleWidth;
1053         DWORD dwSampleHeight;
1054         BOOL SingleFieldPerSample;
1055         DWORD dwFourCC;
1056         VMRFrequency InputSampleFreq;
1057         VMRFrequency OutputFrameFreq;
1058 } VMRVideoDesc;
1059 /**********
1060 typedef struct _VMRVIDEOSTREAMINFO {
1061         LPDIRECTDRAWSURFACE7 pddsVideoSurface;
1062         DWORD dwWidth;
1063         DWORD dwHeight;
1064         DWORD dwStrmID;
1065         FLOAT fAlpha;
1066         DDCOLORKEY ddClrKey;
1067         NORMALIZEDRECT rNormal;
1068 } VMRVIDEOSTREAMINFO;
1069 **********/
1070 /*--- DirectShow Reference - Interfaces */
1071 #define INTERFACE IAMAnalogVideoDecoder
1072 DECLARE_INTERFACE_(IAMAnalogVideoDecoder, IUnknown)
1073 {
1074         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1075         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1076         STDMETHOD_(ULONG,Release)(THIS) PURE;
1077         STDMETHOD_(HRESULT,get_AvailableTVFormats)(THIS_ long*) PURE;
1078         STDMETHOD_(HRESULT,get_HorizontalLocked)(THIS_ long*) PURE;
1079         STDMETHOD_(HRESULT,get_NumberOfLines)(THIS_ long*) PURE;
1080         STDMETHOD_(HRESULT,get_OutputEnable)(THIS_ long*) PURE;
1081         STDMETHOD_(HRESULT,get_TVFormat)(THIS_ long*) PURE;
1082         STDMETHOD_(HRESULT,get_VCRHorizontalLocking)(THIS_ long*) PURE;
1083         STDMETHOD_(HRESULT,put_OutputEnable)(THIS_ long) PURE;
1084         STDMETHOD_(HRESULT,put_TVFormat)(THIS_ long) PURE;
1085         STDMETHOD_(HRESULT,put_VCRHorizontalLocking)(THIS_ long) PURE;
1086 };
1087 #undef INTERFACE
1088 #define INTERFACE IAMAudioInputMixer
1089 DECLARE_INTERFACE_(IAMAudioInputMixer, IUnknown)
1090 {
1091         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1092         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1093         STDMETHOD_(ULONG,Release)(THIS) PURE;
1094         STDMETHOD_(HRESULT,get_Bass)(THIS_ double*) PURE;
1095         STDMETHOD_(HRESULT,get_BassRange)(THIS_ double*) PURE;
1096         STDMETHOD_(HRESULT,get_Enable)(THIS_ BOOL*) PURE;
1097         STDMETHOD_(HRESULT,get_Loudness)(THIS_ BOOL*) PURE;
1098         STDMETHOD_(HRESULT,get_MixLevel)(THIS_ double*) PURE;
1099         STDMETHOD_(HRESULT,get_Mono)(THIS_ BOOL*) PURE;
1100         STDMETHOD_(HRESULT,get_Pan)(THIS_ double*) PURE;
1101         STDMETHOD_(HRESULT,get_Treble)(THIS_ double*) PURE;
1102         STDMETHOD_(HRESULT,get_TrebleRange)(THIS_ double*) PURE;
1103         STDMETHOD_(HRESULT,put_Bass)(THIS_ double) PURE;
1104         STDMETHOD_(HRESULT,put_Enable)(THIS_ BOOL) PURE;
1105         STDMETHOD_(HRESULT,put_Loudness)(THIS_ BOOL) PURE;
1106         STDMETHOD_(HRESULT,put_MixLevel)(THIS_ double) PURE;
1107         STDMETHOD_(HRESULT,put_Mono)(THIS_ BOOL) PURE;
1108         STDMETHOD_(HRESULT,put_Pan)(THIS_ double) PURE;
1109         STDMETHOD_(HRESULT,put_Treble)(THIS_ double) PURE;
1110 };
1111 #undef INTERFACE
1112 #define INTERFACE IAMAudioRendererStats
1113 DECLARE_INTERFACE_(IAMAudioRendererStats, IUnknown)
1114 {
1115         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1116         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1117         STDMETHOD_(ULONG,Release)(THIS) PURE;
1118         STDMETHOD_(HRESULT,GetStatParam)(THIS_ DWORD,DWORD*,DWORD*) PURE;
1119 };
1120 #undef INTERFACE
1121 #define INTERFACE IAMBufferNegotiation
1122 DECLARE_INTERFACE_(IAMBufferNegotiation, IUnknown)
1123 {
1124         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1125         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1126         STDMETHOD_(ULONG,Release)(THIS) PURE;
1127         STDMETHOD_(HRESULT,GetAllocatorProperties)(THIS_ ALLOCATOR_PROPERTIES*) PURE;
1128         STDMETHOD_(HRESULT,SuggestAllocatorProperties)(THIS_ const ALLOCATOR_PROPERTIES*) PURE;
1129 };
1130 #undef INTERFACE
1131 #define INTERFACE IAMCameraControl
1132 DECLARE_INTERFACE_(IAMCameraControl, IUnknown)
1133 {
1134         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1135         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1136         STDMETHOD_(ULONG,Release)(THIS) PURE;
1137         STDMETHOD_(HRESULT,Get)(THIS_ long,long*,long*) PURE;
1138         STDMETHOD_(HRESULT,GetRange)(THIS_ long,long*,long*,long*,long*,long*) PURE;
1139         STDMETHOD_(HRESULT,Set)(THIS_ long,long,long) PURE;
1140 };
1141 #undef INTERFACE
1142
1143 #define INTERFACE IAMCertifiedOutputProtection
1144 DECLARE_INTERFACE_(IAMCertifiedOutputProtection, IUnknown)
1145 {
1146         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1147         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1148         STDMETHOD_(ULONG,Release)(THIS) PURE;
1149         STDMETHOD_(HRESULT,KeyExchange)(THIS_ GUID*,BYTE**,DWORD*) PURE;
1150         STDMETHOD_(HRESULT,ProtectionCommand)(THIS_ const AMCOPPCommand*) PURE;
1151         STDMETHOD_(HRESULT,ProtectionStatus)(THIS_ const AMCOPPStatusInput*,AMCOPPStatusOutput*) PURE;
1152         STDMETHOD_(HRESULT,SessionSequenceStart)(THIS_ const AMCOPPSignature*) PURE;
1153 };
1154 #undef INTERFACE
1155
1156 #ifdef __cplusplus
1157 }
1158 #endif
1159 #endif