holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/strmif.h
author Matt Plumtree <matt.plumtree@nokia.com>
Thu, 07 Oct 2010 13:58:22 +0100
branchbug235_bringup_0
changeset 55 09263774e342
parent 20 d2d6724aef32
permissions -rw-r--r--
Move GLES20 source into standard locations Move Khronos headers into their respective components, to be exported by each. Remove hostthreadadapter as nothing outside of the vghwapiwrapper, which now contains the code, needs it

#ifndef _STRMIF_H
#define _STRMIF_H
#if __GNUC__ >= 3
#pragma GCC system_header
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*--- DirectShow Reference - DirectShow Enumerated Types - TVAudioMode Enumeration */
#define TVAUDIO_MODE_MASK 0x000000FF
#define TVAUDIO_PRESET_MASK 0x0000FF00
/*--- DirectShow Reference - DirectShow Data Types */
typedef LONGLONG REFERENCE_TIME;
typedef double REFTIME;
/*--- DirectShow Reference - Constants and GUIDs */
enum { 
	MERIT_PREFERRED = 0x800000,
	MERIT_NORMAL = 0x600000,
	MERIT_UNLIKELY = 0x400000,
	MERIT_DO_NOT_USE = 0x200000,
	MERIT_SW_COMPRESSOR = 0x100000,
	MERIT_HW_COMPRESSOR = 0x100050
};
/*--- DirectShow Reference - DirectShow Enumerated Types */
typedef enum _AM_AUDIO_RENDERER_STAT_PARAM {
	AM_AUDREND_STAT_PARAM_BREAK_COUNT = 1,
	AM_AUDREND_STAT_PARAM_SLAVE_MODE,
	AM_AUDREND_STAT_PARAM_SILENCE_DUR,
	AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR,
	AM_AUDREND_STAT_PARAM_DISCONTINUITIES,
	AM_AUDREND_STAT_PARAM_SLAVE_RATE,
	AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR,
	AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR,
	AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR,
	AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR,
	AM_AUDREND_STAT_PARAM_BUFFERFULLNESS,
	AM_AUDREND_STAT_PARAM_JITTER
} AM_AUDIO_RENDERER_STAT_PARAM;
typedef enum _AM_DVD_GRAPH_FLAGS {
	AM_DVD_HWDEC_PREFER = 0x01,
	AM_DVD_HWDEC_ONLY = 0x02,
	AM_DVD_SWDEC_PREFER = 0x04,
	AM_DVD_SWDEC_ONLY = 0x08,
	AM_DVD_NOVPE = 0x100,
	AM_DVD_VMR9_ONLY = 0x800,
	AM_DVD_EVR_ONLY = 0x1000
} AM_DVD_GRAPH_FLAGS;
typedef enum _AM_DVD_STREAM_FLAGS {
	AM_DVD_STREAM_VIDEO = 0x01,
	AM_DVD_STREAM_AUDIO = 0x02,
	AM_DVD_STREAM_SUBPIC = 0x04
} AM_DVD_STREAM_FLAGS;
typedef enum _AM_FILTER_MISC_FLAGS {
	AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x00000001,
	AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x00000002
} AM_FILTER_MISC_FLAGS;
typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS {
	AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001,
	AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002,
	AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004
} AM_GRAPH_CONFIG_RECONNECT_FLAGS;
typedef enum _AM_INTF_SEARCH_FLAGS {
	AM_INTF_SEARCH_INPUT_PIN = 0x00000001,
	AM_INTF_SEARCH_OUTPUT_PIN = 0x00000002,
	AM_INTF_SEARCH_FILTER = 0x00000004
} AM_INTF_SEARCH_FLAGS;
typedef enum _AM_OVERLAY_NOTIFY_FLAGS {
	AM_OVERLAY_NOTIFY_VISIBLE_CHANGE = 0x00000001,
	AM_OVERLAY_NOTIFY_SOURCE_CHANGE = 0x00000002,
	AM_OVERLAY_NOTIFY_DEST_CHANGE = 0x00000004
} AM_OVERLAY_NOTIFY_FLAGS;
typedef enum _AM_PIN_CONNECTION_BLOCK_FLAGS {
	AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001,
	AM_PIN_PUSH_THROUGH_DATA = 0x00000002
} AM_PIN_CONNECTION_BLOCK_FLAGS;
typedef enum _AM_PUSHSOURCE_FLAGS {
	AM_PUSHSOURCECAPS_INTERNAL_RM = 0x00000001,
	AM_PUSHSOURCECAPS_NOT_LIVE = 0x00000002,
	AM_PUSHSOURCECAPS_PRIVATE_CLOCK = 0x00000004,
	AM_PUSHSOURCEREQS_USE_STREAM_CLOCK = 0x00010000
} AM_PUSHSOURCE_FLAGS;
typedef enum tagAM_SAMPLE_PROPERTY_FLAGS {
	AM_SAMPLE_SPLICEPOINT = 0x01,
	AM_SAMPLE_PREROLL = 0x02,
	AM_SAMPLE_DATADISCONTINUITY = 0x04,
	AM_SAMPLE_TYPECHANGED = 0x08,
	AM_SAMPLE_TIMEVALID = 0x10,
	AM_SAMPLE_TIMEDISCONTINUITY = 0x40,
	AM_SAMPLE_FLUSH_ON_PAUSE = 0x80,
	AM_SAMPLE_STOPVALID = 0x100,
	AM_SAMPLE_ENDOFSTREAM = 0x200,
	AM_STREAM_MEDIA = 0,
	AM_STREAM_CONTROL = 1
} AM_SAMPLE_PROPERTY_FLAGS;
typedef enum AM_SEEKING_SeekingCapabilities {
	AM_SEEKING_CanSeekAbsolute = 0x1,
	AM_SEEKING_CanSeekForwards = 0x2,
	AM_SEEKING_CanSeekBackwards = 0x4,
	AM_SEEKING_CanGetCurrentPos = 0x8,
	AM_SEEKING_CanGetStopPos = 0x10,
	AM_SEEKING_CanGetDuration = 0x20,
	AM_SEEKING_CanPlayBackwards = 0x40,
	AM_SEEKING_CanDoSegments = 0x80,
	AM_SEEKING_Source = 0x100
} AM_SEEKING_SEEKING_CAPABILITIES;
typedef enum {
	AM_STREAM_INFO_START_DEFINED = 0x00000001,
	AM_STREAM_INFO_STOP_DEFINED = 0x00000002,
	AM_STREAM_INFO_DISCARDING = 0x00000004,
	AM_STREAM_INFO_STOP_SEND_EXTRA = 0x00000010
} AM_STREAM_INFO_FLAGS;
enum AMOVERLAYFX {
	AMOVERFX_NOFX = 0x00000000,
	AMOVERFX_MIRRORLEFTRIGHT = 0x00000002,
	AMOVERFX_MIRRORUPDOWN = 0x00000004,
	AMOVERFX_DEINTERLACE = 0x00000008
};
typedef enum _AMRESCTL_RESERVEFLAGS {
	AMRESCTL_RESERVEFLAGS_RESERVE = 0x00,
	AMRESCTL_RESERVEFLAGS_UNRESERVE = 0x01
} AMRESCTL_RESERVEFLAGS;
typedef enum tagAMTunerModeType {
	AMTUNER_MODE_DEFAULT = 0x0000,
	AMTUNER_MODE_TV = 0x0001,
	AMTUNER_MODE_FM_RADIO = 0x0002,
	AMTUNER_MODE_AM_RADIO = 0x0004,
	AMTUNER_MODE_DSS = 0x0008
} AMTunerModeType;
typedef enum tagAnalogVideoStandard {
	AnalogVideo_None = 0x00000000,
	AnalogVideo_NTSC_M = 0x00000001,
	AnalogVideo_NTSC_M_J = 0x00000002,
	AnalogVideo_NTSC_433 = 0x00000004,
	AnalogVideo_PAL_B = 0x00000010,
	AnalogVideo_PAL_D = 0x00000020,
	AnalogVideo_PAL_H = 0x00000080,
	AnalogVideo_PAL_I = 0x00000100,
	AnalogVideo_PAL_M = 0x00000200,
	AnalogVideo_PAL_N = 0x00000400,
	AnalogVideo_PAL_60 = 0x00000800,
	AnalogVideo_SECAM_B = 0x00001000,
	AnalogVideo_SECAM_D = 0x00002000,
	AnalogVideo_SECAM_G = 0x00004000,
	AnalogVideo_SECAM_H = 0x00008000,
	AnalogVideo_SECAM_K = 0x00010000,
	AnalogVideo_SECAM_K1 = 0x00020000,
	AnalogVideo_SECAM_L = 0x00040000,
	AnalogVideo_SECAM_L1 = 0x00080000,
	AnalogVideo_PAL_N_COMBO = 0x00100000
} AnalogVideoStandard;
typedef enum {
	CameraControl_Flags_Auto = 0x0001,
	CameraControl_Flags_Manual = 0x0002
} CameraControlFlags;
typedef enum {
	CameraControl_Pan = 1,
	CameraControl_Tilt,
	CameraControl_Roll,
	CameraControl_Zoom,
	CameraControl_Exposure,
	CameraControl_Iris,
	CameraControl_Focus
} CameraControlProperty;
typedef enum {
	CompressionCaps_CanQuality = 0x01,
	CompressionCaps_CanCrunch = 0x02,
	CompressionCaps_CanKeyFrame = 0x04,
	CompressionCaps_CanBFrame = 0x08,
	CompressionCaps_CanWindow = 0x10
} CompressionCaps;
typedef enum {
	DECIMATION_LEGACY,
	DECIMATION_USE_DECODER_ONLY,
	DECIMATION_USE_VIDEOPORT_ONLY,
	DECIMATION_USE_OVERLAY_ONLY,
	DECIMATION_DEFAULT
} DECIMATION_USAGE;
typedef enum tagDVD_AUDIO_APPMODE {
	DVD_AudioMode_None = 0,
	DVD_AudioMode_Karaoke = 1,
	DVD_AudioMode_Surround = 2,
	DVD_AudioMode_Other = 3
} DVD_AUDIO_APPMODE;
typedef enum tagDVD_AUDIO_FORMAT {
	DVD_AudioFormat_AC3 = 0,
	DVD_AudioFormat_MPEG1 = 1,
	DVD_AudioFormat_MPEG1_DRC = 2,
	DVD_AudioFormat_MPEG2 = 3,
	DVD_AudioFormat_MPEG2_DRC = 4,
	DVD_AudioFormat_LPCM = 5,
	DVD_AudioFormat_DTS = 6,
	DVD_AudioFormat_SDDS = 7,
	DVD_AudioFormat_Other = 8
} DVD_AUDIO_FORMAT;
typedef enum tagDVD_AUDIO_LANG_EXT {
	DVD_AUD_EXT_NotSpecified = 0,
	DVD_AUD_EXT_Captions = 1,
	DVD_AUD_EXT_VisuallyImpaired = 2,
	DVD_AUD_EXT_DirectorComments1 = 3,
	DVD_AUD_EXT_DirectorComments2 = 4
} DVD_AUDIO_LANG_EXT;
typedef enum {
	DVD_CMD_FLAG_None = 0x00000000,
	DVD_CMD_FLAG_Flush = 0x00000001,
	DVD_CMD_FLAG_SendEvents = 0x00000002,
	DVD_CMD_FLAG_Block = 0x00000004,
	DVD_CMD_FLAG_StartWhenRendered = 0x00000008,
	DVD_CMD_FLAG_EndAfterRendered = 0x00000010
} DVD_CMD_FLAGS;
typedef enum tagDVD_DISC_SIDE {
	DVD_SIDE_A,
	DVD_SIDE_B
} DVD_DISC_SIDE;
typedef enum tagDVD_DOMAIN {
	DVD_DOMAIN_FirstPlay,
	DVD_DOMAIN_VideoManagerMenu,
	DVD_DOMAIN_VideoTitleSetMenu,
	DVD_DOMAIN_Title,
	DVD_DOMAIN_Stop
} DVD_DOMAIN;
typedef enum tagDVD_FRAMERATE {
	DVD_FPS_25 = 1,
	DVD_FPS_30NonDrop = 3
} DVD_FRAMERATE;
typedef enum tagDVD_KARAOKE_ASSIGNMENT {
	DVD_Assignment_reserved0 = 0,
	DVD_Assignment_reserved1 = 1,
	DVD_Assignment_LR = 2,
	DVD_Assignment_LRM = 3,
	DVD_Assignment_LR1 = 4,
	DVD_Assignment_LRM1 = 5,
	DVD_Assignment_LR12 = 6,
	DVD_Assignment_LRM12 = 7 
} DVD_KARAOKE_ASSIGNMENT;
typedef enum tagDVD_KARAOKE_CONTENTS {
	DVD_Karaoke_GuideVocal1 = 0x0001,
	DVD_Karaoke_GuideVocal2 = 0x0002,
	DVD_Karaoke_GuideMelody1 = 0x0004,
	DVD_Karaoke_GuideMelody2 = 0x0008,
	DVD_Karaoke_GuideMelodyA = 0x0010,
	DVD_Karaoke_GuideMelodyB = 0x0020,
	DVD_Karaoke_SoundEffectA = 0x0040,
	DVD_Karaoke_SoundEffectB = 0x0080
} DVD_KARAOKE_CONTENTS;
typedef enum tagDVD_KARAOKE_DOWNMIX {
	DVD_Mix_0to0 = 0x0001,
	DVD_Mix_1to0 = 0x0002,
	DVD_Mix_2to0 = 0x0004,
	DVD_Mix_3to0 = 0x0008,
	DVD_Mix_4to0 = 0x0010,
	DVD_Mix_Lto0 = 0x0020,
	DVD_Mix_Rto0 = 0x0040,
	DVD_Mix_0to1 = 0x0100,
	DVD_Mix_1to1 = 0x0200,
	DVD_Mix_2to1 = 0x0400,
	DVD_Mix_3to1 = 0x0800,
	DVD_Mix_4to1 = 0x1000,
	DVD_Mix_Lto1 = 0x2000,
	DVD_Mix_Rto1 = 0x4000
} DVD_KARAOKE_DOWNMIX;
typedef enum tagDVD_MENU_ID {
	DVD_MENU_Title = 2,
	DVD_MENU_Root = 3,
	DVD_MENU_Subpicture = 4,
	DVD_MENU_Audio = 5,
	DVD_MENU_Angle = 6,
	DVD_MENU_Chapter = 7
} DVD_MENU_ID;
typedef enum {
	DVD_ResetOnStop = 1,
	DVD_NotifyParentalLevelChange = 2,
	DVD_HMSF_TimeCodeEvents = 3,
	DVD_AudioDuringFFwdRew = 4,
	DVD_EnableNonblockingAPIs = 5,
	DVD_CacheSizeInMB = 6,
	DVD_EnablePortableBookmarks = 7
} DVD_OPTION_FLAG;
typedef enum tagDVD_PARENTAL_LEVEL {
	DVD_PARENTAL_LEVEL_8 = 0x8000,
	DVD_PARENTAL_LEVEL_7 = 0x4000,
	DVD_PARENTAL_LEVEL_6 = 0x2000,
	DVD_PARENTAL_LEVEL_5 = 0x1000,
	DVD_PARENTAL_LEVEL_4 = 0x0800,
	DVD_PARENTAL_LEVEL_3 = 0x0400,
	DVD_PARENTAL_LEVEL_2 = 0x0200,
	DVD_PARENTAL_LEVEL_1 = 0x0100
} DVD_PARENTAL_LEVEL;
typedef enum tagDVD_PREFERRED_DISPLAY_MODE {
	DISPLAY_CONTENT_DEFAULT = 0,
	DISPLAY_16x9 = 1,
	DISPLAY_4x3_PANSCAN_PREFERRED = 2,
	DISPLAY_4x3_LETTERBOX_PREFERRED = 3
} DVD_PREFERRED_DISPLAY_MODE;
typedef enum tagDVD_RELATIVE_BUTTON {
	DVD_Relative_Upper = 1,
	DVD_Relative_Lower = 2,
	DVD_Relative_Left = 3,
	DVD_Relative_Right = 4
} DVD_RELATIVE_BUTTON;
typedef enum tagDVD_SUBPICTURE_LANG_EXT {
	DVD_SP_EXT_NotSpecified = 0,
	DVD_SP_EXT_Caption_Normal = 1,
	DVD_SP_EXT_Caption_Big = 2,
	DVD_SP_EXT_Caption_Children = 3,
	DVD_SP_EXT_CC_Normal = 5,
	DVD_SP_EXT_CC_Big = 6,
	DVD_SP_EXT_CC_Children = 7,
	DVD_SP_EXT_Forced = 9,
	DVD_SP_EXT_DirectorComments_Normal = 13,
	DVD_SP_EXT_DirectorComments_Big = 14,
	DVD_SP_EXT_DirectorComments_Children = 15
} DVD_SUBPICTURE_LANG_EXT;
typedef enum tagDVD_SUBPICTURE_TYPE {
	DVD_SPType_NotSpecified = 0,
	DVD_SPType_Language = 1,
	DVD_SPType_Other = 2
} DVD_SUBPICTURE_TYPE;
typedef enum tagDVD_SUBPICTURE_CODING {
	DVD_SPCoding_RunLength = 0,
	DVD_SPCoding_Extended = 1,
	DVD_SPCoding_Other = 2
} DVD_SUBPICTURE_CODING;
enum DVD_TextCharSet {
	DVD_CharSet_Unicode = 0,
	DVD_CharSet_ISO646 = 1,
	DVD_CharSet_JIS_Roman_Kanji = 2,
	DVD_CharSet_ISO8859_1 = 3,
	DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana = 4
};
enum DVD_TextStringType {
	DVD_Struct_Volume = 0x01,
	DVD_Struct_Title = 0x02,
	DVD_Struct_ParentalID = 0x03,
	DVD_Struct_PartOfTitle = 0x04,
	DVD_Struct_Cell = 0x05,
	DVD_Stream_Audio = 0x10,
	DVD_Stream_Subpicture = 0x11,
	DVD_Stream_Angle = 0x12,
	DVD_Channel_Audio = 0x20,
	DVD_General_Name = 0x30,
	DVD_General_Comments = 0x31,
	DVD_Title_Series = 0x38,
	DVD_Title_Movie = 0x39,
	DVD_Title_Video = 0x3a,
	DVD_Title_Album = 0x3b,
	DVD_Title_Song = 0x3c,
	DVD_Title_Other = 0x3f,
	DVD_Title_Sub_Series = 0x40,
	DVD_Title_Sub_Movie = 0x41,
	DVD_Title_Sub_Video = 0x42,
	DVD_Title_Sub_Album = 0x43,
	DVD_Title_Sub_Song = 0x44,
	DVD_Title_Sub_Other = 0x47,
	DVD_Title_Orig_Series = 0x48,
	DVD_Title_Orig_Movie = 0x49,
	DVD_Title_Orig_Video = 0x4a,
	DVD_Title_Orig_Album = 0x4b,
	DVD_Title_Orig_Song = 0x4c,
	DVD_Title_Orig_Other = 0x4f,
	DVD_Other_Scene = 0x50,
	DVD_Other_Cut = 0x51,
	DVD_Other_Take = 0x52
};
typedef enum tagDVD_TIMECODE_FLAGS {
	DVD_TC_FLAG_25fps = 0x00000001,
	DVD_TC_FLAG_30fps = 0x00000002,
	DVD_TC_FLAG_DropFrame = 0x00000004,
	DVD_TC_FLAG_Interpolated = 0x00000008
} DVD_TIMECODE_FLAGS;
typedef enum tagDVD_TITLE_APPMODE {
	DVD_AppMode_Not_Specified = 0,
	DVD_AppMode_Karaoke = 1,
	DVD_AppMode_Other = 3 
} DVD_TITLE_APPMODE;
typedef enum tagDVD_VIDEO_COMPRESSION {
	DVD_VideoCompression_Other = 0,
	DVD_VideoCompression_MPEG1 = 1,
	DVD_VideoCompression_MPEG2 = 2 
} DVD_VIDEO_COMPRESSION;
typedef enum _DVDECODERRESOLUTION {
	DVDECODERRESOLUTION_720x480 = 1000,
	DVDECODERRESOLUTION_360x240 = 1001,
	DVDECODERRESOLUTION_180x120 = 1002,
	DVDECODERRESOLUTION_88x60 = 1003
} DVDECODERRESOLUTION;
typedef enum _DVRESOLUTION {
	DVRESOLUTION_FULL = 1000,
	DVRESOLUTION_HALF = 1001,
	DVRESOLUTION_QUARTER = 1002,
	DVRESOLUTION_DC = 1003
} DVRESOLUTION;
typedef enum _DVENCODERFORMAT {
	DVENCODERFORMAT_DVSD = 2007,
	DVENCODERFORMAT_DVHD = 2008,
	DVENCODERFORMAT_DVSL = 2009
} DVENCODERFORMAT;
typedef enum _DVENCODERRESOLUTION {
	DVENCODERRESOLUTION_720x480 = 2012,
	DVENCODERRESOLUTION_360x240 = 2013,
	DVENCODERRESOLUTION_180x120 = 2014,
	DVENCODERRESOLUTION_88x60 = 2015
} DVENCODERRESOLUTION;
typedef enum _DVENCODERVIDEOFORMAT {
	DVENCODERVIDEOFORMAT_NTSC = 2000,
	DVENCODERVIDEOFORMAT_PAL = 2001
} DVENCODERVIDEOFORMAT;
typedef enum _FilterState {
	State_Stopped,
	State_Paused,
	State_Running
} FILTER_STATE;
typedef enum {
	INTERLEAVE_NONE,
	INTERLEAVE_CAPTURE,
	INTERLEAVE_FULL,
	INTERLEAVE_NONE_BUFFERED
} InterleavingMode;
typedef enum {
	PhysConn_Video_Tuner = 1,
	PhysConn_Video_Composite,
	PhysConn_Video_SVideo,
	PhysConn_Video_RGB,
	PhysConn_Video_YRYBY,
	PhysConn_Video_SerialDigital,
	PhysConn_Video_ParallelDigital,
	PhysConn_Video_SCSI,
	PhysConn_Video_AUX,
	PhysConn_Video_1394,
	PhysConn_Video_USB,
	PhysConn_Video_VideoDecoder,
	PhysConn_Video_VideoEncoder,
	PhysConn_Video_SCART,
	PhysConn_Video_Black,
	PhysConn_Audio_Tuner = 4096,
	PhysConn_Audio_Line,
	PhysConn_Audio_Mic,
	PhysConn_Audio_AESDigital,
	PhysConn_Audio_SPDIFDigital,
	PhysConn_Audio_SCSI,
	PhysConn_Audio_AUX,
	PhysConn_Audio_1394,
	PhysConn_Audio_USB,
	PhysConn_Audio_AudioDecoder
} PhysicalConnectorType;
typedef enum _PinDirection {
	PINDIR_INPUT,
	PINDIR_OUTPUT
} PIN_DIRECTION;
typedef enum {
	Famine,
	Flood
} QualityMessageType;
enum {
	REG_PINFLAG_B_ZERO = 0x1,
	REG_PINFLAG_B_RENDERER = 0x2,
	REG_PINFLAG_B_MANY = 0x4,
	REG_PINFLAG_B_OUTPUT = 0x8
} REG_PINFLAG;
typedef enum _REM_FILTER_FLAGS {
	REMFILTERF_LEAVECONNECTED = 0x00000001
} REM_FILTER_FLAGS;
typedef enum {
	TunerInputCable,
	TunerInputAntenna
} TunerInputType;
typedef enum tagTVAudioMode {
	AMTVAUDIO_MODE_MONO = 0x0001,
	AMTVAUDIO_MODE_STEREO = 0x0002,
	AMTVAUDIO_MODE_LANG_A = 0x0010,
	AMTVAUDIO_MODE_LANG_B = 0x0020,
	AMTVAUDIO_MODE_LANG_C = 0x0040,
	AMTVAUDIO_PRESET_STEREO = 0x0200,
	AMTVAUDIO_PRESET_LANG_A = 0x1000,
	AMTVAUDIO_PRESET_LANG_B = 0x2000,
	AMTVAUDIO_PRESET_LANG_C = 0x4000
} TVAudioMode;
typedef enum {
	UOP_FLAG_Play_Title_Or_AtTime = 0x00000001,
	UOP_FLAG_Play_Chapter = 0x00000002,
	UOP_FLAG_Play_Title = 0x00000004,
	UOP_FLAG_Stop = 0x00000008,
	UOP_FLAG_ReturnFromSubMenu = 0x00000010,
	UOP_FLAG_Play_Chapter_Or_AtTime = 0x00000020,
	UOP_FLAG_PlayPrev_Or_Replay_Chapter = 0x00000040,
	UOP_FLAG_PlayNext_Chapter = 0x00000080,
	UOP_FLAG_Play_Forwards = 0x00000100,
	UOP_FLAG_Play_Backwards = 0x00000200,
	UOP_FLAG_ShowMenu_Title = 0x00000400,
	UOP_FLAG_ShowMenu_Root = 0x00000800,
	UOP_FLAG_ShowMenu_SubPic = 0x00001000,
	UOP_FLAG_ShowMenu_Audio = 0x00002000,
	UOP_FLAG_ShowMenu_Angle = 0x00004000,
	UOP_FLAG_ShowMenu_Chapter = 0x00008000,
	UOP_FLAG_Resume = 0x00010000,
	UOP_FLAG_Select_Or_Activate_Button = 0x00020000,
	UOP_FLAG_Still_Off = 0x00040000,
	UOP_FLAG_Pause_On = 0x00080000,
	UOP_FLAG_Select_Audio_Stream = 0x00100000,
	UOP_FLAG_Select_SubPic_Stream = 0x00200000,
	UOP_FLAG_Select_Angle = 0x00400000,
	UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode = 0x00800000,
	UOP_FLAG_Select_Video_Mode_Preference = 0x01000000
} VALID_UOP_FLAG;
typedef enum {
	VfwCaptureDialog_Source = 0x01,
	VfwCaptureDialog_Format = 0x02,
	VfwCaptureDialog_Display = 0x04
} VfwCaptureDialogs;
typedef enum {
	VfwCompressDialog_Config = 0x01,
	VfwCompressDialog_About = 0x02,
	VfwCompressDialog_QueryConfig = 0x04,
	VfwCompressDialog_QueryAbout = 0x08
} VfwCompressDialogs;
typedef enum tagVideoControlFlags {
	VideoControlFlag_FlipHorizontal = 0x0001,
	VideoControlFlag_FlipVertical = 0x0002,
	VideoControlFlag_ExternalTriggerEnable = 0x0004,
	VideoControlFlag_Trigger = 0x0008
} VideoControlFlags;
typedef enum {
	ConstantBitRate = 0,
	VariableBitRateAverage,
	VariableBitRatePeak
} VIDEOENCODER_BITRATE_MODE;
typedef enum tagVideoProcAmpFlags {
	VideoProcAmp_Flags_Auto = 0x0001,
	VideoProcAmp_Flags_Manual = 0x0002
} VideoProcAmpFlags;
typedef enum tagVideoProcAmpProperty {
	VideoProcAmp_Brightness,
	VideoProcAmp_Contrast,
	VideoProcAmp_Hue,
	VideoProcAmp_Saturation,
	VideoProcAmp_Sharpness,
	VideoProcAmp_Gamma,
	VideoProcAmp_ColorEnable,
	VideoProcAmp_WhiteBalance,
	VideoProcAmp_BacklightCompensation,
	VideoProcAmp_Gain
} VideoProcAmpProperty;
enum VMR_ASPECT_RATIO_MODE {
	VMR_ARMODE_NONE,
	VMR_ARMODE_LETTER_BOX
};
typedef enum {
	DeinterlacePref_NextBest = 0x01,
	DeinterlacePref_BOB = 0x02,
	DeinterlacePref_Weave = 0x04,
	DeinterlacePref_Mask = 0x07
} VMRDeinterlacePrefs;
typedef enum {
	DeinterlaceTech_Unknown = 0x0000,
	DeinterlaceTech_BOBLineReplicate = 0x0001,
	DeinterlaceTech_BOBVerticalStretch = 0x0002,
	DeinterlaceTech_MedianFiltering = 0x0004,
	DeinterlaceTech_EdgeFiltering = 0x0010,
	DeinterlaceTech_FieldAdaptive = 0x0020,
	DeinterlaceTech_PixelAdaptive = 0x0040,
	DeinterlaceTech_MotionVectorSteered = 0x0080
} VMRDeinterlaceTech;
typedef enum {
	MixerPref_NoDecimation = 0x00000001,
	MixerPref_DecimateOutput = 0x00000002,
	MixerPref_ARAdjustXorY = 0x00000004,
	MixerPref_DecimationReserved = 0x00000008,
	MixerPref_DecimateMask = 0x0000000F,
	MixerPref_BiLinearFiltering = 0x00000010,
	MixerPref_PointFiltering = 0x00000020,
	MixerPref_FilteringMask = 0x000000F0,
	MixerPref_RenderTargetRGB = 0x00000100,
	MixerPref_RenderTargetYUV = 0x00001000,
	MixerPref_RenderTargetYUV420 = 0x00000200,
	MixerPref_RenderTargetYUV422 = 0x00000400,
	MixerPref_RenderTargetYUV444 = 0x00000800,
	MixerPref_RenderTargetReserved = 0x0000E000,
	MixerPref_RenderTargetMask = 0x0000FF00,
	MixerPref_DynamicSwitchToBOB = 0x00010000,
	MixerPref_DynamicDecimateBy2 = 0x00020000,
	MixerPref_DynamicReserved = 0x000C0000,
	MixerPref_DynamicMask = 0x000F0000
} VMRMixerPrefs;
enum VMRMode {
	VMRMode_Windowed = 0x00000001,
	VMRMode_Windowless = 0x00000002,
	VMRMode_Renderless = 0x00000004,
	VMRMode_Mask = 0x00000007
};
typedef enum {
	VMRSample_SyncPoint = 0x00000001,
	VMRSample_Preroll = 0x00000002,
	VMRSample_Discontinuity = 0x00000004,
	VMRSample_TimeValid = 0x00000008
} VMRPresentationFlags;
typedef enum {
	RenderPrefs_ForceOffscreen = 0x00000001,
	RenderPrefs_ForceOverlays = 0x00000002,
	RenderPrefs_AllowOverlays = 0x00000000,
	RenderPrefs_AllowOffscreen = 0x00000000,
	RenderPrefs_DoNotRenderColorKeyAndBorder = 0x00000008,
	RenderPrefs_RestrictToInitialMonitor = 0x00000010,
	RenderPrefs_PreferAGPMemWhenMixing = 0x00000020,
	RenderPrefs_Mask = 0x0000003f
} VMRRenderPrefs;
typedef enum {
	AMAP_PIXELFORMAT_VALID = 0x01,
	AMAP_3D_TARGET = 0x02,
	AMAP_ALLOW_SYSMEM = 0x04,
	AMAP_FORCE_SYSMEM = 0x08,
	AMAP_DIRECTED_FLIP = 0x10,
	AMAP_DXVA_TARGET = 0x20
} VMRSurfaceAllocationFlags;
/*--- DirectShow Reference - DirectShow Structures */
typedef struct _AllocatorProperties {
	long cBuffers;
	long cbBuffer;
	long cbAlign;
	long cbPrefix;
} ALLOCATOR_PROPERTIES;
typedef struct {
	HRESULT hrVPEStatus;
	BOOL bDvdVolInvalid;
	BOOL bDvdVolUnknown;
	BOOL bNoLine21In;
	BOOL bNoLine21Out;
	int iNumStreams;
	int iNumStreamsFailed;
	DWORD dwFailedStreamsFlag;
} AM_DVD_RENDERSTATUS;
typedef struct _AMCOPPCommand {
	GUID macKDI;
	GUID guidCommandID;
	DWORD dwSequence;
	DWORD cbSizeData;
	BYTE CommandData[4056];
} AMCOPPCommand,*LPAMCOPPCommand;
typedef struct _AMCOPPSignature {
	BYTE Signature[256];
} AMCOPPSignature;
typedef struct _AMCOPPStatusInput {
	GUID rApp;
	GUID guidStatusRequestID;
	DWORD dwSequence;
	DWORD cbSizeData;
	BYTE StatusData[4056];
} AMCOPPStatusInput,*LPAMCOPPStatusInput;
typedef struct _AMCOPPStatusOutput {
	GUID macKDI;
	DWORD cbSizeData;
	BYTE COPPStatus[4076];
} AMCOPPStatusOutput,*LPAMCOPPStatusOutput;
typedef struct _AMMediaType {
	GUID majortype;
	GUID subtype;
	BOOL bFixedSizeSamples;
	BOOL bTemporalCompression;
	ULONG lSampleSize;
	GUID formattype;
	IUnknown *pUnk;
	ULONG cbFormat;
	BYTE *pbFormat;
} AM_MEDIA_TYPE;
typedef struct tagAM_SAMPLE2_PROPERTIES {
	DWORD cbData;
	DWORD dwTypeSpecificFlags;
	DWORD dwSampleFlags;
	LONG lActual;
	REFERENCE_TIME tStart;
	REFERENCE_TIME tStop;
	DWORD dwStreamId;
	AM_MEDIA_TYPE *pMediaType;
	BYTE *pbBuffer;
	LONG cbBuffer;
} AM_SAMPLE2_PROPERTIES;
typedef struct {
	REFERENCE_TIME tStart;
	REFERENCE_TIME tStop;
	DWORD dwStartCookie;
	DWORD dwStopCookie;
	DWORD dwFlags;
} AM_STREAM_INFO;
typedef struct {
	const CLSID *clsMajorType;
	const CLSID *clsMinorType;
} REGPINTYPES;
typedef REGPINTYPES AMOVIESETUP_MEDIATYPE,*PAMOVIESETUP_MEDIATYPE,*LPAMOVIESETUP_MEDIATYPE;
typedef struct {
	LPWSTR strName;
	BOOL bRendered;
	BOOL bOutput;
	BOOL bZero;
	BOOL bMany;
	const CLSID *clsConnectsToFilter;
	const WCHAR *strConnectsToPin;
	UINT nMediaTypes;
	const REGPINTYPES *lpMediaType;
} REGFILTERPINS;
typedef REGFILTERPINS AMOVIESETUP_PIN,*PAMOVIESETUP_PIN,*LPAMOVIESETUP_PIN;
typedef struct _AMOVIESETUP_FILTER {
	const CLSID *clsID;
	const WCHAR *strName;
	DWORD dwMerit;
	UINT nPins;
	const AMOVIESETUP_PIN *lpPin;
} AMOVIESETUP_FILTER,*PAMOVIESETUP_FILTER,*LPAMOVIESETUP_FILTER;
typedef struct _AUDIO_STREAM_CONFIG_CAPS {
	GUID guid;
	ULONG MinimumChannels;
	ULONG MaximumChannels;
	ULONG ChannelsGranularity;
	ULONG MinimumBitsPerSample;
	ULONG MaximumBitsPerSample;
	ULONG BitsPerSampleGranularity;
	ULONG MinimumSampleFrequency;
	ULONG MaximumSampleFrequency;
	ULONG SampleFrequencyGranularity;
} AUDIO_STREAM_CONFIG_CAPS;
struct CodecAPIEventData {
	GUID guid;
	DWORD dataLength;
	DWORD reserved[3];
};
typedef struct tagCOLORKEY {
	DWORD KeyType;
	DWORD PaletteIndex;
	COLORREF LowColorValue;
	COLORREF HighColorValue;
} COLORKEY;
#define CK_NOCOLORKEY 0x00000000
#define CK_INDEX 0x00000001
#define CK_RGB 0x00000002
typedef struct {
	DWORD dw1;
	DWORD dw2;
} DDCOLORKEY;
typedef struct tagDVD_AudioAttributes {
	DVD_AUDIO_APPMODE AppMode;
	DVD_AUDIO_FORMAT AudioFormat; 
	LCID Language;
	DVD_AUDIO_LANG_EXT LanguageExtension;
	BOOL fHasMultichannelInfo; 
	DWORD dwFrequency;
	BYTE bQuantization;
	BYTE bNumberOfChannels;
	DWORD dwReserved[2];
} DVD_AudioAttributes;
typedef struct tagDVD_DECODER_CAPS {
	DWORD dwSize;
	DWORD dwAudioCaps;
	double dFwdMaxRateVideo;
	double dFwdMaxRateAudio;
	double dFwdMaxRateSP;
	double dBwdMaxRateVideo; 
	double dBwdMaxRateAudio;
	double dBwdMaxRateSP;
	DWORD dwRes1;
	DWORD dwRes2;
	DWORD dwRes3;
	DWORD dwRes4;
} DVD_DECODER_CAPS;
#define DVD_AUDIO_CAPS_AC3 0x00000001
#define DVD_AUDIO_CAPS_MPEG2 0x00000002
#define DVD_AUDIO_CAPS_LPCM 0x00000004
#define DVD_AUDIO_CAPS_DTS 0x00000008
#define DVD_AUDIO_CAPS_SDDS 0x00000010
typedef struct tagDVD_HMSF_TIMECODE {
	BYTE bHours;
	BYTE bMinutes;
	BYTE bSeconds;
	BYTE bFrames;
} DVD_HMSF_TIMECODE;
typedef struct tagDVD_KaraokeAttributes {
	BYTE bVersion;
	BOOL fMasterOfCeremoniesInGuideVocal1;
	BOOL fDuet;
	DVD_KARAOKE_ASSIGNMENT ChannelAssignment;
	WORD wChannelContents[8];
} DVD_KaraokeAttributes;
typedef struct tagDVD_MUA_Coeff {
	double log2_alpha;
	double log2_beta;
} DVD_MUA_Coeff;
typedef struct tagDVD_MUA_MixingInfo {
	BOOL fMixTo0;
	BOOL fMixTo1;
	BOOL fMix0InPhase;
	BOOL fMix1InPhase;
	DWORD dwSpeakerPosition;
} DVD_MUA_MixingInfo;
#define KSAUDIO_SPEAKER_LEFT 0x00000001
#define KSAUDIO_SPEAKER_RIGHT 0x00000002
#define KSAUDIO_SPEAKER_CENTER 0x00000004
#define KSAUDIO_SPEAKER_SURROUND_LEFT 0x00000008
#define KSAUDIO_SPEAKER_SURROUND_RIGHT 0x00000010
#define KSAUDIO_SPEAKER_SUBWOOFER 0x00000020
#define KSAUDIO_SPEAKER_LEFT_OF_CENTER 0x00000040
#define KSAUDIO_SPEAKER_RIGHT_OF_CENTER 0x00000080
#define KSAUDIO_SPEAKER_SURROUND_MONO 0x00000100
#define KSAUDIO_SPEAKER_SIDE_LEFT 0x00000200
#define KSAUDIO_SPEAKER_SIDE_RIGHT 0x00000400
#define KSAUDIO_SPEAKER_TOP 0x00000800
typedef struct tagDVD_MultichannelAudioAttributes {
	DVD_MUA_MixingInfo Info[8];
	DVD_MUA_Coeff Coeff[8];
} DVD_MultichannelAudioAttributes;
typedef struct tagDVD_PLAYBACK_LOCATION {
	ULONG TitleNum;
	ULONG ChapterNum; 
	ULONG TimeCode;
} DVD_PLAYBACK_LOCATION;
typedef struct tagDVD_PLAYBACK_LOCATION2 {
	ULONG TitleNum;
	ULONG ChapterNum;
	DVD_HMSF_TIMECODE TimeCode;
	ULONG TimeCodeFlags;
} DVD_PLAYBACK_LOCATION2;
typedef struct tagDVD_SubpictureAttributes {
	DVD_SUBPICTURE_TYPE Type;
	DVD_SUBPICTURE_CODING CodingMode;
	LCID Language;
	DVD_SUBPICTURE_LANG_EXT LanguageExtension;
} DVD_SubpictureAttributes;
typedef struct tagDVD_TIMECODE {
	ULONG Hours1:4; 
	ULONG Hours10:4; 
	ULONG Minutes1:4; 
	ULONG Minutes10:4; 
	ULONG Seconds1:4; 
	ULONG Seconds10:4; 
	ULONG Frames1:4; 
	ULONG Frames10:2; 
	ULONG FrameRateCode:2; 
} DVD_TIMECODE;
typedef struct tagDVD_VideoAttributes {
	BOOL fPanscanPermitted;
	BOOL fLetterboxPermitted;
	ULONG ulAspectX;
	ULONG ulAspectY;
	ULONG ulFrameRate;
	ULONG ulFrameHeight;
	DVD_VIDEO_COMPRESSION Compression;
	BOOL fLine21Field1InGOP;
	BOOL fLine21Field2InGOP;
	ULONG ulSourceResolutionX;
	ULONG ulSourceResolutionY;
	BOOL fIsSourceLetterboxed;
	BOOL fIsFilmMode;
} DVD_VideoAttributes;
struct tagDVD_MenuAttributes {
	BOOL fCompatibleRegion[8];
	DVD_VideoAttributes VideoAttributes;
	BOOL fAudioPresent;
	DVD_AudioAttributes AudioAttributes;
	BOOL fSubpicturePresent;
	DVD_SubpictureAttributes SubpictureAttributes;
} DVD_MenuAttributes;
typedef struct tagDVD_TitleMainAttributes {
	DVD_TITLE_APPMODE AppMode;
	DVD_VideoAttributes VideoAttributes;
	ULONG ulNumberOfAudioStreams;
	DVD_AudioAttributes AudioAttributes[8];
	DVD_MultichannelAudioAttributes MultichannelAudioAttributes[8];
	ULONG ulNumberOfSubpictureStreams;
	DVD_SubpictureAttributes SubpictureAttributes[32];
} DVD_TitleAttributes;
typedef struct tag_DVINFO {
	DWORD dwDVAAuxSrc;
	DWORD dwDVAAuxCtl;
	DWORD dwDVAAuxSrc1;
	DWORD dwDVAAuxCtl1;
	DWORD dwDVVAuxSrc;
	DWORD dwDVVAuxCtl;
	DWORD dwDVReserved[2];
} DVINFO,*PDVINFO;
/***************
#define MAX_FILTER_NAME 128
typedef struct _FilterInfo {
	WCHAR achName[MAX_FILTER_NAME]; 
	IFilterGraph *pGraph;
} FILTER_INFO;
***************/
typedef struct _NORMALIZEDRECT {
	float left;
	float top;
	float right;
	float bottom;
} NORMALIZEDRECT,*PNORMALIZEDRECT;
#define MAX_PIN_NAME 128
typedef struct _PinInfo {
	IBaseFilter *pFilter;
	PIN_DIRECTION dir;
	WCHAR achName[MAX_PIN_NAME];
} PIN_INFO;
typedef struct{ 
	QualityMessageType Type;
	long Proportion;
	REFERENCE_TIME Late;
	REFERENCE_TIME TimeStamp;
} Quality;
typedef struct {
	CLSID clsMedium;
	DWORD dw1;
	DWORD dw2;
} REGPINMEDIUM;
typedef struct {
	DWORD dwFlags;
	UINT cInstances;
	UINT nMediaTypes; 
	const REGPINTYPES *lpMediaType;
	UINT nMediums;
	const REGPINMEDIUM *lpMedium;
	const CLSID *clsPinCategory;
} REGFILTERPINS2;
typedef struct {
	DWORD dwVersion;
	DWORD dwMerit;
	union {
		struct {
			ULONG cPins;
			const REGFILTERPINS *rgPins;
		};
		struct {
			ULONG cPins2;
			const REGFILTERPINS2 *rgPins2;
		};
	};
} REGFILTER2;
typedef struct {
	ULONG stream_id;
	DWORD dwMediaSampleContent;
	ULONG ulSubstreamFilterValue;
	int iDataOffset;
} STREAM_ID_MAP;
#define MPEG2_PROGRAM_STREAM_MAP 0x00000000
#define MPEG2_PROGRAM_ELEMENTARY_STREAM 0x00000001
#define MPEG2_PROGRAM_DIRECTORY_PES_PACKET 0x00000002
#define MPEG2_PROGRAM_PACK_HEADER 0x00000003
#define MPEG2_PROGRAM_PES_STREAM 0x00000004
#define MPEG2_PROGRAM_SYSTEM_HEADER 0x00000005
#define SUBSTREAM_FILTER_VAL_NONE 0x10000000
typedef struct tagTIMECODE {
	WORD wFrameRate;
	WORD wFrameFract;
	DWORD dwFrames;
} TIMECODE;
#define ED_FORMAT_SMPTE_30 0x00001196
#define ED_FORMAT_SMPTE_30DROP 0x00001197
#define ED_FORMAT_SMPTE_25 0x00001198
#define ED_FORMAT_SMPTE_24 0x00001199
typedef struct tagTIMECODE_SAMPLE {
	LONGLONG qwTick;
	TIMECODE timecode;
	DWORD dwUser;
	DWORD dwFlags;
} TIMECODE_SAMPLE;
/*#define AM_TIMECODE_FLAG_FCM */
/*#define AM_TIMECODE_FLAG_CF */
/*#define AM_TIMECODE_FLAG_FIELD */
/*#define AM_TIMECODE_FLAG_DF */
/*#define AM_TIMECODE_COLORFRAME */
/*#define AM_TIMECODE_COLORSEQUENCE */
/*#define AM_TIMECODE_FILMSEQUENCE_TYPE */
typedef struct _VIDEO_STREAM_CONFIG_CAPS {
	GUID guid;
	ULONG VideoStandard;
	SIZE InputSize;
	SIZE MinCroppingSize;
	SIZE MaxCroppingSize;
	int CropGranularityX;
	int CropGranularityY;
	int CropAlignX;
	int CropAlignY;
	SIZE MinOutputSize;
	SIZE MaxOutputSize;
	int OutputGranularityX;
	int OutputGranularityY;
	int StretchTapsX;
	int StretchTapsY;
	int ShrinkTapsX;
	int ShrinkTapsY;
	LONGLONG MinFrameInterval;
	LONGLONG MaxFrameInterval;
	LONG MinBitsPerSecond;
	LONG MaxBitsPerSecond;
} VIDEO_STREAM_CONFIG_CAPS;
typedef struct tagVMRALLOCATIONINFO {
	DWORD dwFlags;
	LPBITMAPINFOHEADER lpHdr;
	LPDDPIXELFORMAT lpPixFmt;
	SIZE szAspectRatio;
	DWORD dwMinBuffers;
	DWORD dwMaxBuffers;
	DWORD dwInterlaceFlags;
	SIZE szNativeSize;
} VMRALLOCATIONINFO;
/**********
typedef struct _VMRALPHABITMAP {
	DWORD dwFlags;
	HDC hdc;
	LPDIRECTDRAWSURFACE7 pDDS;
	RECT rSrc;
	NORMALIZEDRECT rDest;
	FLOAT fAlpha;
	COLORREF clrSrcKey;
} VMRALPHABITMAP,*PVMRALPHABITMAP;
**********/
#define VMRBITMAP_DISABLE 0x00000001
#define VMRBITMAP_HDC 0x00000002
#define VMRBITMAP_ENTIREDDS 0x00000004
#define VMRBITMAP_SRCCOLORKEY 0x00000008
#define VMRBITMAP_SRCRECT 0x00000010
typedef struct _VMRDeinterlaceCaps {
	DWORD dwSize;
	DWORD dwNumPreviousOutputFrames;
	DWORD dwNumForwardRefSamples;
	DWORD dwNumBackwardRefSamples;
	VMRDeinterlaceTech DeinterlaceTechnology;
} VMRDeinterlaceCaps;
typedef struct _VMRFrequency {
	DWORD dwNumerator;
	DWORD dwDenominator;
} VMRFrequency;
typedef struct tagVMRGUID {
	GUID *pGUID;
	GUID GUID;
} VMRGUID;
typedef struct tagVMRMONITORINFO {
	VMRGUID guid;
	RECT rcMonitor;
	HMONITOR hMon;
	DWORD dwFlags;
	wchar_t szDevice[32];
	wchar_t szDescription[256];
} VMRMONITORINFO;
/**********
typedef struct tagVMRPRESENTATIONINFO {
	DWORD dwFlags;
	LPDIRECTDRAWSURFACE7 lpSurf;
	REFERENCE_TIME rtStart;
	REFERENCE_TIME rtEnd;
	SIZE szAspectRatio;
	RECT rcSrc;
	RECT rcDst;
	DWORD dwTypeSpecificFlags;
	DWORD dwInterlaceFlags;
} VMRPRESENTATIONINFO;
**********/
typedef struct _VMRVideoDesc {
	DWORD dwSize;
	DWORD dwSampleWidth;
	DWORD dwSampleHeight;
	BOOL SingleFieldPerSample;
	DWORD dwFourCC;
	VMRFrequency InputSampleFreq;
	VMRFrequency OutputFrameFreq;
} VMRVideoDesc;
/**********
typedef struct _VMRVIDEOSTREAMINFO {
	LPDIRECTDRAWSURFACE7 pddsVideoSurface;
	DWORD dwWidth;
	DWORD dwHeight;
	DWORD dwStrmID;
	FLOAT fAlpha;
	DDCOLORKEY ddClrKey;
	NORMALIZEDRECT rNormal;
} VMRVIDEOSTREAMINFO;
**********/
/*--- DirectShow Reference - Interfaces */
#define INTERFACE IAMAnalogVideoDecoder
DECLARE_INTERFACE_(IAMAnalogVideoDecoder, IUnknown)
{
	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
	STDMETHOD_(ULONG,Release)(THIS) PURE;
	STDMETHOD_(HRESULT,get_AvailableTVFormats)(THIS_ long*) PURE;
	STDMETHOD_(HRESULT,get_HorizontalLocked)(THIS_ long*) PURE;
	STDMETHOD_(HRESULT,get_NumberOfLines)(THIS_ long*) PURE;
	STDMETHOD_(HRESULT,get_OutputEnable)(THIS_ long*) PURE;
	STDMETHOD_(HRESULT,get_TVFormat)(THIS_ long*) PURE;
	STDMETHOD_(HRESULT,get_VCRHorizontalLocking)(THIS_ long*) PURE;
	STDMETHOD_(HRESULT,put_OutputEnable)(THIS_ long) PURE;
	STDMETHOD_(HRESULT,put_TVFormat)(THIS_ long) PURE;
	STDMETHOD_(HRESULT,put_VCRHorizontalLocking)(THIS_ long) PURE;
};
#undef INTERFACE
#define INTERFACE IAMAudioInputMixer
DECLARE_INTERFACE_(IAMAudioInputMixer, IUnknown)
{
	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
	STDMETHOD_(ULONG,Release)(THIS) PURE;
	STDMETHOD_(HRESULT,get_Bass)(THIS_ double*) PURE;
	STDMETHOD_(HRESULT,get_BassRange)(THIS_ double*) PURE;
	STDMETHOD_(HRESULT,get_Enable)(THIS_ BOOL*) PURE;
	STDMETHOD_(HRESULT,get_Loudness)(THIS_ BOOL*) PURE;
	STDMETHOD_(HRESULT,get_MixLevel)(THIS_ double*) PURE;
	STDMETHOD_(HRESULT,get_Mono)(THIS_ BOOL*) PURE;
	STDMETHOD_(HRESULT,get_Pan)(THIS_ double*) PURE;
	STDMETHOD_(HRESULT,get_Treble)(THIS_ double*) PURE;
	STDMETHOD_(HRESULT,get_TrebleRange)(THIS_ double*) PURE;
	STDMETHOD_(HRESULT,put_Bass)(THIS_ double) PURE;
	STDMETHOD_(HRESULT,put_Enable)(THIS_ BOOL) PURE;
	STDMETHOD_(HRESULT,put_Loudness)(THIS_ BOOL) PURE;
	STDMETHOD_(HRESULT,put_MixLevel)(THIS_ double) PURE;
	STDMETHOD_(HRESULT,put_Mono)(THIS_ BOOL) PURE;
	STDMETHOD_(HRESULT,put_Pan)(THIS_ double) PURE;
	STDMETHOD_(HRESULT,put_Treble)(THIS_ double) PURE;
};
#undef INTERFACE
#define INTERFACE IAMAudioRendererStats
DECLARE_INTERFACE_(IAMAudioRendererStats, IUnknown)
{
	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
	STDMETHOD_(ULONG,Release)(THIS) PURE;
	STDMETHOD_(HRESULT,GetStatParam)(THIS_ DWORD,DWORD*,DWORD*) PURE;
};
#undef INTERFACE
#define INTERFACE IAMBufferNegotiation
DECLARE_INTERFACE_(IAMBufferNegotiation, IUnknown)
{
	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
	STDMETHOD_(ULONG,Release)(THIS) PURE;
	STDMETHOD_(HRESULT,GetAllocatorProperties)(THIS_ ALLOCATOR_PROPERTIES*) PURE;
	STDMETHOD_(HRESULT,SuggestAllocatorProperties)(THIS_ const ALLOCATOR_PROPERTIES*) PURE;
};
#undef INTERFACE
#define INTERFACE IAMCameraControl
DECLARE_INTERFACE_(IAMCameraControl, IUnknown)
{
	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
	STDMETHOD_(ULONG,Release)(THIS) PURE;
	STDMETHOD_(HRESULT,Get)(THIS_ long,long*,long*) PURE;
	STDMETHOD_(HRESULT,GetRange)(THIS_ long,long*,long*,long*,long*,long*) PURE;
	STDMETHOD_(HRESULT,Set)(THIS_ long,long,long) PURE;
};
#undef INTERFACE

#define INTERFACE IAMCertifiedOutputProtection
DECLARE_INTERFACE_(IAMCertifiedOutputProtection, IUnknown)
{
	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
	STDMETHOD_(ULONG,Release)(THIS) PURE;
	STDMETHOD_(HRESULT,KeyExchange)(THIS_ GUID*,BYTE**,DWORD*) PURE;
	STDMETHOD_(HRESULT,ProtectionCommand)(THIS_ const AMCOPPCommand*) PURE;
	STDMETHOD_(HRESULT,ProtectionStatus)(THIS_ const AMCOPPStatusInput*,AMCOPPStatusOutput*) PURE;
	STDMETHOD_(HRESULT,SessionSequenceStart)(THIS_ const AMCOPPSignature*) PURE;
};
#undef INTERFACE

#ifdef __cplusplus
}
#endif
#endif