mirror of
https://github.com/reactos/reactos.git
synced 2024-11-18 21:13:52 +00:00
817 lines
14 KiB
Text
817 lines
14 KiB
Text
/*
|
|
* 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
|
|
};
|