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
;
54 IAMTimelineGroup IAMTimelineGroup_iface
;
56 TIMELINE_MAJOR_TYPE timeline_type
;
59 static inline TimelineObjImpl
*impl_from_IAMTimelineObj(IAMTimelineObj
*iface
)
61 return CONTAINING_RECORD(iface
, TimelineObjImpl
, IAMTimelineObj_iface
);
64 static inline TimelineObjImpl
*impl_from_IAMTimelineGroup(IAMTimelineGroup
*iface
)
66 return CONTAINING_RECORD(iface
, TimelineObjImpl
, IAMTimelineGroup_iface
);
69 static const IAMTimelineObjVtbl IAMTimelineObj_VTable
;
70 static const IAMTimelineGroupVtbl IAMTimelineGroup_VTable
;
72 /* Timeline inner IUnknown */
74 static HRESULT WINAPI
Timeline_QueryInterface(IUnknown
*iface
, REFIID riid
, void **ppv
)
76 TimelineImpl
*This
= impl_from_IUnknown(iface
);
78 TRACE("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), ppv
);
84 if (IsEqualIID(riid
, &IID_IUnknown
))
85 *ppv
= &This
->IUnknown_inner
;
86 else if (IsEqualIID(riid
, &IID_IAMTimeline
))
87 *ppv
= &This
->IAMTimeline_iface
;
89 WARN("(%p, %s,%p): not found\n", This
, debugstr_guid(riid
), ppv
);
94 IUnknown_AddRef((IUnknown
*)*ppv
);
98 static ULONG WINAPI
Timeline_AddRef(IUnknown
*iface
)
100 TimelineImpl
*This
= impl_from_IUnknown(iface
);
101 ULONG ref
= InterlockedIncrement(&This
->ref
);
103 TRACE("(%p) new ref = %u\n", This
, ref
);
108 static ULONG WINAPI
Timeline_Release(IUnknown
*iface
)
110 TimelineImpl
*This
= impl_from_IUnknown(iface
);
111 ULONG ref
= InterlockedDecrement(&This
->ref
);
113 TRACE("(%p) new ref = %u\n", This
, ref
);
121 static const IUnknownVtbl timeline_vtbl
=
123 Timeline_QueryInterface
,
128 /* IAMTimeline implementation */
130 static HRESULT WINAPI
Timeline_IAMTimeline_QueryInterface(IAMTimeline
*iface
, REFIID riid
, void **ppv
)
132 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
133 return IUnknown_QueryInterface(This
->outer_unk
, riid
, ppv
);
136 static ULONG WINAPI
Timeline_IAMTimeline_AddRef(IAMTimeline
*iface
)
138 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
139 return IUnknown_AddRef(This
->outer_unk
);
142 static ULONG WINAPI
Timeline_IAMTimeline_Release(IAMTimeline
*iface
)
144 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
145 return IUnknown_Release(This
->outer_unk
);
148 static HRESULT WINAPI
Timeline_IAMTimeline_CreateEmptyNode(IAMTimeline
*iface
, IAMTimelineObj
**obj
,
149 TIMELINE_MAJOR_TYPE type
)
151 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
152 TimelineObjImpl
* obj_impl
;
154 TRACE("(%p)->(%p,%d)\n", This
, obj
, type
);
161 case TIMELINE_MAJOR_TYPE_COMPOSITE
:
162 case TIMELINE_MAJOR_TYPE_TRACK
:
163 case TIMELINE_MAJOR_TYPE_SOURCE
:
164 case TIMELINE_MAJOR_TYPE_TRANSITION
:
165 case TIMELINE_MAJOR_TYPE_EFFECT
:
166 case TIMELINE_MAJOR_TYPE_GROUP
:
172 obj_impl
= CoTaskMemAlloc(sizeof(TimelineObjImpl
));
175 return E_OUTOFMEMORY
;
179 obj_impl
->IAMTimelineObj_iface
.lpVtbl
= &IAMTimelineObj_VTable
;
180 obj_impl
->IAMTimelineGroup_iface
.lpVtbl
= &IAMTimelineGroup_VTable
;
181 obj_impl
->timeline_type
= type
;
183 *obj
= &obj_impl
->IAMTimelineObj_iface
;
187 static HRESULT WINAPI
Timeline_IAMTimeline_AddGroup(IAMTimeline
*iface
, IAMTimelineObj
*group
)
189 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
190 FIXME("(%p)->(%p): not implemented!\n", This
, group
);
194 static HRESULT WINAPI
Timeline_IAMTimeline_RemGroupFromList(IAMTimeline
*iface
, IAMTimelineObj
*group
)
196 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
197 FIXME("(%p)->(%p): not implemented!\n", This
, group
);
201 static HRESULT WINAPI
Timeline_IAMTimeline_GetGroup(IAMTimeline
*iface
, IAMTimelineObj
**group
, LONG index
)
203 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
204 FIXME("(%p)->(%p,%d): not implemented!\n", This
, group
, index
);
208 static HRESULT WINAPI
Timeline_IAMTimeline_GetGroupCount(IAMTimeline
*iface
, LONG
*count
)
210 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
211 FIXME("(%p)->(%p): not implemented!\n", This
, count
);
215 static HRESULT WINAPI
Timeline_IAMTimeline_ClearAllGroups(IAMTimeline
*iface
)
217 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
218 FIXME("(%p): not implemented!\n", This
);
222 static HRESULT WINAPI
Timeline_IAMTimeline_GetInsertMode(IAMTimeline
*iface
, LONG
*mode
)
224 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
225 FIXME("(%p)->(%p): not implemented!\n", This
, mode
);
229 static HRESULT WINAPI
Timeline_IAMTimeline_SetInsertMode(IAMTimeline
*iface
, LONG mode
)
231 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
232 FIXME("(%p)->(%d): not implemented!\n", This
, mode
);
236 static HRESULT WINAPI
Timeline_IAMTimeline_EnableTransitions(IAMTimeline
*iface
, BOOL enabled
)
238 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
239 FIXME("(%p)->(%d): not implemented!\n", This
, enabled
);
243 static HRESULT WINAPI
Timeline_IAMTimeline_TransitionsEnabled(IAMTimeline
*iface
, BOOL
*enabled
)
245 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
246 FIXME("(%p)->(%p): not implemented!\n", This
, enabled
);
250 static HRESULT WINAPI
Timeline_IAMTimeline_EnableEffects(IAMTimeline
*iface
, BOOL enabled
)
252 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
253 FIXME("(%p)->(%d): not implemented!\n", This
, enabled
);
257 static HRESULT WINAPI
Timeline_IAMTimeline_EffectsEnabled(IAMTimeline
*iface
, BOOL
*enabled
)
259 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
260 FIXME("(%p)->(%p): not implemented!\n", This
, enabled
);
264 static HRESULT WINAPI
Timeline_IAMTimeline_SetInterestRange(IAMTimeline
*iface
, REFERENCE_TIME start
,
267 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
268 FIXME("(%p)->(%s,%s): not implemented!\n", This
, wine_dbgstr_longlong(start
),
269 wine_dbgstr_longlong(stop
));
273 static HRESULT WINAPI
Timeline_IAMTimeline_GetDuration(IAMTimeline
*iface
, REFERENCE_TIME
*duration
)
275 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
276 FIXME("(%p)->(%p): not implemented!\n", This
, duration
);
280 static HRESULT WINAPI
Timeline_IAMTimeline_GetDuration2(IAMTimeline
*iface
, double *duration
)
282 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
283 FIXME("(%p)->(%p): not implemented!\n", This
, duration
);
287 static HRESULT WINAPI
Timeline_IAMTimeline_SetDefaultFPS(IAMTimeline
*iface
, double fps
)
289 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
290 FIXME("(%p)->(%f): not implemented!\n", This
, fps
);
294 static HRESULT WINAPI
Timeline_IAMTimeline_GetDefaultFPS(IAMTimeline
*iface
, double *fps
)
296 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
297 FIXME("(%p)->(%p): not implemented!\n", This
, fps
);
301 static HRESULT WINAPI
Timeline_IAMTimeline_IsDirty(IAMTimeline
*iface
, BOOL
*dirty
)
303 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
304 FIXME("(%p)->(%p): not implemented!\n", This
, dirty
);
308 static HRESULT WINAPI
Timeline_IAMTimeline_GetDirtyRange(IAMTimeline
*iface
, REFERENCE_TIME
*start
,
309 REFERENCE_TIME
*stop
)
311 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
312 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
316 static HRESULT WINAPI
Timeline_IAMTimeline_GetCountOfType(IAMTimeline
*iface
, LONG group
, LONG
*value
,
317 LONG
*value_with_comps
, TIMELINE_MAJOR_TYPE type
)
319 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
320 FIXME("(%p)->(%d,%p,%p,%04x): not implemented!\n", This
, group
, value
, value_with_comps
, type
);
324 static HRESULT WINAPI
Timeline_IAMTimeline_ValidateSourceNames(IAMTimeline
*iface
, LONG flags
, IMediaLocator
*override
,
325 LONG_PTR notify_event
)
327 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
328 FIXME("(%p)->(%d,%p,%lx): not implemented!\n", This
, flags
, override
, notify_event
);
332 static HRESULT WINAPI
Timeline_IAMTimeline_SetDefaultTransition(IAMTimeline
*iface
, GUID
*guid
)
334 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
335 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_guid(guid
));
339 static HRESULT WINAPI
Timeline_IAMTimeline_GetDefaultTransition(IAMTimeline
*iface
, GUID
*guid
)
341 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
342 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_guid(guid
));
346 static HRESULT WINAPI
Timeline_IAMTimeline_SetDefaultEffect(IAMTimeline
*iface
, GUID
*guid
)
348 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
349 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_guid(guid
));
353 static HRESULT WINAPI
Timeline_IAMTimeline_GetDefaultEffect(IAMTimeline
*iface
, GUID
*guid
)
355 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
356 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_guid(guid
));
360 static HRESULT WINAPI
Timeline_IAMTimeline_SetDefaultTransitionB(IAMTimeline
*iface
, BSTR guidb
)
362 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
363 FIXME("(%p)->(%p): not implemented!\n", This
, guidb
);
367 static HRESULT WINAPI
Timeline_IAMTimeline_GetDefaultTransitionB(IAMTimeline
*iface
, BSTR
*guidb
)
369 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
370 FIXME("(%p)->(%p): not implemented!\n", This
, guidb
);
374 static HRESULT WINAPI
Timeline_IAMTimeline_SetDefaultEffectB(IAMTimeline
*iface
, BSTR guidb
)
376 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
377 FIXME("(%p)->(%p): not implemented!\n", This
, guidb
);
381 static HRESULT WINAPI
Timeline_IAMTimeline_GetDefaultEffectB(IAMTimeline
*iface
, BSTR
*guidb
)
383 TimelineImpl
*This
= impl_from_IAMTimeline(iface
);
384 FIXME("(%p)->(%p): not implemented!\n", This
, guidb
);
388 static const IAMTimelineVtbl IAMTimeline_VTable
=
390 Timeline_IAMTimeline_QueryInterface
,
391 Timeline_IAMTimeline_AddRef
,
392 Timeline_IAMTimeline_Release
,
393 Timeline_IAMTimeline_CreateEmptyNode
,
394 Timeline_IAMTimeline_AddGroup
,
395 Timeline_IAMTimeline_RemGroupFromList
,
396 Timeline_IAMTimeline_GetGroup
,
397 Timeline_IAMTimeline_GetGroupCount
,
398 Timeline_IAMTimeline_ClearAllGroups
,
399 Timeline_IAMTimeline_GetInsertMode
,
400 Timeline_IAMTimeline_SetInsertMode
,
401 Timeline_IAMTimeline_EnableTransitions
,
402 Timeline_IAMTimeline_TransitionsEnabled
,
403 Timeline_IAMTimeline_EnableEffects
,
404 Timeline_IAMTimeline_EffectsEnabled
,
405 Timeline_IAMTimeline_SetInterestRange
,
406 Timeline_IAMTimeline_GetDuration
,
407 Timeline_IAMTimeline_GetDuration2
,
408 Timeline_IAMTimeline_SetDefaultFPS
,
409 Timeline_IAMTimeline_GetDefaultFPS
,
410 Timeline_IAMTimeline_IsDirty
,
411 Timeline_IAMTimeline_GetDirtyRange
,
412 Timeline_IAMTimeline_GetCountOfType
,
413 Timeline_IAMTimeline_ValidateSourceNames
,
414 Timeline_IAMTimeline_SetDefaultTransition
,
415 Timeline_IAMTimeline_GetDefaultTransition
,
416 Timeline_IAMTimeline_SetDefaultEffect
,
417 Timeline_IAMTimeline_GetDefaultEffect
,
418 Timeline_IAMTimeline_SetDefaultTransitionB
,
419 Timeline_IAMTimeline_GetDefaultTransitionB
,
420 Timeline_IAMTimeline_SetDefaultEffectB
,
421 Timeline_IAMTimeline_GetDefaultEffectB
,
424 HRESULT
timeline_create(IUnknown
*pUnkOuter
, IUnknown
**ppv
)
426 TimelineImpl
* obj
= NULL
;
428 TRACE("(%p,%p)\n", pUnkOuter
, ppv
);
430 obj
= CoTaskMemAlloc(sizeof(TimelineImpl
));
433 return E_OUTOFMEMORY
;
435 ZeroMemory(obj
, sizeof(TimelineImpl
));
438 obj
->IUnknown_inner
.lpVtbl
= &timeline_vtbl
;
439 obj
->IAMTimeline_iface
.lpVtbl
= &IAMTimeline_VTable
;
442 obj
->outer_unk
= pUnkOuter
;
444 obj
->outer_unk
= &obj
->IUnknown_inner
;
446 *ppv
= &obj
->IUnknown_inner
;
450 /* IAMTimelineObj implementation */
452 static HRESULT WINAPI
TimelineObj_QueryInterface(IAMTimelineObj
*iface
, REFIID riid
, void **ppv
)
454 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
456 TRACE("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), ppv
);
462 if (IsEqualIID(riid
, &IID_IUnknown
) || IsEqualIID(riid
, &IID_IAMTimelineObj
))
463 *ppv
= &This
->IAMTimelineObj_iface
;
464 else if (IsEqualIID(riid
, &IID_IAMTimelineGroup
))
465 *ppv
= &This
->IAMTimelineGroup_iface
;
467 WARN("(%p, %s,%p): not found\n", This
, debugstr_guid(riid
), ppv
);
470 return E_NOINTERFACE
;
472 IUnknown_AddRef((IUnknown
*)*ppv
);
476 static ULONG WINAPI
TimelineObj_AddRef(IAMTimelineObj
*iface
)
478 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
479 ULONG ref
= InterlockedIncrement(&This
->ref
);
481 TRACE("(%p) new ref = %u\n", This
, ref
);
486 static ULONG WINAPI
TimelineObj_Release(IAMTimelineObj
*iface
)
488 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
489 ULONG ref
= InterlockedDecrement(&This
->ref
);
491 TRACE("(%p) new ref = %u\n", This
, ref
);
499 static HRESULT WINAPI
TimelineObj_GetStartStop(IAMTimelineObj
*iface
, REFERENCE_TIME
*start
, REFERENCE_TIME
*stop
)
501 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
502 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
506 static HRESULT WINAPI
TimelineObj_GetStartStop2(IAMTimelineObj
*iface
, REFTIME
*start
, REFTIME
*stop
)
508 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
509 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
513 static HRESULT WINAPI
TimelineObj_FixTimes(IAMTimelineObj
*iface
, REFERENCE_TIME
*start
, REFERENCE_TIME
*stop
)
515 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
516 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
520 static HRESULT WINAPI
TimelineObj_FixTimes2(IAMTimelineObj
*iface
, REFTIME
*start
, REFTIME
*stop
)
522 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
523 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
527 static HRESULT WINAPI
TimelineObj_SetStartStop(IAMTimelineObj
*iface
, REFERENCE_TIME start
, REFERENCE_TIME stop
)
529 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
530 FIXME("(%p)->(%s,%s): not implemented!\n", This
, wine_dbgstr_longlong(start
), wine_dbgstr_longlong(stop
));
534 static HRESULT WINAPI
TimelineObj_SetStartStop2(IAMTimelineObj
*iface
, REFTIME start
, REFTIME stop
)
536 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
537 FIXME("(%p)->(%f,%f): not implemented!\n", This
, start
, stop
);
541 static HRESULT WINAPI
TimelineObj_GetPropertySetter(IAMTimelineObj
*iface
, IPropertySetter
**setter
)
543 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
544 FIXME("(%p)->(%p): not implemented!\n", This
, setter
);
548 static HRESULT WINAPI
TimelineObj_SetPropertySetter(IAMTimelineObj
*iface
, IPropertySetter
*setter
)
550 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
551 FIXME("(%p)->(%p): not implemented!\n", This
, setter
);
555 static HRESULT WINAPI
TimelineObj_GetSubObject(IAMTimelineObj
*iface
, IUnknown
**obj
)
557 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
558 FIXME("(%p)->(%p): not implemented!\n", This
, obj
);
562 static HRESULT WINAPI
TimelineObj_SetSubObject(IAMTimelineObj
*iface
, IUnknown
*obj
)
564 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
565 FIXME("(%p)->(%p): not implemented!\n", This
, obj
);
569 static HRESULT WINAPI
TimelineObj_SetSubObjectGUID(IAMTimelineObj
*iface
, GUID guid
)
571 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
572 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_guid(&guid
));
576 static HRESULT WINAPI
TimelineObj_SetSubObjectGUIDB(IAMTimelineObj
*iface
, BSTR guidb
)
578 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
579 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_w(guidb
));
583 static HRESULT WINAPI
TimelineObj_GetSubObjectGUID(IAMTimelineObj
*iface
, GUID
*guid
)
585 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
586 FIXME("(%p)->(%p): not implemented!\n", This
, guid
);
590 static HRESULT WINAPI
TimelineObj_GetSubObjectGUIDB(IAMTimelineObj
*iface
, BSTR
*guidb
)
592 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
593 FIXME("(%p)->(%p): not implemented!\n", This
, guidb
);
597 static HRESULT WINAPI
TimelineObj_GetSubObjectLoaded(IAMTimelineObj
*iface
, BOOL
*loaded
)
599 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
600 FIXME("(%p)->(%p): not implemented!\n", This
, loaded
);
604 static HRESULT WINAPI
TimelineObj_GetTimelineType(IAMTimelineObj
*iface
, TIMELINE_MAJOR_TYPE
*type
)
606 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
607 TRACE("(%p)->(%p)\n", This
, type
);
608 if (!type
) return E_POINTER
;
609 *type
= This
->timeline_type
;
613 static HRESULT WINAPI
TimelineObj_SetTimelineType(IAMTimelineObj
*iface
, TIMELINE_MAJOR_TYPE type
)
615 /* MSDN says that this function is "not supported" */
616 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
617 TRACE("(%p)->(%d)\n", This
, type
);
618 if (type
!= This
->timeline_type
) return E_INVALIDARG
;
622 static HRESULT WINAPI
TimelineObj_GetUserID(IAMTimelineObj
*iface
, LONG
*id
)
624 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
625 FIXME("(%p)->(%p): not implemented!\n", This
, id
);
629 static HRESULT WINAPI
TimelineObj_SetUserID(IAMTimelineObj
*iface
, LONG id
)
631 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
632 FIXME("(%p)->(%d): not implemented!\n", This
, id
);
636 static HRESULT WINAPI
TimelineObj_GetGenID(IAMTimelineObj
*iface
, LONG
*id
)
638 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
639 FIXME("(%p)->(%p): not implemented!\n", This
, id
);
643 static HRESULT WINAPI
TimelineObj_GetUserName(IAMTimelineObj
*iface
, BSTR
*name
)
645 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
646 FIXME("(%p)->(%p): not implemented!\n", This
, name
);
650 static HRESULT WINAPI
TimelineObj_SetUserName(IAMTimelineObj
*iface
, BSTR name
)
652 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
653 FIXME("(%p)->(%s): not implemented!\n", This
, wine_dbgstr_w(name
));
657 static HRESULT WINAPI
TimelineObj_GetUserData(IAMTimelineObj
*iface
, BYTE
*data
, LONG
*size
)
659 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
660 FIXME("(%p)->(%p,%p): not implemented!\n", This
, data
, size
);
664 static HRESULT WINAPI
TimelineObj_SetUserData(IAMTimelineObj
*iface
, BYTE
*data
, LONG size
)
666 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
667 FIXME("(%p)->(%p,%d): not implemented!\n", This
, data
, size
);
671 static HRESULT WINAPI
TimelineObj_GetMuted(IAMTimelineObj
*iface
, BOOL
*muted
)
673 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
674 FIXME("(%p)->(%p): not implemented!\n", This
, muted
);
678 static HRESULT WINAPI
TimelineObj_SetMuted(IAMTimelineObj
*iface
, BOOL muted
)
680 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
681 FIXME("(%p)->(%d): not implemented!\n", This
, muted
);
685 static HRESULT WINAPI
TimelineObj_GetLocked(IAMTimelineObj
*iface
, BOOL
*locked
)
687 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
688 FIXME("(%p)->(%p): not implemented!\n", This
, locked
);
692 static HRESULT WINAPI
TimelineObj_SetLocked(IAMTimelineObj
*iface
, BOOL locked
)
694 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
695 FIXME("(%p)->(%d): not implemented!\n", This
, locked
);
699 static HRESULT WINAPI
TimelineObj_GetDirtyRange(IAMTimelineObj
*iface
, REFERENCE_TIME
*start
, REFERENCE_TIME
*stop
)
701 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
702 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
706 static HRESULT WINAPI
TimelineObj_GetDirtyRange2(IAMTimelineObj
*iface
, REFTIME
*start
, REFTIME
*stop
)
708 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
709 FIXME("(%p)->(%p,%p): not implemented!\n", This
, start
, stop
);
713 static HRESULT WINAPI
TimelineObj_SetDirtyRange(IAMTimelineObj
*iface
, REFERENCE_TIME start
, REFERENCE_TIME stop
)
715 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
716 FIXME("(%p)->(%s,%s): not implemented!\n", This
, wine_dbgstr_longlong(start
), wine_dbgstr_longlong(stop
));
720 static HRESULT WINAPI
TimelineObj_SetDirtyRange2(IAMTimelineObj
*iface
, REFTIME start
, REFTIME stop
)
722 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
723 FIXME("(%p)->(%f,%f): not implemented!\n", This
, start
, stop
);
727 static HRESULT WINAPI
TimelineObj_ClearDirty(IAMTimelineObj
*iface
)
729 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
730 FIXME("(%p): not implemented!\n", This
);
734 static HRESULT WINAPI
TimelineObj_Remove(IAMTimelineObj
*iface
)
736 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
737 FIXME("(%p): not implemented!\n", This
);
741 static HRESULT WINAPI
TimelineObj_RemoveAll(IAMTimelineObj
*iface
)
743 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
744 FIXME("(%p): not implemented!\n", This
);
748 static HRESULT WINAPI
TimelineObj_GetTimelineNoRef(IAMTimelineObj
*iface
, IAMTimeline
**timeline
)
750 /* MSDN says that this function is "not supported" */
751 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
752 TRACE("(%p)->(%p)\n", This
, timeline
);
753 if (!timeline
) return E_POINTER
;
755 return E_NOINTERFACE
;
758 static HRESULT WINAPI
TimelineObj_GetGroupIBelongTo(IAMTimelineObj
*iface
, IAMTimelineGroup
**group
)
760 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
761 FIXME("(%p)->(%p): not implemented!\n", This
, group
);
765 static HRESULT WINAPI
TimelineObj_GetEmbedDepth(IAMTimelineObj
*iface
, LONG
*depth
)
767 TimelineObjImpl
*This
= impl_from_IAMTimelineObj(iface
);
768 FIXME("(%p)->(%p): not implemented!\n", This
, depth
);
772 static const IAMTimelineObjVtbl IAMTimelineObj_VTable
=
774 TimelineObj_QueryInterface
,
777 TimelineObj_GetStartStop
,
778 TimelineObj_GetStartStop2
,
779 TimelineObj_FixTimes
,
780 TimelineObj_FixTimes2
,
781 TimelineObj_SetStartStop
,
782 TimelineObj_SetStartStop2
,
783 TimelineObj_GetPropertySetter
,
784 TimelineObj_SetPropertySetter
,
785 TimelineObj_GetSubObject
,
786 TimelineObj_SetSubObject
,
787 TimelineObj_SetSubObjectGUID
,
788 TimelineObj_SetSubObjectGUIDB
,
789 TimelineObj_GetSubObjectGUID
,
790 TimelineObj_GetSubObjectGUIDB
,
791 TimelineObj_GetSubObjectLoaded
,
792 TimelineObj_GetTimelineType
,
793 TimelineObj_SetTimelineType
,
794 TimelineObj_GetUserID
,
795 TimelineObj_SetUserID
,
796 TimelineObj_GetGenID
,
797 TimelineObj_GetUserName
,
798 TimelineObj_SetUserName
,
799 TimelineObj_GetUserData
,
800 TimelineObj_SetUserData
,
801 TimelineObj_GetMuted
,
802 TimelineObj_SetMuted
,
803 TimelineObj_GetLocked
,
804 TimelineObj_SetLocked
,
805 TimelineObj_GetDirtyRange
,
806 TimelineObj_GetDirtyRange2
,
807 TimelineObj_SetDirtyRange
,
808 TimelineObj_SetDirtyRange2
,
809 TimelineObj_ClearDirty
,
811 TimelineObj_RemoveAll
,
812 TimelineObj_GetTimelineNoRef
,
813 TimelineObj_GetGroupIBelongTo
,
814 TimelineObj_GetEmbedDepth
,
817 static HRESULT WINAPI
timelinegrp_QueryInterface(IAMTimelineGroup
*iface
, REFIID riid
, void **object
)
819 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
820 return IAMTimelineObj_QueryInterface(&This
->IAMTimelineObj_iface
, riid
, object
);
823 static ULONG WINAPI
timelinegrp_AddRef(IAMTimelineGroup
*iface
)
825 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
826 return IAMTimelineObj_AddRef(&This
->IAMTimelineObj_iface
);
829 static ULONG WINAPI
timelinegrp_Release(IAMTimelineGroup
*iface
)
831 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
832 return IAMTimelineObj_Release(&This
->IAMTimelineObj_iface
);
835 static HRESULT WINAPI
timelinegrp_SetTimeline(IAMTimelineGroup
*iface
, IAMTimeline
*timeline
)
837 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
838 FIXME("(%p)->(%p)\n", This
, timeline
);
842 static HRESULT WINAPI
timelinegrp_GetTimeline(IAMTimelineGroup
*iface
, IAMTimeline
**timeline
)
844 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
845 FIXME("(%p)->(%p)\n", This
, timeline
);
849 static HRESULT WINAPI
timelinegrp_GetPriority(IAMTimelineGroup
*iface
, LONG
*priority
)
851 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
852 FIXME("(%p)->(%p)\n", This
, priority
);
856 static HRESULT WINAPI
timelinegrp_GetMediaType(IAMTimelineGroup
*iface
, AM_MEDIA_TYPE
*mediatype
)
858 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
859 FIXME("(%p)->(%p)\n", This
, mediatype
);
863 static HRESULT WINAPI
timelinegrp_SetMediaType(IAMTimelineGroup
*iface
, AM_MEDIA_TYPE
*mediatype
)
865 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
866 FIXME("(%p)->(%p)\n", This
, mediatype
);
870 static HRESULT WINAPI
timelinegrp_SetOutputFPS(IAMTimelineGroup
*iface
, double fps
)
872 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
873 FIXME("(%p)->(%f)\n", This
, fps
);
877 static HRESULT WINAPI
timelinegrp_GetOutputFPS(IAMTimelineGroup
*iface
, double *fps
)
879 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
880 FIXME("(%p)->(%p)\n", This
, fps
);
884 static HRESULT WINAPI
timelinegrp_SetGroupName(IAMTimelineGroup
*iface
, BSTR name
)
886 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
887 FIXME("(%p)->(%s)\n", This
, debugstr_w(name
));
891 static HRESULT WINAPI
timelinegrp_GetGroupName(IAMTimelineGroup
*iface
, BSTR
*name
)
893 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
894 FIXME("(%p)->(%p)\n", This
, name
);
898 static HRESULT WINAPI
timelinegrp_SetPreviewMode(IAMTimelineGroup
*iface
, BOOL preview
)
900 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
901 FIXME("(%p)->(%d)\n", This
, preview
);
905 static HRESULT WINAPI
timelinegrp_GetPreviewMode(IAMTimelineGroup
*iface
, BOOL
*preview
)
907 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
908 FIXME("(%p)->(%p)\n", This
, preview
);
912 static HRESULT WINAPI
timelinegrp_SetMediaTypeForVB(IAMTimelineGroup
*iface
, LONG type
)
914 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
915 FIXME("(%p)->(%d)\n", This
, type
);
919 static HRESULT WINAPI
timelinegrp_GetOutputBuffering(IAMTimelineGroup
*iface
, int *buffer
)
921 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
922 FIXME("(%p)->(%p)\n", This
, buffer
);
926 static HRESULT WINAPI
timelinegrp_SetOutputBuffering(IAMTimelineGroup
*iface
, int buffer
)
928 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
929 FIXME("(%p)->(%d)\n", This
, buffer
);
933 static HRESULT WINAPI
timelinegrp_SetSmartRecompressFormat(IAMTimelineGroup
*iface
, LONG
*format
)
935 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
936 FIXME("(%p)->(%p)\n", This
, format
);
940 static HRESULT WINAPI
timelinegrp_GetSmartRecompressFormat(IAMTimelineGroup
*iface
, LONG
**format
)
942 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
943 FIXME("(%p)->(%p)\n", This
, format
);
947 static HRESULT WINAPI
timelinegrp_IsSmartRecompressFormatSet(IAMTimelineGroup
*iface
, BOOL
*set
)
949 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
950 FIXME("(%p)->(%p)\n", This
, set
);
954 static HRESULT WINAPI
timelinegrp_IsRecompressFormatDirty(IAMTimelineGroup
*iface
, BOOL
*dirty
)
956 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
957 FIXME("(%p)->(%p)\n", This
, dirty
);
961 static HRESULT WINAPI
timelinegrp_ClearRecompressFormatDirty(IAMTimelineGroup
*iface
)
963 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
964 FIXME("(%p)->()\n", This
);
968 static HRESULT WINAPI
timelinegrp_SetRecompFormatFromSource(IAMTimelineGroup
*iface
, IAMTimelineSrc
*source
)
970 TimelineObjImpl
*This
= impl_from_IAMTimelineGroup(iface
);
971 FIXME("(%p)->(%p)\n", This
, source
);
975 static const IAMTimelineGroupVtbl IAMTimelineGroup_VTable
=
977 timelinegrp_QueryInterface
,
980 timelinegrp_SetTimeline
,
981 timelinegrp_GetTimeline
,
982 timelinegrp_GetPriority
,
983 timelinegrp_GetMediaType
,
984 timelinegrp_SetMediaType
,
985 timelinegrp_SetOutputFPS
,
986 timelinegrp_GetOutputFPS
,
987 timelinegrp_SetGroupName
,
988 timelinegrp_GetGroupName
,
989 timelinegrp_SetPreviewMode
,
990 timelinegrp_GetPreviewMode
,
991 timelinegrp_SetMediaTypeForVB
,
992 timelinegrp_GetOutputBuffering
,
993 timelinegrp_SetOutputBuffering
,
994 timelinegrp_SetSmartRecompressFormat
,
995 timelinegrp_GetSmartRecompressFormat
,
996 timelinegrp_IsSmartRecompressFormatSet
,
997 timelinegrp_IsRecompressFormatDirty
,
998 timelinegrp_ClearRecompressFormatDirty
,
999 timelinegrp_SetRecompFormatFromSource