3 * @copy 2012 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 #pragma GCC system_header
33 /*--- DirectShow Reference - DirectShow Enumerated Types - TVAudioMode Enumeration */
34 #define TVAUDIO_MODE_MASK 0x000000FF
35 #define TVAUDIO_PRESET_MASK 0x0000FF00
36 /*--- DirectShow Reference - DirectShow Data Types */
37 typedef LONGLONG REFERENCE_TIME;
38 typedef double REFTIME;
39 /*--- DirectShow Reference - Constants and GUIDs */
41 MERIT_PREFERRED = 0x800000,
42 MERIT_NORMAL = 0x600000,
43 MERIT_UNLIKELY = 0x400000,
44 MERIT_DO_NOT_USE = 0x200000,
45 MERIT_SW_COMPRESSOR = 0x100000,
46 MERIT_HW_COMPRESSOR = 0x100050
48 /*--- DirectShow Reference - DirectShow Enumerated Types */
49 typedef enum _AM_AUDIO_RENDERER_STAT_PARAM {
50 AM_AUDREND_STAT_PARAM_BREAK_COUNT = 1,
51 AM_AUDREND_STAT_PARAM_SLAVE_MODE,
52 AM_AUDREND_STAT_PARAM_SILENCE_DUR,
53 AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR,
54 AM_AUDREND_STAT_PARAM_DISCONTINUITIES,
55 AM_AUDREND_STAT_PARAM_SLAVE_RATE,
56 AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR,
57 AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR,
58 AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR,
59 AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR,
60 AM_AUDREND_STAT_PARAM_BUFFERFULLNESS,
61 AM_AUDREND_STAT_PARAM_JITTER
62 } AM_AUDIO_RENDERER_STAT_PARAM;
63 typedef enum _AM_DVD_GRAPH_FLAGS {
64 AM_DVD_HWDEC_PREFER = 0x01,
65 AM_DVD_HWDEC_ONLY = 0x02,
66 AM_DVD_SWDEC_PREFER = 0x04,
67 AM_DVD_SWDEC_ONLY = 0x08,
69 AM_DVD_VMR9_ONLY = 0x800,
70 AM_DVD_EVR_ONLY = 0x1000
72 typedef enum _AM_DVD_STREAM_FLAGS {
73 AM_DVD_STREAM_VIDEO = 0x01,
74 AM_DVD_STREAM_AUDIO = 0x02,
75 AM_DVD_STREAM_SUBPIC = 0x04
76 } AM_DVD_STREAM_FLAGS;
77 typedef enum _AM_FILTER_MISC_FLAGS {
78 AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x00000001,
79 AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x00000002
80 } AM_FILTER_MISC_FLAGS;
81 typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS {
82 AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001,
83 AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002,
84 AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004
85 } AM_GRAPH_CONFIG_RECONNECT_FLAGS;
86 typedef enum _AM_INTF_SEARCH_FLAGS {
87 AM_INTF_SEARCH_INPUT_PIN = 0x00000001,
88 AM_INTF_SEARCH_OUTPUT_PIN = 0x00000002,
89 AM_INTF_SEARCH_FILTER = 0x00000004
90 } AM_INTF_SEARCH_FLAGS;
91 typedef enum _AM_OVERLAY_NOTIFY_FLAGS {
92 AM_OVERLAY_NOTIFY_VISIBLE_CHANGE = 0x00000001,
93 AM_OVERLAY_NOTIFY_SOURCE_CHANGE = 0x00000002,
94 AM_OVERLAY_NOTIFY_DEST_CHANGE = 0x00000004
95 } AM_OVERLAY_NOTIFY_FLAGS;
96 typedef enum _AM_PIN_CONNECTION_BLOCK_FLAGS {
97 AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001,
98 AM_PIN_PUSH_THROUGH_DATA = 0x00000002
99 } AM_PIN_CONNECTION_BLOCK_FLAGS;
100 typedef enum _AM_PUSHSOURCE_FLAGS {
101 AM_PUSHSOURCECAPS_INTERNAL_RM = 0x00000001,
102 AM_PUSHSOURCECAPS_NOT_LIVE = 0x00000002,
103 AM_PUSHSOURCECAPS_PRIVATE_CLOCK = 0x00000004,
104 AM_PUSHSOURCEREQS_USE_STREAM_CLOCK = 0x00010000
105 } AM_PUSHSOURCE_FLAGS;
106 typedef enum tagAM_SAMPLE_PROPERTY_FLAGS {
107 AM_SAMPLE_SPLICEPOINT = 0x01,
108 AM_SAMPLE_PREROLL = 0x02,
109 AM_SAMPLE_DATADISCONTINUITY = 0x04,
110 AM_SAMPLE_TYPECHANGED = 0x08,
111 AM_SAMPLE_TIMEVALID = 0x10,
112 AM_SAMPLE_TIMEDISCONTINUITY = 0x40,
113 AM_SAMPLE_FLUSH_ON_PAUSE = 0x80,
114 AM_SAMPLE_STOPVALID = 0x100,
115 AM_SAMPLE_ENDOFSTREAM = 0x200,
117 AM_STREAM_CONTROL = 1
118 } AM_SAMPLE_PROPERTY_FLAGS;
119 typedef enum AM_SEEKING_SeekingCapabilities {
120 AM_SEEKING_CanSeekAbsolute = 0x1,
121 AM_SEEKING_CanSeekForwards = 0x2,
122 AM_SEEKING_CanSeekBackwards = 0x4,
123 AM_SEEKING_CanGetCurrentPos = 0x8,
124 AM_SEEKING_CanGetStopPos = 0x10,
125 AM_SEEKING_CanGetDuration = 0x20,
126 AM_SEEKING_CanPlayBackwards = 0x40,
127 AM_SEEKING_CanDoSegments = 0x80,
128 AM_SEEKING_Source = 0x100
129 } AM_SEEKING_SEEKING_CAPABILITIES;
131 AM_STREAM_INFO_START_DEFINED = 0x00000001,
132 AM_STREAM_INFO_STOP_DEFINED = 0x00000002,
133 AM_STREAM_INFO_DISCARDING = 0x00000004,
134 AM_STREAM_INFO_STOP_SEND_EXTRA = 0x00000010
135 } AM_STREAM_INFO_FLAGS;
137 AMOVERFX_NOFX = 0x00000000,
138 AMOVERFX_MIRRORLEFTRIGHT = 0x00000002,
139 AMOVERFX_MIRRORUPDOWN = 0x00000004,
140 AMOVERFX_DEINTERLACE = 0x00000008
142 typedef enum _AMRESCTL_RESERVEFLAGS {
143 AMRESCTL_RESERVEFLAGS_RESERVE = 0x00,
144 AMRESCTL_RESERVEFLAGS_UNRESERVE = 0x01
145 } AMRESCTL_RESERVEFLAGS;
146 typedef enum tagAMTunerModeType {
147 AMTUNER_MODE_DEFAULT = 0x0000,
148 AMTUNER_MODE_TV = 0x0001,
149 AMTUNER_MODE_FM_RADIO = 0x0002,
150 AMTUNER_MODE_AM_RADIO = 0x0004,
151 AMTUNER_MODE_DSS = 0x0008
153 typedef enum tagAnalogVideoStandard {
154 AnalogVideo_None = 0x00000000,
155 AnalogVideo_NTSC_M = 0x00000001,
156 AnalogVideo_NTSC_M_J = 0x00000002,
157 AnalogVideo_NTSC_433 = 0x00000004,
158 AnalogVideo_PAL_B = 0x00000010,
159 AnalogVideo_PAL_D = 0x00000020,
160 AnalogVideo_PAL_H = 0x00000080,
161 AnalogVideo_PAL_I = 0x00000100,
162 AnalogVideo_PAL_M = 0x00000200,
163 AnalogVideo_PAL_N = 0x00000400,
164 AnalogVideo_PAL_60 = 0x00000800,
165 AnalogVideo_SECAM_B = 0x00001000,
166 AnalogVideo_SECAM_D = 0x00002000,
167 AnalogVideo_SECAM_G = 0x00004000,
168 AnalogVideo_SECAM_H = 0x00008000,
169 AnalogVideo_SECAM_K = 0x00010000,
170 AnalogVideo_SECAM_K1 = 0x00020000,
171 AnalogVideo_SECAM_L = 0x00040000,
172 AnalogVideo_SECAM_L1 = 0x00080000,
173 AnalogVideo_PAL_N_COMBO = 0x00100000
174 } AnalogVideoStandard;
176 CameraControl_Flags_Auto = 0x0001,
177 CameraControl_Flags_Manual = 0x0002
178 } CameraControlFlags;
180 CameraControl_Pan = 1,
184 CameraControl_Exposure,
187 } CameraControlProperty;
189 CompressionCaps_CanQuality = 0x01,
190 CompressionCaps_CanCrunch = 0x02,
191 CompressionCaps_CanKeyFrame = 0x04,
192 CompressionCaps_CanBFrame = 0x08,
193 CompressionCaps_CanWindow = 0x10
197 DECIMATION_USE_DECODER_ONLY,
198 DECIMATION_USE_VIDEOPORT_ONLY,
199 DECIMATION_USE_OVERLAY_ONLY,
202 typedef enum tagDVD_AUDIO_APPMODE {
203 DVD_AudioMode_None = 0,
204 DVD_AudioMode_Karaoke = 1,
205 DVD_AudioMode_Surround = 2,
206 DVD_AudioMode_Other = 3
208 typedef enum tagDVD_AUDIO_FORMAT {
209 DVD_AudioFormat_AC3 = 0,
210 DVD_AudioFormat_MPEG1 = 1,
211 DVD_AudioFormat_MPEG1_DRC = 2,
212 DVD_AudioFormat_MPEG2 = 3,
213 DVD_AudioFormat_MPEG2_DRC = 4,
214 DVD_AudioFormat_LPCM = 5,
215 DVD_AudioFormat_DTS = 6,
216 DVD_AudioFormat_SDDS = 7,
217 DVD_AudioFormat_Other = 8
219 typedef enum tagDVD_AUDIO_LANG_EXT {
220 DVD_AUD_EXT_NotSpecified = 0,
221 DVD_AUD_EXT_Captions = 1,
222 DVD_AUD_EXT_VisuallyImpaired = 2,
223 DVD_AUD_EXT_DirectorComments1 = 3,
224 DVD_AUD_EXT_DirectorComments2 = 4
225 } DVD_AUDIO_LANG_EXT;
227 DVD_CMD_FLAG_None = 0x00000000,
228 DVD_CMD_FLAG_Flush = 0x00000001,
229 DVD_CMD_FLAG_SendEvents = 0x00000002,
230 DVD_CMD_FLAG_Block = 0x00000004,
231 DVD_CMD_FLAG_StartWhenRendered = 0x00000008,
232 DVD_CMD_FLAG_EndAfterRendered = 0x00000010
234 typedef enum tagDVD_DISC_SIDE {
238 typedef enum tagDVD_DOMAIN {
239 DVD_DOMAIN_FirstPlay,
240 DVD_DOMAIN_VideoManagerMenu,
241 DVD_DOMAIN_VideoTitleSetMenu,
245 typedef enum tagDVD_FRAMERATE {
247 DVD_FPS_30NonDrop = 3
249 typedef enum tagDVD_KARAOKE_ASSIGNMENT {
250 DVD_Assignment_reserved0 = 0,
251 DVD_Assignment_reserved1 = 1,
252 DVD_Assignment_LR = 2,
253 DVD_Assignment_LRM = 3,
254 DVD_Assignment_LR1 = 4,
255 DVD_Assignment_LRM1 = 5,
256 DVD_Assignment_LR12 = 6,
257 DVD_Assignment_LRM12 = 7
258 } DVD_KARAOKE_ASSIGNMENT;
259 typedef enum tagDVD_KARAOKE_CONTENTS {
260 DVD_Karaoke_GuideVocal1 = 0x0001,
261 DVD_Karaoke_GuideVocal2 = 0x0002,
262 DVD_Karaoke_GuideMelody1 = 0x0004,
263 DVD_Karaoke_GuideMelody2 = 0x0008,
264 DVD_Karaoke_GuideMelodyA = 0x0010,
265 DVD_Karaoke_GuideMelodyB = 0x0020,
266 DVD_Karaoke_SoundEffectA = 0x0040,
267 DVD_Karaoke_SoundEffectB = 0x0080
268 } DVD_KARAOKE_CONTENTS;
269 typedef enum tagDVD_KARAOKE_DOWNMIX {
270 DVD_Mix_0to0 = 0x0001,
271 DVD_Mix_1to0 = 0x0002,
272 DVD_Mix_2to0 = 0x0004,
273 DVD_Mix_3to0 = 0x0008,
274 DVD_Mix_4to0 = 0x0010,
275 DVD_Mix_Lto0 = 0x0020,
276 DVD_Mix_Rto0 = 0x0040,
277 DVD_Mix_0to1 = 0x0100,
278 DVD_Mix_1to1 = 0x0200,
279 DVD_Mix_2to1 = 0x0400,
280 DVD_Mix_3to1 = 0x0800,
281 DVD_Mix_4to1 = 0x1000,
282 DVD_Mix_Lto1 = 0x2000,
283 DVD_Mix_Rto1 = 0x4000
284 } DVD_KARAOKE_DOWNMIX;
285 typedef enum tagDVD_MENU_ID {
288 DVD_MENU_Subpicture = 4,
295 DVD_NotifyParentalLevelChange = 2,
296 DVD_HMSF_TimeCodeEvents = 3,
297 DVD_AudioDuringFFwdRew = 4,
298 DVD_EnableNonblockingAPIs = 5,
299 DVD_CacheSizeInMB = 6,
300 DVD_EnablePortableBookmarks = 7
302 typedef enum tagDVD_PARENTAL_LEVEL {
303 DVD_PARENTAL_LEVEL_8 = 0x8000,
304 DVD_PARENTAL_LEVEL_7 = 0x4000,
305 DVD_PARENTAL_LEVEL_6 = 0x2000,
306 DVD_PARENTAL_LEVEL_5 = 0x1000,
307 DVD_PARENTAL_LEVEL_4 = 0x0800,
308 DVD_PARENTAL_LEVEL_3 = 0x0400,
309 DVD_PARENTAL_LEVEL_2 = 0x0200,
310 DVD_PARENTAL_LEVEL_1 = 0x0100
311 } DVD_PARENTAL_LEVEL;
312 typedef enum tagDVD_PREFERRED_DISPLAY_MODE {
313 DISPLAY_CONTENT_DEFAULT = 0,
315 DISPLAY_4x3_PANSCAN_PREFERRED = 2,
316 DISPLAY_4x3_LETTERBOX_PREFERRED = 3
317 } DVD_PREFERRED_DISPLAY_MODE;
318 typedef enum tagDVD_RELATIVE_BUTTON {
319 DVD_Relative_Upper = 1,
320 DVD_Relative_Lower = 2,
321 DVD_Relative_Left = 3,
322 DVD_Relative_Right = 4
323 } DVD_RELATIVE_BUTTON;
324 typedef enum tagDVD_SUBPICTURE_LANG_EXT {
325 DVD_SP_EXT_NotSpecified = 0,
326 DVD_SP_EXT_Caption_Normal = 1,
327 DVD_SP_EXT_Caption_Big = 2,
328 DVD_SP_EXT_Caption_Children = 3,
329 DVD_SP_EXT_CC_Normal = 5,
330 DVD_SP_EXT_CC_Big = 6,
331 DVD_SP_EXT_CC_Children = 7,
332 DVD_SP_EXT_Forced = 9,
333 DVD_SP_EXT_DirectorComments_Normal = 13,
334 DVD_SP_EXT_DirectorComments_Big = 14,
335 DVD_SP_EXT_DirectorComments_Children = 15
336 } DVD_SUBPICTURE_LANG_EXT;
337 typedef enum tagDVD_SUBPICTURE_TYPE {
338 DVD_SPType_NotSpecified = 0,
339 DVD_SPType_Language = 1,
341 } DVD_SUBPICTURE_TYPE;
342 typedef enum tagDVD_SUBPICTURE_CODING {
343 DVD_SPCoding_RunLength = 0,
344 DVD_SPCoding_Extended = 1,
345 DVD_SPCoding_Other = 2
346 } DVD_SUBPICTURE_CODING;
347 enum DVD_TextCharSet {
348 DVD_CharSet_Unicode = 0,
349 DVD_CharSet_ISO646 = 1,
350 DVD_CharSet_JIS_Roman_Kanji = 2,
351 DVD_CharSet_ISO8859_1 = 3,
352 DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana = 4
354 enum DVD_TextStringType {
355 DVD_Struct_Volume = 0x01,
356 DVD_Struct_Title = 0x02,
357 DVD_Struct_ParentalID = 0x03,
358 DVD_Struct_PartOfTitle = 0x04,
359 DVD_Struct_Cell = 0x05,
360 DVD_Stream_Audio = 0x10,
361 DVD_Stream_Subpicture = 0x11,
362 DVD_Stream_Angle = 0x12,
363 DVD_Channel_Audio = 0x20,
364 DVD_General_Name = 0x30,
365 DVD_General_Comments = 0x31,
366 DVD_Title_Series = 0x38,
367 DVD_Title_Movie = 0x39,
368 DVD_Title_Video = 0x3a,
369 DVD_Title_Album = 0x3b,
370 DVD_Title_Song = 0x3c,
371 DVD_Title_Other = 0x3f,
372 DVD_Title_Sub_Series = 0x40,
373 DVD_Title_Sub_Movie = 0x41,
374 DVD_Title_Sub_Video = 0x42,
375 DVD_Title_Sub_Album = 0x43,
376 DVD_Title_Sub_Song = 0x44,
377 DVD_Title_Sub_Other = 0x47,
378 DVD_Title_Orig_Series = 0x48,
379 DVD_Title_Orig_Movie = 0x49,
380 DVD_Title_Orig_Video = 0x4a,
381 DVD_Title_Orig_Album = 0x4b,
382 DVD_Title_Orig_Song = 0x4c,
383 DVD_Title_Orig_Other = 0x4f,
384 DVD_Other_Scene = 0x50,
385 DVD_Other_Cut = 0x51,
386 DVD_Other_Take = 0x52
388 typedef enum tagDVD_TIMECODE_FLAGS {
389 DVD_TC_FLAG_25fps = 0x00000001,
390 DVD_TC_FLAG_30fps = 0x00000002,
391 DVD_TC_FLAG_DropFrame = 0x00000004,
392 DVD_TC_FLAG_Interpolated = 0x00000008
393 } DVD_TIMECODE_FLAGS;
394 typedef enum tagDVD_TITLE_APPMODE {
395 DVD_AppMode_Not_Specified = 0,
396 DVD_AppMode_Karaoke = 1,
397 DVD_AppMode_Other = 3
399 typedef enum tagDVD_VIDEO_COMPRESSION {
400 DVD_VideoCompression_Other = 0,
401 DVD_VideoCompression_MPEG1 = 1,
402 DVD_VideoCompression_MPEG2 = 2
403 } DVD_VIDEO_COMPRESSION;
404 typedef enum _DVDECODERRESOLUTION {
405 DVDECODERRESOLUTION_720x480 = 1000,
406 DVDECODERRESOLUTION_360x240 = 1001,
407 DVDECODERRESOLUTION_180x120 = 1002,
408 DVDECODERRESOLUTION_88x60 = 1003
409 } DVDECODERRESOLUTION;
410 typedef enum _DVRESOLUTION {
411 DVRESOLUTION_FULL = 1000,
412 DVRESOLUTION_HALF = 1001,
413 DVRESOLUTION_QUARTER = 1002,
414 DVRESOLUTION_DC = 1003
416 typedef enum _DVENCODERFORMAT {
417 DVENCODERFORMAT_DVSD = 2007,
418 DVENCODERFORMAT_DVHD = 2008,
419 DVENCODERFORMAT_DVSL = 2009
421 typedef enum _DVENCODERRESOLUTION {
422 DVENCODERRESOLUTION_720x480 = 2012,
423 DVENCODERRESOLUTION_360x240 = 2013,
424 DVENCODERRESOLUTION_180x120 = 2014,
425 DVENCODERRESOLUTION_88x60 = 2015
426 } DVENCODERRESOLUTION;
427 typedef enum _DVENCODERVIDEOFORMAT {
428 DVENCODERVIDEOFORMAT_NTSC = 2000,
429 DVENCODERVIDEOFORMAT_PAL = 2001
430 } DVENCODERVIDEOFORMAT;
431 typedef enum _FilterState {
440 INTERLEAVE_NONE_BUFFERED
443 PhysConn_Video_Tuner = 1,
444 PhysConn_Video_Composite,
445 PhysConn_Video_SVideo,
447 PhysConn_Video_YRYBY,
448 PhysConn_Video_SerialDigital,
449 PhysConn_Video_ParallelDigital,
454 PhysConn_Video_VideoDecoder,
455 PhysConn_Video_VideoEncoder,
456 PhysConn_Video_SCART,
457 PhysConn_Video_Black,
458 PhysConn_Audio_Tuner = 4096,
461 PhysConn_Audio_AESDigital,
462 PhysConn_Audio_SPDIFDigital,
467 PhysConn_Audio_AudioDecoder
468 } PhysicalConnectorType;
469 typedef enum _PinDirection {
476 } QualityMessageType;
478 REG_PINFLAG_B_ZERO = 0x1,
479 REG_PINFLAG_B_RENDERER = 0x2,
480 REG_PINFLAG_B_MANY = 0x4,
481 REG_PINFLAG_B_OUTPUT = 0x8
483 typedef enum _REM_FILTER_FLAGS {
484 REMFILTERF_LEAVECONNECTED = 0x00000001
490 typedef enum tagTVAudioMode {
491 AMTVAUDIO_MODE_MONO = 0x0001,
492 AMTVAUDIO_MODE_STEREO = 0x0002,
493 AMTVAUDIO_MODE_LANG_A = 0x0010,
494 AMTVAUDIO_MODE_LANG_B = 0x0020,
495 AMTVAUDIO_MODE_LANG_C = 0x0040,
496 AMTVAUDIO_PRESET_STEREO = 0x0200,
497 AMTVAUDIO_PRESET_LANG_A = 0x1000,
498 AMTVAUDIO_PRESET_LANG_B = 0x2000,
499 AMTVAUDIO_PRESET_LANG_C = 0x4000
502 UOP_FLAG_Play_Title_Or_AtTime = 0x00000001,
503 UOP_FLAG_Play_Chapter = 0x00000002,
504 UOP_FLAG_Play_Title = 0x00000004,
505 UOP_FLAG_Stop = 0x00000008,
506 UOP_FLAG_ReturnFromSubMenu = 0x00000010,
507 UOP_FLAG_Play_Chapter_Or_AtTime = 0x00000020,
508 UOP_FLAG_PlayPrev_Or_Replay_Chapter = 0x00000040,
509 UOP_FLAG_PlayNext_Chapter = 0x00000080,
510 UOP_FLAG_Play_Forwards = 0x00000100,
511 UOP_FLAG_Play_Backwards = 0x00000200,
512 UOP_FLAG_ShowMenu_Title = 0x00000400,
513 UOP_FLAG_ShowMenu_Root = 0x00000800,
514 UOP_FLAG_ShowMenu_SubPic = 0x00001000,
515 UOP_FLAG_ShowMenu_Audio = 0x00002000,
516 UOP_FLAG_ShowMenu_Angle = 0x00004000,
517 UOP_FLAG_ShowMenu_Chapter = 0x00008000,
518 UOP_FLAG_Resume = 0x00010000,
519 UOP_FLAG_Select_Or_Activate_Button = 0x00020000,
520 UOP_FLAG_Still_Off = 0x00040000,
521 UOP_FLAG_Pause_On = 0x00080000,
522 UOP_FLAG_Select_Audio_Stream = 0x00100000,
523 UOP_FLAG_Select_SubPic_Stream = 0x00200000,
524 UOP_FLAG_Select_Angle = 0x00400000,
525 UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode = 0x00800000,
526 UOP_FLAG_Select_Video_Mode_Preference = 0x01000000
529 VfwCaptureDialog_Source = 0x01,
530 VfwCaptureDialog_Format = 0x02,
531 VfwCaptureDialog_Display = 0x04
534 VfwCompressDialog_Config = 0x01,
535 VfwCompressDialog_About = 0x02,
536 VfwCompressDialog_QueryConfig = 0x04,
537 VfwCompressDialog_QueryAbout = 0x08
538 } VfwCompressDialogs;
539 typedef enum tagVideoControlFlags {
540 VideoControlFlag_FlipHorizontal = 0x0001,
541 VideoControlFlag_FlipVertical = 0x0002,
542 VideoControlFlag_ExternalTriggerEnable = 0x0004,
543 VideoControlFlag_Trigger = 0x0008
547 VariableBitRateAverage,
549 } VIDEOENCODER_BITRATE_MODE;
550 typedef enum tagVideoProcAmpFlags {
551 VideoProcAmp_Flags_Auto = 0x0001,
552 VideoProcAmp_Flags_Manual = 0x0002
554 typedef enum tagVideoProcAmpProperty {
555 VideoProcAmp_Brightness,
556 VideoProcAmp_Contrast,
558 VideoProcAmp_Saturation,
559 VideoProcAmp_Sharpness,
561 VideoProcAmp_ColorEnable,
562 VideoProcAmp_WhiteBalance,
563 VideoProcAmp_BacklightCompensation,
565 } VideoProcAmpProperty;
566 enum VMR_ASPECT_RATIO_MODE {
568 VMR_ARMODE_LETTER_BOX
571 DeinterlacePref_NextBest = 0x01,
572 DeinterlacePref_BOB = 0x02,
573 DeinterlacePref_Weave = 0x04,
574 DeinterlacePref_Mask = 0x07
575 } VMRDeinterlacePrefs;
577 DeinterlaceTech_Unknown = 0x0000,
578 DeinterlaceTech_BOBLineReplicate = 0x0001,
579 DeinterlaceTech_BOBVerticalStretch = 0x0002,
580 DeinterlaceTech_MedianFiltering = 0x0004,
581 DeinterlaceTech_EdgeFiltering = 0x0010,
582 DeinterlaceTech_FieldAdaptive = 0x0020,
583 DeinterlaceTech_PixelAdaptive = 0x0040,
584 DeinterlaceTech_MotionVectorSteered = 0x0080
585 } VMRDeinterlaceTech;
587 MixerPref_NoDecimation = 0x00000001,
588 MixerPref_DecimateOutput = 0x00000002,
589 MixerPref_ARAdjustXorY = 0x00000004,
590 MixerPref_DecimationReserved = 0x00000008,
591 MixerPref_DecimateMask = 0x0000000F,
592 MixerPref_BiLinearFiltering = 0x00000010,
593 MixerPref_PointFiltering = 0x00000020,
594 MixerPref_FilteringMask = 0x000000F0,
595 MixerPref_RenderTargetRGB = 0x00000100,
596 MixerPref_RenderTargetYUV = 0x00001000,
597 MixerPref_RenderTargetYUV420 = 0x00000200,
598 MixerPref_RenderTargetYUV422 = 0x00000400,
599 MixerPref_RenderTargetYUV444 = 0x00000800,
600 MixerPref_RenderTargetReserved = 0x0000E000,
601 MixerPref_RenderTargetMask = 0x0000FF00,
602 MixerPref_DynamicSwitchToBOB = 0x00010000,
603 MixerPref_DynamicDecimateBy2 = 0x00020000,
604 MixerPref_DynamicReserved = 0x000C0000,
605 MixerPref_DynamicMask = 0x000F0000
608 VMRMode_Windowed = 0x00000001,
609 VMRMode_Windowless = 0x00000002,
610 VMRMode_Renderless = 0x00000004,
611 VMRMode_Mask = 0x00000007
614 VMRSample_SyncPoint = 0x00000001,
615 VMRSample_Preroll = 0x00000002,
616 VMRSample_Discontinuity = 0x00000004,
617 VMRSample_TimeValid = 0x00000008
618 } VMRPresentationFlags;
620 RenderPrefs_ForceOffscreen = 0x00000001,
621 RenderPrefs_ForceOverlays = 0x00000002,
622 RenderPrefs_AllowOverlays = 0x00000000,
623 RenderPrefs_AllowOffscreen = 0x00000000,
624 RenderPrefs_DoNotRenderColorKeyAndBorder = 0x00000008,
625 RenderPrefs_RestrictToInitialMonitor = 0x00000010,
626 RenderPrefs_PreferAGPMemWhenMixing = 0x00000020,
627 RenderPrefs_Mask = 0x0000003f
630 AMAP_PIXELFORMAT_VALID = 0x01,
631 AMAP_3D_TARGET = 0x02,
632 AMAP_ALLOW_SYSMEM = 0x04,
633 AMAP_FORCE_SYSMEM = 0x08,
634 AMAP_DIRECTED_FLIP = 0x10,
635 AMAP_DXVA_TARGET = 0x20
636 } VMRSurfaceAllocationFlags;
637 /*--- DirectShow Reference - DirectShow Structures */
638 typedef struct _AllocatorProperties {
643 } ALLOCATOR_PROPERTIES;
651 int iNumStreamsFailed;
652 DWORD dwFailedStreamsFlag;
653 } AM_DVD_RENDERSTATUS;
654 typedef struct _AMCOPPCommand {
659 BYTE CommandData[4056];
660 } AMCOPPCommand,*LPAMCOPPCommand;
661 typedef struct _AMCOPPSignature {
664 typedef struct _AMCOPPStatusInput {
666 GUID guidStatusRequestID;
669 BYTE StatusData[4056];
670 } AMCOPPStatusInput,*LPAMCOPPStatusInput;
671 typedef struct _AMCOPPStatusOutput {
674 BYTE COPPStatus[4076];
675 } AMCOPPStatusOutput,*LPAMCOPPStatusOutput;
676 typedef struct _AMMediaType {
679 BOOL bFixedSizeSamples;
680 BOOL bTemporalCompression;
687 typedef struct tagAM_SAMPLE2_PROPERTIES {
689 DWORD dwTypeSpecificFlags;
692 REFERENCE_TIME tStart;
693 REFERENCE_TIME tStop;
695 AM_MEDIA_TYPE *pMediaType;
698 } AM_SAMPLE2_PROPERTIES;
700 REFERENCE_TIME tStart;
701 REFERENCE_TIME tStop;
707 const CLSID *clsMajorType;
708 const CLSID *clsMinorType;
710 typedef REGPINTYPES AMOVIESETUP_MEDIATYPE,*PAMOVIESETUP_MEDIATYPE,*LPAMOVIESETUP_MEDIATYPE;
717 const CLSID *clsConnectsToFilter;
718 const WCHAR *strConnectsToPin;
720 const REGPINTYPES *lpMediaType;
722 typedef REGFILTERPINS AMOVIESETUP_PIN,*PAMOVIESETUP_PIN,*LPAMOVIESETUP_PIN;
723 typedef struct _AMOVIESETUP_FILTER {
725 const WCHAR *strName;
728 const AMOVIESETUP_PIN *lpPin;
729 } AMOVIESETUP_FILTER,*PAMOVIESETUP_FILTER,*LPAMOVIESETUP_FILTER;
730 typedef struct _AUDIO_STREAM_CONFIG_CAPS {
732 ULONG MinimumChannels;
733 ULONG MaximumChannels;
734 ULONG ChannelsGranularity;
735 ULONG MinimumBitsPerSample;
736 ULONG MaximumBitsPerSample;
737 ULONG BitsPerSampleGranularity;
738 ULONG MinimumSampleFrequency;
739 ULONG MaximumSampleFrequency;
740 ULONG SampleFrequencyGranularity;
741 } AUDIO_STREAM_CONFIG_CAPS;
742 struct CodecAPIEventData {
747 typedef struct tagCOLORKEY {
750 COLORREF LowColorValue;
751 COLORREF HighColorValue;
753 #define CK_NOCOLORKEY 0x00000000
754 #define CK_INDEX 0x00000001
755 #define CK_RGB 0x00000002
760 typedef struct tagDVD_AudioAttributes {
761 DVD_AUDIO_APPMODE AppMode;
762 DVD_AUDIO_FORMAT AudioFormat;
764 DVD_AUDIO_LANG_EXT LanguageExtension;
765 BOOL fHasMultichannelInfo;
768 BYTE bNumberOfChannels;
770 } DVD_AudioAttributes;
771 typedef struct tagDVD_DECODER_CAPS {
774 double dFwdMaxRateVideo;
775 double dFwdMaxRateAudio;
776 double dFwdMaxRateSP;
777 double dBwdMaxRateVideo;
778 double dBwdMaxRateAudio;
779 double dBwdMaxRateSP;
785 #define DVD_AUDIO_CAPS_AC3 0x00000001
786 #define DVD_AUDIO_CAPS_MPEG2 0x00000002
787 #define DVD_AUDIO_CAPS_LPCM 0x00000004
788 #define DVD_AUDIO_CAPS_DTS 0x00000008
789 #define DVD_AUDIO_CAPS_SDDS 0x00000010
790 typedef struct tagDVD_HMSF_TIMECODE {
796 typedef struct tagDVD_KaraokeAttributes {
798 BOOL fMasterOfCeremoniesInGuideVocal1;
800 DVD_KARAOKE_ASSIGNMENT ChannelAssignment;
801 WORD wChannelContents[8];
802 } DVD_KaraokeAttributes;
803 typedef struct tagDVD_MUA_Coeff {
807 typedef struct tagDVD_MUA_MixingInfo {
812 DWORD dwSpeakerPosition;
813 } DVD_MUA_MixingInfo;
814 #define KSAUDIO_SPEAKER_LEFT 0x00000001
815 #define KSAUDIO_SPEAKER_RIGHT 0x00000002
816 #define KSAUDIO_SPEAKER_CENTER 0x00000004
817 #define KSAUDIO_SPEAKER_SURROUND_LEFT 0x00000008
818 #define KSAUDIO_SPEAKER_SURROUND_RIGHT 0x00000010
819 #define KSAUDIO_SPEAKER_SUBWOOFER 0x00000020
820 #define KSAUDIO_SPEAKER_LEFT_OF_CENTER 0x00000040
821 #define KSAUDIO_SPEAKER_RIGHT_OF_CENTER 0x00000080
822 #define KSAUDIO_SPEAKER_SURROUND_MONO 0x00000100
823 #define KSAUDIO_SPEAKER_SIDE_LEFT 0x00000200
824 #define KSAUDIO_SPEAKER_SIDE_RIGHT 0x00000400
825 #define KSAUDIO_SPEAKER_TOP 0x00000800
826 typedef struct tagDVD_MultichannelAudioAttributes {
827 DVD_MUA_MixingInfo Info[8];
828 DVD_MUA_Coeff Coeff[8];
829 } DVD_MultichannelAudioAttributes;
830 typedef struct tagDVD_PLAYBACK_LOCATION {
834 } DVD_PLAYBACK_LOCATION;
835 typedef struct tagDVD_PLAYBACK_LOCATION2 {
838 DVD_HMSF_TIMECODE TimeCode;
840 } DVD_PLAYBACK_LOCATION2;
841 typedef struct tagDVD_SubpictureAttributes {
842 DVD_SUBPICTURE_TYPE Type;
843 DVD_SUBPICTURE_CODING CodingMode;
845 DVD_SUBPICTURE_LANG_EXT LanguageExtension;
846 } DVD_SubpictureAttributes;
847 typedef struct tagDVD_TIMECODE {
856 ULONG FrameRateCode:2;
858 typedef struct tagDVD_VideoAttributes {
859 BOOL fPanscanPermitted;
860 BOOL fLetterboxPermitted;
865 DVD_VIDEO_COMPRESSION Compression;
866 BOOL fLine21Field1InGOP;
867 BOOL fLine21Field2InGOP;
868 ULONG ulSourceResolutionX;
869 ULONG ulSourceResolutionY;
870 BOOL fIsSourceLetterboxed;
872 } DVD_VideoAttributes;
873 struct tagDVD_MenuAttributes {
874 BOOL fCompatibleRegion[8];
875 DVD_VideoAttributes VideoAttributes;
877 DVD_AudioAttributes AudioAttributes;
878 BOOL fSubpicturePresent;
879 DVD_SubpictureAttributes SubpictureAttributes;
880 } DVD_MenuAttributes;
881 typedef struct tagDVD_TitleMainAttributes {
882 DVD_TITLE_APPMODE AppMode;
883 DVD_VideoAttributes VideoAttributes;
884 ULONG ulNumberOfAudioStreams;
885 DVD_AudioAttributes AudioAttributes[8];
886 DVD_MultichannelAudioAttributes MultichannelAudioAttributes[8];
887 ULONG ulNumberOfSubpictureStreams;
888 DVD_SubpictureAttributes SubpictureAttributes[32];
889 } DVD_TitleAttributes;
890 typedef struct tag_DVINFO {
897 DWORD dwDVReserved[2];
900 #define MAX_FILTER_NAME 128
901 typedef struct _FilterInfo {
902 WCHAR achName[MAX_FILTER_NAME];
903 IFilterGraph *pGraph;
906 typedef struct _NORMALIZEDRECT {
911 } NORMALIZEDRECT,*PNORMALIZEDRECT;
912 #define MAX_PIN_NAME 128
913 typedef struct _PinInfo {
914 IBaseFilter *pFilter;
916 WCHAR achName[MAX_PIN_NAME];
919 QualityMessageType Type;
922 REFERENCE_TIME TimeStamp;
933 const REGPINTYPES *lpMediaType;
935 const REGPINMEDIUM *lpMedium;
936 const CLSID *clsPinCategory;
944 const REGFILTERPINS *rgPins;
948 const REGFILTERPINS2 *rgPins2;
954 DWORD dwMediaSampleContent;
955 ULONG ulSubstreamFilterValue;
958 #define MPEG2_PROGRAM_STREAM_MAP 0x00000000
959 #define MPEG2_PROGRAM_ELEMENTARY_STREAM 0x00000001
960 #define MPEG2_PROGRAM_DIRECTORY_PES_PACKET 0x00000002
961 #define MPEG2_PROGRAM_PACK_HEADER 0x00000003
962 #define MPEG2_PROGRAM_PES_STREAM 0x00000004
963 #define MPEG2_PROGRAM_SYSTEM_HEADER 0x00000005
964 #define SUBSTREAM_FILTER_VAL_NONE 0x10000000
965 typedef struct tagTIMECODE {
970 #define ED_FORMAT_SMPTE_30 0x00001196
971 #define ED_FORMAT_SMPTE_30DROP 0x00001197
972 #define ED_FORMAT_SMPTE_25 0x00001198
973 #define ED_FORMAT_SMPTE_24 0x00001199
974 typedef struct tagTIMECODE_SAMPLE {
980 /*#define AM_TIMECODE_FLAG_FCM */
981 /*#define AM_TIMECODE_FLAG_CF */
982 /*#define AM_TIMECODE_FLAG_FIELD */
983 /*#define AM_TIMECODE_FLAG_DF */
984 /*#define AM_TIMECODE_COLORFRAME */
985 /*#define AM_TIMECODE_COLORSEQUENCE */
986 /*#define AM_TIMECODE_FILMSEQUENCE_TYPE */
987 typedef struct _VIDEO_STREAM_CONFIG_CAPS {
991 SIZE MinCroppingSize;
992 SIZE MaxCroppingSize;
993 int CropGranularityX;
994 int CropGranularityY;
999 int OutputGranularityX;
1000 int OutputGranularityY;
1005 LONGLONG MinFrameInterval;
1006 LONGLONG MaxFrameInterval;
1007 LONG MinBitsPerSecond;
1008 LONG MaxBitsPerSecond;
1009 } VIDEO_STREAM_CONFIG_CAPS;
1010 typedef struct tagVMRALLOCATIONINFO {
1012 LPBITMAPINFOHEADER lpHdr;
1013 LPDDPIXELFORMAT lpPixFmt;
1017 DWORD dwInterlaceFlags;
1019 } VMRALLOCATIONINFO;
1021 typedef struct _VMRALPHABITMAP {
1024 LPDIRECTDRAWSURFACE7 pDDS;
1026 NORMALIZEDRECT rDest;
1029 } VMRALPHABITMAP,*PVMRALPHABITMAP;
1031 #define VMRBITMAP_DISABLE 0x00000001
1032 #define VMRBITMAP_HDC 0x00000002
1033 #define VMRBITMAP_ENTIREDDS 0x00000004
1034 #define VMRBITMAP_SRCCOLORKEY 0x00000008
1035 #define VMRBITMAP_SRCRECT 0x00000010
1036 typedef struct _VMRDeinterlaceCaps {
1038 DWORD dwNumPreviousOutputFrames;
1039 DWORD dwNumForwardRefSamples;
1040 DWORD dwNumBackwardRefSamples;
1041 VMRDeinterlaceTech DeinterlaceTechnology;
1042 } VMRDeinterlaceCaps;
1043 typedef struct _VMRFrequency {
1045 DWORD dwDenominator;
1047 typedef struct tagVMRGUID {
1051 typedef struct tagVMRMONITORINFO {
1056 wchar_t szDevice[32];
1057 wchar_t szDescription[256];
1060 typedef struct tagVMRPRESENTATIONINFO {
1062 LPDIRECTDRAWSURFACE7 lpSurf;
1063 REFERENCE_TIME rtStart;
1064 REFERENCE_TIME rtEnd;
1068 DWORD dwTypeSpecificFlags;
1069 DWORD dwInterlaceFlags;
1070 } VMRPRESENTATIONINFO;
1072 typedef struct _VMRVideoDesc {
1074 DWORD dwSampleWidth;
1075 DWORD dwSampleHeight;
1076 BOOL SingleFieldPerSample;
1078 VMRFrequency InputSampleFreq;
1079 VMRFrequency OutputFrameFreq;
1082 typedef struct _VMRVIDEOSTREAMINFO {
1083 LPDIRECTDRAWSURFACE7 pddsVideoSurface;
1088 DDCOLORKEY ddClrKey;
1089 NORMALIZEDRECT rNormal;
1090 } VMRVIDEOSTREAMINFO;
1092 /*--- DirectShow Reference - Interfaces */
1093 #define INTERFACE IAMAnalogVideoDecoder
1094 DECLARE_INTERFACE_(IAMAnalogVideoDecoder, IUnknown)
1096 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1097 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1098 STDMETHOD_(ULONG,Release)(THIS) PURE;
1099 STDMETHOD_(HRESULT,get_AvailableTVFormats)(THIS_ long*) PURE;
1100 STDMETHOD_(HRESULT,get_HorizontalLocked)(THIS_ long*) PURE;
1101 STDMETHOD_(HRESULT,get_NumberOfLines)(THIS_ long*) PURE;
1102 STDMETHOD_(HRESULT,get_OutputEnable)(THIS_ long*) PURE;
1103 STDMETHOD_(HRESULT,get_TVFormat)(THIS_ long*) PURE;
1104 STDMETHOD_(HRESULT,get_VCRHorizontalLocking)(THIS_ long*) PURE;
1105 STDMETHOD_(HRESULT,put_OutputEnable)(THIS_ long) PURE;
1106 STDMETHOD_(HRESULT,put_TVFormat)(THIS_ long) PURE;
1107 STDMETHOD_(HRESULT,put_VCRHorizontalLocking)(THIS_ long) PURE;
1110 #define INTERFACE IAMAudioInputMixer
1111 DECLARE_INTERFACE_(IAMAudioInputMixer, IUnknown)
1113 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1114 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1115 STDMETHOD_(ULONG,Release)(THIS) PURE;
1116 STDMETHOD_(HRESULT,get_Bass)(THIS_ double*) PURE;
1117 STDMETHOD_(HRESULT,get_BassRange)(THIS_ double*) PURE;
1118 STDMETHOD_(HRESULT,get_Enable)(THIS_ BOOL*) PURE;
1119 STDMETHOD_(HRESULT,get_Loudness)(THIS_ BOOL*) PURE;
1120 STDMETHOD_(HRESULT,get_MixLevel)(THIS_ double*) PURE;
1121 STDMETHOD_(HRESULT,get_Mono)(THIS_ BOOL*) PURE;
1122 STDMETHOD_(HRESULT,get_Pan)(THIS_ double*) PURE;
1123 STDMETHOD_(HRESULT,get_Treble)(THIS_ double*) PURE;
1124 STDMETHOD_(HRESULT,get_TrebleRange)(THIS_ double*) PURE;
1125 STDMETHOD_(HRESULT,put_Bass)(THIS_ double) PURE;
1126 STDMETHOD_(HRESULT,put_Enable)(THIS_ BOOL) PURE;
1127 STDMETHOD_(HRESULT,put_Loudness)(THIS_ BOOL) PURE;
1128 STDMETHOD_(HRESULT,put_MixLevel)(THIS_ double) PURE;
1129 STDMETHOD_(HRESULT,put_Mono)(THIS_ BOOL) PURE;
1130 STDMETHOD_(HRESULT,put_Pan)(THIS_ double) PURE;
1131 STDMETHOD_(HRESULT,put_Treble)(THIS_ double) PURE;
1134 #define INTERFACE IAMAudioRendererStats
1135 DECLARE_INTERFACE_(IAMAudioRendererStats, IUnknown)
1137 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1138 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1139 STDMETHOD_(ULONG,Release)(THIS) PURE;
1140 STDMETHOD_(HRESULT,GetStatParam)(THIS_ DWORD,DWORD*,DWORD*) PURE;
1143 #define INTERFACE IAMBufferNegotiation
1144 DECLARE_INTERFACE_(IAMBufferNegotiation, IUnknown)
1146 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1147 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1148 STDMETHOD_(ULONG,Release)(THIS) PURE;
1149 STDMETHOD_(HRESULT,GetAllocatorProperties)(THIS_ ALLOCATOR_PROPERTIES*) PURE;
1150 STDMETHOD_(HRESULT,SuggestAllocatorProperties)(THIS_ const ALLOCATOR_PROPERTIES*) PURE;
1153 #define INTERFACE IAMCameraControl
1154 DECLARE_INTERFACE_(IAMCameraControl, IUnknown)
1156 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1157 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1158 STDMETHOD_(ULONG,Release)(THIS) PURE;
1159 STDMETHOD_(HRESULT,Get)(THIS_ long,long*,long*) PURE;
1160 STDMETHOD_(HRESULT,GetRange)(THIS_ long,long*,long*,long*,long*,long*) PURE;
1161 STDMETHOD_(HRESULT,Set)(THIS_ long,long,long) PURE;
1165 #define INTERFACE IAMCertifiedOutputProtection
1166 DECLARE_INTERFACE_(IAMCertifiedOutputProtection, IUnknown)
1168 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1169 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1170 STDMETHOD_(ULONG,Release)(THIS) PURE;
1171 STDMETHOD_(HRESULT,KeyExchange)(THIS_ GUID*,BYTE**,DWORD*) PURE;
1172 STDMETHOD_(HRESULT,ProtectionCommand)(THIS_ const AMCOPPCommand*) PURE;
1173 STDMETHOD_(HRESULT,ProtectionStatus)(THIS_ const AMCOPPStatusInput*,AMCOPPStatusOutput*) PURE;
1174 STDMETHOD_(HRESULT,SessionSequenceStart)(THIS_ const AMCOPPSignature*) PURE;