2 * Copyright (C) 2008 Google (Lei Zhang)
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 /* import "dxtrans.idl"; */
22 import "amstream.idl";
27 uuid(0579154A-2B53-4994-B0D0-E773148EFF85),
29 pointer_default(unique)
31 interface ISampleGrabberCB : IUnknown
35 IMediaSample * pSample
46 uuid(6B652FFF-11FE-4fce-92AD-0266B5D7C78F),
48 pointer_default(unique)
50 interface ISampleGrabber: IUnknown
57 const AM_MEDIA_TYPE * pType
60 HRESULT GetConnectedMediaType(
64 HRESULT SetBufferSamples(
68 HRESULT GetCurrentBuffer(
69 [in,out] LONG * pBufferSize,
73 HRESULT GetCurrentSample(
74 [out] IMediaSample ** ppSample
78 ISampleGrabberCB * pCallback,
79 LONG WhichMethodToCallback
85 uuid(65bd0710-24d2-4FF7-9324-ed2e5d3abafa),
86 pointer_default(unique)
88 interface IMediaDet : IUnknown
98 HRESULT get_OutputStreams(
102 HRESULT get_CurrentStream(
106 HRESULT put_CurrentStream(
110 HRESULT get_StreamType(
114 HRESULT get_StreamTypeB(
118 HRESULT get_StreamLength(
122 HRESULT get_Filename(
126 HRESULT put_Filename(
130 HRESULT GetBitmapBits(
138 HRESULT WriteBitmapBits(
145 HRESULT get_StreamMediaType(
146 [out] AM_MEDIA_TYPE * pVal
149 HRESULT GetSampleGrabber(
150 [out] ISampleGrabber ** ppVal
153 HRESULT get_FrameRate(
157 HRESULT EnterBitmapGrabMode(
163 uuid(65BD0711-24D2-4ff7-9324-ED2E5D3ABAFA),
167 [default] interface IMediaDet;
172 uuid(288581E0-66CE-11d2-918F-00C0DF10D434),
174 pointer_default(unique)
176 interface IMediaLocator : IUnknown
178 HRESULT FindMediaFile(
185 HRESULT AddFoundLocation(
206 uuid(AE9472BD-B0C3-11D2-8D24-00A0C9441E20),
207 pointer_default(unique)
209 interface IPropertySetter : IUnknown
223 [out] IPropertySetter ** setter,
224 [in] REFERENCE_TIME start,
225 [in] REFERENCE_TIME stop
229 [in] DEXTER_PARAM param,
230 [in] DEXTER_VALUE * value
235 [out] DEXTER_PARAM ** param,
236 [out] DEXTER_VALUE ** value
241 [in] DEXTER_PARAM * param,
242 [in] DEXTER_VALUE * value
245 HRESULT ClearProps();
252 HRESULT LoadFromBlob(
258 [in] IUnknown * target,
259 [in] REFERENCE_TIME now
265 uuid(E43E73A2-0EFA-11d3-9601-00A0C9441E20),
267 pointer_default(unique)
269 interface IAMErrorLog : IUnknown
282 uuid(963566DA-BE21-4eaf-88E9-35704F8F52A1),
284 pointer_default(unique)
286 interface IAMSetErrorLog : IUnknown
288 [propget] HRESULT ErrorLog(
289 [out, retval] IAMErrorLog ** log
292 [propput] HRESULT ErrorLog(
293 [in] IAMErrorLog * log
297 interface IAMTimeline;
298 interface IAMTimelineGroup;
299 interface IAMTimelineObj;
300 interface IAMTimelineSrc;
304 TIMELINE_MAJOR_TYPE_COMPOSITE = 1,
305 TIMELINE_MAJOR_TYPE_TRACK = 2,
306 TIMELINE_MAJOR_TYPE_SOURCE = 4,
307 TIMELINE_MAJOR_TYPE_TRANSITION = 8,
308 TIMELINE_MAJOR_TYPE_EFFECT = 16,
309 TIMELINE_MAJOR_TYPE_GROUP = 128
310 } TIMELINE_MAJOR_TYPE;
314 uuid(78530B74-61F9-11D2-8CAD-00A024580902),
316 pointer_default(unique)
318 interface IAMTimeline : IUnknown
320 HRESULT CreateEmptyNode(
321 [out] IAMTimelineObj ** obj,
322 TIMELINE_MAJOR_TYPE type
326 IAMTimelineObj * group
329 HRESULT RemGroupFromList(
330 IAMTimelineObj * group
334 [out] IAMTimelineObj ** group,
338 HRESULT GetGroupCount(
342 HRESULT ClearAllGroups();
344 HRESULT GetInsertMode(
348 HRESULT SetInsertMode(
352 HRESULT EnableTransitions(
356 HRESULT TransitionsEnabled(
360 HRESULT EnableEffects(
364 HRESULT EffectsEnabled(
368 HRESULT SetInterestRange(
369 REFERENCE_TIME start,
374 REFERENCE_TIME * duration
377 HRESULT GetDuration2(
381 HRESULT SetDefaultFPS(
385 HRESULT GetDefaultFPS(
393 HRESULT GetDirtyRange(
394 REFERENCE_TIME * start,
395 REFERENCE_TIME * stop
398 HRESULT GetCountOfType(
401 long * value_with_comps,
402 TIMELINE_MAJOR_TYPE type
405 HRESULT ValidateSourceNames(
407 IMediaLocator * override,
408 LONG_PTR notify_event
411 HRESULT SetDefaultTransition(
415 HRESULT GetDefaultTransition(
419 HRESULT SetDefaultEffect(
423 HRESULT GetDefaultEffect(
427 HRESULT SetDefaultTransitionB(
431 HRESULT GetDefaultTransitionB(
432 [out,retval] BSTR * guidb
435 HRESULT SetDefaultEffectB(
439 HRESULT GetDefaultEffectB(
440 [out,retval] BSTR * guidb
445 uuid(78530B75-61F9-11D2-8CAD-00A024580902)
449 [default] interface IAMTimeline;
450 interface IPersistStream;
451 interface IAMSetErrorLog;
456 uuid(9EED4F00-B8A6-11d2-8023-00C0DF10D434),
458 pointer_default(unique)
460 interface IAMTimelineGroup : IUnknown
463 IAMTimeline * timeline
467 [out] IAMTimeline ** timeline
474 HRESULT GetMediaType(
475 [out] AM_MEDIA_TYPE *
478 HRESULT SetMediaType(
482 HRESULT SetOutputFPS(
486 HRESULT GetOutputFPS(
490 HRESULT SetGroupName(
494 HRESULT GetGroupName(
495 [out,retval] BSTR * name
498 HRESULT SetPreviewMode(
502 HRESULT GetPreviewMode(
506 HRESULT SetMediaTypeForVB(
510 HRESULT GetOutputBuffering(
514 HRESULT SetOutputBuffering(
518 HRESULT SetSmartRecompressFormat(
522 HRESULT GetSmartRecompressFormat(
526 HRESULT IsSmartRecompressFormatSet(
530 HRESULT IsRecompressFormatDirty(
534 HRESULT ClearRecompressFormatDirty();
536 HRESULT SetRecompFormatFromSource(
537 IAMTimelineSrc * source
544 uuid(78530B77-61F9-11D2-8CAD-00A024580902),
546 pointer_default(unique)
548 interface IAMTimelineObj : IUnknown
550 HRESULT GetStartStop(
551 REFERENCE_TIME * start,
552 REFERENCE_TIME * stop
555 HRESULT GetStartStop2(
556 REFTIME * start, REFTIME * stop
560 REFERENCE_TIME * start, REFERENCE_TIME * stop
564 REFTIME * start, REFTIME * stop
567 HRESULT SetStartStop(
568 REFERENCE_TIME start,
572 HRESULT SetStartStop2(
577 HRESULT GetPropertySetter(
578 [out,retval] IPropertySetter ** setter
581 HRESULT SetPropertySetter(
582 IPropertySetter * setter
585 HRESULT GetSubObject(
586 [out,retval] IUnknown ** obj
589 HRESULT SetSubObject(
593 HRESULT SetSubObjectGUID(
597 HRESULT SetSubObjectGUIDB(
601 HRESULT GetSubObjectGUID(
605 HRESULT GetSubObjectGUIDB(
606 [out,retval] BSTR * guidb
609 HRESULT GetSubObjectLoaded(
613 HRESULT GetTimelineType(
614 TIMELINE_MAJOR_TYPE * type
617 HRESULT SetTimelineType(
618 TIMELINE_MAJOR_TYPE type
634 [out,retval] BSTR * name
667 HRESULT GetDirtyRange(
668 REFERENCE_TIME * start,
669 REFERENCE_TIME * stop
672 HRESULT GetDirtyRange2(
677 HRESULT SetDirtyRange(
678 REFERENCE_TIME start,
682 HRESULT SetDirtyRange2(
687 HRESULT ClearDirty();
693 HRESULT GetTimelineNoRef(
694 IAMTimeline ** timeline
697 HRESULT GetGroupIBelongTo(
698 [out] IAMTimelineGroup ** group
701 HRESULT GetEmbedDepth(
708 uuid(78530B79-61F9-11D2-8CAD-00A024580902),
710 pointer_default(unique)
712 interface IAMTimelineSrc : IUnknown
714 HRESULT GetMediaTimes(
715 REFERENCE_TIME * start,
716 REFERENCE_TIME * stop
719 HRESULT GetMediaTimes2(
724 HRESULT ModifyStopTime(
728 HRESULT ModifyStopTime2(
732 HRESULT FixMediaTimes(
733 REFERENCE_TIME * start,
734 REFERENCE_TIME * stop
737 HRESULT FixMediaTimes2(
742 HRESULT SetMediaTimes(
743 REFERENCE_TIME Start,
747 HRESULT SetMediaTimes2(
752 HRESULT SetMediaLength(
753 REFERENCE_TIME length
756 HRESULT SetMediaLength2(
760 HRESULT GetMediaLength(
761 REFERENCE_TIME * length
764 HRESULT GetMediaLength2(
768 HRESULT GetMediaName(
769 [out,retval] BSTR * name
772 HRESULT SetMediaName(
776 HRESULT SpliceWithNext(
777 IAMTimelineObj * next
780 HRESULT GetStreamNumber(
784 HRESULT SetStreamNumber(
788 HRESULT IsNormalRate(
792 HRESULT GetDefaultFPS(
796 HRESULT SetDefaultFPS(
800 HRESULT GetStretchMode(
804 HRESULT SetStretchMode(
811 E_NOTINTREE = 0x80040400,
812 E_RENDER_ENGINE_IS_BROKEN = 0x80040401,
813 E_MUST_INIT_RENDERER = 0x80040402,
814 E_NOTDETERMINED = 0x80040403,
815 E_NO_TIMELINE = 0x80040404,
816 S_WARN_OUTPUTRESET = 40404