Add .gitattributes and .gitignore files and normalize line endings in the repository...
[reactos.git] / sdk / include / dxsdk / qedit.idl
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
19 import "oaidl.idl";
20 import "ocidl.idl";
21 /* import "dxtrans.idl"; */
22 import "amstream.idl";
23 import "msxml.idl";
24
25 [
26 object,
27 uuid(0579154A-2B53-4994-B0D0-E773148EFF85),
28 local,
29 pointer_default(unique)
30 ]
31 interface 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 ]
50 interface 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 ]
88 interface 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 ]
165 coclass 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 ]
176 interface 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
190 typedef struct
191 {
192 BSTR name;
193 DISPID dispID;
194 LONG nValues;
195 } DEXTER_PARAM;
196
197 typedef 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 ]
209 interface 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 ]
269 interface 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 ]
286 interface 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
297 interface IAMTimeline;
298 interface IAMTimelineGroup;
299 interface IAMTimelineObj;
300 interface IAMTimelineSrc;
301
302 typedef 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 ]
318 interface 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 ]
447 coclass 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 ]
460 interface 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 ]
548 interface 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 ]
712 interface 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
809 enum
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 };