From b1f9e28cd155459ab2843690c248ed9f4767bc3f Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Sun, 2 Jun 2019 06:00:38 +0300 Subject: skeleton updated, windows specific stuff added --- dxsdk/Include/DShowIDL/Segment.idl | 1349 ++++++++++++++++++++++++++++++++++++ 1 file changed, 1349 insertions(+) create mode 100644 dxsdk/Include/DShowIDL/Segment.idl (limited to 'dxsdk/Include/DShowIDL/Segment.idl') diff --git a/dxsdk/Include/DShowIDL/Segment.idl b/dxsdk/Include/DShowIDL/Segment.idl new file mode 100644 index 00000000..a9895cbd --- /dev/null +++ b/dxsdk/Include/DShowIDL/Segment.idl @@ -0,0 +1,1349 @@ +// Segment.idl : IDL source for devices segments for msvid.dll +// + +// This file will be processed by the MIDL tool to +// produce the type library (msvideo.tlb) and marshalling code. + + +// Copyright (c) Microsoft Corporation 1998-2000 +// +cpp_quote("//+-------------------------------------------------------------------------") +cpp_quote("//") +cpp_quote("// Microsoft Windows") +cpp_quote("// Copyright (C) Microsoft Corporation, 1999-2000.") +cpp_quote("//") +cpp_quote("//--------------------------------------------------------------------------") +cpp_quote("#pragma once") + +#ifndef TUNING_MODEL_ONLY + +#include +cpp_quote("#include ") + +#ifndef DO_NO_IMPORTS +import "oaidl.idl"; +import "ocidl.idl"; +import "strmif.idl"; +import "tuner.idl"; +import "tvratings.idl"; +#endif + +typedef enum { +dispidName, +dispidStatus, +dispidDevImageSourceWidth, +dispidDevImageSourceHeight, +dispidDevCountryCode, +dispidDevOverScan, +dispidSegment, +dispidDevVolume, +dispidDevBalance, +dispidDevPower, +dispidTuneChan, +dispidDevVideoSubchannel, +dispidDevAudioSubchannel, +dispidChannelAvailable, +dispidDevVideoFrequency, +dispidDevAudioFrequency, +dispidCount, +dispidDevFileName, +dispidVisible, +dispidOwner, +dispidMessageDrain, +//dispidPosition, +dispidViewable, +dispidDevView, +dispidKSCat, +dispidCLSID, +dispid_KSCat, +dispid_CLSID, +dispidTune, +dispidTS, +dispidDevSAP, +dispidClip, +dispidRequestedClipRect, +dispidClippedSourceRect, +dispidAvailableSourceRect, +dispidMediaPosition, +dispidDevRun, +dispidDevPause, +dispidDevStop, +dispidCCEnable, +dispidDevStep, +dispidDevCanStep, +dispidSourceSize, +dispid_playtitle, +dispid_playchapterintitle, +dispid_playchapter, +dispid_playchaptersautostop, +dispid_playattime, +dispid_playattimeintitle, +dispid_playperiodintitleautostop, +dispid_replaychapter, +dispid_playprevchapter, +dispid_playnextchapter, +dispid_playforwards, +dispid_playbackwards, +dispid_stilloff, +dispid_audiolanguage, +dispid_showmenu, +dispid_resume, +dispid_returnfromsubmenu, +dispid_buttonsavailable, +dispid_currentbutton, +dispid_SelectAndActivateButton, +dispid_ActivateButton, +dispid_SelectRightButton, +dispid_SelectLeftButton, +dispid_SelectLowerButton, +dispid_SelectUpperButton, +dispid_ActivateAtPosition, +dispid_SelectAtPosition, +dispid_ButtonAtPosition, +dispid_NumberOfChapters, +dispid_TotalTitleTime, +dispid_TitlesAvailable, +dispid_VolumesAvailable, +dispid_CurrentVolume, +dispid_CurrentDiscSide, +dispid_CurrentDomain, +dispid_CurrentChapter, +dispid_CurrentTitle, +dispid_CurrentTime, +dispid_FramesPerSecond, +dispid_DVDTimeCode2bstr, +dispid_DVDDirectory, +dispid_IsSubpictureStreamEnabled, +dispid_IsAudioStreamEnabled, +dispid_CurrentSubpictureStream, +dispid_SubpictureLanguage, +dispid_CurrentAudioStream, +dispid_AudioStreamsAvailable, +dispid_AnglesAvailable, +dispid_CurrentAngle, +dispid_CCActive, +dispid_CurrentCCService, +dispid_SubpictureStreamsAvailable, +dispid_SubpictureOn, +dispid_DVDUniqueID, +dispid_EnableResetOnStop, +dispid_AcceptParentalLevelChange, +dispid_NotifyParentalLevelChange, +dispid_SelectParentalCountry, +dispid_SelectParentalLevel, +dispid_TitleParentalLevels, +dispid_PlayerParentalCountry, +dispid_PlayerParentalLevel, +dispid_Eject, +dispid_UOPValid, +dispid_SPRM, +dispid_GPRM, +dispid_DVDTextStringType, +dispid_DVDTextString, +dispid_DVDTextNumberOfStrings, +dispid_DVDTextNumberOfLanguages, +dispid_DVDTextLanguageLCID, +dispid_RegionChange, +dispid_DVDAdm, +dispid_DeleteBookmark, +dispid_RestoreBookmark, +dispid_SaveBookmark, +dispid_SelectDefaultAudioLanguage, +dispid_SelectDefaultSubpictureLanguage, +dispid_PreferredSubpictureStream, +dispid_DefaultMenuLanguage, +dispid_DefaultSubpictureLanguage, +dispid_DefaultAudioLanguage, +dispid_DefaultSubpictureLanguageExt, +dispid_DefaultAudioLanguageExt, +dispid_LanguageFromLCID, +dispid_KaraokeAudioPresentationMode, +dispid_KaraokeChannelContent, +dispid_KaraokeChannelAssignment, +dispid_RestorePreferredSettings, +dispid_ButtonRect, +dispid_DVDScreenInMouseCoordinates, +dispid_CustomCompositorClass, +dispidCustomCompositorClass, +dispid_CustomCompositor, +dispidMixerBitmap, +dispid_MixerBitmap, +dispidMixerBitmapOpacity, +dispidMixerBitmapRect, +dispidSetupMixerBitmap, +dispidUsingOverlay, +dispidDisplayChange, +dispidRePaint, +dispid_IsEqualDevice, +dispidrate, +dispidposition, +dispidpositionmode, +dispidlength, +dispidChangePassword, +dispidSaveParentalLevel, +dispidSaveParentalCountry, +dispidConfirmPassword, +dispidGetParentalLevel, +dispidGetParentalCountry, +dispidDefaultAudioLCID, +dispidDefaultSubpictureLCID, +dispidDefaultMenuLCID, +dispidBookmarkOnStop, +dispidMaxVidRect, +dispidMinVidRect, +dispidCapture, +dispid_DecimateInput, +dispidAlloctor, +dispid_Allocator, +dispidAllocPresentID, +dispidSetAllocator, +dispid_SetAllocator, +dispidStreamBufferSinkName, +dispidStreamBufferSourceName, +dispidStreamBufferContentRecording, +dispidStreamBufferReferenceRecording, +dispidstarttime, +dispidstoptime, +dispidrecordingstopped, +dispidrecordingstarted, +dispidNameSetLock, +dispidrecordingtype, +dispidstart, +dispidRecordingAttribute, +dispid_RecordingAttribute, +dispidSBEConfigure, +dispid_CurrentRatings, +dispid_MaxRatingsLevel, +dispid_audioencoderint, +dispid_videoencoderint, +dispidService, +dispid_BlockUnrated, +dispid_UnratedDelay, +dispid_SuppressEffects, +dispidsbesource, +LastReservedDeviceDispid=0x3fff +} SegDispidList; +typedef enum { +eventidStateChange, +eventidOnTuneChanged, +eventidEndOfMedia, +eventidDVDNotify, +eventidPlayForwards, +eventidPlayBackwards, +eventidShowMenu, +eventidResume, +eventidSelectOrActivateButton, +eventidStillOff, +eventidPauseOn, +eventidChangeCurrentAudioStream, +eventidChangeCurrentSubpictureStream, +eventidChangeCurrentAngle, +eventidPlayAtTimeInTitle, +eventidPlayAtTime, +eventidPlayChapterInTitle, +eventidPlayChapter, +eventidReplayChapter, +eventidPlayNextChapter, +eventidStop, +eventidReturnFromSubmenu, +eventidPlayTitle, +eventidPlayPrevChapter, +eventidChangeKaraokePresMode, +eventidChangeVideoPresMode, +eventidOverlayUnavailable, +eventidSinkCertificateFailure, +eventidSinkCertificateSuccess, +eventidSourceCertificateFailure, +eventidSourceCertificateSuccess, +eventidRatingsBlocked, +eventidRatingsUnlocked, +eventidRatingsChanged, +eventidWriteFailure, +eventidTimeHole, +eventidStaleDataRead, +eventidContentBecomingStale, +eventidStaleFileDeleted, +LastReservedDeviceEvent=0x3fff +} SegEventidList; +typedef enum { + FrameMode, + TenthsSecondsMode +} PositionModeList; +typedef enum { + CONTENT = 0, + REFERENCE +} RecordingType; + + typedef enum { + None, + Caption1, + Caption2, + Text1, + Text2, + XDS +} MSVidCCService; + +//***************************************************************************** +//***************************************************************************** +/////////////////////////////////////////////////////////////////////////////// +// +// interfaces +// +/////////////////////////////////////////////////////////////////////////////// +//***************************************************************************** +//***************************************************************************** + +//***************************************************************************** +/////////////////////////////////////////////////////////////////////////////// +// +// Utility Interfaces +// +/////////////////////////////////////////////////////////////////////////////// +//***************************************************************************** + +interface IMSVidRect; + +[object, + uuid(7F5000A6-A440-47ca-8ACC-C0E75531A2C2), + helpstring("Automation Compliant GDI Rect with Automatic HWND Scaling"), + pointer_default(unique) +] +interface IMSVidRect : IDispatch { + [propget, helpstring("Rectangle Top")] HRESULT Top([out, retval] LONG* TopVal); + [propput, helpstring("Rectangle Top")] HRESULT Top([in] LONG TopVal); + [propget, helpstring("Rectangle Left")] HRESULT Left([out, retval] LONG* LeftVal); + [propput, helpstring("Rectangle Left")] HRESULT Left([in] LONG LeftVal); + [propget, helpstring("Rectangle Width")] HRESULT Width([out, retval] LONG* WidthVal); + [propput, helpstring("Rectangle Width")] HRESULT Width([in] LONG WidthVal); + [propget, helpstring("Rectangle Height")] HRESULT Height([out, retval] LONG* HeightVal); + [propput, helpstring("Rectangle Height")] HRESULT Height([in] LONG HeightVal); + [propget, helpstring("Coordinates relative to HWnd")] HRESULT HWnd([out, retval] HWND* HWndVal); + [propput, helpstring("Coordinates relative to HWnd")] HRESULT HWnd([in] HWND HWndVal); + [propput, helpstring("New Rectangle Values")] HRESULT Rect([in] IMSVidRect* RectVal); +}; + +interface IMSVidGraphSegmentContainer; +interface IMSVidGraphSegment; +interface IEnumMSVidGraphSegment; + + +//***************************************************************************** +/////////////////////////////////////////////////////////////////////////////// +// +// Segment Container interface allowing segments to find and access other segments +// +/////////////////////////////////////////////////////////////////////////////// +//***************************************************************************** + /////////////////////////////////////////////////////////////////////////////////////// + // if segments need to change the control state(stop, run, pause, etc) or get any stock + // properties that are also made available to clients such as HWND, then they should simply + // QI for the main IMSVidCtl interface. there's no reason to implement this stuff twice. + [object, + uuid(3DD2903D-E0AA-11d2-B63A-00C04F79498E), + helpstring("DShow Graph Segment Container"), + pointer_default(unique) + ] + interface IMSVidGraphSegmentContainer : IUnknown { + [propget, helpstring("Graph")] HRESULT Graph([out] IGraphBuilder **ppGraph); + [propget, helpstring("Input Segment")] HRESULT Input([out] IMSVidGraphSegment **pInput); + [propget, helpstring("Output Segment")] HRESULT Outputs([out] IEnumMSVidGraphSegment **pOutputs); + [propget, helpstring("Video Renderer")] HRESULT VideoRenderer([out] IMSVidGraphSegment **pVR); + [propget, helpstring("Audio Renderer")] HRESULT AudioRenderer([out] IMSVidGraphSegment **pAR); + [propget, helpstring("Features")] HRESULT Features([out] IEnumMSVidGraphSegment **pOutputs); + [propget, helpstring("Composites")] HRESULT Composites([out] IEnumMSVidGraphSegment **pComposites); + [propget, helpstring("Container")] HRESULT ParentContainer([out] IUnknown **ppContainer); // this allows the segments to get out and walk the dhtml hierarchy + HRESULT Decompose(IMSVidGraphSegment *pSegment); + HRESULT IsWindowless(); // the stock hwnd on the main vidctl is only valid if this is set + + // be very careful using GetFocus(think twice and then don't). it is recommended that systems follow the model + // laid out by atvef and smil wherein the convergence of UI and video are implemented by providing the user interface + // as standard html/xml, etc with video incorporated as an element of this standard presentation. + // however, in the special case of dvd there is a prexisting standard which is conceptually inside out. + // that is, the UI is embedded in the video stream rather than the stream being embedded in the UI. + // as a consequence, buttons and menus can asynchronously pop up out of the video stream source(dvd navigator) + // and, may require the focus. this inside out paradigm is the only situation where + // getfocus should be used. otherwise, weird non-standard interactions will result. + HRESULT GetFocus(); + }; + + +/////////////////////////////////////////////////////////////////////////////// +// +// Direct Show Segment extension interfaces +// +/////////////////////////////////////////////////////////////////////////////// + + typedef enum MSVidSegmentType { + MSVidSEG_SOURCE, + MSVidSEG_XFORM, + MSVidSEG_DEST, + } MSVidSegmentType; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, + uuid(1C15D482-911D-11d2-B632-00C04F79498E), + helpstring("DShow Graph Segment Builder Interface"), + pointer_default(unique) + ] + interface IMSVidGraphSegment : IPersist { + // note: we separate init and load(via put_Container) because we want to associate device object + // with their device moniker at creation time. but, we don't want to take the + // hit of loading their filters until we're ready to build the graph because this segment may not get used + [propget] HRESULT Init([out, retval] IUnknown **pInit); + [propput] HRESULT Init([in] IUnknown *pInit); + HRESULT EnumFilters([out] IEnumFilters **pNewEnum); //filters in seg + [propget, helpstring("Graph that contains this segment")] HRESULT Container([out, retval] IMSVidGraphSegmentContainer **ppCtl); + [propput, helpstring("Graph that contains this segment")] HRESULT Container([in] IMSVidGraphSegmentContainer *pCtl); + [propget, helpstring("Type of Segment")] HRESULT Type([out, retval] MSVidSegmentType *pType); + [propget, helpstring("Category this segment is for")] HRESULT Category([out, retval] GUID *pGuid); + HRESULT Build(); // used to notify non-composition segment that the build/composition phase is about to start + HRESULT PreRun(); // used to notify segments that the graph is built and about to be started + HRESULT PostRun(); // called after graph is running + HRESULT PreStop(); // used to notify segments that the graph about to be stopped + HRESULT PostStop();// called after graph is stopped + HRESULT OnEventNotify(LONG lEventCode, LONG_PTR lEventParm1, LONG_PTR lEventParm2); //DShow events + HRESULT Decompose(); + }; + + + enum { + // button state + MSVIDCTL_LEFT_BUTTON =0x0001, + MSVIDCTL_RIGHT_BUTTON =0x0002, + MSVIDCTL_MIDDLE_BUTTON =0x0004, + MSVIDCTL_X_BUTTON1 =0x0008, + MSVIDCTL_X_BUTTON2 =0x0010, + // shift state + MSVIDCTL_SHIFT =0x0001, + MSVIDCTL_CTRL =0x0002, + MSVIDCTL_ALT =0x0004, + }; + + [object, + uuid(301C060E-20D9-4587-9B03-F82ED9A9943C), + helpstring("DShow Graph Segment Input Events"), + pointer_default(unique) + ] + // this should only be implemented used by input(source) devices with ui in the video + // stream(specifically dvd). see discussion of getfocus above + interface IMSVidGraphSegmentUserInput : IUnknown { + HRESULT Click(); + HRESULT DblClick(); + HRESULT KeyDown(short* KeyCode, short ShiftState); + HRESULT KeyPress(short* KeyAscii); + HRESULT KeyUp(short* KeyCode, short ShiftState); + HRESULT MouseDown(short ButtonState, short ShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y); + HRESULT MouseMove(short ButtonState, short ShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y); + HRESULT MouseUp(short ButtonState, short ShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y); + } + + /////////////////////////////////////////////////////////////////////////////////////// + [object, + uuid(1C15D483-911D-11d2-B632-00C04F79498E), + helpstring("DShow Graph Segment Composition Interface"), + pointer_default(unique) + ] + interface IMSVidCompositionSegment : IMSVidGraphSegment { + HRESULT Compose([in] IMSVidGraphSegment *upstream, [in] IMSVidGraphSegment *downstream); + [propget, helpstring("The upstream segment being composed by this composition segment")] HRESULT Up([out] IMSVidGraphSegment **upstream); + [propget, helpstring("The downstream segment being composed by this composition segment")] HRESULT Down([out] IMSVidGraphSegment **downstream); + + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, + uuid(3DD2903E-E0AA-11d2-B63A-00C04F79498E), + helpstring("DShow Graph Segment Enumerator"), + pointer_default(unique) + ] + interface IEnumMSVidGraphSegment : IUnknown { + HRESULT Next([in] ULONG celt, [out] IMSVidGraphSegment ** rgelt, [out] ULONG * pceltFetched); + HRESULT Skip([in] ULONG celt); + HRESULT Reset(void); + HRESULT Clone([out] IEnumMSVidGraphSegment** ppenum); + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, + uuid(DD47DE3F-9874-4f7b-8B22-7CB2688461E7), + helpstring("DShow Video Renderer Graph Segment Builder Interface"), + pointer_default(unique) + ] + interface IMSVidVRGraphSegment : IMSVidGraphSegment { + // NOTE: because of the way ActiveX controls work there is a tight coupling + // between the video control itself and the video renderer device segment + // as a consequence there are important interfaces such as positioning that + // come through the control via the various ole interfaces which we need to + // pass to the video renderer but we don't want script to access directly + // there are also stock properties such as refresh and autosize that must also be + // implemented directly on the video control and passed through to the video renderer + + // from ole interfaces + [hidden, restricted, propput] HRESULT _VMRendererMode([in] LONG dwMode); + [hidden, restricted, propput] HRESULT Owner([in] HWND Window); + [hidden, restricted, propget] HRESULT Owner([out, retval] HWND* Window); + // from ole interfaces + [hidden, restricted, propget] HRESULT UseOverlay([out, retval] VARIANT_BOOL *UseOverlayVal); + [hidden, restricted, propput] HRESULT UseOverlay([in] VARIANT_BOOL UseOverlayVal); + // from top-level control visibility state + [hidden, restricted, propget] HRESULT Visible([out, retval] VARIANT_BOOL* Visible); + [hidden, restricted, propput] HRESULT Visible([in] VARIANT_BOOL Visible); + + // clients must go through top-level vidctl interfaces to access this. since vidctl's ondraw + // actually paints this, it needs to know about it. + [propget, hidden, restricted] HRESULT ColorKey([out, retval] OLE_COLOR* ColorKey); + [propput, hidden, restricted] HRESULT ColorKey([in] OLE_COLOR ColorKey); + // from ole interfaces and window msgs + [propget, hidden, restricted] HRESULT Source([out, retval] LPRECT r); + [propput, hidden, restricted] HRESULT Source([in] RECT r); + // from ole interfaces and window msgs + [propget, hidden, restricted] HRESULT Destination([out, retval] LPRECT r); + [propput, hidden, restricted] HRESULT Destination([in] RECT r); + [propget, hidden, restricted] HRESULT NativeSize([out] LPSIZE sizeval, [out] LPSIZE aspectratio); + // letterboxing color if we're using + [propget, hidden, restricted] HRESULT BorderColor([out, retval] OLE_COLOR* color); + [propput, hidden, restricted] HRESULT BorderColor([in] OLE_COLOR color); + // letterbox or stretch + [propget, hidden, restricted] HRESULT MaintainAspectRatio([out, retval] VARIANT_BOOL *fMaintain); + [propput, hidden, restricted] HRESULT MaintainAspectRatio([in] VARIANT_BOOL fMaintain); + + // from top-level control refresh method + [hidden, restricted] HRESULT Refresh(); + [hidden, restricted] HRESULT DisplayChange(); + [hidden, restricted] HRESULT RePaint([in] HDC hdc); + + }; + + +//***************************************************************************** +/////////////////////////////////////////////////////////////////////////////// +// +// Automation compliant device object interfaces for bpc video control +// +/////////////////////////////////////////////////////////////////////////////// +//***************************************************************************** + + +/////////////////////////////////////////////////////////////////////////////// +// +// input devices +// +/////////////////////////////////////////////////////////////////////////////// + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, + uuid(1C15D47C-911D-11d2-B632-00C04F79498E), + helpstring("MS Video Control Device Interface"), + pointer_default(unique) + ] + interface IMSVidDevice : IDispatch { + // base device properties + [propget, id(dispidName)] HRESULT Name([out, retval] BSTR *Name); + [propget, id(dispidStatus)] HRESULT Status([out, retval] long *Status); + [propput, id(dispidDevPower)] HRESULT Power([in] VARIANT_BOOL Power); + [propget, id(dispidDevPower)] HRESULT Power([retval, out] VARIANT_BOOL *Power); + // DShow Associated properties + // note: filter can be retrieved by QIing for IMSVidGraphSegment and enumerating + [propget, id(dispidKSCat)] HRESULT Category([out, retval] BSTR *Guid); + [propget, id(dispidCLSID)] HRESULT ClassID([out, retval] BSTR *Clsid); + [propget, id(dispid_KSCat), hidden, restricted] HRESULT _Category([out, retval] GUID* Guid); + [propget, id(dispid_CLSID), hidden, restricted] HRESULT _ClassID([out, retval] GUID* Clsid); + [id(dispid_IsEqualDevice), helpstring("does the passed in device represent the same underlying hardware")] HRESULT IsEqualDevice([in] IMSVidDevice* Device, [out, retval] VARIANT_BOOL* IsEqual); + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, + uuid(37B0353D-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control Input Device Interface"), + pointer_default(unique) + ] + interface IMSVidInputDevice : IMSVidDevice { + [id(dispidViewable)]HRESULT IsViewable([in] VARIANT* v, [out, retval] VARIANT_BOOL *pfViewable); // can this device view this item? + [id(dispidDevView)]HRESULT View([in] VARIANT* v); // set this device to view this item + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, + uuid(1C15D480-911D-11d2-B632-00C04F79498E), + helpstring("MS Video Control Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidDeviceEvent : IDispatch { + [id(eventidStateChange)] HRESULT StateChange([in] IMSVidDevice *lpd, [in] long oldState, [in] long newState); + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, + uuid(37B0353E-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control Input Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidInputDeviceEvent : IDispatch { + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, + uuid(1C15D47F-911D-11d2-B632-00C04F79498E), + helpstring("MS Video Control Video Device Interface"), + pointer_default(unique) + ] + interface IMSVidVideoInputDevice : IMSVidInputDevice { + }; + + /////////////////////////////////////////////////////////////////////////////////////// + + [object, dual, oleautomation, + uuid(37B03538-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control Playback Device Interface"), + pointer_default(unique) + ] + interface IMSVidPlayback : IMSVidInputDevice { + // note: the following methods control the playback device *NOT* the graph. + // if the underlying source filter only supports these functions via + // imediacontrol on the graph then this device segment object should return E_NOTIMPL. + [propget, id(dispid_EnableResetOnStop), helpstring("EnableResetOnStop")] HRESULT EnableResetOnStop([out, retval] VARIANT_BOOL *pVal); + [propput, id(dispid_EnableResetOnStop), helpstring("EnableResetOnStop")] HRESULT EnableResetOnStop([in] VARIANT_BOOL newVal); + [id(dispidDevRun)] HRESULT Run(); + [id(dispidDevPause)] HRESULT Pause(); + [id(dispidDevStop)] HRESULT Stop(); + [propget, id(dispidDevCanStep)] HRESULT CanStep([in] VARIANT_BOOL fBackwards, [out,retval] VARIANT_BOOL *pfCan); + [id(dispidDevStep)] HRESULT Step([in] long lStep); + [propput, id(dispidrate), helpstring("Rate")] HRESULT Rate([in] double plRate); + [propget, id(dispidrate), helpstring("Rate")] HRESULT Rate([out,retval]double *plRate); + [propput, id(dispidposition), helpstring("Position")] HRESULT CurrentPosition([in] long lPosition); + [propget, id(dispidposition), helpstring("Position")] HRESULT CurrentPosition([out, retval] long* lPosition); + [propput, id(dispidpositionmode), helpstring("PositionMode")] HRESULT PositionMode([in] PositionModeList lPositionMode); + [propget, id(dispidpositionmode), helpstring("PositionMode")] HRESULT PositionMode([out, retval] PositionModeList* lPositionMode); + [propget, id(dispidlength), helpstring("Length")] HRESULT Length([out, retval] long *lLength); + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, + uuid(37B0353B-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control Playback Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidPlaybackEvent : IMSVidInputDeviceEvent { + [id(eventidEndOfMedia)] HRESULT EndOfMedia([in] IMSVidPlayback *lpd); + }; + + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, hidden, + uuid(1C15D47D-911D-11d2-B632-00C04F79498E), + helpstring("MS Video Tuner Interface"), + pointer_default(unique) + ] + interface IMSVidTuner : IMSVidVideoInputDevice { + [propget, id(dispidTune)] HRESULT Tune([out, retval] ITuneRequest **ppTR); + [propput, id(dispidTune)] HRESULT Tune([in] ITuneRequest *pTR); + [propget, id(dispidTS)] HRESULT TuningSpace([out, retval] ITuningSpace **plTS); + [hidden, restricted, propput, id(dispidTS)] HRESULT TuningSpace([in] ITuningSpace* plTS); + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, hidden, + uuid(1C15D485-911D-11d2-B632-00C04F79498E), + helpstring("MS Video Control Tuner Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidTunerEvent : IMSVidInputDeviceEvent { + [id(eventidOnTuneChanged)] HRESULT TuneChanged([in] IMSVidTuner *lpd); + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, hidden, + uuid(1C15D47E-911D-11d2-B632-00C04F79498E), + helpstring("MS Video TV Tuner Interface"), + pointer_default(unique) + ] + interface IMSVidAnalogTuner : IMSVidTuner { + [propget, id(dispidTuneChan)] HRESULT Channel([out, retval] long *Channel); + [propput, id(dispidTuneChan)] HRESULT Channel([in] long Channel); + [propget, id(dispidDevVideoFrequency)] HRESULT VideoFrequency([retval, out] long *lcc); + [propget, id(dispidDevAudioFrequency)] HRESULT AudioFrequency([retval, out] long *lcc); + // note: this is not LCID, this is physical location of device using + // international dialing code value + [propget, id(dispidDevCountryCode)] HRESULT CountryCode([retval, out] long *lcc); + [propput, id(dispidDevCountryCode)] HRESULT CountryCode([in] long lcc); + // analog specific shortcut to enabling a different audio component + [propget, id(dispidDevSAP)] HRESULT SAP([out, retval] VARIANT_BOOL *pfSapOn); + [propput, id(dispidDevSAP)] HRESULT SAP([in] VARIANT_BOOL fSapOn); + // methods + [id(dispidChannelAvailable)] HRESULT ChannelAvailable([in] long nChannel, [out] long *SignalStrength, [retval, out] VARIANT_BOOL *fSignalPresent); + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, + uuid(1C15D486-911D-11d2-B632-00C04F79498E), + helpstring("MS Video Control TV Tuner Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidAnalogTunerEvent : IMSVidTunerEvent { + + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, hidden, + uuid(37B03539-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control File Playback Device Interface"), + pointer_default(unique) + ] + interface IMSVidFilePlayback : IMSVidPlayback { + [propget, id(dispidDevFileName)] HRESULT FileName([out, retval] BSTR *FileName); + [propput, id(dispidDevFileName)] HRESULT FileName([in] BSTR FileName); + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, hidden, + uuid(37B0353A-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control File Playback Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidFilePlaybackEvent : IMSVidPlaybackEvent { + + }; + + /////////////////////////////////////////////////////////////////////////////////////// + typedef enum + { + dvdMenu_Title = 2, + dvdMenu_Root = dvdMenu_Title + 1, + dvdMenu_Subpicture = dvdMenu_Root + 1, + dvdMenu_Audio = dvdMenu_Subpicture + 1, + dvdMenu_Angle = dvdMenu_Audio + 1, + dvdMenu_Chapter = dvdMenu_Angle + 1 + } DVDMenuIDConstants; + + typedef enum + { + dvdState_Undefined = -2, + dvdState_Unitialized = dvdState_Undefined + 1, + dvdState_Stopped = dvdState_Unitialized + 1, + dvdState_Paused = dvdState_Stopped + 1, + dvdState_Running = dvdState_Paused + 1 + } DVDFilterState; + + typedef enum + { + dvdStruct_Volume = 0x1, + dvdStruct_Title = 0x2, + dvdStruct_ParentalID = 0x3, + dvdStruct_PartOfTitle = 0x4, + dvdStruct_Cell = 0x5, + dvdStream_Audio = 0x10, + dvdStream_Subpicture = 0x11, + dvdStream_Angle = 0x12, + dvdChannel_Audio = 0x20, + dvdGeneral_Name = 0x30, + dvdGeneral_Comments = 0x31, + dvdTitle_Series = 0x38, + dvdTitle_Movie = 0x39, + dvdTitle_Video = 0x3a, + dvdTitle_Album = 0x3b, + dvdTitle_Song = 0x3c, + dvdTitle_Other = 0x3f, + dvdTitle_Sub_Series = 0x40, + dvdTitle_Sub_Movie = 0x41, + dvdTitle_Sub_Video = 0x42, + dvdTitle_Sub_Album = 0x43, + dvdTitle_Sub_Song = 0x44, + dvdTitle_Sub_Other = 0x47, + dvdTitle_Orig_Series = 0x48, + dvdTitle_Orig_Movie = 0x49, + dvdTitle_Orig_Video = 0x4a, + dvdTitle_Orig_Album = 0x4b, + dvdTitle_Orig_Song = 0x4c, + dvdTitle_Orig_Other = 0x4f, + dvdOther_Scene = 0x50, + dvdOther_Cut = 0x51, + dvdOther_Take = 0x52 + } DVDTextStringType; + + typedef enum + { + dvdSPExt_NotSpecified = 0, + dvdSPExt_Caption_Normal = 1, + dvdSPExt_Caption_Big = 2, + dvdSPExt_Caption_Children = 3, + dvdSPExt_CC_Normal = 5, + dvdSPExt_CC_Big = 6, + dvdSPExt_CC_Children = 7, + dvdSPExt_Forced = 9, + dvdSPExt_DirectorComments_Normal = 13, + dvdSPExt_DirectorComments_Big = 14, + dvdSPExt_DirectorComments_Children = 15 + } DVDSPExt; + + [object, dual, oleautomation, hidden, + uuid(CF45F88B-AC56-4EE2-A73A-ED04E2885D3C), + helpstring("IMSVidWebDVD Interface"), + pointer_default(unique) + ] + interface IMSVidWebDVD : IMSVidPlayback { + + HRESULT OnDVDEvent([in]long lEvent, [in]LONG_PTR lParam1, [in]LONG_PTR lParam2); + [id(dispid_playtitle), helpstring("method PlayTitle")] HRESULT PlayTitle([in] long lTitle); + [id(dispid_playchapterintitle), helpstring("method PlayChapterInTitle")] HRESULT PlayChapterInTitle([in] long lTitle, [in] long lChapter); + [id(dispid_playchapter), helpstring("method PlayChapter")] HRESULT PlayChapter([in] long lChapter); + [id(dispid_playchaptersautostop), helpstring("method PlayChaptersAutoStop")] HRESULT PlayChaptersAutoStop([in] long lTitle, [in] long lstrChapter, [in] long lChapterCount); + [id(dispid_playattime), helpstring("method PlayAtTime")] HRESULT PlayAtTime([in] BSTR strTime); + [id(dispid_playattimeintitle), helpstring("method PlayAtTimeInTitle")] HRESULT PlayAtTimeInTitle([in] long lTitle, [in] BSTR strTime); + [id(dispid_playperiodintitleautostop), helpstring("method PlayPeriodInTitleAutoStop")] HRESULT PlayPeriodInTitleAutoStop([in] long lTitle, [in] BSTR strStartTime, [in] BSTR strEndTime); + [id(dispid_replaychapter), helpstring("method ReplayChapter")] HRESULT ReplayChapter(); + [id(dispid_playprevchapter), helpstring("method PlayPrevChapter")] HRESULT PlayPrevChapter(); + [id(dispid_playnextchapter), helpstring("method PlayNextChapter")] HRESULT PlayNextChapter(); + [id(dispid_stilloff), helpstring("method StillOff")] HRESULT StillOff(); + [propget, id(dispid_audiolanguage), helpstring("AudioLanguage")] HRESULT AudioLanguage([in] long lStream, [in, defaultvalue(0)] VARIANT_BOOL fFormat, [out, retval] BSTR* strAudioLang); + [id(dispid_showmenu), helpstring("method ShowMenu")] HRESULT ShowMenu([in] DVDMenuIDConstants MenuID); + [id(dispid_resume), helpstring("method Resume")] HRESULT Resume(); + [id(dispid_returnfromsubmenu), helpstring("method ReturnFromSubmenu")] HRESULT ReturnFromSubmenu(); + [propget,id(dispid_buttonsavailable), helpstring("ButtonsAvailable")] HRESULT ButtonsAvailable([out, retval] long *pVal); + [propget,id(dispid_currentbutton), helpstring("CurrentButton")] HRESULT CurrentButton([out, retval] long *pVal); + [id(dispid_SelectAndActivateButton), helpstring("method SelectAndActivateButton")] HRESULT SelectAndActivateButton([in] long lButton); + [id(dispid_ActivateButton), helpstring("method ActivateButton")] HRESULT ActivateButton(); + [id(dispid_SelectRightButton), helpstring("method SelectRightButton")] HRESULT SelectRightButton(); + [id(dispid_SelectLeftButton), helpstring("method SelectLeftButton")] HRESULT SelectLeftButton(); + [id(dispid_SelectLowerButton), helpstring("method SelectLowerButton")] HRESULT SelectLowerButton(); + [id(dispid_SelectUpperButton), helpstring("method SelectUpperButton")] HRESULT SelectUpperButton(); + [id(dispid_ActivateAtPosition), helpstring("method ActivateAtPosition")] HRESULT ActivateAtPosition([in] long xPos, [in] long yPos); + [id(dispid_SelectAtPosition), helpstring("method SelectAtPosition")] HRESULT SelectAtPosition([in] long xPos, [in] long yPos); + [propget, id(dispid_ButtonAtPosition), helpstring("ButtonAtPosition")] HRESULT ButtonAtPosition([in] long xPos, [in] long yPos, [out, retval] long* plButton); + [propget, id(dispid_NumberOfChapters), helpstring("NumberOfChapters")] HRESULT NumberOfChapters([in] long lTitle, [out, retval] long *pVal); + [propget, id(dispid_TotalTitleTime), helpstring("TotalTitleTime")] HRESULT TotalTitleTime([out, retval] BSTR *pVal); + [propget, id(dispid_TitlesAvailable), helpstring("TitlesAvailable")] HRESULT TitlesAvailable([out, retval] long* pVal); + [propget, id(dispid_VolumesAvailable), helpstring("VolumesAvailable")] HRESULT VolumesAvailable([out, retval] long *pVal); + [propget, id(dispid_CurrentVolume), helpstring("CurrentVolume")] HRESULT CurrentVolume([out, retval] long *pVal); + [propget, id(dispid_CurrentDiscSide), helpstring("CurrentDiscSide")] HRESULT CurrentDiscSide([out, retval] long *pVal); + [propget, id(dispid_CurrentDomain), helpstring("CurrentDomain")] HRESULT CurrentDomain([out, retval] long *pVal); + [propget, id(dispid_CurrentChapter), helpstring("CurrentChapter")] HRESULT CurrentChapter([out, retval] long *pVal); + [propget, id(dispid_CurrentTitle), helpstring("CurrentTitle")] HRESULT CurrentTitle([out, retval] long *pVal); + [propget, id(dispid_CurrentTime), helpstring("CurrentTime")] HRESULT CurrentTime([out, retval] BSTR *pVal); + [id(dispid_DVDTimeCode2bstr), helpstring("method DVDTimeCode2bstr")] HRESULT DVDTimeCode2bstr([in] long timeCode, [out, retval] BSTR *pTimeStr); + [propget, id(dispid_DVDDirectory), helpstring("DVDDirectory")] HRESULT DVDDirectory([out, retval] BSTR *pVal); + [propput, id(dispid_DVDDirectory), helpstring("DVDDirectory")] HRESULT DVDDirectory([in] BSTR newVal); + [id(dispid_IsSubpictureStreamEnabled), helpstring("method IsSubpictureStreamEnabled")] HRESULT IsSubpictureStreamEnabled([in] long lstream, [out, retval] VARIANT_BOOL *fEnabled); + [id(dispid_IsAudioStreamEnabled), helpstring("method IsAudioStreamEnabled")] HRESULT IsAudioStreamEnabled([in] long lstream, [out, retval] VARIANT_BOOL *fEnabled); + [propget, id(dispid_CurrentSubpictureStream), helpstring("CurrentSubpictureStream")] HRESULT CurrentSubpictureStream([out, retval] long *pVal); + [propput, id(dispid_CurrentSubpictureStream), helpstring("CurrentSubpictureStream")] HRESULT CurrentSubpictureStream([in] long newVal); + [propget, id(dispid_SubpictureLanguage), helpstring("SubpictureLanguage")] HRESULT SubpictureLanguage(long lStream, [out, retval] BSTR* strLanguage); + [propget, id(dispid_CurrentAudioStream), helpstring("CurrentAudioStream")] HRESULT CurrentAudioStream([out, retval] long *pVal); + [propput, id(dispid_CurrentAudioStream), helpstring("CurrentAudioStream")] HRESULT CurrentAudioStream([in] long newVal); + [propget, id(dispid_AudioStreamsAvailable), helpstring("AudioStreamsAvailable")] HRESULT AudioStreamsAvailable([out, retval] long *pVal); + [propget, id(dispid_AnglesAvailable), helpstring("AnglesAvailable")] HRESULT AnglesAvailable([out, retval] long *pVal); + [propget, id(dispid_CurrentAngle), helpstring("CurrentAngle")] HRESULT CurrentAngle([out, retval] long *pVal); + [propput, id(dispid_CurrentAngle), helpstring("CurrentAngle")] HRESULT CurrentAngle([in] long newVal); + [propget, id(dispid_SubpictureStreamsAvailable), helpstring("SubpictureStreamsAvailable")] HRESULT SubpictureStreamsAvailable([out, retval] long *pVal); + [propget, id(dispid_SubpictureOn), helpstring("SubpictureOn")] HRESULT SubpictureOn([out, retval] VARIANT_BOOL *pVal); + [propput, id(dispid_SubpictureOn), helpstring("SubpictureOn")] HRESULT SubpictureOn([in] VARIANT_BOOL newVal); + [propget, id(dispid_DVDUniqueID), helpstring("DVDUniqueID")] HRESULT DVDUniqueID([out, retval] BSTR *pVal); + [id(dispid_AcceptParentalLevelChange), helpstring("method AcceptParentalLevelChange")] HRESULT AcceptParentalLevelChange([in] VARIANT_BOOL fAccept, [in] BSTR strUserName, [in] BSTR strPassword); + [id(dispid_NotifyParentalLevelChange), helpstring("method NotifyParentalLevelChange")] HRESULT NotifyParentalLevelChange([in] VARIANT_BOOL newVal); + [id(dispid_SelectParentalCountry), helpstring("method SelectParentalCountry")] HRESULT SelectParentalCountry([in] long lCountry, [in] BSTR strUserName, [in] BSTR strPassword); + [id(dispid_SelectParentalLevel), helpstring("method SelectParentalLevel")] HRESULT SelectParentalLevel([in] long lParentalLevel, [in] BSTR strUserName, [in] BSTR strPassword); + [propget, id(dispid_TitleParentalLevels), helpstring("TitleParentalLevels")] HRESULT TitleParentalLevels([in] long lTitle, [out, retval] long* plParentalLevels); + [propget, id(dispid_PlayerParentalCountry), helpstring("PlayerParentalCountry")] HRESULT PlayerParentalCountry([out, retval] long* plCountryCode); + [propget, id(dispid_PlayerParentalLevel), helpstring("PlayerParentalLevel")] HRESULT PlayerParentalLevel([out, retval] long* plParentalLevel); + [id(dispid_Eject), helpstring("method Eject")] HRESULT Eject(); + [id(dispid_UOPValid), helpstring("method UOPValid")] HRESULT UOPValid([in] long lUOP, [out, retval] VARIANT_BOOL* pfValid); + [propget, id(dispid_SPRM), helpstring("SPRM")] HRESULT SPRM([in] long lIndex, [out, retval] short *psSPRM); + [propget, id(dispid_GPRM), helpstring("GPRM")] HRESULT GPRM([in] long lIndex, [out, retval] short *psSPRM); + [propput, id(dispid_GPRM), helpstring("GPRM")] HRESULT GPRM([in] long lIndex, [in] short sValue); + [propget, id(dispid_DVDTextStringType), helpstring("DVDTextStringType")] HRESULT DVDTextStringType([in] long lLangIndex, [in] long lStringIndex, [out, retval] DVDTextStringType* pType); + [propget, id(dispid_DVDTextString), helpstring("DVDTextString")] HRESULT DVDTextString([in] long lLangIndex, [in] long lStringIndex, [out, retval] BSTR* pstrText); + [propget, id(dispid_DVDTextNumberOfStrings), helpstring("DVDTextNumberOfStrings")] HRESULT DVDTextNumberOfStrings([in] long lLangIndex, [out, retval] long* plNumOfStrings); + [propget, id(dispid_DVDTextNumberOfLanguages), helpstring("DVDTextNumberOfLanguages")] HRESULT DVDTextNumberOfLanguages([out, retval] long* plNumOfLangs); + [propget, id(dispid_DVDTextLanguageLCID), helpstring("DVDTextLanguageLCID")] HRESULT DVDTextLanguageLCID([in] long lLangIndex, [out, retval] long* lcid); + [id(dispid_RegionChange), helpstring("method RegionChange")] HRESULT RegionChange(); + [propget, id(dispid_DVDAdm), helpstring("DVDAdm")] HRESULT DVDAdm([out, retval] IDispatch* *pVal); + [id(dispid_DeleteBookmark), helpstring("method DeleteBookmark")] HRESULT DeleteBookmark(); + [id(dispid_RestoreBookmark), helpstring("method RestoreBookmark")] HRESULT RestoreBookmark(); + [id(dispid_SaveBookmark), helpstring("method SaveBookmark")] HRESULT SaveBookmark(); + [id(dispid_SelectDefaultAudioLanguage), helpstring("method SelectDefaultAudioLanguage")] HRESULT SelectDefaultAudioLanguage([in] long lang, [in] long ext); + [id(dispid_SelectDefaultSubpictureLanguage), helpstring("method SelectDefaultSubpictureLanguage")] HRESULT SelectDefaultSubpictureLanguage([in] long lang, [in] DVDSPExt ext); + [propget, id(dispid_PreferredSubpictureStream), helpstring("PreferredSubpictureStream")] HRESULT PreferredSubpictureStream([out, retval] long *pVal); + [propget, id(dispid_DefaultMenuLanguage), helpstring("DefaultMenuLanguage")] HRESULT DefaultMenuLanguage([out, retval] long* lang); + [propput, id(dispid_DefaultMenuLanguage), helpstring("DefaultMenuLanguage")] HRESULT DefaultMenuLanguage([in] long lang); + [propget, id(dispid_DefaultSubpictureLanguage), helpstring("DefaultSubpictureLanguage")] HRESULT DefaultSubpictureLanguage([out, retval] long* lang); + [propget, id(dispid_DefaultAudioLanguage), helpstring("DefaultAudioLanguage")] HRESULT DefaultAudioLanguage([out, retval] long *lang); + [propget, id(dispid_DefaultSubpictureLanguageExt), helpstring("DefaultSubpictureLanguageExt")] HRESULT DefaultSubpictureLanguageExt([out, retval] DVDSPExt* ext); + [propget, id(dispid_DefaultAudioLanguageExt), helpstring("DefaultAudioLanguageExt")] HRESULT DefaultAudioLanguageExt([out, retval] long *ext); + [propget, id(dispid_LanguageFromLCID), helpstring("LanguageFromLCID")] HRESULT LanguageFromLCID([in] long lcid, [out, retval] BSTR* lang); + [propget, id(dispid_KaraokeAudioPresentationMode), helpstring("KaraokeAudioPresentationMode")] HRESULT KaraokeAudioPresentationMode([out, retval] long *pVal); + [propput, id(dispid_KaraokeAudioPresentationMode), helpstring("KaraokeAudioPresentationMode")] HRESULT KaraokeAudioPresentationMode([in] long newVal); + [propget, id(dispid_KaraokeChannelContent), helpstring("KaraokeChannelContent")] HRESULT KaraokeChannelContent([in] long lStream, [in] long lChan, [out, retval] long* lContent); + [propget, id(dispid_KaraokeChannelAssignment), helpstring("KaraokeChannelAssignment")] HRESULT KaraokeChannelAssignment([in] long lStream, [out, retval] long *lChannelAssignment); + [id(dispid_RestorePreferredSettings), helpstring("method RestorePreferredSettings")] HRESULT RestorePreferredSettings(); + [propget, id(dispid_ButtonRect), helpstring("ButtonRect")] HRESULT ButtonRect([in] long lButton, [out, retval] IMSVidRect** pRect); + [propget, id(dispid_DVDScreenInMouseCoordinates), helpstring("DVDScreenInMouseCoordinates")] HRESULT DVDScreenInMouseCoordinates([out, retval] IMSVidRect** ppRect); + [propput, id(dispid_DVDScreenInMouseCoordinates), helpstring("DVDScreenInMouseCoordinates")] HRESULT DVDScreenInMouseCoordinates([in] IMSVidRect* pRect); + + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, hidden, + uuid(B4F7A674-9B83-49cb-A357-C63B871BE958), + helpstring("MS Video Control File Playback Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidWebDVDEvent : IMSVidPlaybackEvent { + [id(eventidDVDNotify), helpstring("Notifies the client about DVD Code")] HRESULT DVDNotify([in]long lEventCode, [in]VARIANT lParam1, [in]VARIANT lParam2); + [id(eventidPlayForwards), helpstring("Notifies the client")] HRESULT PlayForwards([in] VARIANT_BOOL bEnabled); + [id(eventidPlayBackwards), helpstring("Notifies the client")] HRESULT PlayBackwards([in] VARIANT_BOOL bEnabled); + [id(eventidShowMenu), helpstring("Notifies the client")] HRESULT ShowMenu([in]DVDMenuIDConstants, [in] VARIANT_BOOL bEnabled); + [id(eventidResume), helpstring("Notifies the client")] HRESULT Resume([in] VARIANT_BOOL bEnabled); + [id(eventidSelectOrActivateButton), helpstring("Notifies the client")] HRESULT SelectOrActivateButton([in] VARIANT_BOOL bEnabled); + [id(eventidStillOff), helpstring("Notifies the client")] HRESULT StillOff([in] VARIANT_BOOL bEnabled); + [id(eventidPauseOn), helpstring("Notifies the client")] HRESULT PauseOn([in] VARIANT_BOOL bEnabled); + [id(eventidChangeCurrentAudioStream), helpstring("Notifies the client")] HRESULT ChangeCurrentAudioStream([in] VARIANT_BOOL bEnabled); + [id(eventidChangeCurrentSubpictureStream), helpstring("Notifies the client")] HRESULT ChangeCurrentSubpictureStream([in] VARIANT_BOOL bEnabled); + [id(eventidChangeCurrentAngle), helpstring("Notifies the client")] HRESULT ChangeCurrentAngle([in] VARIANT_BOOL bEnabled); + [id(eventidPlayAtTimeInTitle), helpstring("Notifies the client")] HRESULT PlayAtTimeInTitle([in] VARIANT_BOOL bEnabled); + [id(eventidPlayAtTime), helpstring("Notifies the client")] HRESULT PlayAtTime([in] VARIANT_BOOL bEnabled); + [id(eventidPlayChapterInTitle), helpstring("Notifies the client")] HRESULT PlayChapterInTitle([in] VARIANT_BOOL bEnabled); + [id(eventidPlayChapter), helpstring("Notifies the client")] HRESULT PlayChapter([in] VARIANT_BOOL bEnabled); + [id(eventidReplayChapter), helpstring("Notifies the client")] HRESULT ReplayChapter([in] VARIANT_BOOL bEnabled); + [id(eventidPlayNextChapter), helpstring("Notifies the client")] HRESULT PlayNextChapter([in] VARIANT_BOOL bEnabled); + [id(eventidStop), helpstring("Notifies the client")] HRESULT Stop([in] VARIANT_BOOL bEnabled); + [id(eventidReturnFromSubmenu), helpstring("Notifies the client")] HRESULT ReturnFromSubmenu([in] VARIANT_BOOL bEnabled); + [id(eventidPlayTitle), helpstring("Notifies the client")] HRESULT PlayTitle([in] VARIANT_BOOL bEnabled); + [id(eventidPlayPrevChapter), helpstring("Notifies the client")] HRESULT PlayPrevChapter([in] VARIANT_BOOL bEnabled); + [id(eventidChangeKaraokePresMode), helpstring("Notifies the client")] HRESULT ChangeKaraokePresMode([in] VARIANT_BOOL bEnabled); + [id(eventidChangeVideoPresMode), helpstring("Notifies the client")] HRESULT ChangeVideoPresMode([in] VARIANT_BOOL bEnabled); + }; + + [object, dual, oleautomation, hidden, + uuid(B8BE681A-EB2C-47f0-B415-94D5452F0E05), + helpstring("IMSVidWebDVDAdm Interface"), + pointer_default(unique) + ] + interface IMSVidWebDVDAdm : IDispatch + { + [id(dispidChangePassword), helpstring("method ChangePassword")] HRESULT ChangePassword([in]BSTR strUserName, [in]BSTR strOld, [in]BSTR strNew); + [id(dispidSaveParentalLevel), helpstring("method SaveParentalLevel")] HRESULT SaveParentalLevel([in]long level,[in]BSTR strUserName, [in]BSTR strPassword); + [id(dispidSaveParentalCountry), helpstring("method SaveParentalCountry")] HRESULT SaveParentalCountry([in]long country,[in]BSTR strUserName, [in]BSTR strPassword); + [id(dispidConfirmPassword), hidden, restricted, helpstring("method ConfirmPassword")] HRESULT ConfirmPassword([in]BSTR strUserName, [in]BSTR strPassword, [out, retval] VARIANT_BOOL *pVal); + [id(dispidGetParentalLevel), helpstring("method GetParentalLevel")] HRESULT GetParentalLevel([out, retval] long *lLevel); + [id(dispidGetParentalCountry), helpstring("method GetParentalCountry")] HRESULT GetParentalCountry([out, retval] long *lCountry); + [propget, id(dispidDefaultAudioLCID), helpstring("property DefaultAudioLCID")] HRESULT DefaultAudioLCID([out, retval] long *pVal); + [propput, id(dispidDefaultAudioLCID), helpstring("property DefaultAudioLCID")] HRESULT DefaultAudioLCID([in] long newVal); + [propget, id(dispidDefaultSubpictureLCID), helpstring("property DefaultSubpictureLCID")] HRESULT DefaultSubpictureLCID([out, retval] long *pVal); + [propput, id(dispidDefaultSubpictureLCID), helpstring("property DefaultSubpictureLCID")] HRESULT DefaultSubpictureLCID([in] long newVal); + [propget, id(dispidDefaultMenuLCID), helpstring("property DefaultMenuLCID")] HRESULT DefaultMenuLCID([out, retval] long *pVal); + [propput, id(dispidDefaultMenuLCID), helpstring("property DefaultMenuLCID")] HRESULT DefaultMenuLCID([in] long newVal); + [propget, id(dispidBookmarkOnStop), helpstring("property BookmarkOnStop")] HRESULT BookmarkOnStop([out, retval] VARIANT_BOOL *pVal); + [propput, id(dispidBookmarkOnStop), helpstring("property BookmarkOnStop")] HRESULT BookmarkOnStop([in] VARIANT_BOOL newVal); + }; + + +/////////////////////////////////////////////////////////////////////////////// +// +// output devices +// +/////////////////////////////////////////////////////////////////////////////// + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, + uuid(37B03546-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control Output Device Interface"), + pointer_default(unique) + ] + interface IMSVidOutputDevice : IMSVidDevice { + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, + uuid(2E6A14E2-571C-11d3-B652-00C04F79498E), + helpstring("MS Video Control Output Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidOutputDeviceEvent : IMSVidDeviceEvent { + }; + + +/////////////////////////////////////////////////////////////////////////////// +// +// features +// +/////////////////////////////////////////////////////////////////////////////// + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, + uuid(37B03547-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control Feature Interface"), + pointer_default(unique) + ] + interface IMSVidFeature : IMSVidDevice { + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, + uuid(3DD2903C-E0AA-11d2-B63A-00C04F79498E), + helpstring("MS Video Control Feature Event Interface"), + pointer_default(unique) + ] + interface IMSVidFeatureEvent : IMSVidDeviceEvent { + }; + + + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, + uuid(C0020FD4-BEE7-43d9-A495-9F213117103D), + helpstring("MS Video Control Encoder Feature Interface"), + pointer_default(unique) + ] + interface IMSVidEncoder : IMSVidFeature { + [propget, id(dispid_videoencoderint)] HRESULT VideoEncoderInterface([out, retval] IUnknown **ppEncInt); + [propget, id(dispid_audioencoderint)] HRESULT AudioEncoderInterface([out, retval] IUnknown **ppEncInt); + }; + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, + uuid(11EBC158-E712-4d1f-8BB3-01ED5274C4CE), + helpstring("MS Video Control XDS Feature Interface"), + pointer_default(unique) + ] + interface IMSVidXDS : IMSVidFeature { + }; + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, hidden, + uuid(334125C1-77E5-11d3-B653-00C04F79498E), + helpstring("MS Video Control Data Services Feature Interface"), + pointer_default(unique) + ] + interface IMSVidDataServices : IMSVidFeature { + + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, hidden, + uuid(334125C2-77E5-11d3-B653-00C04F79498E), + helpstring("MS Video Control Data Services Feature Event Interface"), + pointer_default(unique) + ] + interface IMSVidDataServicesEvent : IMSVidDeviceEvent { + }; + + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, hidden, + uuid(99652EA1-C1F7-414f-BB7B-1C967DE75983), + helpstring("MS Video Control Closed Captioning Feature Interface"), + pointer_default(unique) + ] + interface IMSVidClosedCaptioning : IMSVidFeature { + [propget, id(dispidCCEnable)] HRESULT Enable([out, retval] VARIANT_BOOL *On); + [propput, id(dispidCCEnable)] HRESULT Enable([in] VARIANT_BOOL On); + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, hidden, + uuid(E00CB864-A029-4310-9987-A873F5887D97), + helpstring("MS Video Control Closed Captioning Feature Interface 2"), + pointer_default(unique) + ] + interface IMSVidClosedCaptioning2 : IMSVidClosedCaptioning{ + [propget, id(dispidService)] HRESULT Service([out, retval] MSVidCCService *On); + [propput, id(dispidService)] HRESULT Service([in] MSVidCCService On); + }; + + +/////////////////////////////////////////////////////////////////////////////// +// +// video renderer +// +/////////////////////////////////////////////////////////////////////////////// +// need to add msvidvidoerenderer2 that has allocator prestenter stuff... + typedef enum { + sslFullSize, + sslClipByOverScan, + sslClipByClipRect, + } SourceSizeList; + + /////////////////////////////////////////////////////////////////////////////////////// + + [object, dual, oleautomation, hidden, + uuid(37B03540-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control Video Renderer Device Interface"), + pointer_default(unique) + ] + interface IMSVidVideoRenderer : IMSVidOutputDevice { + // Properties + [propget, id(dispidCustomCompositorClass)] HRESULT CustomCompositorClass([out, retval] BSTR *CompositorCLSID); + [propput, id(dispidCustomCompositorClass)] HRESULT CustomCompositorClass([in] BSTR CompositorCLSID); + [propget, hidden, restricted, id(dispid_CustomCompositorClass)] HRESULT _CustomCompositorClass([out, retval] GUID* CompositorCLSID); + [propput, hidden, restricted, id(dispid_CustomCompositorClass)] HRESULT _CustomCompositorClass([in] REFCLSID CompositorCLSID); + [propget, hidden, restricted, id(dispid_CustomCompositor)] HRESULT _CustomCompositor([out, retval] IVMRImageCompositor** Compositor); + [propput, hidden, restricted, id(dispid_CustomCompositor)] HRESULT _CustomCompositor([in] IVMRImageCompositor* Compositor); + // + [propget, id(dispidMixerBitmap)] HRESULT MixerBitmap([out,retval] IPictureDisp** MixerPictureDisp); + [propget, hidden, restricted, id(dispid_MixerBitmap)] HRESULT _MixerBitmap([out, retval] IVMRMixerBitmap ** MixerPicture); + [propput, id(dispidMixerBitmap)] HRESULT MixerBitmap([in] IPictureDisp* MixerPictureDisp); + [propput, hidden, restricted, id(dispid_MixerBitmap)] HRESULT _MixerBitmap([in] VMRALPHABITMAP * MixerPicture); + [propget, id(dispidMixerBitmapRect)] HRESULT MixerBitmapPositionRect([out,retval] IMSVidRect **rDest); + [propput, id(dispidMixerBitmapRect)] HRESULT MixerBitmapPositionRect([in] IMSVidRect *rDest); + [propget, id(dispidMixerBitmapOpacity)] HRESULT MixerBitmapOpacity([out,retval]int *opacity); + [propput, id(dispidMixerBitmapOpacity)] HRESULT MixerBitmapOpacity([in]int opacity); + [id(dispidSetupMixerBitmap)] HRESULT SetupMixerBitmap([in] IPictureDisp * MixerPictureDisp, [in] long Opacity, [in] IMSVidRect *rDest); + + // display surface control + [propget, id(dispidSourceSize)] HRESULT SourceSize([retval, out] SourceSizeList *CurrentSize); + [propput, id(dispidSourceSize)] HRESULT SourceSize([in] SourceSizeList NewSize); + + [propget, id(dispidDevOverScan), helpstring("trim each source edge by this amount(in hundredths of percent, e.g. 1.75% == 175)")] HRESULT OverScan([retval, out] long *plPercent); + [propput, id(dispidDevOverScan), helpstring("trim each source edge by this amount(in hundredths of percent, e.g. 1.75% == 175)")] HRESULT OverScan([in] long lPercent); + + [propget, id(dispidAvailableSourceRect)] HRESULT AvailableSourceRect([out, retval] IMSVidRect **pRect); + [propget, id(dispidMaxVidRect)] HRESULT MaxVidRect([out, retval] IMSVidRect **ppVidRect); + [propget, id(dispidMinVidRect)] HRESULT MinVidRect([out, retval] IMSVidRect **ppVidRect); + [propget, id(dispidClippedSourceRect)] HRESULT ClippedSourceRect([out, retval] IMSVidRect **pRect); + [propput, id(dispidClippedSourceRect)] HRESULT ClippedSourceRect([in] IMSVidRect *pRect); + [propget, id(dispidUsingOverlay)] HRESULT UsingOverlay([out, retval] VARIANT_BOOL *UseOverlayVal); + [propput, id(dispidUsingOverlay)] HRESULT UsingOverlay([in] VARIANT_BOOL UseOverlayVal); + [id(dispidCapture)] HRESULT Capture([out, retval] IPictureDisp **currentImage); + [propget, id(dispid_FramesPerSecond), helpstring("FramesPerSecond")] HRESULT FramesPerSecond([out, retval] long *pVal); + [propget, id(dispid_DecimateInput), helpstring("DecimateInput")] HRESULT DecimateInput([out,retval] VARIANT_BOOL *pDeci); + [propput, id(dispid_DecimateInput), helpstring("DecimateInput")] HRESULT DecimateInput([in] VARIANT_BOOL pDeci); + + // Methods + + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, hidden, + uuid(37B03545-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control Video Renderer Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidVideoRendererEvent : IMSVidOutputDeviceEvent { + [id(eventidOverlayUnavailable), helpstring("HW Overlay surface in use or not present")] HRESULT OverlayUnavailable(); + }; + +/////////////////////////////////////////////////////////////////////////////// +// +// Stream Buffer +// Sink and Source +// +/////////////////////////////////////////////////////////////////////////////// +//// +// Stream Buffer Recording Control Object + ////////////////////////////////////////////////////////////////////////////////////// + [ + object, + dual, + oleautomation, + hidden, + nonextensible, + pointer_default(unique), + uuid(160621AA-BBBC-4326-A824-C395AEBC6E74), + helpstring("IMSVidStreamBufferRecordingControl Interface"), + ] + interface IMSVidStreamBufferRecordingControl : IDispatch { + [propget, id(dispidstarttime), helpstring("method StartTime, values in milliseconds")]HRESULT StartTime ([out, retval] long *rtStart) ; + [propput, id(dispidstarttime), helpstring("method StartTime, values in milliseconds")]HRESULT StartTime ([in] long rtStart) ; + [propget, id(dispidstoptime), helpstring("method StopTime, values in milliseconds")]HRESULT StopTime ([out, retval] long *rtStop) ; + [propput, id(dispidstoptime), helpstring("method StopTime, values in milliseconds")]HRESULT StopTime ([in] long rtStop) ; + [propget, id(dispidrecordingstopped), helpstring("method RecordingStopped")]HRESULT RecordingStopped ([out, retval] VARIANT_BOOL* phResult) ; + [propget, id(dispidrecordingstarted), helpstring("method RecordingStarted")]HRESULT RecordingStarted ([out, retval] VARIANT_BOOL* phResult); + [propget, id(dispidrecordingtype), helpstring("property returns type of recording object")] HRESULT RecordingType ([out, retval] RecordingType *dwType); + [propget, id(dispidRecordingAttribute), helpstring("get Recording Attribute interface")] HRESULT RecordingAttribute ([out, retval] IUnknown **pRecordingAttribute); + }; + // Sink + [object, dual, oleautomation, hidden, + uuid(159DBB45-CD1B-4dab-83EA-5CB1F4F21D07), + helpstring("MS Video Control Stream Buffer Sink Output Device Interface"), + pointer_default(unique) + ] + interface IMSVidStreamBufferSink : IMSVidOutputDevice { + [propget, id(dispidStreamBufferContentRecording), helpstring("New Recording Object")] HRESULT ContentRecorder([in]BSTR pszFilename, [retval, out] IMSVidStreamBufferRecordingControl ** pRecordingIUnknown ) ; + [propget, id(dispidStreamBufferReferenceRecording), helpstring("New Recording Object")] HRESULT ReferenceRecorder([in]BSTR pszFilename, [retval, out] IMSVidStreamBufferRecordingControl ** pRecordingIUnknown ) ; + [propget, id(dispidStreamBufferSinkName), helpstring("Sink Name")] HRESULT SinkName([retval, out] BSTR* pName); + [propput, id(dispidStreamBufferSinkName), helpstring("Sink Name")] HRESULT SinkName([in] BSTR Name); + [id(dispidNameSetLock), helpstring("Name Set Lock")] HRESULT NameSetLock(); + [propget, id(dispidSBEConfigure), helpstring("SBE Sink Interface")] HRESULT SBESink([retval, out] IUnknown** sbeConfig); + + }; + /////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, hidden, + uuid(F798A36B-B05B-4bbe-9703-EAEA7D61CD51), + helpstring("MS Video Control Stream Buffer Sink Output Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidStreamBufferSinkEvent : IMSVidOutputDeviceEvent { + [id(eventidSinkCertificateFailure), helpstring("Sink Certificate Failure")] HRESULT CertificateFailure(); + [id(eventidSinkCertificateSuccess), helpstring("Sink Certificate Success")] HRESULT CertificateSuccess(); + [id(eventidWriteFailure), helpstring("Sink Write Failure")] HRESULT WriteFailure(); + }; +/////////////////////////////////////////////////////////////////////////////////////// +// SBE Source Playback + [object, dual, oleautomation, hidden, + uuid(EB0C8CF9-6950-4772-87B1-47D11CF3A02F), + helpstring("MS Video Control Stream Buffer Source Device Interface"), + pointer_default(unique) + ] + interface IMSVidStreamBufferSource : IMSVidFilePlayback { + [propget, id(dispidstart), helpstring("Start")] HRESULT Start([out, retval] long *lStart); + [propget, id(dispid_RecordingAttribute), helpstring("get Recording Attribute interface")] HRESULT RecordingAttribute ([out, retval] IUnknown **pRecordingAttribute); + [id(dispid_CurrentRatings), helpstring("Current Ratings for SBE playback")] HRESULT CurrentRatings([out] EnTvRat_System *pEnSystem, [out] EnTvRat_GenericLevel *pEnRating, [out] LONG *pBfEnAttr); // attrs are bitfields of BfEnTvRat_GenericAttributes + [id(dispid_MaxRatingsLevel), helpstring("Maximum Ratings Level for SBE playback")] HRESULT MaxRatingsLevel([in] EnTvRat_System enSystem, [in] EnTvRat_GenericLevel enRating, [in] LONG lbfEnAttr); + [propput, id(dispid_BlockUnrated), helpstring("Block unrated content")] HRESULT BlockUnrated([in] VARIANT_BOOL bBlock); + [propput, id(dispid_UnratedDelay), helpstring("Maximum Ratings Level for SBE playback")] HRESULT UnratedDelay([in] long dwDelay); + [propget, id(dispidsbesource), helpstring("Stream Buffer Source Interface")] HRESULT SBESource([out, retval] IUnknown **sbeFilter); + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, hidden, + uuid(50CE8A7D-9C28-4DA8-9042-CDFA7116F979), + helpstring("MS Video Control Stream Buffer Source Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidStreamBufferSourceEvent : IMSVidFilePlaybackEvent { + [id(eventidSourceCertificateFailure), helpstring("Source Certificate Failure")] HRESULT CertificateFailure(); + [id(eventidSourceCertificateSuccess), helpstring("Source Certificate Success")] HRESULT CertificateSuccess(); + [id(eventidRatingsBlocked), helpstring("Ratings Blocked")] HRESULT RatingsBlocked(); + [id(eventidRatingsUnlocked), helpstring("Ratings Unblocked")] HRESULT RatingsUnblocked(); + [id(eventidRatingsChanged), helpstring("Ratings Changed")] HRESULT RatingsChanged(); + [id(eventidTimeHole), helpstring("Source Time Hole")] HRESULT TimeHole([in] long StreamOffsetMS, [in] long SizeMS); + [id(eventidStaleDataRead), helpstring("Source Stale Data Read")] HRESULT StaleDataRead(); + [id(eventidContentBecomingStale), helpstring("Source Content Becoming Stale")] HRESULT ContentBecomingStale(); + [id(eventidStaleFileDeleted), helpstring("Source Stale File Deleted")] HRESULT StaleFileDeleted(); + }; + +/////////////////////////////////////////////////////////////////////////////// +// +// video renderer II +// +/////////////////////////////////////////////////////////////////////////////// + + [object, dual, oleautomation, hidden, + uuid(6BDD5C1E-2810-4159-94BC-05511AE8549B), + helpstring("MS Video Control Video Renderer Device Interface"), + pointer_default(unique) + ] + interface IMSVidVideoRenderer2 : IMSVidVideoRenderer { + // Properties + [propget, id(dispidAlloctor)] HRESULT Allocator([out, retval] IUnknown ** AllocPresent); + [propget, id(dispid_Allocator), hidden, restricted] HRESULT _Allocator([out, retval] IVMRSurfaceAllocator ** AllocPresent); + // Quick Notes on ID's + // 1. default id is the lower 32 bits of the IUnknown pointer for the Vidctl + // 2. if the id is not yet set get_Allocator_ID will return -1 + [propget, id(dispidAllocPresentID)] HRESULT Allocator_ID([out, retval] long *ID); + [id(dispidSetAllocator)] HRESULT SetAllocator([in] IUnknown* AllocPresent, [in, defaultvalue(-1)] long ID); + [id(dispid_SetAllocator), hidden, restricted] HRESULT _SetAllocator([in] IVMRSurfaceAllocator* AllocPresent, [in, defaultvalue(-1)] long ID); + [propput, id(dispid_SuppressEffects)] HRESULT SuppressEffects( [in] VARIANT_BOOL bSuppress); + [propget, id(dispid_SuppressEffects)] HRESULT SuppressEffects( [out, retval] VARIANT_BOOL *bSuppress); + // display surface control + // Methods + + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, hidden, + uuid(7145ED66-4730-4fdb-8A53-FDE7508D3E5E), + helpstring("MS Video Control Video Renderer Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidVideoRendererEvent2 : IMSVidOutputDeviceEvent { + [id(eventidOverlayUnavailable), helpstring("HW Overlay surface in use or not present")] HRESULT OverlayUnavailable(); + }; + +/////////////////////////////////////////////////////////////////////////////// +// +// audio renderer +// +/////////////////////////////////////////////////////////////////////////////// + + /////////////////////////////////////////////////////////////////////////////////////// + [object, dual, oleautomation, hidden, + uuid(37B0353F-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control Audio Renderer Device Interface"), + pointer_default(unique) + ] + interface IMSVidAudioRenderer : IMSVidOutputDevice { + [propput, id(dispidDevVolume)] HRESULT Volume([in] long lVol); + [propget, id(dispidDevVolume)] HRESULT Volume([retval, out] long *lVol); + [propput, id(dispidDevBalance)] HRESULT Balance([in] long lBal); + [propget, id(dispidDevBalance)] HRESULT Balance([retval, out] long *lBal); + }; + + /////////////////////////////////////////////////////////////////////////////////////// + [object, oleautomation, hidden, + uuid(37B03541-A4C8-11d2-B634-00C04F79498E), + helpstring("MS Video Control Audio Renderer Device Event Interface"), + pointer_default(unique) + ] + interface IMSVidAudioRendererEvent : IMSVidOutputDeviceEvent { + }; + +/////////////////////////////////////////////////////////////////////////////////////// +// device collection +/////////////////////////////////////////////////////////////////////////////////////// + + [object, dual, oleautomation, hidden, + uuid(C5702CD1-9B79-11d3-B654-00C04F79498E), + helpstring("MS Video Control Input Device Writable Collection Interface"), + pointer_default(unique) + ] + interface IMSVidInputDevices : IDispatch { + [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount); + [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD); + [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidInputDevice **pDB); + [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidInputDevice *pDB); + [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v); + }; + + [object, dual, oleautomation, hidden, + uuid(C5702CD2-9B79-11d3-B654-00C04F79498E), + helpstring("MS Video Control Output Device Writable Collection Interface"), + pointer_default(unique) + ] + interface IMSVidOutputDevices : IDispatch { + [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount); + [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD); + [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidOutputDevice **pDB); + [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidOutputDevice *pDB); + [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v); + }; + + [object, dual, oleautomation, hidden, + uuid(C5702CD3-9B79-11d3-B654-00C04F79498E), + helpstring("MS Video Control Video Renderer Device Writable Collection Interface"), + pointer_default(unique) + ] + interface IMSVidVideoRendererDevices : IDispatch { + [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount); + [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD); + [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidVideoRenderer **pDB); + [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidVideoRenderer *pDB); + [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v); + }; + + [object, dual, oleautomation, hidden, + uuid(C5702CD4-9B79-11d3-B654-00C04F79498E), + helpstring("MS Video Control Audio Renderer Device Writable Collection Interface"), + pointer_default(unique) + ] + interface IMSVidAudioRendererDevices : IDispatch { + [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount); + [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD); + [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidAudioRenderer **pDB); + [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidAudioRenderer *pDB); + [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v); + }; + + [object, dual, oleautomation, hidden, + uuid(C5702CD5-9B79-11d3-B654-00C04F79498E), + helpstring("MS Video Control Features Writable Collection Interface"), + pointer_default(unique) + ] + interface IMSVidFeatures: IDispatch { + [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount); + [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD); + [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidFeature **pDB); + [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidFeature *pDB); + [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v); + }; + +#endif // TUNING_MODEL_ONLY + +// end of file segment.idl -- cgit v1.2.3