--- /dev/null
+#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
+} VMRDeinterlacePrefs;
+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;
+**********/
+
+#ifdef __cplusplus
+}
+#endif
+#endif