| /* |
| * Copyright (C) 2008 Google (Lei Zhang) |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| import "oaidl.idl"; |
| import "ocidl.idl"; |
| /* import "dxtrans.idl"; */ |
| import "amstream.idl"; |
| import "msxml.idl"; |
| |
| [ |
| object, |
| uuid(0579154A-2B53-4994-B0D0-E773148EFF85), |
| local, |
| pointer_default(unique) |
| ] |
| interface ISampleGrabberCB : IUnknown |
| { |
| HRESULT SampleCB( |
| double SampleTime, |
| IMediaSample * pSample |
| ); |
| HRESULT BufferCB( |
| double SampleTime, |
| BYTE * pBuffer, |
| LONG BufferLen |
| ); |
| } |
| |
| [ |
| object, |
| uuid(6B652FFF-11FE-4fce-92AD-0266B5D7C78F), |
| local, |
| pointer_default(unique) |
| ] |
| interface ISampleGrabber: IUnknown |
| { |
| HRESULT SetOneShot( |
| BOOL OneShot |
| ); |
| |
| HRESULT SetMediaType( |
| const AM_MEDIA_TYPE * pType |
| ); |
| |
| HRESULT GetConnectedMediaType( |
| AM_MEDIA_TYPE * pType |
| ); |
| |
| HRESULT SetBufferSamples( |
| BOOL BufferThem |
| ); |
| |
| HRESULT GetCurrentBuffer( |
| [in,out] LONG * pBufferSize, |
| [out] LONG * pBuffer |
| ); |
| |
| HRESULT GetCurrentSample( |
| [out] IMediaSample ** ppSample |
| ); |
| |
| HRESULT SetCallback( |
| ISampleGrabberCB * pCallback, |
| LONG WhichMethodToCallback |
| ); |
| }; |
| |
| [ |
| object, |
| uuid(65bd0710-24d2-4FF7-9324-ed2e5d3abafa), |
| pointer_default(unique) |
| ] |
| interface IMediaDet : IUnknown |
| { |
| HRESULT get_Filter( |
| [out] IUnknown* *pVal |
| ); |
| |
| HRESULT put_Filter( |
| IUnknown* newVal |
| ); |
| |
| HRESULT get_OutputStreams( |
| [out] LONG *pVal |
| ); |
| |
| HRESULT get_CurrentStream( |
| [out] LONG *pVal |
| ); |
| |
| HRESULT put_CurrentStream( |
| LONG newVal |
| ); |
| |
| HRESULT get_StreamType( |
| [out] GUID *pVal |
| ); |
| |
| HRESULT get_StreamTypeB( |
| [out] BSTR *pVal |
| ); |
| |
| HRESULT get_StreamLength( |
| [out] double *pVal |
| ); |
| |
| HRESULT get_Filename( |
| [out] BSTR *pVal |
| ); |
| |
| HRESULT put_Filename( |
| BSTR newVal |
| ); |
| |
| HRESULT GetBitmapBits( |
| double StreamTime, |
| LONG * pBufferSize, |
| char * pBuffer, |
| LONG Width, |
| LONG Height |
| ); |
| |
| HRESULT WriteBitmapBits( |
| double StreamTime, |
| LONG Width, |
| LONG Height, |
| BSTR Filename |
| ); |
| |
| HRESULT get_StreamMediaType( |
| [out] AM_MEDIA_TYPE * pVal |
| ); |
| |
| HRESULT GetSampleGrabber( |
| [out] ISampleGrabber ** ppVal |
| ); |
| |
| HRESULT get_FrameRate( |
| [out] double *pVal |
| ); |
| |
| HRESULT EnterBitmapGrabMode( |
| double SeekTime |
| ); |
| }; |
| |
| [ |
| uuid(65BD0711-24D2-4ff7-9324-ED2E5D3ABAFA), |
| ] |
| coclass MediaDet |
| { |
| [default] interface IMediaDet; |
| }; |
| |
| [ |
| object, |
| uuid(288581E0-66CE-11d2-918F-00C0DF10D434), |
| odl, |
| pointer_default(unique) |
| ] |
| interface IMediaLocator : IUnknown |
| { |
| HRESULT FindMediaFile( |
| BSTR input, |
| BSTR filter, |
| BSTR * output, |
| long flags |
| ); |
| |
| HRESULT AddFoundLocation( |
| BSTR dir |
| ); |
| }; |
| |
| typedef struct |
| { |
| BSTR name; |
| DISPID dispID; |
| LONG nValues; |
| } DEXTER_PARAM; |
| |
| typedef struct |
| { |
| VARIANT v; |
| REFERENCE_TIME rt; |
| DWORD dwInterp; |
| } DEXTER_VALUE; |
| |
| [ |
| object, |
| uuid(AE9472BD-B0C3-11D2-8D24-00A0C9441E20), |
| pointer_default(unique) |
| ] |
| interface IPropertySetter : IUnknown |
| { |
| HRESULT LoadXML( |
| [in] IUnknown * pxml |
| ); |
| |
| HRESULT PrintXML( |
| [out] char * xml, |
| [in] int size, |
| [out] int * printed, |
| [in] int indent |
| ); |
| |
| HRESULT CloneProps( |
| [out] IPropertySetter ** setter, |
| [in] REFERENCE_TIME start, |
| [in] REFERENCE_TIME stop |
| ); |
| |
| HRESULT AddProp( |
| [in] DEXTER_PARAM param, |
| [in] DEXTER_VALUE * value |
| ); |
| |
| HRESULT GetProps( |
| [out] LONG * params, |
| [out] DEXTER_PARAM ** param, |
| [out] DEXTER_VALUE ** value |
| ); |
| |
| HRESULT FreeProps( |
| [in] LONG params, |
| [in] DEXTER_PARAM * param, |
| [in] DEXTER_VALUE * value |
| ); |
| |
| HRESULT ClearProps(); |
| |
| HRESULT SaveToBlob( |
| [out] LONG * size, |
| [out] BYTE ** blob |
| ); |
| |
| HRESULT LoadFromBlob( |
| [in] LONG size, |
| [in] BYTE * blob |
| ); |
| |
| HRESULT SetProps( |
| [in] IUnknown * target, |
| [in] REFERENCE_TIME now |
| ); |
| }; |
| |
| [ |
| object, |
| uuid(E43E73A2-0EFA-11d3-9601-00A0C9441E20), |
| odl, |
| pointer_default(unique) |
| ] |
| interface IAMErrorLog : IUnknown |
| { |
| HRESULT LogError( |
| long severity, |
| BSTR error_str, |
| long error_code, |
| long hresult, |
| [in] VARIANT * extra |
| ); |
| }; |
| |
| [ |
| object, |
| uuid(963566DA-BE21-4eaf-88E9-35704F8F52A1), |
| odl, |
| pointer_default(unique) |
| ] |
| interface IAMSetErrorLog : IUnknown |
| { |
| [propget] HRESULT ErrorLog( |
| [out, retval] IAMErrorLog ** log |
| ); |
| |
| [propput] HRESULT ErrorLog( |
| [in] IAMErrorLog * log |
| ); |
| }; |
| |
| interface IAMTimeline; |
| interface IAMTimelineGroup; |
| interface IAMTimelineObj; |
| interface IAMTimelineSrc; |
| |
| typedef enum |
| { |
| TIMELINE_MAJOR_TYPE_COMPOSITE = 1, |
| TIMELINE_MAJOR_TYPE_TRACK = 2, |
| TIMELINE_MAJOR_TYPE_SOURCE = 4, |
| TIMELINE_MAJOR_TYPE_TRANSITION = 8, |
| TIMELINE_MAJOR_TYPE_EFFECT = 16, |
| TIMELINE_MAJOR_TYPE_GROUP = 128 |
| } TIMELINE_MAJOR_TYPE; |
| |
| [ |
| object, |
| uuid(78530B74-61F9-11D2-8CAD-00A024580902), |
| odl, |
| pointer_default(unique) |
| ] |
| interface IAMTimeline : IUnknown |
| { |
| HRESULT CreateEmptyNode( |
| [out] IAMTimelineObj ** obj, |
| TIMELINE_MAJOR_TYPE type |
| ); |
| |
| HRESULT AddGroup( |
| IAMTimelineObj * group |
| ); |
| |
| HRESULT RemGroupFromList( |
| IAMTimelineObj * group |
| ); |
| |
| HRESULT GetGroup( |
| [out] IAMTimelineObj ** group, |
| long index |
| ); |
| |
| HRESULT GetGroupCount( |
| long * count |
| ); |
| |
| HRESULT ClearAllGroups(); |
| |
| HRESULT GetInsertMode( |
| long * mode |
| ); |
| |
| HRESULT SetInsertMode( |
| long mode |
| ); |
| |
| HRESULT EnableTransitions( |
| BOOL enabled |
| ); |
| |
| HRESULT TransitionsEnabled( |
| BOOL * enabled |
| ); |
| |
| HRESULT EnableEffects( |
| BOOL enabled |
| ); |
| |
| HRESULT EffectsEnabled( |
| BOOL * enabled |
| ); |
| |
| HRESULT SetInterestRange( |
| REFERENCE_TIME start, |
| REFERENCE_TIME stop |
| ); |
| |
| HRESULT GetDuration( |
| REFERENCE_TIME * duration |
| ); |
| |
| HRESULT GetDuration2( |
| double * duration |
| ); |
| |
| HRESULT SetDefaultFPS( |
| double fps |
| ); |
| |
| HRESULT GetDefaultFPS( |
| double * fps |
| ); |
| |
| HRESULT IsDirty( |
| BOOL * dirty |
| ); |
| |
| HRESULT GetDirtyRange( |
| REFERENCE_TIME * start, |
| REFERENCE_TIME * stop |
| ); |
| |
| HRESULT GetCountOfType( |
| long group, |
| long * value, |
| long * value_with_comps, |
| TIMELINE_MAJOR_TYPE type |
| ); |
| |
| HRESULT ValidateSourceNames( |
| long flags, |
| IMediaLocator * override, |
| LONG_PTR notify_event |
| ); |
| |
| HRESULT SetDefaultTransition( |
| GUID * guid |
| ); |
| |
| HRESULT GetDefaultTransition( |
| GUID * guid |
| ); |
| |
| HRESULT SetDefaultEffect( |
| GUID * guid |
| ); |
| |
| HRESULT GetDefaultEffect( |
| GUID * guid |
| ); |
| |
| HRESULT SetDefaultTransitionB( |
| BSTR guidb |
| ); |
| |
| HRESULT GetDefaultTransitionB( |
| [out,retval] BSTR * guidb |
| ); |
| |
| HRESULT SetDefaultEffectB( |
| BSTR guidb |
| ); |
| |
| HRESULT GetDefaultEffectB( |
| [out,retval] BSTR * guidb |
| ); |
| }; |
| |
| [ |
| uuid(78530B75-61F9-11D2-8CAD-00A024580902) |
| ] |
| coclass AMTimeline |
| { |
| [default] interface IAMTimeline; |
| interface IPersistStream; |
| interface IAMSetErrorLog; |
| }; |
| |
| [ |
| object, |
| uuid(9EED4F00-B8A6-11d2-8023-00C0DF10D434), |
| odl, |
| pointer_default(unique) |
| ] |
| interface IAMTimelineGroup : IUnknown |
| { |
| HRESULT SetTimeline( |
| IAMTimeline * timeline |
| ); |
| |
| HRESULT GetTimeline( |
| [out] IAMTimeline ** timeline |
| ); |
| |
| HRESULT GetPriority( |
| long * priority |
| ); |
| |
| HRESULT GetMediaType( |
| [out] AM_MEDIA_TYPE * |
| ); |
| |
| HRESULT SetMediaType( |
| [in] AM_MEDIA_TYPE * |
| ); |
| |
| HRESULT SetOutputFPS( |
| double fps |
| ); |
| |
| HRESULT GetOutputFPS( |
| double * fps |
| ); |
| |
| HRESULT SetGroupName( |
| BSTR name |
| ); |
| |
| HRESULT GetGroupName( |
| [out,retval] BSTR * name |
| ); |
| |
| HRESULT SetPreviewMode( |
| BOOL preview |
| ); |
| |
| HRESULT GetPreviewMode( |
| BOOL * preview |
| ); |
| |
| HRESULT SetMediaTypeForVB( |
| [in] long type |
| ); |
| |
| HRESULT GetOutputBuffering( |
| [out] int * buffer |
| ); |
| |
| HRESULT SetOutputBuffering( |
| [in] int buffer |
| ); |
| |
| HRESULT SetSmartRecompressFormat( |
| long * format |
| ); |
| |
| HRESULT GetSmartRecompressFormat( |
| long ** format |
| ); |
| |
| HRESULT IsSmartRecompressFormatSet( |
| BOOL * set |
| ); |
| |
| HRESULT IsRecompressFormatDirty( |
| BOOL * dirty |
| ); |
| |
| HRESULT ClearRecompressFormatDirty(); |
| |
| HRESULT SetRecompFormatFromSource( |
| IAMTimelineSrc * source |
| ); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(78530B77-61F9-11D2-8CAD-00A024580902), |
| odl, |
| pointer_default(unique) |
| ] |
| interface IAMTimelineObj : IUnknown |
| { |
| HRESULT GetStartStop( |
| REFERENCE_TIME * start, |
| REFERENCE_TIME * stop |
| ); |
| |
| HRESULT GetStartStop2( |
| REFTIME * start, REFTIME * stop |
| ); |
| |
| HRESULT FixTimes( |
| REFERENCE_TIME * start, REFERENCE_TIME * stop |
| ); |
| |
| HRESULT FixTimes2( |
| REFTIME * start, REFTIME * stop |
| ); |
| |
| HRESULT SetStartStop( |
| REFERENCE_TIME start, |
| REFERENCE_TIME stop |
| ); |
| |
| HRESULT SetStartStop2( |
| REFTIME start, |
| REFTIME stop |
| ); |
| |
| HRESULT GetPropertySetter( |
| [out,retval] IPropertySetter ** setter |
| ); |
| |
| HRESULT SetPropertySetter( |
| IPropertySetter * setter |
| ); |
| |
| HRESULT GetSubObject( |
| [out,retval] IUnknown ** obj |
| ); |
| |
| HRESULT SetSubObject( |
| IUnknown * obj |
| ); |
| |
| HRESULT SetSubObjectGUID( |
| GUID guid |
| ); |
| |
| HRESULT SetSubObjectGUIDB( |
| BSTR guidb |
| ); |
| |
| HRESULT GetSubObjectGUID( |
| GUID * guid |
| ); |
| |
| HRESULT GetSubObjectGUIDB( |
| [out,retval] BSTR * guidb |
| ); |
| |
| HRESULT GetSubObjectLoaded( |
| BOOL * loaded |
| ); |
| |
| HRESULT GetTimelineType( |
| TIMELINE_MAJOR_TYPE * type |
| ); |
| |
| HRESULT SetTimelineType( |
| TIMELINE_MAJOR_TYPE type |
| ); |
| |
| HRESULT GetUserID( |
| long * id |
| ); |
| |
| HRESULT SetUserID( |
| long id |
| ); |
| |
| HRESULT GetGenID( |
| long * id |
| ); |
| |
| HRESULT GetUserName( |
| [out,retval] BSTR * name |
| ); |
| |
| HRESULT SetUserName( |
| BSTR name |
| ); |
| |
| HRESULT GetUserData( |
| BYTE * data, |
| long * size |
| ); |
| |
| HRESULT SetUserData( |
| BYTE * data, |
| long size |
| ); |
| |
| HRESULT GetMuted( |
| BOOL * muted |
| ); |
| |
| HRESULT SetMuted( |
| BOOL muted |
| ); |
| |
| HRESULT GetLocked( |
| BOOL * locked |
| ); |
| |
| HRESULT SetLocked( |
| BOOL locked |
| ); |
| |
| HRESULT GetDirtyRange( |
| REFERENCE_TIME * start, |
| REFERENCE_TIME * stop |
| ); |
| |
| HRESULT GetDirtyRange2( |
| REFTIME * start, |
| REFTIME * stop |
| ); |
| |
| HRESULT SetDirtyRange( |
| REFERENCE_TIME start, |
| REFERENCE_TIME stop |
| ); |
| |
| HRESULT SetDirtyRange2( |
| REFTIME start, |
| REFTIME stop |
| ); |
| |
| HRESULT ClearDirty(); |
| |
| HRESULT Remove(); |
| |
| HRESULT RemoveAll(); |
| |
| HRESULT GetTimelineNoRef( |
| IAMTimeline ** timeline |
| ); |
| |
| HRESULT GetGroupIBelongTo( |
| [out] IAMTimelineGroup ** group |
| ); |
| |
| HRESULT GetEmbedDepth( |
| long * depth |
| ); |
| }; |
| |
| [ |
| object, |
| uuid(78530B79-61F9-11D2-8CAD-00A024580902), |
| odl, |
| pointer_default(unique) |
| ] |
| interface IAMTimelineSrc : IUnknown |
| { |
| HRESULT GetMediaTimes( |
| REFERENCE_TIME * start, |
| REFERENCE_TIME * stop |
| ); |
| |
| HRESULT GetMediaTimes2( |
| REFTIME * start, |
| REFTIME * stop |
| ); |
| |
| HRESULT ModifyStopTime( |
| REFERENCE_TIME stop |
| ); |
| |
| HRESULT ModifyStopTime2( |
| REFTIME stop |
| ); |
| |
| HRESULT FixMediaTimes( |
| REFERENCE_TIME * start, |
| REFERENCE_TIME * stop |
| ); |
| |
| HRESULT FixMediaTimes2( |
| REFTIME * start, |
| REFTIME * stop |
| ); |
| |
| HRESULT SetMediaTimes( |
| REFERENCE_TIME Start, |
| REFERENCE_TIME Stop |
| ); |
| |
| HRESULT SetMediaTimes2( |
| REFTIME Start, |
| REFTIME Stop |
| ); |
| |
| HRESULT SetMediaLength( |
| REFERENCE_TIME length |
| ); |
| |
| HRESULT SetMediaLength2( |
| REFTIME length |
| ); |
| |
| HRESULT GetMediaLength( |
| REFERENCE_TIME * length |
| ); |
| |
| HRESULT GetMediaLength2( |
| REFTIME * length |
| ); |
| |
| HRESULT GetMediaName( |
| [out,retval] BSTR * name |
| ); |
| |
| HRESULT SetMediaName( |
| BSTR name |
| ); |
| |
| HRESULT SpliceWithNext( |
| IAMTimelineObj * next |
| ); |
| |
| HRESULT GetStreamNumber( |
| long * num |
| ); |
| |
| HRESULT SetStreamNumber( |
| long num |
| ); |
| |
| HRESULT IsNormalRate( |
| BOOL * normal |
| ); |
| |
| HRESULT GetDefaultFPS( |
| double * fps |
| ); |
| |
| HRESULT SetDefaultFPS( |
| double fps |
| ); |
| |
| HRESULT GetStretchMode( |
| int * mode |
| ); |
| |
| HRESULT SetStretchMode( |
| int mode |
| ); |
| }; |
| |
| enum |
| { |
| E_NOTINTREE = 0x80040400, |
| E_RENDER_ENGINE_IS_BROKEN = 0x80040401, |
| E_MUST_INIT_RENDERER = 0x80040402, |
| E_NOTDETERMINED = 0x80040403, |
| E_NO_TIMELINE = 0x80040404, |
| S_WARN_OUTPUTRESET = 40404 |
| }; |