gphoto2.ds: Set supported groups.
[wine.git] / dlls / qedit / timeline.c
blob5d3fb461ff02f21468514c779966a8d284988393
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
20 #include <assert.h>
21 #include <stdarg.h>
23 #define COBJMACROS
25 #include "windef.h"
26 #include "winbase.h"
27 #include "winuser.h"
28 #include "ole2.h"
30 #include "qedit_private.h"
31 #include "wine/debug.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(qedit);
35 typedef struct {
36 IUnknown IUnknown_inner;
37 IAMTimeline IAMTimeline_iface;
38 IUnknown *outer_unk;
39 LONG ref;
40 } TimelineImpl;
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);
52 typedef struct {
53 IAMTimelineObj IAMTimelineObj_iface;
54 IAMTimelineGroup IAMTimelineGroup_iface;
55 LONG ref;
56 TIMELINE_MAJOR_TYPE timeline_type;
57 } TimelineObjImpl;
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);
80 if (!ppv)
81 return E_POINTER;
83 *ppv = NULL;
84 if (IsEqualIID(riid, &IID_IUnknown))
85 *ppv = &This->IUnknown_inner;
86 else if (IsEqualIID(riid, &IID_IAMTimeline))
87 *ppv = &This->IAMTimeline_iface;
88 else
89 WARN("(%p, %s,%p): not found\n", This, debugstr_guid(riid), ppv);
91 if (!*ppv)
92 return E_NOINTERFACE;
94 IUnknown_AddRef((IUnknown*)*ppv);
95 return S_OK;
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);
105 return 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);
115 if (ref == 0)
116 CoTaskMemFree(This);
118 return ref;
121 static const IUnknownVtbl timeline_vtbl =
123 Timeline_QueryInterface,
124 Timeline_AddRef,
125 Timeline_Release,
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);
156 if (!obj)
157 return E_POINTER;
159 switch (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:
167 break;
168 default:
169 return E_INVALIDARG;
172 obj_impl = CoTaskMemAlloc(sizeof(TimelineObjImpl));
173 if (!obj_impl) {
174 *obj = NULL;
175 return E_OUTOFMEMORY;
178 obj_impl->ref = 1;
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;
184 return S_OK;
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);
191 return E_NOTIMPL;
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);
198 return E_NOTIMPL;
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);
205 return E_NOTIMPL;
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);
212 return E_NOTIMPL;
215 static HRESULT WINAPI Timeline_IAMTimeline_ClearAllGroups(IAMTimeline *iface)
217 TimelineImpl *This = impl_from_IAMTimeline(iface);
218 FIXME("(%p): not implemented!\n", This);
219 return E_NOTIMPL;
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);
226 return E_NOTIMPL;
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);
233 return E_NOTIMPL;
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);
240 return E_NOTIMPL;
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);
247 return E_NOTIMPL;
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);
254 return E_NOTIMPL;
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);
261 return E_NOTIMPL;
264 static HRESULT WINAPI Timeline_IAMTimeline_SetInterestRange(IAMTimeline *iface, REFERENCE_TIME start,
265 REFERENCE_TIME stop)
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));
270 return E_NOTIMPL;
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);
277 return E_NOTIMPL;
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);
284 return E_NOTIMPL;
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);
291 return E_NOTIMPL;
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);
298 return E_NOTIMPL;
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);
305 return E_NOTIMPL;
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);
313 return E_NOTIMPL;
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);
321 return E_NOTIMPL;
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);
329 return E_NOTIMPL;
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));
336 return E_NOTIMPL;
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));
343 return E_NOTIMPL;
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));
350 return E_NOTIMPL;
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));
357 return E_NOTIMPL;
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);
364 return E_NOTIMPL;
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);
371 return E_NOTIMPL;
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);
378 return E_NOTIMPL;
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);
385 return E_NOTIMPL;
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 AMTimeline_create(IUnknown *pUnkOuter, LPVOID *ppv)
426 TimelineImpl* obj = NULL;
428 TRACE("(%p,%p)\n", pUnkOuter, ppv);
430 obj = CoTaskMemAlloc(sizeof(TimelineImpl));
431 if (NULL == obj) {
432 *ppv = NULL;
433 return E_OUTOFMEMORY;
435 ZeroMemory(obj, sizeof(TimelineImpl));
437 obj->ref = 1;
438 obj->IUnknown_inner.lpVtbl = &timeline_vtbl;
439 obj->IAMTimeline_iface.lpVtbl = &IAMTimeline_VTable;
441 if (pUnkOuter)
442 obj->outer_unk = pUnkOuter;
443 else
444 obj->outer_unk = &obj->IUnknown_inner;
446 *ppv = &obj->IUnknown_inner;
447 return S_OK;
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);
458 if (!ppv)
459 return E_POINTER;
461 *ppv = NULL;
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;
466 else
467 WARN("(%p, %s,%p): not found\n", This, debugstr_guid(riid), ppv);
469 if (!*ppv)
470 return E_NOINTERFACE;
472 IUnknown_AddRef((IUnknown*)*ppv);
473 return S_OK;
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);
483 return 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);
493 if (!ref)
494 CoTaskMemFree(This);
496 return 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);
503 return E_NOTIMPL;
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);
510 return E_NOTIMPL;
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);
517 return E_NOTIMPL;
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);
524 return E_NOTIMPL;
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));
531 return E_NOTIMPL;
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);
538 return E_NOTIMPL;
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);
545 return E_NOTIMPL;
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);
552 return E_NOTIMPL;
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);
559 return E_NOTIMPL;
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);
566 return E_NOTIMPL;
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));
573 return E_NOTIMPL;
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));
580 return E_NOTIMPL;
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);
587 return E_NOTIMPL;
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);
594 return E_NOTIMPL;
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);
601 return E_NOTIMPL;
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;
610 return S_OK;
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;
619 return S_OK;
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);
626 return E_NOTIMPL;
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);
633 return E_NOTIMPL;
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);
640 return E_NOTIMPL;
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);
647 return E_NOTIMPL;
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));
654 return E_NOTIMPL;
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);
661 return E_NOTIMPL;
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);
668 return E_NOTIMPL;
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);
675 return E_NOTIMPL;
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);
682 return E_NOTIMPL;
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);
689 return E_NOTIMPL;
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);
696 return E_NOTIMPL;
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);
703 return E_NOTIMPL;
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);
710 return E_NOTIMPL;
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));
717 return E_NOTIMPL;
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);
724 return E_NOTIMPL;
727 static HRESULT WINAPI TimelineObj_ClearDirty(IAMTimelineObj *iface)
729 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
730 FIXME("(%p): not implemented!\n", This);
731 return E_NOTIMPL;
734 static HRESULT WINAPI TimelineObj_Remove(IAMTimelineObj *iface)
736 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
737 FIXME("(%p): not implemented!\n", This);
738 return E_NOTIMPL;
741 static HRESULT WINAPI TimelineObj_RemoveAll(IAMTimelineObj *iface)
743 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
744 FIXME("(%p): not implemented!\n", This);
745 return E_NOTIMPL;
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;
754 *timeline = NULL;
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);
762 return E_NOTIMPL;
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);
769 return E_NOTIMPL;
772 static const IAMTimelineObjVtbl IAMTimelineObj_VTable =
774 TimelineObj_QueryInterface,
775 TimelineObj_AddRef,
776 TimelineObj_Release,
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,
810 TimelineObj_Remove,
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);
839 return E_NOTIMPL;
842 static HRESULT WINAPI timelinegrp_GetTimeline(IAMTimelineGroup *iface, IAMTimeline **timeline)
844 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
845 FIXME("(%p)->(%p)\n", This, timeline);
846 return E_NOTIMPL;
849 static HRESULT WINAPI timelinegrp_GetPriority(IAMTimelineGroup *iface, LONG *priority)
851 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
852 FIXME("(%p)->(%p)\n", This, priority);
853 return E_NOTIMPL;
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);
860 return E_NOTIMPL;
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);
867 return E_NOTIMPL;
870 static HRESULT WINAPI timelinegrp_SetOutputFPS(IAMTimelineGroup *iface, double fps)
872 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
873 FIXME("(%p)->(%f)\n", This, fps);
874 return E_NOTIMPL;
877 static HRESULT WINAPI timelinegrp_GetOutputFPS(IAMTimelineGroup *iface, double *fps)
879 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
880 FIXME("(%p)->(%p)\n", This, fps);
881 return E_NOTIMPL;
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));
888 return E_NOTIMPL;
891 static HRESULT WINAPI timelinegrp_GetGroupName(IAMTimelineGroup *iface, BSTR *name)
893 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
894 FIXME("(%p)->(%p)\n", This, name);
895 return E_NOTIMPL;
898 static HRESULT WINAPI timelinegrp_SetPreviewMode(IAMTimelineGroup *iface, BOOL preview)
900 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
901 FIXME("(%p)->(%d)\n", This, preview);
902 return E_NOTIMPL;
905 static HRESULT WINAPI timelinegrp_GetPreviewMode(IAMTimelineGroup *iface, BOOL *preview)
907 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
908 FIXME("(%p)->(%p)\n", This, preview);
909 return E_NOTIMPL;
912 static HRESULT WINAPI timelinegrp_SetMediaTypeForVB(IAMTimelineGroup *iface, LONG type)
914 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
915 FIXME("(%p)->(%d)\n", This, type);
916 return E_NOTIMPL;
919 static HRESULT WINAPI timelinegrp_GetOutputBuffering(IAMTimelineGroup *iface, int *buffer)
921 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
922 FIXME("(%p)->(%p)\n", This, buffer);
923 return E_NOTIMPL;
926 static HRESULT WINAPI timelinegrp_SetOutputBuffering(IAMTimelineGroup *iface, int buffer)
928 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
929 FIXME("(%p)->(%d)\n", This, buffer);
930 return E_NOTIMPL;
933 static HRESULT WINAPI timelinegrp_SetSmartRecompressFormat(IAMTimelineGroup *iface, LONG *format)
935 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
936 FIXME("(%p)->(%p)\n", This, format);
937 return E_NOTIMPL;
940 static HRESULT WINAPI timelinegrp_GetSmartRecompressFormat(IAMTimelineGroup *iface, LONG **format)
942 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
943 FIXME("(%p)->(%p)\n", This, format);
944 return E_NOTIMPL;
947 static HRESULT WINAPI timelinegrp_IsSmartRecompressFormatSet(IAMTimelineGroup *iface, BOOL *set)
949 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
950 FIXME("(%p)->(%p)\n", This, set);
951 return E_NOTIMPL;
954 static HRESULT WINAPI timelinegrp_IsRecompressFormatDirty(IAMTimelineGroup *iface, BOOL *dirty)
956 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
957 FIXME("(%p)->(%p)\n", This, dirty);
958 return E_NOTIMPL;
961 static HRESULT WINAPI timelinegrp_ClearRecompressFormatDirty(IAMTimelineGroup *iface)
963 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
964 FIXME("(%p)->()\n", This);
965 return E_NOTIMPL;
968 static HRESULT WINAPI timelinegrp_SetRecompFormatFromSource(IAMTimelineGroup *iface, IAMTimelineSrc *source)
970 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
971 FIXME("(%p)->(%p)\n", This, source);
972 return E_NOTIMPL;
975 static const IAMTimelineGroupVtbl IAMTimelineGroup_VTable =
977 timelinegrp_QueryInterface,
978 timelinegrp_AddRef,
979 timelinegrp_Release,
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