holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/strmif.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
equal deleted inserted replaced
19:da7c1a80df0d 20:d2d6724aef32
       
     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