1 /* DirectShow Timeline object (QEDIT.DLL)
3 * Copyright 2016 Alex Henrie
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
30 #include "qedit_private.h"
31 #include "wine/debug.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(qedit
);
36 IUnknown IUnknown_inner
;
37 IAMTimeline IAMTimeline_iface
;
42 static inline TimelineImpl
*impl_from_IUnknown(IUnknown
*iface
)
44 return CONTAINING_RECORD(iface
, TimelineImpl
, IUnknown_inner
);
47 static inline TimelineImpl
*impl_from_IAMTimeline(IAMTimeline
*iface
)
49 return CONTAINING_RECORD(iface
, TimelineImpl
, IAMTimeline_iface
);
53 IAMTimelineObj IAMTimelineObj_iface
;
55 TIMELINE_MAJOR_TYPE timeline_type
;
58 static inline TimelineObjImpl
*impl_from_IAMTimelineObj(IAMTimelineObj
*iface
)
60 return CONTAINING_RECORD(iface
, TimelineObjImpl
, IAMTimelineObj_iface
);
63 static const IAMTimelineObjVtbl IAMTimelineObj_VTable
;
65 /* Timeline inner IUnknown */
67 static HRESULT WINAPI
Timeline_QueryInterface(IUnknown
*iface
, REFIID riid
, void **ppv
)
69 TimelineImpl
*This
= impl_from_IUnknown(iface
);
71 TRACE("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), ppv
);
77 if (IsEqualIID(riid
, &IID_IUnknown
))
78 *ppv
= &This
->IUnknown_inner
;
79 else if (IsEqualIID(riid
, &IID_IAMTimeline
))
80 *ppv
= &This
->IAMTimeline_iface
;
82 WARN("(%p, %s,%p): not found\n", This
, debugstr_guid(riid
), ppv
);
87 IUnknown_AddRef((IUnknown
*)*ppv
);
91 static ULONG WINAPI
Timeline_AddRef(IUnknown
*iface
)
93 TimelineImpl
*This
= impl_from_IUnknown(iface
);
94 ULONG ref
= InterlockedIncrement(&This
->ref
);
96 TRACE("(%p) new ref = %u\n", This
, ref
);
101 static ULONG WINAPI
Timeline_Release(IUnknown
*iface
)
103 TimelineImpl
*This
= impl_from_IUnknown(iface
);
104 ULONG ref
= InterlockedDecrement(&This
->ref
);
106 TRACE("(%p) new ref = %u\n", This
, ref
);
114 static const IUnknownVtbl timeline_vtbl
=
116 Timeline_QueryInterface
,
121 /* IAMTimeline implementation */
123 static HRESULT WINAPI
Timeline_IAMTimeline_QueryInterface(IAMTimeline
*iface
, REFIID riid
, void **ppv
)
125 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
126 return IUnknown_QueryInterface(This
->outer_unk
, riid
, ppv
);
129 static ULONG WINAPI
Timeline_IAMTimeline_AddRef(IAMTimeline
*iface
)
131 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
132 return IUnknown_AddRef(This
->outer_unk
);
135 static ULONG WINAPI
Timeline_IAMTimeline_Release(IAMTimeline
*iface
)
137 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
138 return IUnknown_Release(This
->outer_unk
);
141 static HRESULT WINAPI
Timeline_IAMTimeline_CreateEmptyNode(IAMTimeline
*iface
, IAMTimelineObj
**obj
,
142 TIMELINE_MAJOR_TYPE type
)
144 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
145 TimelineObjImpl
* obj_impl
;
147 TRACE("(%p)->(%p,%d)\n", This
, obj
, type
);
154 case TIMELINE_MAJOR_TYPE_COMPOSITE
:
155 case TIMELINE_MAJOR_TYPE_TRACK
:
156 case TIMELINE_MAJOR_TYPE_SOURCE
:
157 case TIMELINE_MAJOR_TYPE_TRANSITION
:
158 case TIMELINE_MAJOR_TYPE_EFFECT
:
159 case TIMELINE_MAJOR_TYPE_GROUP
:
165 obj_impl
= CoTaskMemAlloc(sizeof(TimelineObjImpl
));
168 return E_OUTOFMEMORY
;
172 obj_impl
->IAMTimelineObj_iface
.lpVtbl
= &IAMTimelineObj_VTable
;
173 obj_impl
->timeline_type
= type
;
175 *obj
= &obj_impl
->IAMTimelineObj_iface
;
179 static HRESULT WINAPI
Timeline_IAMTimeline_AddGroup(IAMTimeline
*iface
, IAMTimelineObj
*group
)
181 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
182 FIXME("(%p)->(%p): not implemented!\n", This
, group
);
186 static HRESULT WINAPI
Timeline_IAMTimeline_RemGroupFromList(IAMTimeline
*iface
, IAMTimelineObj
*group
)
188 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
189 FIXME("(%p)->(%p): not implemented!\n", This
, group
);
193 static HRESULT WINAPI
Timeline_IAMTimeline_GetGroup(IAMTimeline
*iface
, IAMTimelineObj
**group
, LONG index
)
195 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
196 FIXME("(%p)->(%p,%d): not implemented!\n", This
, group
, index
);
200 static HRESULT WINAPI
Timeline_IAMTimeline_GetGroupCount(IAMTimeline
*iface
, LONG
*count
)
202 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
203 FIXME("(%p)->(%p): not implemented!\n", This
, count
);
207 static HRESULT WINAPI
Timeline_IAMTimeline_ClearAllGroups(IAMTimeline
*iface
)
209 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
210 FIXME("(%p): not implemented!\n", This
);
214 static HRESULT WINAPI
Timeline_IAMTimeline_GetInsertMode(IAMTimeline
*iface
, LONG
*mode
)
216 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
217 FIXME("(%p)->(%p): not implemented!\n", This
, mode
);
221 static HRESULT WINAPI
Timeline_IAMTimeline_SetInsertMode(IAMTimeline
*iface
, LONG mode
)
223 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
224 FIXME("(%p)->(%d): not implemented!\n", This
, mode
);
228 static HRESULT WINAPI
Timeline_IAMTimeline_EnableTransitions(IAMTimeline
*iface
, BOOL enabled
)
230 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
231 FIXME("(%p)->(%d): not implemented!\n", This
, enabled
);
235 static HRESULT WINAPI
Timeline_IAMTimeline_TransitionsEnabled(IAMTimeline
*iface
, BOOL
*enabled
)
237 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
238 FIXME("(%p)->(%p): not implemented!\n", This
, enabled
);
242 static HRESULT WINAPI
Timeline_IAMTimeline_EnableEffects(IAMTimeline
*iface
, BOOL enabled
)
244 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
245 FIXME("(%p)->(%d): not implemented!\n", This
, enabled
);
249 static HRESULT WINAPI
Timeline_IAMTimeline_EffectsEnabled(IAMTimeline
*iface
, BOOL
*enabled
)
251 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
252 FIXME("(%p)->(%p): not implemented!\n", This
, enabled
);
256 static HRESULT WINAPI
Timeline_IAMTimeline_SetInterestRange(IAMTimeline
*iface
, REFERENCE_TIME start
,
259 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
260 FIXME("(%p)->(%s,%s): not implemented!\n", This
, wine_dbgstr_longlong(start
),
261 wine_dbgstr_longlong(stop
));
265 static HRESULT WINAPI
Timeline_IAMTimeline_GetDuration(IAMTimeline
*iface
, REFERENCE_TIME
*duration
)
267 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
268 FIXME("(%p)->(%p): not implemented!\n", This
, duration
);
272 static HRESULT WINAPI
Timeline_IAMTimeline_GetDuration2(IAMTimeline
*iface
, double *duration
)
274 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
275 FIXME("(%p)->(%p): not implemented!\n", This
, duration
);
279 static HRESULT WINAPI
Timeline_IAMTimeline_SetDefaultFPS(IAMTimeline
*iface
, double fps
)
281 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
282 FIXME("(%p)->(%f): not implemented!\n", This
, fps
);
286 static HRESULT WINAPI
Timeline_IAMTimeline_GetDefaultFPS(IAMTimeline
*iface
, double *fps
)
288 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
289 FIXME("(%p)->(%p): not implemented!\n", This
, fps
);
293 static HRESULT WINAPI
Timeline_IAMTimeline_IsDirty(IAMTimeline
*iface
, BOOL
*dirty
)
295 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
296 FIXME("(%p)->(%p): not implemented!\n", This
, dirty
);
300 static HRESULT WINAPI
Timeline_IAMTimeline_GetDirtyRange(IAMTimeline
*iface
, REFERENCE_TIME
*start
,
301 REFERENCE_TIME
*stop
)
303 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
304 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
308 static HRESULT WINAPI
Timeline_IAMTimeline_GetCountOfType(IAMTimeline
*iface
, LONG group
, LONG
*value
,
309 LONG
*value_with_comps
, TIMELINE_MAJOR_TYPE type
)
311 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
312 FIXME("(%p)->(%d,%p,%p,%04x): not implemented!\n", This
, group
, value
, value_with_comps
, type
);
316 static HRESULT WINAPI
Timeline_IAMTimeline_ValidateSourceNames(IAMTimeline
*iface
, LONG flags
, IMediaLocator
*override
,
317 LONG_PTR notify_event
)
319 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
320 FIXME("(%p)->(%d,%p,%lx): not implemented!\n", This
, flags
, override
, notify_event
);
324 static HRESULT WINAPI
Timeline_IAMTimeline_SetDefaultTransition(IAMTimeline
*iface
, GUID
*guid
)
326 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
327 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_guid(guid
));
331 static HRESULT WINAPI
Timeline_IAMTimeline_GetDefaultTransition(IAMTimeline
*iface
, GUID
*guid
)
333 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
334 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_guid(guid
));
338 static HRESULT WINAPI
Timeline_IAMTimeline_SetDefaultEffect(IAMTimeline
*iface
, GUID
*guid
)
340 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
341 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_guid(guid
));
345 static HRESULT WINAPI
Timeline_IAMTimeline_GetDefaultEffect(IAMTimeline
*iface
, GUID
*guid
)
347 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
348 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_guid(guid
));
352 static HRESULT WINAPI
Timeline_IAMTimeline_SetDefaultTransitionB(IAMTimeline
*iface
, BSTR guidb
)
354 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
355 FIXME("(%p)->(%p): not implemented!\n", This
, guidb
);
359 static HRESULT WINAPI
Timeline_IAMTimeline_GetDefaultTransitionB(IAMTimeline
*iface
, BSTR
*guidb
)
361 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
362 FIXME("(%p)->(%p): not implemented!\n", This
, guidb
);
366 static HRESULT WINAPI
Timeline_IAMTimeline_SetDefaultEffectB(IAMTimeline
*iface
, BSTR guidb
)
368 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
369 FIXME("(%p)->(%p): not implemented!\n", This
, guidb
);
373 static HRESULT WINAPI
Timeline_IAMTimeline_GetDefaultEffectB(IAMTimeline
*iface
, BSTR
*guidb
)
375 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
376 FIXME("(%p)->(%p): not implemented!\n", This
, guidb
);
380 static const IAMTimelineVtbl IAMTimeline_VTable
=
382 Timeline_IAMTimeline_QueryInterface
,
383 Timeline_IAMTimeline_AddRef
,
384 Timeline_IAMTimeline_Release
,
385 Timeline_IAMTimeline_CreateEmptyNode
,
386 Timeline_IAMTimeline_AddGroup
,
387 Timeline_IAMTimeline_RemGroupFromList
,
388 Timeline_IAMTimeline_GetGroup
,
389 Timeline_IAMTimeline_GetGroupCount
,
390 Timeline_IAMTimeline_ClearAllGroups
,
391 Timeline_IAMTimeline_GetInsertMode
,
392 Timeline_IAMTimeline_SetInsertMode
,
393 Timeline_IAMTimeline_EnableTransitions
,
394 Timeline_IAMTimeline_TransitionsEnabled
,
395 Timeline_IAMTimeline_EnableEffects
,
396 Timeline_IAMTimeline_EffectsEnabled
,
397 Timeline_IAMTimeline_SetInterestRange
,
398 Timeline_IAMTimeline_GetDuration
,
399 Timeline_IAMTimeline_GetDuration2
,
400 Timeline_IAMTimeline_SetDefaultFPS
,
401 Timeline_IAMTimeline_GetDefaultFPS
,
402 Timeline_IAMTimeline_IsDirty
,
403 Timeline_IAMTimeline_GetDirtyRange
,
404 Timeline_IAMTimeline_GetCountOfType
,
405 Timeline_IAMTimeline_ValidateSourceNames
,
406 Timeline_IAMTimeline_SetDefaultTransition
,
407 Timeline_IAMTimeline_GetDefaultTransition
,
408 Timeline_IAMTimeline_SetDefaultEffect
,
409 Timeline_IAMTimeline_GetDefaultEffect
,
410 Timeline_IAMTimeline_SetDefaultTransitionB
,
411 Timeline_IAMTimeline_GetDefaultTransitionB
,
412 Timeline_IAMTimeline_SetDefaultEffectB
,
413 Timeline_IAMTimeline_GetDefaultEffectB
,
416 HRESULT
AMTimeline_create(IUnknown
*pUnkOuter
, LPVOID
*ppv
)
418 TimelineImpl
* obj
= NULL
;
420 TRACE("(%p,%p)\n", pUnkOuter
, ppv
);
422 obj
= CoTaskMemAlloc(sizeof(TimelineImpl
));
425 return E_OUTOFMEMORY
;
427 ZeroMemory(obj
, sizeof(TimelineImpl
));
430 obj
->IUnknown_inner
.lpVtbl
= &timeline_vtbl
;
431 obj
->IAMTimeline_iface
.lpVtbl
= &IAMTimeline_VTable
;
434 obj
->outer_unk
= pUnkOuter
;
436 obj
->outer_unk
= &obj
->IUnknown_inner
;
438 *ppv
= &obj
->IUnknown_inner
;
442 /* IAMTimelineObj implementation */
444 static HRESULT WINAPI
TimelineObj_QueryInterface(IAMTimelineObj
*iface
, REFIID riid
, void **ppv
)
446 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
448 TRACE("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), ppv
);
454 if (IsEqualIID(riid
, &IID_IUnknown
) || IsEqualIID(riid
, &IID_IAMTimelineObj
))
455 *ppv
= &This
->IAMTimelineObj_iface
;
457 WARN("(%p, %s,%p): not found\n", This
, debugstr_guid(riid
), ppv
);
460 return E_NOINTERFACE
;
462 IUnknown_AddRef((IUnknown
*)*ppv
);
466 static ULONG WINAPI
TimelineObj_AddRef(IAMTimelineObj
*iface
)
468 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
469 ULONG ref
= InterlockedIncrement(&This
->ref
);
471 TRACE("(%p) new ref = %u\n", This
, ref
);
476 static ULONG WINAPI
TimelineObj_Release(IAMTimelineObj
*iface
)
478 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
479 ULONG ref
= InterlockedDecrement(&This
->ref
);
481 TRACE("(%p) new ref = %u\n", This
, ref
);
489 static HRESULT WINAPI
TimelineObj_GetStartStop(IAMTimelineObj
*iface
, REFERENCE_TIME
*start
, REFERENCE_TIME
*stop
)
491 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
492 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
496 static HRESULT WINAPI
TimelineObj_GetStartStop2(IAMTimelineObj
*iface
, REFTIME
*start
, REFTIME
*stop
)
498 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
499 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
503 static HRESULT WINAPI
TimelineObj_FixTimes(IAMTimelineObj
*iface
, REFERENCE_TIME
*start
, REFERENCE_TIME
*stop
)
505 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
506 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
510 static HRESULT WINAPI
TimelineObj_FixTimes2(IAMTimelineObj
*iface
, REFTIME
*start
, REFTIME
*stop
)
512 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
513 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
517 static HRESULT WINAPI
TimelineObj_SetStartStop(IAMTimelineObj
*iface
, REFERENCE_TIME start
, REFERENCE_TIME stop
)
519 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
520 FIXME("(%p)->(%s,%s): not implemented!\n", This
, wine_dbgstr_longlong(start
), wine_dbgstr_longlong(stop
));
524 static HRESULT WINAPI
TimelineObj_SetStartStop2(IAMTimelineObj
*iface
, REFTIME start
, REFTIME stop
)
526 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
527 FIXME("(%p)->(%f,%f): not implemented!\n", This
, start
, stop
);
531 static HRESULT WINAPI
TimelineObj_GetPropertySetter(IAMTimelineObj
*iface
, IPropertySetter
**setter
)
533 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
534 FIXME("(%p)->(%p): not implemented!\n", This
, setter
);
538 static HRESULT WINAPI
TimelineObj_SetPropertySetter(IAMTimelineObj
*iface
, IPropertySetter
*setter
)
540 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
541 FIXME("(%p)->(%p): not implemented!\n", This
, setter
);
545 static HRESULT WINAPI
TimelineObj_GetSubObject(IAMTimelineObj
*iface
, IUnknown
**obj
)
547 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
548 FIXME("(%p)->(%p): not implemented!\n", This
, obj
);
552 static HRESULT WINAPI
TimelineObj_SetSubObject(IAMTimelineObj
*iface
, IUnknown
*obj
)
554 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
555 FIXME("(%p)->(%p): not implemented!\n", This
, obj
);
559 static HRESULT WINAPI
TimelineObj_SetSubObjectGUID(IAMTimelineObj
*iface
, GUID guid
)
561 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
562 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_guid(&guid
));
566 static HRESULT WINAPI
TimelineObj_SetSubObjectGUIDB(IAMTimelineObj
*iface
, BSTR guidb
)
568 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
569 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_w(guidb
));
573 static HRESULT WINAPI
TimelineObj_GetSubObjectGUID(IAMTimelineObj
*iface
, GUID
*guid
)
575 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
576 FIXME("(%p)->(%p): not implemented!\n", This
, guid
);
580 static HRESULT WINAPI
TimelineObj_GetSubObjectGUIDB(IAMTimelineObj
*iface
, BSTR
*guidb
)
582 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
583 FIXME("(%p)->(%p): not implemented!\n", This
, guidb
);
587 static HRESULT WINAPI
TimelineObj_GetSubObjectLoaded(IAMTimelineObj
*iface
, BOOL
*loaded
)
589 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
590 FIXME("(%p)->(%p): not implemented!\n", This
, loaded
);
594 static HRESULT WINAPI
TimelineObj_GetTimelineType(IAMTimelineObj
*iface
, TIMELINE_MAJOR_TYPE
*type
)
596 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
597 TRACE("(%p)->(%p)\n", This
, type
);
598 if (!type
) return E_POINTER
;
599 *type
= This
->timeline_type
;
603 static HRESULT WINAPI
TimelineObj_SetTimelineType(IAMTimelineObj
*iface
, TIMELINE_MAJOR_TYPE type
)
605 /* MSDN says that this function is "not supported" */
606 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
607 TRACE("(%p)->(%d)\n", This
, type
);
608 if (type
!= This
->timeline_type
) return E_INVALIDARG
;
612 static HRESULT WINAPI
TimelineObj_GetUserID(IAMTimelineObj
*iface
, LONG
*id
)
614 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
615 FIXME("(%p)->(%p): not implemented!\n", This
, id
);
619 static HRESULT WINAPI
TimelineObj_SetUserID(IAMTimelineObj
*iface
, LONG id
)
621 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
622 FIXME("(%p)->(%d): not implemented!\n", This
, id
);
626 static HRESULT WINAPI
TimelineObj_GetGenID(IAMTimelineObj
*iface
, LONG
*id
)
628 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
629 FIXME("(%p)->(%p): not implemented!\n", This
, id
);
633 static HRESULT WINAPI
TimelineObj_GetUserName(IAMTimelineObj
*iface
, BSTR
*name
)
635 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
636 FIXME("(%p)->(%p): not implemented!\n", This
, name
);
640 static HRESULT WINAPI
TimelineObj_SetUserName(IAMTimelineObj
*iface
, BSTR name
)
642 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
643 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_w(name
));
647 static HRESULT WINAPI
TimelineObj_GetUserData(IAMTimelineObj
*iface
, BYTE
*data
, LONG
*size
)
649 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
650 FIXME("(%p)->(%p,%p): not implemented!\n", This
, data
, size
);
654 static HRESULT WINAPI
TimelineObj_SetUserData(IAMTimelineObj
*iface
, BYTE
*data
, LONG size
)
656 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
657 FIXME("(%p)->(%p,%d): not implemented!\n", This
, data
, size
);
661 static HRESULT WINAPI
TimelineObj_GetMuted(IAMTimelineObj
*iface
, BOOL
*muted
)
663 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
664 FIXME("(%p)->(%p): not implemented!\n", This
, muted
);
668 static HRESULT WINAPI
TimelineObj_SetMuted(IAMTimelineObj
*iface
, BOOL muted
)
670 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
671 FIXME("(%p)->(%d): not implemented!\n", This
, muted
);
675 static HRESULT WINAPI
TimelineObj_GetLocked(IAMTimelineObj
*iface
, BOOL
*locked
)
677 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
678 FIXME("(%p)->(%p): not implemented!\n", This
, locked
);
682 static HRESULT WINAPI
TimelineObj_SetLocked(IAMTimelineObj
*iface
, BOOL locked
)
684 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
685 FIXME("(%p)->(%d): not implemented!\n", This
, locked
);
689 static HRESULT WINAPI
TimelineObj_GetDirtyRange(IAMTimelineObj
*iface
, REFERENCE_TIME
*start
, REFERENCE_TIME
*stop
)
691 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
692 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
696 static HRESULT WINAPI
TimelineObj_GetDirtyRange2(IAMTimelineObj
*iface
, REFTIME
*start
, REFTIME
*stop
)
698 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
699 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
703 static HRESULT WINAPI
TimelineObj_SetDirtyRange(IAMTimelineObj
*iface
, REFERENCE_TIME start
, REFERENCE_TIME stop
)
705 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
706 FIXME("(%p)->(%s,%s): not implemented!\n", This
, wine_dbgstr_longlong(start
), wine_dbgstr_longlong(stop
));
710 static HRESULT WINAPI
TimelineObj_SetDirtyRange2(IAMTimelineObj
*iface
, REFTIME start
, REFTIME stop
)
712 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
713 FIXME("(%p)->(%f,%f): not implemented!\n", This
, start
, stop
);
717 static HRESULT WINAPI
TimelineObj_ClearDirty(IAMTimelineObj
*iface
)
719 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
720 FIXME("(%p): not implemented!\n", This
);
724 static HRESULT WINAPI
TimelineObj_Remove(IAMTimelineObj
*iface
)
726 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
727 FIXME("(%p): not implemented!\n", This
);
731 static HRESULT WINAPI
TimelineObj_RemoveAll(IAMTimelineObj
*iface
)
733 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
734 FIXME("(%p): not implemented!\n", This
);
738 static HRESULT WINAPI
TimelineObj_GetTimelineNoRef(IAMTimelineObj
*iface
, IAMTimeline
**timeline
)
740 /* MSDN says that this function is "not supported" */
741 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
742 TRACE("(%p)->(%p)\n", This
, timeline
);
743 if (!timeline
) return E_POINTER
;
745 return E_NOINTERFACE
;
748 static HRESULT WINAPI
TimelineObj_GetGroupIBelongTo(IAMTimelineObj
*iface
, IAMTimelineGroup
**group
)
750 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
751 FIXME("(%p)->(%p): not implemented!\n", This
, group
);
755 static HRESULT WINAPI
TimelineObj_GetEmbedDepth(IAMTimelineObj
*iface
, LONG
*depth
)
757 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
758 FIXME("(%p)->(%p): not implemented!\n", This
, depth
);
762 static const IAMTimelineObjVtbl IAMTimelineObj_VTable
=
764 TimelineObj_QueryInterface
,
767 TimelineObj_GetStartStop
,
768 TimelineObj_GetStartStop2
,
769 TimelineObj_FixTimes
,
770 TimelineObj_FixTimes2
,
771 TimelineObj_SetStartStop
,
772 TimelineObj_SetStartStop2
,
773 TimelineObj_GetPropertySetter
,
774 TimelineObj_SetPropertySetter
,
775 TimelineObj_GetSubObject
,
776 TimelineObj_SetSubObject
,
777 TimelineObj_SetSubObjectGUID
,
778 TimelineObj_SetSubObjectGUIDB
,
779 TimelineObj_GetSubObjectGUID
,
780 TimelineObj_GetSubObjectGUIDB
,
781 TimelineObj_GetSubObjectLoaded
,
782 TimelineObj_GetTimelineType
,
783 TimelineObj_SetTimelineType
,
784 TimelineObj_GetUserID
,
785 TimelineObj_SetUserID
,
786 TimelineObj_GetGenID
,
787 TimelineObj_GetUserName
,
788 TimelineObj_SetUserName
,
789 TimelineObj_GetUserData
,
790 TimelineObj_SetUserData
,
791 TimelineObj_GetMuted
,
792 TimelineObj_SetMuted
,
793 TimelineObj_GetLocked
,
794 TimelineObj_SetLocked
,
795 TimelineObj_GetDirtyRange
,
796 TimelineObj_GetDirtyRange2
,
797 TimelineObj_SetDirtyRange
,
798 TimelineObj_SetDirtyRange2
,
799 TimelineObj_ClearDirty
,
801 TimelineObj_RemoveAll
,
802 TimelineObj_GetTimelineNoRef
,
803 TimelineObj_GetGroupIBelongTo
,
804 TimelineObj_GetEmbedDepth
,