xref: /reactos/sdk/include/dxsdk/qedit.idl (revision 50cf16b3)
1/*
2 * Copyright (C) 2008 Google (Lei Zhang)
3 *
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.
8 *
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.
13 *
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
17 */
18
19import "oaidl.idl";
20import "ocidl.idl";
21/* import "dxtrans.idl"; */
22import "amstream.idl";
23import "msxml.idl";
24
25[
26    object,
27    uuid(0579154A-2B53-4994-B0D0-E773148EFF85),
28    local,
29    pointer_default(unique)
30]
31interface ISampleGrabberCB : IUnknown
32{
33    HRESULT SampleCB(
34        double SampleTime,
35        IMediaSample * pSample
36    );
37    HRESULT BufferCB(
38        double SampleTime,
39        BYTE * pBuffer,
40        LONG BufferLen
41    );
42}
43
44[
45    object,
46    uuid(6B652FFF-11FE-4fce-92AD-0266B5D7C78F),
47    local,
48    pointer_default(unique)
49]
50interface ISampleGrabber: IUnknown
51{
52    HRESULT SetOneShot(
53        BOOL OneShot
54    );
55
56    HRESULT SetMediaType(
57        const AM_MEDIA_TYPE * pType
58    );
59
60    HRESULT GetConnectedMediaType(
61        AM_MEDIA_TYPE * pType
62    );
63
64    HRESULT SetBufferSamples(
65        BOOL BufferThem
66    );
67
68    HRESULT GetCurrentBuffer(
69        [in,out] LONG * pBufferSize,
70        [out] LONG * pBuffer
71    );
72
73    HRESULT GetCurrentSample(
74        [out] IMediaSample ** ppSample
75    );
76
77    HRESULT SetCallback(
78        ISampleGrabberCB * pCallback,
79        LONG WhichMethodToCallback
80    );
81};
82
83[
84    object,
85    uuid(65bd0710-24d2-4FF7-9324-ed2e5d3abafa),
86    pointer_default(unique)
87]
88interface IMediaDet : IUnknown
89{
90    HRESULT get_Filter(
91        [out] IUnknown* *pVal
92    );
93
94    HRESULT put_Filter(
95        IUnknown* newVal
96    );
97
98    HRESULT get_OutputStreams(
99        [out] LONG *pVal
100    );
101
102    HRESULT get_CurrentStream(
103        [out] LONG *pVal
104    );
105
106    HRESULT put_CurrentStream(
107        LONG newVal
108    );
109
110    HRESULT get_StreamType(
111        [out] GUID *pVal
112    );
113
114    HRESULT get_StreamTypeB(
115        [out] BSTR *pVal
116    );
117
118    HRESULT get_StreamLength(
119        [out] double *pVal
120    );
121
122    HRESULT get_Filename(
123        [out] BSTR *pVal
124    );
125
126    HRESULT put_Filename(
127        BSTR newVal
128    );
129
130    HRESULT GetBitmapBits(
131        double StreamTime,
132        LONG * pBufferSize,
133        char * pBuffer,
134        LONG Width,
135        LONG Height
136    );
137
138    HRESULT WriteBitmapBits(
139        double StreamTime,
140        LONG Width,
141        LONG Height,
142        BSTR Filename
143    );
144
145    HRESULT get_StreamMediaType(
146        [out] AM_MEDIA_TYPE * pVal
147    );
148
149    HRESULT GetSampleGrabber(
150        [out] ISampleGrabber ** ppVal
151    );
152
153    HRESULT get_FrameRate(
154        [out] double *pVal
155    );
156
157    HRESULT EnterBitmapGrabMode(
158        double SeekTime
159    );
160};
161
162[
163    uuid(65BD0711-24D2-4ff7-9324-ED2E5D3ABAFA),
164]
165coclass MediaDet
166{
167    [default] interface IMediaDet;
168};
169
170[
171    object,
172    uuid(288581E0-66CE-11d2-918F-00C0DF10D434),
173    odl,
174    pointer_default(unique)
175]
176interface IMediaLocator : IUnknown
177{
178    HRESULT FindMediaFile(
179        BSTR input,
180        BSTR filter,
181        BSTR * output,
182        long flags
183    );
184
185    HRESULT AddFoundLocation(
186        BSTR dir
187    );
188};
189
190typedef struct
191{
192    BSTR name;
193    DISPID dispID;
194    LONG nValues;
195} DEXTER_PARAM;
196
197typedef struct
198{
199    VARIANT v;
200    REFERENCE_TIME rt;
201    DWORD dwInterp;
202} DEXTER_VALUE;
203
204[
205    object,
206    uuid(AE9472BD-B0C3-11D2-8D24-00A0C9441E20),
207    pointer_default(unique)
208]
209interface IPropertySetter : IUnknown
210{
211    HRESULT LoadXML(
212        [in] IUnknown * pxml
213    );
214
215    HRESULT PrintXML(
216        [out] char * xml,
217        [in] int size,
218        [out] int * printed,
219        [in] int indent
220    );
221
222    HRESULT CloneProps(
223        [out] IPropertySetter ** setter,
224        [in] REFERENCE_TIME start,
225        [in] REFERENCE_TIME stop
226    );
227
228    HRESULT AddProp(
229        [in] DEXTER_PARAM param,
230        [in] DEXTER_VALUE * value
231    );
232
233    HRESULT GetProps(
234        [out] LONG * params,
235        [out] DEXTER_PARAM ** param,
236        [out] DEXTER_VALUE ** value
237    );
238
239    HRESULT FreeProps(
240        [in] LONG params,
241        [in] DEXTER_PARAM * param,
242        [in] DEXTER_VALUE * value
243    );
244
245    HRESULT ClearProps();
246
247    HRESULT SaveToBlob(
248        [out] LONG * size,
249        [out] BYTE ** blob
250    );
251
252    HRESULT LoadFromBlob(
253        [in] LONG size,
254        [in] BYTE * blob
255    );
256
257    HRESULT SetProps(
258        [in] IUnknown * target,
259        [in] REFERENCE_TIME now
260    );
261};
262
263[
264    object,
265    uuid(E43E73A2-0EFA-11d3-9601-00A0C9441E20),
266    odl,
267    pointer_default(unique)
268]
269interface IAMErrorLog : IUnknown
270{
271    HRESULT LogError(
272        long severity,
273        BSTR error_str,
274        long error_code,
275        long hresult,
276        [in] VARIANT * extra
277    );
278};
279
280[
281    object,
282    uuid(963566DA-BE21-4eaf-88E9-35704F8F52A1),
283    odl,
284    pointer_default(unique)
285]
286interface IAMSetErrorLog : IUnknown
287{
288    [propget] HRESULT ErrorLog(
289        [out, retval] IAMErrorLog ** log
290    );
291
292    [propput] HRESULT ErrorLog(
293        [in] IAMErrorLog * log
294    );
295};
296
297interface IAMTimeline;
298interface IAMTimelineGroup;
299interface IAMTimelineObj;
300interface IAMTimelineSrc;
301
302typedef enum
303{
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;
311
312[
313    object,
314    uuid(78530B74-61F9-11D2-8CAD-00A024580902),
315    odl,
316    pointer_default(unique)
317]
318interface IAMTimeline : IUnknown
319{
320    HRESULT CreateEmptyNode(
321        [out] IAMTimelineObj ** obj,
322        TIMELINE_MAJOR_TYPE type
323    );
324
325    HRESULT AddGroup(
326        IAMTimelineObj * group
327    );
328
329    HRESULT RemGroupFromList(
330        IAMTimelineObj * group
331    );
332
333    HRESULT GetGroup(
334        [out] IAMTimelineObj ** group,
335        long index
336    );
337
338    HRESULT GetGroupCount(
339        long * count
340    );
341
342    HRESULT ClearAllGroups();
343
344    HRESULT GetInsertMode(
345        long * mode
346    );
347
348    HRESULT SetInsertMode(
349        long mode
350    );
351
352    HRESULT EnableTransitions(
353        BOOL enabled
354    );
355
356    HRESULT TransitionsEnabled(
357        BOOL * enabled
358    );
359
360    HRESULT EnableEffects(
361        BOOL enabled
362    );
363
364    HRESULT EffectsEnabled(
365        BOOL * enabled
366    );
367
368    HRESULT SetInterestRange(
369        REFERENCE_TIME start,
370        REFERENCE_TIME stop
371    );
372
373    HRESULT GetDuration(
374        REFERENCE_TIME * duration
375    );
376
377    HRESULT GetDuration2(
378        double * duration
379    );
380
381    HRESULT SetDefaultFPS(
382        double fps
383    );
384
385    HRESULT GetDefaultFPS(
386        double * fps
387    );
388
389    HRESULT IsDirty(
390        BOOL * dirty
391    );
392
393    HRESULT GetDirtyRange(
394        REFERENCE_TIME * start,
395        REFERENCE_TIME * stop
396    );
397
398    HRESULT GetCountOfType(
399        long group,
400        long * value,
401        long * value_with_comps,
402        TIMELINE_MAJOR_TYPE type
403    );
404
405    HRESULT ValidateSourceNames(
406        long flags,
407        IMediaLocator * override,
408        LONG_PTR notify_event
409    );
410
411    HRESULT SetDefaultTransition(
412        GUID * guid
413    );
414
415    HRESULT GetDefaultTransition(
416        GUID * guid
417    );
418
419    HRESULT SetDefaultEffect(
420        GUID * guid
421    );
422
423    HRESULT GetDefaultEffect(
424        GUID * guid
425    );
426
427    HRESULT SetDefaultTransitionB(
428        BSTR guidb
429    );
430
431    HRESULT GetDefaultTransitionB(
432        [out,retval] BSTR * guidb
433    );
434
435    HRESULT SetDefaultEffectB(
436        BSTR guidb
437    );
438
439    HRESULT GetDefaultEffectB(
440        [out,retval] BSTR * guidb
441    );
442};
443
444[
445    uuid(78530B75-61F9-11D2-8CAD-00A024580902)
446]
447coclass AMTimeline
448{
449    [default] interface IAMTimeline;
450    interface IPersistStream;
451    interface IAMSetErrorLog;
452};
453
454[
455    object,
456    uuid(9EED4F00-B8A6-11d2-8023-00C0DF10D434),
457    odl,
458    pointer_default(unique)
459]
460interface IAMTimelineGroup : IUnknown
461{
462    HRESULT SetTimeline(
463        IAMTimeline * timeline
464    );
465
466    HRESULT GetTimeline(
467        [out] IAMTimeline ** timeline
468    );
469
470    HRESULT GetPriority(
471        long * priority
472    );
473
474    HRESULT GetMediaType(
475        [out] AM_MEDIA_TYPE *
476    );
477
478    HRESULT SetMediaType(
479        [in] AM_MEDIA_TYPE *
480    );
481
482    HRESULT SetOutputFPS(
483        double fps
484    );
485
486    HRESULT GetOutputFPS(
487        double * fps
488    );
489
490    HRESULT SetGroupName(
491        BSTR name
492    );
493
494    HRESULT GetGroupName(
495        [out,retval] BSTR * name
496    );
497
498    HRESULT SetPreviewMode(
499        BOOL preview
500    );
501
502    HRESULT GetPreviewMode(
503        BOOL * preview
504    );
505
506    HRESULT SetMediaTypeForVB(
507        [in] long type
508    );
509
510    HRESULT GetOutputBuffering(
511        [out] int * buffer
512    );
513
514    HRESULT SetOutputBuffering(
515        [in] int buffer
516    );
517
518    HRESULT SetSmartRecompressFormat(
519        long * format
520    );
521
522    HRESULT GetSmartRecompressFormat(
523        long ** format
524    );
525
526    HRESULT IsSmartRecompressFormatSet(
527        BOOL * set
528    );
529
530    HRESULT IsRecompressFormatDirty(
531        BOOL * dirty
532    );
533
534    HRESULT ClearRecompressFormatDirty();
535
536    HRESULT SetRecompFormatFromSource(
537        IAMTimelineSrc * source
538    );
539};
540
541[
542    object,
543    local,
544    uuid(78530B77-61F9-11D2-8CAD-00A024580902),
545    odl,
546    pointer_default(unique)
547]
548interface IAMTimelineObj : IUnknown
549{
550    HRESULT GetStartStop(
551        REFERENCE_TIME * start,
552        REFERENCE_TIME * stop
553    );
554
555    HRESULT GetStartStop2(
556        REFTIME * start, REFTIME * stop
557    );
558
559    HRESULT FixTimes(
560        REFERENCE_TIME * start, REFERENCE_TIME * stop
561    );
562
563    HRESULT FixTimes2(
564        REFTIME * start, REFTIME * stop
565    );
566
567    HRESULT SetStartStop(
568        REFERENCE_TIME start,
569        REFERENCE_TIME stop
570    );
571
572    HRESULT SetStartStop2(
573        REFTIME start,
574        REFTIME stop
575    );
576
577    HRESULT GetPropertySetter(
578        [out,retval] IPropertySetter ** setter
579    );
580
581    HRESULT SetPropertySetter(
582        IPropertySetter * setter
583    );
584
585    HRESULT GetSubObject(
586        [out,retval] IUnknown ** obj
587    );
588
589    HRESULT SetSubObject(
590        IUnknown * obj
591    );
592
593    HRESULT SetSubObjectGUID(
594        GUID guid
595    );
596
597    HRESULT SetSubObjectGUIDB(
598        BSTR guidb
599    );
600
601    HRESULT GetSubObjectGUID(
602        GUID * guid
603    );
604
605    HRESULT GetSubObjectGUIDB(
606        [out,retval] BSTR * guidb
607    );
608
609    HRESULT GetSubObjectLoaded(
610        BOOL * loaded
611    );
612
613    HRESULT GetTimelineType(
614        TIMELINE_MAJOR_TYPE * type
615    );
616
617    HRESULT SetTimelineType(
618        TIMELINE_MAJOR_TYPE type
619    );
620
621    HRESULT GetUserID(
622        long * id
623    );
624
625    HRESULT SetUserID(
626        long id
627    );
628
629    HRESULT GetGenID(
630        long * id
631    );
632
633    HRESULT GetUserName(
634        [out,retval] BSTR * name
635    );
636
637    HRESULT SetUserName(
638        BSTR name
639    );
640
641    HRESULT GetUserData(
642        BYTE * data,
643        long * size
644    );
645
646    HRESULT SetUserData(
647        BYTE * data,
648        long size
649    );
650
651    HRESULT GetMuted(
652        BOOL * muted
653    );
654
655    HRESULT SetMuted(
656        BOOL muted
657    );
658
659    HRESULT GetLocked(
660        BOOL * locked
661    );
662
663    HRESULT SetLocked(
664        BOOL locked
665    );
666
667    HRESULT GetDirtyRange(
668        REFERENCE_TIME * start,
669        REFERENCE_TIME * stop
670    );
671
672    HRESULT GetDirtyRange2(
673        REFTIME * start,
674        REFTIME * stop
675    );
676
677    HRESULT SetDirtyRange(
678        REFERENCE_TIME start,
679        REFERENCE_TIME stop
680    );
681
682    HRESULT SetDirtyRange2(
683        REFTIME start,
684        REFTIME stop
685    );
686
687    HRESULT ClearDirty();
688
689    HRESULT Remove();
690
691    HRESULT RemoveAll();
692
693    HRESULT GetTimelineNoRef(
694        IAMTimeline ** timeline
695    );
696
697    HRESULT GetGroupIBelongTo(
698        [out] IAMTimelineGroup ** group
699    );
700
701    HRESULT GetEmbedDepth(
702        long * depth
703    );
704};
705
706[
707    object,
708    uuid(78530B79-61F9-11D2-8CAD-00A024580902),
709    odl,
710    pointer_default(unique)
711]
712interface IAMTimelineSrc : IUnknown
713{
714    HRESULT GetMediaTimes(
715        REFERENCE_TIME * start,
716        REFERENCE_TIME * stop
717    );
718
719    HRESULT GetMediaTimes2(
720        REFTIME * start,
721        REFTIME * stop
722    );
723
724    HRESULT ModifyStopTime(
725        REFERENCE_TIME stop
726    );
727
728    HRESULT ModifyStopTime2(
729        REFTIME stop
730    );
731
732    HRESULT FixMediaTimes(
733        REFERENCE_TIME * start,
734        REFERENCE_TIME * stop
735    );
736
737    HRESULT FixMediaTimes2(
738        REFTIME * start,
739        REFTIME * stop
740    );
741
742    HRESULT SetMediaTimes(
743        REFERENCE_TIME Start,
744        REFERENCE_TIME Stop
745    );
746
747    HRESULT SetMediaTimes2(
748        REFTIME Start,
749        REFTIME Stop
750    );
751
752    HRESULT SetMediaLength(
753        REFERENCE_TIME length
754    );
755
756    HRESULT SetMediaLength2(
757        REFTIME length
758    );
759
760    HRESULT GetMediaLength(
761        REFERENCE_TIME * length
762    );
763
764    HRESULT GetMediaLength2(
765        REFTIME * length
766    );
767
768    HRESULT GetMediaName(
769        [out,retval] BSTR * name
770    );
771
772    HRESULT SetMediaName(
773        BSTR name
774    );
775
776    HRESULT SpliceWithNext(
777        IAMTimelineObj * next
778    );
779
780    HRESULT GetStreamNumber(
781        long * num
782    );
783
784    HRESULT SetStreamNumber(
785        long num
786    );
787
788    HRESULT IsNormalRate(
789        BOOL * normal
790    );
791
792    HRESULT GetDefaultFPS(
793        double * fps
794    );
795
796    HRESULT SetDefaultFPS(
797        double fps
798    );
799
800    HRESULT GetStretchMode(
801        int * mode
802    );
803
804    HRESULT SetStretchMode(
805        int mode
806    );
807};
808
809enum
810{
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
817};
818