blob: 753ac15bf432a0a1dcd3f215565e1ede356ad91c [file] [log] [blame]
/*
* 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
};