?? qedit.idl
字號:
HRESULT GetSrcAtTime(
[out] IAMTimelineObj ** ppSrc,
REFERENCE_TIME Time,
long SearchDirection );
[helpstring("method GetSrcAtTime2")]
HRESULT GetSrcAtTime2([out] IAMTimelineObj ** ppSrc, REFTIME Time, long SearchDirection );
HRESULT InsertSpace( REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd );
HRESULT InsertSpace2( REFTIME rtStart, REFTIME rtEnd );
HRESULT ZeroBetween( REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd );
HRESULT ZeroBetween2( REFTIME rtStart, REFTIME rtEnd );
HRESULT GetNextSrcEx(IAMTimelineObj * pLast, [out] IAMTimelineObj **ppNext);
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This virtual track interface is shared by both the compositions
// and tracks (and groups).
// explained methods:
// TrackGetPriority - used by rendering objects which need to know this.
// SetTrackDirty - !!! not sure if this is useful.
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[
object,
uuid(A8ED5F80-C2C7-11d2-8D39-00A0C9441E20),
odl,
helpstring("IAMTimelineVirtualTrack Interface"),
pointer_default(unique)
]
interface IAMTimelineVirtualTrack : IUnknown
{
[helpstring("method TrackGetPriority")]
HRESULT TrackGetPriority(long * pPriority);
[helpstring("method SetTrackDirty")]
HRESULT SetTrackDirty( );
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Compositions are like tracks in the sense that they also
// implement IAMVirtualTrack and you can put transitions and effects
// on them, but they really are the SUM of those tracks that they
// contain. They are "embedded" compositions. They should only contain
// media of one particular type (like all video or all audio), but
// this is not enforced. You can add a composition to another
// composition with VTrackInsBefore, just like you can add a track.
// The very top composition to which all other comps and tracks belong
// is a Group, which supports I-AMTimelineGroup as well as I-AMTimelineComp.
// explained methods:
// VTrackInsBefore - does NOT mean VideoTrack. Means Virtual Track.
// Adds a virtual track to a composition at a given priority.
// use -1 to mean "at the end"
// VTrackSwapPriorities - switch two vtracks around.
// VTrackGetCount - get how many vtracks this comp contains.
// GetVTrack - you get the idea
// GetCountOfType - Get the total number of these objects this comp
// and all it's vtracks (recursively) contains. !!! this may be dead.
// GetRecursiveLayerOfType - given a number, returns a given track. This
// is done recursively. You need to pass in a pointer to the number,
// and it will be modified upon exit to an unknown value. DO NOT
// CALL THE VERSION WITH THE POINTER!
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[
object,
uuid(EAE58536-622E-11d2-8CAD-00A024580902),
odl,
helpstring("IAMTimelineComp Interface"),
pointer_default(unique)
]
interface IAMTimelineComp : IUnknown
{
[helpstring("method VTrackInsBefore")]
HRESULT VTrackInsBefore(IAMTimelineObj * pVirtualTrack, long Priority);
[helpstring("method VTrackSwapPriorities")]
HRESULT VTrackSwapPriorities(long VirtualTrackA, long VirtualTrackB);
[helpstring("method VTrackGetCount")]
HRESULT VTrackGetCount(long * pVal);
[helpstring("method GetVTrack")]
HRESULT GetVTrack([out] IAMTimelineObj ** ppVirtualTrack, long Which);
[helpstring("method GetCountOfType")]
HRESULT GetCountOfType(long * pVal, long * pValWithComps, TIMELINE_MAJOR_TYPE MajorType );
[helpstring("method GetRecursiveLayerOfType")]
HRESULT GetRecursiveLayerOfType(
[out] IAMTimelineObj ** ppVirtualTrack,
long WhichLayer,
TIMELINE_MAJOR_TYPE Type);
[helpstring("method GetRecursiveLayerOfTypeI (do not call)")]
HRESULT GetRecursiveLayerOfTypeI(
[out] IAMTimelineObj ** ppVirtualTrack,
[in,out] long * pWhichLayer,
TIMELINE_MAJOR_TYPE Type);
HRESULT GetNextVTrack(IAMTimelineObj *pVirtualTrack, [out] IAMTimelineObj **ppNextVirtualTrack);
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Groups represent the topmost composition in a timeline. Every
// group should contain media of only one major type (like all video).
// The timeline can contain multiple groups, see it's interface for
// this. Each group has a particular "media type" that you can get/set
// which help identify it. Each group has an associated FPS which
// is used by the render engine in setting up the big switch. All
// cuts on the timeline will happen rounded to this nearest FPS for
// this particular group. Each group has a priority which enables
// writing out multiple-stream files with 1 or more streams of the
// same type. (Like a 2 video stream AVI file).
// explained methods:
// SetTimeline - this is called internally when the group is added.
// Do not call this.
// GetTimeline - get the timeline this group belongs to.
// GetPriority - get this group's priority
// Get/SetOutputFPS - explained above
// SetMediaTypeForVB - method for VB. Pass in 0 for video, 1 for audio
// SetRecompFormatFromSource - set the recompress format based on the
// source that's loaded or set in the IAMTimelineSrc
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[
object,
uuid(9EED4F00-B8A6-11d2-8023-00C0DF10D434),
odl,
helpstring("IAMTimelineGroup Interface"),
pointer_default(unique)
]
interface IAMTimelineGroup : IUnknown
{
[helpstring("method SetTimeline")]
HRESULT SetTimeline( IAMTimeline * pTimeline );
[helpstring("method GetTimeline")]
HRESULT GetTimeline( [out] IAMTimeline ** ppTimeline );
[helpstring("method GetPriority")]
HRESULT GetPriority( long * pPriority );
[helpstring("method GetMediaType")]
HRESULT GetMediaType([out] AM_MEDIA_TYPE *);
[helpstring("method SetMediaType")]
HRESULT SetMediaType([in] AM_MEDIA_TYPE *);
[helpstring("method SetOutputFPS")]
HRESULT SetOutputFPS(double FPS);
[helpstring("method GetOutputFPS")]
HRESULT GetOutputFPS(double * pFPS);
[helpstring("method SetGroupName")]
HRESULT SetGroupName( BSTR pGroupName );
[helpstring("method GetGroupName")]
HRESULT GetGroupName( [out,retval] BSTR * pGroupName );
// in preview mode, skip frames. In authoring mode, don't
[helpstring("method SetPreviewMode")]
HRESULT SetPreviewMode( BOOL fPreview );
[helpstring("method GetPreviewMode")]
HRESULT GetPreviewMode( BOOL *pfPreview );
[helpstring("method SetMediaTypeForVB")]
HRESULT SetMediaTypeForVB([in] long Val );
// how many frames ahead switch can run
[helpstring("method GetOutputBuffering")]
HRESULT GetOutputBuffering([out] int *pnBuffer );
[helpstring("method SetOutputBuffering")]
HRESULT SetOutputBuffering([in] int nBuffer );
HRESULT SetSmartRecompressFormat( long * pFormat );
HRESULT GetSmartRecompressFormat( long ** ppFormat );
HRESULT IsSmartRecompressFormatSet( BOOL * pVal );
HRESULT IsRecompressFormatDirty( BOOL * pVal );
HRESULT ClearRecompressFormatDirty( );
HRESULT SetRecompFormatFromSource( IAMTimelineSrc * pSource );
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// The main timeline. This is the base object you use to set
// properties of the timeline as a whole, and to create blank
// objects for use within the timeline. You cannot create the
// objects using COM methods, you must go through the timeline to
// create this. That's because certain information is set before
// handing the object back to you. Every object created by the
// timeline will support at LEAST IAMTimelineObj. For any timeline,
// it can have one or more "groups" that it knows about. Each group
// has the capability to hold a complete sub-tree containing media
// that is all of one type. This logical seperation is used for the
// rendering engine, but is not strictly enforced.
// explained methods:
// CreateEmptyNode - pass in a mid type and it will pass back
// an object of the type you requested.
// AddGroup - add a created group to the tree
// RemGroupFromList - make sure timeline no longer knows about this group.
// does NOT do anything to the group itself. Normally the user
// does not want to call this, it's called from the Group's Remove( ) method.
// GetGroup - get a certain group
// GetGroupCount - get how many groups
// ClearAllGroups - clear everything
// GetInsertMode - ask what the insert mode is, overlay or insert
// SetInsertMode - set whether to insert or overlay
// EnableTransitions - turn transitions on or off as a whole
// EnableEffects - same deal.
// SetIntererstRange - discard sub-objects outside of a given
// time range, to save memory/resources
// Get/SetDefaultFPS - set the 'default' FPS for this timeline,
// the RenderEngine reads this information for setting itself up
// by default.
// GetCountOfType - ask for how many of a given thing are in a given
// group. !!! this may be a useless function.
// !!! not implemented
// IsDirty - asks if anything in the timeline needs to be redrawn
// GetDirtyRange - same deal
// ValidateSourceNames - make sure the filenames in the sources
// really exist. Use the same enum flags as the render engine
// uses for SetSourceNameValidation. Source's filenames will be
// changed to those of the found ones in the timeline.
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[
object,
uuid(78530B74-61F9-11D2-8CAD-00A024580902),
odl,
helpstring("IAMTimeline Interface"),
pointer_default(unique)
]
interface IAMTimeline : IUnknown
{
[helpstring("method CreateEmptyNode")]
HRESULT CreateEmptyNode([out] IAMTimelineObj ** ppObj, TIMELINE_MAJOR_TYPE Type );
HRESULT AddGroup( IAMTimelineObj * pGroup );
HRESULT RemGroupFromList( IAMTimelineObj * pGroup );
HRESULT GetGroup( [out] IAMTimelineObj ** ppGroup, long WhichGroup );
HRESULT GetGroupCount( long * pCount );
HRESULT ClearAllGroups( );
HRESULT GetInsertMode( long * pMode );
[helpstring("method SetInsertMode")]
HRESULT SetInsertMode(long Mode);
[helpstring("method EnableTransitions")]
HRESULT EnableTransitions(BOOL fEnabled);
[helpstring("method TransitionsEnabled")]
HRESULT TransitionsEnabled(BOOL * pfEnabled);
[helpstring("method EnableEffects")]
HRESULT EnableEffects(BOOL fEnabled);
[helpstring("method EffectsEnabled")]
HRESULT EffectsEnabled(BOOL * pfEnabled);
[helpstring("method SetInterestRange")]
HRESULT SetInterestRange(REFERENCE_TIME Start, REFERENCE_TIME Stop);
[helpstring("method GetDuration")]
HRESULT GetDuration(REFERENCE_TIME * pDuration);
[helpstring("method GetDuration2")]
HRESULT GetDuration2(double * pDuration);
[helpstring("method SetDefaultFPS")]
HRESULT SetDefaultFPS(double FPS);
[helpstring("method GetDefaultFPS")]
HRESULT GetDefaultFPS(double * pFPS);
[helpstring("method IsDirty")]
HRESULT IsDirty(BOOL * pDirty);
[helpstring("method GetDirtyRange")]
HRESULT GetDirtyRange(REFERENCE_TIME * pStart, REFERENCE_TIME * pStop);
[helpstring("method GetCountOfType")]
HRESULT GetCountOfType(long Group, long * pVal, long * pValWithComps, TIMELINE_MAJOR_TYPE MajorType );
HRESULT ValidateSourceNames( long ValidateFlags, IMediaLocator * pOverride, LONG_PTR NotifyEventHandle );
HRESULT SetDefaultTransition( GUID * pGuid );
HRESULT GetDefaultTransition( GUID * pGuid );
HRESULT SetDefaultEffect( GUID * pGuid );
HRESULT GetDefaultEffect( GUID * pGuid );
HRESULT SetDefaultTransitionB( BSTR pGuid );
HRESULT GetDefaultTransitionB( [out,retval] BSTR * pGuid );
HRESULT SetDefaultEffectB( BSTR pGuid );
HRESULT GetDefaultEffectB( [out,retval] BSTR * pGuid );
};
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
// XML STUFF --- XML STUFF --- XML STUFF --- XML STUFF --- XML
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Xml2Dex - converts back and forth between XML and a dexter project
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[
object,
uuid(18C628ED-962A-11D2-8D08-00A0C9441E20),
odl,
helpstring("IXml2Dex Interface"),
pointer_default(unique)
]
interface IXml2Dex : IDispatch
{
[id(1), helpstring("method CreateGraphFromFile")]
HRESULT CreateGraphFromFile([out] IUnknown ** ppGraph, IUnknown * pTimeline, BSTR Filename);
[id(2), helpstring("method WriteGrfFile")]
HRESULT WriteGrfFile(IUnknown * pGraph, BSTR FileName);
[id(3), helpstring("method WriteXMLFile")]
HRESULT WriteXMLFile(IUnknown * pTimeline, BSTR FileName);
[id(5), helpstring("method ReadXMLFile")]
HRESULT ReadXMLFile(IUnknown *pTimeline, BSTR XMLName);
[id(6), helpstring("method Delete")]
HRESULT Delete(IUnknown *pTimeline, double dStart, double dEnd);
[id(7), helpstring("method WriteXMLPart")]
HRESULT WriteXMLPart(IUnknown * pTimeline, double dStart, double dEnd, BSTR FileName);
[id(8), helpstring("method PasteXMLFile")]
HRESULT PasteXMLFile(IUnknown * pTimeline, double dStart, BSTR FileName);
[id(9), helpstring("method CopyXML")]
HRESULT CopyXML(IUnknown * pTimeline, double dStart, double dEnd);
[id(10), helpstring("method PasteXML")]
HRESULT PasteXML(IUnknown * pTimeline, double dStart);
[id(11), helpstring("method Reset")]
HRESULT Reset( );
[id(12), helpstring("method ReadXML")]
HRESULT ReadXML(IUnknown *pTimeline, IUnknown *pXML);
[id(13), helpstring("method WriteXML")]
HRESULT WriteXML(IUnknown *pTimeline, BSTR *pbstrXML);
};
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
// USEFUL HELPER INTERFACES
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// IAMErrorLog - an interface that receives error information from
// a timeline or a render engine.
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[
object,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -