| /* | 
 |  * 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 | 
 |     ); | 
 | } | 
 |  | 
 | [ | 
 |     uuid(c1f400a0-3f08-11d3-9f0b-006008039e37) | 
 | ] | 
 | coclass SampleGrabber | 
 | { | 
 |     [default] interface ISampleGrabber; | 
 | } | 
 |  | 
 | [ | 
 |     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 | 
 | }; |