1 /* DirectShow Timeline object (QEDIT.DLL)
2 *
3 * Copyright 2016 Alex Henrie
4 *
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.
9 *
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.
14 *
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
18 */
19
20 #include <assert.h>
21 #include <stdarg.h>
22
23 #define COBJMACROS
24
25 #include "windef.h"
26 #include "winbase.h"
27 #include "winuser.h"
28 #include "ole2.h"
29
30 #include "qedit_private.h"
31 #include "wine/debug.h"
32
33 WINE_DEFAULT_DEBUG_CHANNEL(qedit);
34
35 typedef struct {
36 IUnknown IUnknown_inner;
37 IAMTimeline IAMTimeline_iface;
38 IUnknown *outer_unk;
39 LONG ref;
40 } TimelineImpl;
41
impl_from_IUnknown(IUnknown * iface)42 static inline TimelineImpl *impl_from_IUnknown(IUnknown *iface)
43 {
44 return CONTAINING_RECORD(iface, TimelineImpl, IUnknown_inner);
45 }
46
impl_from_IAMTimeline(IAMTimeline * iface)47 static inline TimelineImpl *impl_from_IAMTimeline(IAMTimeline *iface)
48 {
49 return CONTAINING_RECORD(iface, TimelineImpl, IAMTimeline_iface);
50 }
51
52 typedef struct {
53 IAMTimelineObj IAMTimelineObj_iface;
54 IAMTimelineGroup IAMTimelineGroup_iface;
55 LONG ref;
56 TIMELINE_MAJOR_TYPE timeline_type;
57 } TimelineObjImpl;
58
impl_from_IAMTimelineObj(IAMTimelineObj * iface)59 static inline TimelineObjImpl *impl_from_IAMTimelineObj(IAMTimelineObj *iface)
60 {
61 return CONTAINING_RECORD(iface, TimelineObjImpl, IAMTimelineObj_iface);
62 }
63
impl_from_IAMTimelineGroup(IAMTimelineGroup * iface)64 static inline TimelineObjImpl *impl_from_IAMTimelineGroup(IAMTimelineGroup *iface)
65 {
66 return CONTAINING_RECORD(iface, TimelineObjImpl, IAMTimelineGroup_iface);
67 }
68
69 static const IAMTimelineObjVtbl IAMTimelineObj_VTable;
70 static const IAMTimelineGroupVtbl IAMTimelineGroup_VTable;
71
72 /* Timeline inner IUnknown */
73
Timeline_QueryInterface(IUnknown * iface,REFIID riid,void ** ppv)74 static HRESULT WINAPI Timeline_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
75 {
76 TimelineImpl *This = impl_from_IUnknown(iface);
77
78 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
79
80 if (!ppv)
81 return E_POINTER;
82
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);
90
91 if (!*ppv)
92 return E_NOINTERFACE;
93
94 IUnknown_AddRef((IUnknown*)*ppv);
95 return S_OK;
96 }
97
Timeline_AddRef(IUnknown * iface)98 static ULONG WINAPI Timeline_AddRef(IUnknown *iface)
99 {
100 TimelineImpl *This = impl_from_IUnknown(iface);
101 ULONG ref = InterlockedIncrement(&This->ref);
102
103 TRACE("(%p) new ref = %u\n", This, ref);
104
105 return ref;
106 }
107
Timeline_Release(IUnknown * iface)108 static ULONG WINAPI Timeline_Release(IUnknown *iface)
109 {
110 TimelineImpl *This = impl_from_IUnknown(iface);
111 ULONG ref = InterlockedDecrement(&This->ref);
112
113 TRACE("(%p) new ref = %u\n", This, ref);
114
115 if (ref == 0)
116 CoTaskMemFree(This);
117
118 return ref;
119 }
120
121 static const IUnknownVtbl timeline_vtbl =
122 {
123 Timeline_QueryInterface,
124 Timeline_AddRef,
125 Timeline_Release,
126 };
127
128 /* IAMTimeline implementation */
129
Timeline_IAMTimeline_QueryInterface(IAMTimeline * iface,REFIID riid,void ** ppv)130 static HRESULT WINAPI Timeline_IAMTimeline_QueryInterface(IAMTimeline *iface, REFIID riid, void **ppv)
131 {
132 TimelineImpl *This = impl_from_IAMTimeline(iface);
133 return IUnknown_QueryInterface(This->outer_unk, riid, ppv);
134 }
135
Timeline_IAMTimeline_AddRef(IAMTimeline * iface)136 static ULONG WINAPI Timeline_IAMTimeline_AddRef(IAMTimeline *iface)
137 {
138 TimelineImpl *This = impl_from_IAMTimeline(iface);
139 return IUnknown_AddRef(This->outer_unk);
140 }
141
Timeline_IAMTimeline_Release(IAMTimeline * iface)142 static ULONG WINAPI Timeline_IAMTimeline_Release(IAMTimeline *iface)
143 {
144 TimelineImpl *This = impl_from_IAMTimeline(iface);
145 return IUnknown_Release(This->outer_unk);
146 }
147
Timeline_IAMTimeline_CreateEmptyNode(IAMTimeline * iface,IAMTimelineObj ** obj,TIMELINE_MAJOR_TYPE type)148 static HRESULT WINAPI Timeline_IAMTimeline_CreateEmptyNode(IAMTimeline *iface, IAMTimelineObj **obj,
149 TIMELINE_MAJOR_TYPE type)
150 {
151 TimelineImpl *This = impl_from_IAMTimeline(iface);
152 TimelineObjImpl* obj_impl;
153
154 TRACE("(%p)->(%p,%d)\n", This, obj, type);
155
156 if (!obj)
157 return E_POINTER;
158
159 switch (type)
160 {
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;
170 }
171
172 obj_impl = CoTaskMemAlloc(sizeof(TimelineObjImpl));
173 if (!obj_impl) {
174 *obj = NULL;
175 return E_OUTOFMEMORY;
176 }
177
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;
182
183 *obj = &obj_impl->IAMTimelineObj_iface;
184 return S_OK;
185 }
186
Timeline_IAMTimeline_AddGroup(IAMTimeline * iface,IAMTimelineObj * group)187 static HRESULT WINAPI Timeline_IAMTimeline_AddGroup(IAMTimeline *iface, IAMTimelineObj *group)
188 {
189 TimelineImpl *This = impl_from_IAMTimeline(iface);
190 FIXME("(%p)->(%p): not implemented!\n", This, group);
191 return E_NOTIMPL;
192 }
193
Timeline_IAMTimeline_RemGroupFromList(IAMTimeline * iface,IAMTimelineObj * group)194 static HRESULT WINAPI Timeline_IAMTimeline_RemGroupFromList(IAMTimeline *iface, IAMTimelineObj *group)
195 {
196 TimelineImpl *This = impl_from_IAMTimeline(iface);
197 FIXME("(%p)->(%p): not implemented!\n", This, group);
198 return E_NOTIMPL;
199 }
200
Timeline_IAMTimeline_GetGroup(IAMTimeline * iface,IAMTimelineObj ** group,LONG index)201 static HRESULT WINAPI Timeline_IAMTimeline_GetGroup(IAMTimeline *iface, IAMTimelineObj **group, LONG index)
202 {
203 TimelineImpl *This = impl_from_IAMTimeline(iface);
204 FIXME("(%p)->(%p,%d): not implemented!\n", This, group, index);
205 return E_NOTIMPL;
206 }
207
Timeline_IAMTimeline_GetGroupCount(IAMTimeline * iface,LONG * count)208 static HRESULT WINAPI Timeline_IAMTimeline_GetGroupCount(IAMTimeline *iface, LONG *count)
209 {
210 TimelineImpl *This = impl_from_IAMTimeline(iface);
211 FIXME("(%p)->(%p): not implemented!\n", This, count);
212 return E_NOTIMPL;
213 }
214
Timeline_IAMTimeline_ClearAllGroups(IAMTimeline * iface)215 static HRESULT WINAPI Timeline_IAMTimeline_ClearAllGroups(IAMTimeline *iface)
216 {
217 TimelineImpl *This = impl_from_IAMTimeline(iface);
218 FIXME("(%p): not implemented!\n", This);
219 return E_NOTIMPL;
220 }
221
Timeline_IAMTimeline_GetInsertMode(IAMTimeline * iface,LONG * mode)222 static HRESULT WINAPI Timeline_IAMTimeline_GetInsertMode(IAMTimeline *iface, LONG *mode)
223 {
224 TimelineImpl *This = impl_from_IAMTimeline(iface);
225 FIXME("(%p)->(%p): not implemented!\n", This, mode);
226 return E_NOTIMPL;
227 }
228
Timeline_IAMTimeline_SetInsertMode(IAMTimeline * iface,LONG mode)229 static HRESULT WINAPI Timeline_IAMTimeline_SetInsertMode(IAMTimeline *iface, LONG mode)
230 {
231 TimelineImpl *This = impl_from_IAMTimeline(iface);
232 FIXME("(%p)->(%d): not implemented!\n", This, mode);
233 return E_NOTIMPL;
234 }
235
Timeline_IAMTimeline_EnableTransitions(IAMTimeline * iface,BOOL enabled)236 static HRESULT WINAPI Timeline_IAMTimeline_EnableTransitions(IAMTimeline *iface, BOOL enabled)
237 {
238 TimelineImpl *This = impl_from_IAMTimeline(iface);
239 FIXME("(%p)->(%d): not implemented!\n", This, enabled);
240 return E_NOTIMPL;
241 }
242
Timeline_IAMTimeline_TransitionsEnabled(IAMTimeline * iface,BOOL * enabled)243 static HRESULT WINAPI Timeline_IAMTimeline_TransitionsEnabled(IAMTimeline *iface, BOOL *enabled)
244 {
245 TimelineImpl *This = impl_from_IAMTimeline(iface);
246 FIXME("(%p)->(%p): not implemented!\n", This, enabled);
247 return E_NOTIMPL;
248 }
249
Timeline_IAMTimeline_EnableEffects(IAMTimeline * iface,BOOL enabled)250 static HRESULT WINAPI Timeline_IAMTimeline_EnableEffects(IAMTimeline *iface, BOOL enabled)
251 {
252 TimelineImpl *This = impl_from_IAMTimeline(iface);
253 FIXME("(%p)->(%d): not implemented!\n", This, enabled);
254 return E_NOTIMPL;
255 }
256
Timeline_IAMTimeline_EffectsEnabled(IAMTimeline * iface,BOOL * enabled)257 static HRESULT WINAPI Timeline_IAMTimeline_EffectsEnabled(IAMTimeline *iface, BOOL *enabled)
258 {
259 TimelineImpl *This = impl_from_IAMTimeline(iface);
260 FIXME("(%p)->(%p): not implemented!\n", This, enabled);
261 return E_NOTIMPL;
262 }
263
Timeline_IAMTimeline_SetInterestRange(IAMTimeline * iface,REFERENCE_TIME start,REFERENCE_TIME stop)264 static HRESULT WINAPI Timeline_IAMTimeline_SetInterestRange(IAMTimeline *iface, REFERENCE_TIME start,
265 REFERENCE_TIME stop)
266 {
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;
271 }
272
Timeline_IAMTimeline_GetDuration(IAMTimeline * iface,REFERENCE_TIME * duration)273 static HRESULT WINAPI Timeline_IAMTimeline_GetDuration(IAMTimeline *iface, REFERENCE_TIME *duration)
274 {
275 TimelineImpl *This = impl_from_IAMTimeline(iface);
276 FIXME("(%p)->(%p): not implemented!\n", This, duration);
277 return E_NOTIMPL;
278 }
279
Timeline_IAMTimeline_GetDuration2(IAMTimeline * iface,double * duration)280 static HRESULT WINAPI Timeline_IAMTimeline_GetDuration2(IAMTimeline *iface, double *duration)
281 {
282 TimelineImpl *This = impl_from_IAMTimeline(iface);
283 FIXME("(%p)->(%p): not implemented!\n", This, duration);
284 return E_NOTIMPL;
285 }
286
Timeline_IAMTimeline_SetDefaultFPS(IAMTimeline * iface,double fps)287 static HRESULT WINAPI Timeline_IAMTimeline_SetDefaultFPS(IAMTimeline *iface, double fps)
288 {
289 TimelineImpl *This = impl_from_IAMTimeline(iface);
290 FIXME("(%p)->(%f): not implemented!\n", This, fps);
291 return E_NOTIMPL;
292 }
293
Timeline_IAMTimeline_GetDefaultFPS(IAMTimeline * iface,double * fps)294 static HRESULT WINAPI Timeline_IAMTimeline_GetDefaultFPS(IAMTimeline *iface, double *fps)
295 {
296 TimelineImpl *This = impl_from_IAMTimeline(iface);
297 FIXME("(%p)->(%p): not implemented!\n", This, fps);
298 return E_NOTIMPL;
299 }
300
Timeline_IAMTimeline_IsDirty(IAMTimeline * iface,BOOL * dirty)301 static HRESULT WINAPI Timeline_IAMTimeline_IsDirty(IAMTimeline *iface, BOOL *dirty)
302 {
303 TimelineImpl *This = impl_from_IAMTimeline(iface);
304 FIXME("(%p)->(%p): not implemented!\n", This, dirty);
305 return E_NOTIMPL;
306 }
307
Timeline_IAMTimeline_GetDirtyRange(IAMTimeline * iface,REFERENCE_TIME * start,REFERENCE_TIME * stop)308 static HRESULT WINAPI Timeline_IAMTimeline_GetDirtyRange(IAMTimeline *iface, REFERENCE_TIME *start,
309 REFERENCE_TIME *stop)
310 {
311 TimelineImpl *This = impl_from_IAMTimeline(iface);
312 FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop);
313 return E_NOTIMPL;
314 }
315
Timeline_IAMTimeline_GetCountOfType(IAMTimeline * iface,LONG group,LONG * value,LONG * value_with_comps,TIMELINE_MAJOR_TYPE type)316 static HRESULT WINAPI Timeline_IAMTimeline_GetCountOfType(IAMTimeline *iface, LONG group, LONG *value,
317 LONG *value_with_comps, TIMELINE_MAJOR_TYPE type)
318 {
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;
322 }
323
Timeline_IAMTimeline_ValidateSourceNames(IAMTimeline * iface,LONG flags,IMediaLocator * override,LONG_PTR notify_event)324 static HRESULT WINAPI Timeline_IAMTimeline_ValidateSourceNames(IAMTimeline *iface, LONG flags, IMediaLocator *override,
325 LONG_PTR notify_event)
326 {
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;
330 }
331
Timeline_IAMTimeline_SetDefaultTransition(IAMTimeline * iface,GUID * guid)332 static HRESULT WINAPI Timeline_IAMTimeline_SetDefaultTransition(IAMTimeline *iface, GUID *guid)
333 {
334 TimelineImpl *This = impl_from_IAMTimeline(iface);
335 FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_guid(guid));
336 return E_NOTIMPL;
337 }
338
Timeline_IAMTimeline_GetDefaultTransition(IAMTimeline * iface,GUID * guid)339 static HRESULT WINAPI Timeline_IAMTimeline_GetDefaultTransition(IAMTimeline *iface, GUID *guid)
340 {
341 TimelineImpl *This = impl_from_IAMTimeline(iface);
342 FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_guid(guid));
343 return E_NOTIMPL;
344 }
345
Timeline_IAMTimeline_SetDefaultEffect(IAMTimeline * iface,GUID * guid)346 static HRESULT WINAPI Timeline_IAMTimeline_SetDefaultEffect(IAMTimeline *iface, GUID *guid)
347 {
348 TimelineImpl *This = impl_from_IAMTimeline(iface);
349 FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_guid(guid));
350 return E_NOTIMPL;
351 }
352
Timeline_IAMTimeline_GetDefaultEffect(IAMTimeline * iface,GUID * guid)353 static HRESULT WINAPI Timeline_IAMTimeline_GetDefaultEffect(IAMTimeline *iface, GUID *guid)
354 {
355 TimelineImpl *This = impl_from_IAMTimeline(iface);
356 FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_guid(guid));
357 return E_NOTIMPL;
358 }
359
Timeline_IAMTimeline_SetDefaultTransitionB(IAMTimeline * iface,BSTR guidb)360 static HRESULT WINAPI Timeline_IAMTimeline_SetDefaultTransitionB(IAMTimeline *iface, BSTR guidb)
361 {
362 TimelineImpl *This = impl_from_IAMTimeline(iface);
363 FIXME("(%p)->(%p): not implemented!\n", This, guidb);
364 return E_NOTIMPL;
365 }
366
Timeline_IAMTimeline_GetDefaultTransitionB(IAMTimeline * iface,BSTR * guidb)367 static HRESULT WINAPI Timeline_IAMTimeline_GetDefaultTransitionB(IAMTimeline *iface, BSTR *guidb)
368 {
369 TimelineImpl *This = impl_from_IAMTimeline(iface);
370 FIXME("(%p)->(%p): not implemented!\n", This, guidb);
371 return E_NOTIMPL;
372 }
373
Timeline_IAMTimeline_SetDefaultEffectB(IAMTimeline * iface,BSTR guidb)374 static HRESULT WINAPI Timeline_IAMTimeline_SetDefaultEffectB(IAMTimeline *iface, BSTR guidb)
375 {
376 TimelineImpl *This = impl_from_IAMTimeline(iface);
377 FIXME("(%p)->(%p): not implemented!\n", This, guidb);
378 return E_NOTIMPL;
379 }
380
Timeline_IAMTimeline_GetDefaultEffectB(IAMTimeline * iface,BSTR * guidb)381 static HRESULT WINAPI Timeline_IAMTimeline_GetDefaultEffectB(IAMTimeline *iface, BSTR *guidb)
382 {
383 TimelineImpl *This = impl_from_IAMTimeline(iface);
384 FIXME("(%p)->(%p): not implemented!\n", This, guidb);
385 return E_NOTIMPL;
386 }
387
388 static const IAMTimelineVtbl IAMTimeline_VTable =
389 {
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,
422 };
423
AMTimeline_create(IUnknown * pUnkOuter,LPVOID * ppv)424 HRESULT AMTimeline_create(IUnknown *pUnkOuter, LPVOID *ppv)
425 {
426 TimelineImpl* obj = NULL;
427
428 TRACE("(%p,%p)\n", pUnkOuter, ppv);
429
430 obj = CoTaskMemAlloc(sizeof(TimelineImpl));
431 if (NULL == obj) {
432 *ppv = NULL;
433 return E_OUTOFMEMORY;
434 }
435 ZeroMemory(obj, sizeof(TimelineImpl));
436
437 obj->ref = 1;
438 obj->IUnknown_inner.lpVtbl = &timeline_vtbl;
439 obj->IAMTimeline_iface.lpVtbl = &IAMTimeline_VTable;
440
441 if (pUnkOuter)
442 obj->outer_unk = pUnkOuter;
443 else
444 obj->outer_unk = &obj->IUnknown_inner;
445
446 *ppv = &obj->IUnknown_inner;
447 return S_OK;
448 }
449
450 /* IAMTimelineObj implementation */
451
TimelineObj_QueryInterface(IAMTimelineObj * iface,REFIID riid,void ** ppv)452 static HRESULT WINAPI TimelineObj_QueryInterface(IAMTimelineObj *iface, REFIID riid, void **ppv)
453 {
454 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
455
456 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
457
458 if (!ppv)
459 return E_POINTER;
460
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);
468
469 if (!*ppv)
470 return E_NOINTERFACE;
471
472 IUnknown_AddRef((IUnknown*)*ppv);
473 return S_OK;
474 }
475
TimelineObj_AddRef(IAMTimelineObj * iface)476 static ULONG WINAPI TimelineObj_AddRef(IAMTimelineObj *iface)
477 {
478 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
479 ULONG ref = InterlockedIncrement(&This->ref);
480
481 TRACE("(%p) new ref = %u\n", This, ref);
482
483 return ref;
484 }
485
TimelineObj_Release(IAMTimelineObj * iface)486 static ULONG WINAPI TimelineObj_Release(IAMTimelineObj *iface)
487 {
488 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
489 ULONG ref = InterlockedDecrement(&This->ref);
490
491 TRACE("(%p) new ref = %u\n", This, ref);
492
493 if (!ref)
494 CoTaskMemFree(This);
495
496 return ref;
497 }
498
TimelineObj_GetStartStop(IAMTimelineObj * iface,REFERENCE_TIME * start,REFERENCE_TIME * stop)499 static HRESULT WINAPI TimelineObj_GetStartStop(IAMTimelineObj *iface, REFERENCE_TIME *start, REFERENCE_TIME *stop)
500 {
501 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
502 FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop);
503 return E_NOTIMPL;
504 }
505
TimelineObj_GetStartStop2(IAMTimelineObj * iface,REFTIME * start,REFTIME * stop)506 static HRESULT WINAPI TimelineObj_GetStartStop2(IAMTimelineObj *iface, REFTIME *start, REFTIME *stop)
507 {
508 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
509 FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop);
510 return E_NOTIMPL;
511 }
512
TimelineObj_FixTimes(IAMTimelineObj * iface,REFERENCE_TIME * start,REFERENCE_TIME * stop)513 static HRESULT WINAPI TimelineObj_FixTimes(IAMTimelineObj *iface, REFERENCE_TIME *start, REFERENCE_TIME *stop)
514 {
515 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
516 FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop);
517 return E_NOTIMPL;
518 }
519
TimelineObj_FixTimes2(IAMTimelineObj * iface,REFTIME * start,REFTIME * stop)520 static HRESULT WINAPI TimelineObj_FixTimes2(IAMTimelineObj *iface, REFTIME *start, REFTIME *stop)
521 {
522 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
523 FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop);
524 return E_NOTIMPL;
525 }
526
TimelineObj_SetStartStop(IAMTimelineObj * iface,REFERENCE_TIME start,REFERENCE_TIME stop)527 static HRESULT WINAPI TimelineObj_SetStartStop(IAMTimelineObj *iface, REFERENCE_TIME start, REFERENCE_TIME stop)
528 {
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;
532 }
533
TimelineObj_SetStartStop2(IAMTimelineObj * iface,REFTIME start,REFTIME stop)534 static HRESULT WINAPI TimelineObj_SetStartStop2(IAMTimelineObj *iface, REFTIME start, REFTIME stop)
535 {
536 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
537 FIXME("(%p)->(%f,%f): not implemented!\n", This, start, stop);
538 return E_NOTIMPL;
539 }
540
TimelineObj_GetPropertySetter(IAMTimelineObj * iface,IPropertySetter ** setter)541 static HRESULT WINAPI TimelineObj_GetPropertySetter(IAMTimelineObj *iface, IPropertySetter **setter)
542 {
543 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
544 FIXME("(%p)->(%p): not implemented!\n", This, setter);
545 return E_NOTIMPL;
546 }
547
TimelineObj_SetPropertySetter(IAMTimelineObj * iface,IPropertySetter * setter)548 static HRESULT WINAPI TimelineObj_SetPropertySetter(IAMTimelineObj *iface, IPropertySetter *setter)
549 {
550 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
551 FIXME("(%p)->(%p): not implemented!\n", This, setter);
552 return E_NOTIMPL;
553 }
554
TimelineObj_GetSubObject(IAMTimelineObj * iface,IUnknown ** obj)555 static HRESULT WINAPI TimelineObj_GetSubObject(IAMTimelineObj *iface, IUnknown **obj)
556 {
557 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
558 FIXME("(%p)->(%p): not implemented!\n", This, obj);
559 return E_NOTIMPL;
560 }
561
TimelineObj_SetSubObject(IAMTimelineObj * iface,IUnknown * obj)562 static HRESULT WINAPI TimelineObj_SetSubObject(IAMTimelineObj *iface, IUnknown *obj)
563 {
564 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
565 FIXME("(%p)->(%p): not implemented!\n", This, obj);
566 return E_NOTIMPL;
567 }
568
TimelineObj_SetSubObjectGUID(IAMTimelineObj * iface,GUID guid)569 static HRESULT WINAPI TimelineObj_SetSubObjectGUID(IAMTimelineObj *iface, GUID guid)
570 {
571 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
572 FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_guid(&guid));
573 return E_NOTIMPL;
574 }
575
TimelineObj_SetSubObjectGUIDB(IAMTimelineObj * iface,BSTR guidb)576 static HRESULT WINAPI TimelineObj_SetSubObjectGUIDB(IAMTimelineObj *iface, BSTR guidb)
577 {
578 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
579 FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_w(guidb));
580 return E_NOTIMPL;
581 }
582
TimelineObj_GetSubObjectGUID(IAMTimelineObj * iface,GUID * guid)583 static HRESULT WINAPI TimelineObj_GetSubObjectGUID(IAMTimelineObj *iface, GUID *guid)
584 {
585 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
586 FIXME("(%p)->(%p): not implemented!\n", This, guid);
587 return E_NOTIMPL;
588 }
589
TimelineObj_GetSubObjectGUIDB(IAMTimelineObj * iface,BSTR * guidb)590 static HRESULT WINAPI TimelineObj_GetSubObjectGUIDB(IAMTimelineObj *iface, BSTR *guidb)
591 {
592 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
593 FIXME("(%p)->(%p): not implemented!\n", This, guidb);
594 return E_NOTIMPL;
595 }
596
TimelineObj_GetSubObjectLoaded(IAMTimelineObj * iface,BOOL * loaded)597 static HRESULT WINAPI TimelineObj_GetSubObjectLoaded(IAMTimelineObj *iface, BOOL *loaded)
598 {
599 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
600 FIXME("(%p)->(%p): not implemented!\n", This, loaded);
601 return E_NOTIMPL;
602 }
603
TimelineObj_GetTimelineType(IAMTimelineObj * iface,TIMELINE_MAJOR_TYPE * type)604 static HRESULT WINAPI TimelineObj_GetTimelineType(IAMTimelineObj *iface, TIMELINE_MAJOR_TYPE *type)
605 {
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;
611 }
612
TimelineObj_SetTimelineType(IAMTimelineObj * iface,TIMELINE_MAJOR_TYPE type)613 static HRESULT WINAPI TimelineObj_SetTimelineType(IAMTimelineObj *iface, TIMELINE_MAJOR_TYPE type)
614 {
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;
620 }
621
TimelineObj_GetUserID(IAMTimelineObj * iface,LONG * id)622 static HRESULT WINAPI TimelineObj_GetUserID(IAMTimelineObj *iface, LONG *id)
623 {
624 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
625 FIXME("(%p)->(%p): not implemented!\n", This, id);
626 return E_NOTIMPL;
627 }
628
TimelineObj_SetUserID(IAMTimelineObj * iface,LONG id)629 static HRESULT WINAPI TimelineObj_SetUserID(IAMTimelineObj *iface, LONG id)
630 {
631 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
632 FIXME("(%p)->(%d): not implemented!\n", This, id);
633 return E_NOTIMPL;
634 }
635
TimelineObj_GetGenID(IAMTimelineObj * iface,LONG * id)636 static HRESULT WINAPI TimelineObj_GetGenID(IAMTimelineObj *iface, LONG *id)
637 {
638 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
639 FIXME("(%p)->(%p): not implemented!\n", This, id);
640 return E_NOTIMPL;
641 }
642
TimelineObj_GetUserName(IAMTimelineObj * iface,BSTR * name)643 static HRESULT WINAPI TimelineObj_GetUserName(IAMTimelineObj *iface, BSTR *name)
644 {
645 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
646 FIXME("(%p)->(%p): not implemented!\n", This, name);
647 return E_NOTIMPL;
648 }
649
TimelineObj_SetUserName(IAMTimelineObj * iface,BSTR name)650 static HRESULT WINAPI TimelineObj_SetUserName(IAMTimelineObj *iface, BSTR name)
651 {
652 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
653 FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_w(name));
654 return E_NOTIMPL;
655 }
656
TimelineObj_GetUserData(IAMTimelineObj * iface,BYTE * data,LONG * size)657 static HRESULT WINAPI TimelineObj_GetUserData(IAMTimelineObj *iface, BYTE *data, LONG *size)
658 {
659 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
660 FIXME("(%p)->(%p,%p): not implemented!\n", This, data, size);
661 return E_NOTIMPL;
662 }
663
TimelineObj_SetUserData(IAMTimelineObj * iface,BYTE * data,LONG size)664 static HRESULT WINAPI TimelineObj_SetUserData(IAMTimelineObj *iface, BYTE *data, LONG size)
665 {
666 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
667 FIXME("(%p)->(%p,%d): not implemented!\n", This, data, size);
668 return E_NOTIMPL;
669 }
670
TimelineObj_GetMuted(IAMTimelineObj * iface,BOOL * muted)671 static HRESULT WINAPI TimelineObj_GetMuted(IAMTimelineObj *iface, BOOL *muted)
672 {
673 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
674 FIXME("(%p)->(%p): not implemented!\n", This, muted);
675 return E_NOTIMPL;
676 }
677
TimelineObj_SetMuted(IAMTimelineObj * iface,BOOL muted)678 static HRESULT WINAPI TimelineObj_SetMuted(IAMTimelineObj *iface, BOOL muted)
679 {
680 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
681 FIXME("(%p)->(%d): not implemented!\n", This, muted);
682 return E_NOTIMPL;
683 }
684
TimelineObj_GetLocked(IAMTimelineObj * iface,BOOL * locked)685 static HRESULT WINAPI TimelineObj_GetLocked(IAMTimelineObj *iface, BOOL *locked)
686 {
687 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
688 FIXME("(%p)->(%p): not implemented!\n", This, locked);
689 return E_NOTIMPL;
690 }
691
TimelineObj_SetLocked(IAMTimelineObj * iface,BOOL locked)692 static HRESULT WINAPI TimelineObj_SetLocked(IAMTimelineObj *iface, BOOL locked)
693 {
694 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
695 FIXME("(%p)->(%d): not implemented!\n", This, locked);
696 return E_NOTIMPL;
697 }
698
TimelineObj_GetDirtyRange(IAMTimelineObj * iface,REFERENCE_TIME * start,REFERENCE_TIME * stop)699 static HRESULT WINAPI TimelineObj_GetDirtyRange(IAMTimelineObj *iface, REFERENCE_TIME *start, REFERENCE_TIME *stop)
700 {
701 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
702 FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop);
703 return E_NOTIMPL;
704 }
705
TimelineObj_GetDirtyRange2(IAMTimelineObj * iface,REFTIME * start,REFTIME * stop)706 static HRESULT WINAPI TimelineObj_GetDirtyRange2(IAMTimelineObj *iface, REFTIME *start, REFTIME *stop)
707 {
708 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
709 FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop);
710 return E_NOTIMPL;
711 }
712
TimelineObj_SetDirtyRange(IAMTimelineObj * iface,REFERENCE_TIME start,REFERENCE_TIME stop)713 static HRESULT WINAPI TimelineObj_SetDirtyRange(IAMTimelineObj *iface, REFERENCE_TIME start, REFERENCE_TIME stop)
714 {
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;
718 }
719
TimelineObj_SetDirtyRange2(IAMTimelineObj * iface,REFTIME start,REFTIME stop)720 static HRESULT WINAPI TimelineObj_SetDirtyRange2(IAMTimelineObj *iface, REFTIME start, REFTIME stop)
721 {
722 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
723 FIXME("(%p)->(%f,%f): not implemented!\n", This, start, stop);
724 return E_NOTIMPL;
725 }
726
TimelineObj_ClearDirty(IAMTimelineObj * iface)727 static HRESULT WINAPI TimelineObj_ClearDirty(IAMTimelineObj *iface)
728 {
729 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
730 FIXME("(%p): not implemented!\n", This);
731 return E_NOTIMPL;
732 }
733
TimelineObj_Remove(IAMTimelineObj * iface)734 static HRESULT WINAPI TimelineObj_Remove(IAMTimelineObj *iface)
735 {
736 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
737 FIXME("(%p): not implemented!\n", This);
738 return E_NOTIMPL;
739 }
740
TimelineObj_RemoveAll(IAMTimelineObj * iface)741 static HRESULT WINAPI TimelineObj_RemoveAll(IAMTimelineObj *iface)
742 {
743 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
744 FIXME("(%p): not implemented!\n", This);
745 return E_NOTIMPL;
746 }
747
TimelineObj_GetTimelineNoRef(IAMTimelineObj * iface,IAMTimeline ** timeline)748 static HRESULT WINAPI TimelineObj_GetTimelineNoRef(IAMTimelineObj *iface, IAMTimeline **timeline)
749 {
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;
756 }
757
TimelineObj_GetGroupIBelongTo(IAMTimelineObj * iface,IAMTimelineGroup ** group)758 static HRESULT WINAPI TimelineObj_GetGroupIBelongTo(IAMTimelineObj *iface, IAMTimelineGroup **group)
759 {
760 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
761 FIXME("(%p)->(%p): not implemented!\n", This, group);
762 return E_NOTIMPL;
763 }
764
TimelineObj_GetEmbedDepth(IAMTimelineObj * iface,LONG * depth)765 static HRESULT WINAPI TimelineObj_GetEmbedDepth(IAMTimelineObj *iface, LONG *depth)
766 {
767 TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
768 FIXME("(%p)->(%p): not implemented!\n", This, depth);
769 return E_NOTIMPL;
770 }
771
772 static const IAMTimelineObjVtbl IAMTimelineObj_VTable =
773 {
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,
815 };
816
timelinegrp_QueryInterface(IAMTimelineGroup * iface,REFIID riid,void ** object)817 static HRESULT WINAPI timelinegrp_QueryInterface(IAMTimelineGroup *iface, REFIID riid, void **object)
818 {
819 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
820 return IAMTimelineObj_QueryInterface(&This->IAMTimelineObj_iface, riid, object);
821 }
822
timelinegrp_AddRef(IAMTimelineGroup * iface)823 static ULONG WINAPI timelinegrp_AddRef(IAMTimelineGroup *iface)
824 {
825 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
826 return IAMTimelineObj_AddRef(&This->IAMTimelineObj_iface);
827 }
828
timelinegrp_Release(IAMTimelineGroup * iface)829 static ULONG WINAPI timelinegrp_Release(IAMTimelineGroup *iface)
830 {
831 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
832 return IAMTimelineObj_Release(&This->IAMTimelineObj_iface);
833 }
834
timelinegrp_SetTimeline(IAMTimelineGroup * iface,IAMTimeline * timeline)835 static HRESULT WINAPI timelinegrp_SetTimeline(IAMTimelineGroup *iface, IAMTimeline *timeline)
836 {
837 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
838 FIXME("(%p)->(%p)\n", This, timeline);
839 return E_NOTIMPL;
840 }
841
timelinegrp_GetTimeline(IAMTimelineGroup * iface,IAMTimeline ** timeline)842 static HRESULT WINAPI timelinegrp_GetTimeline(IAMTimelineGroup *iface, IAMTimeline **timeline)
843 {
844 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
845 FIXME("(%p)->(%p)\n", This, timeline);
846 return E_NOTIMPL;
847 }
848
timelinegrp_GetPriority(IAMTimelineGroup * iface,LONG * priority)849 static HRESULT WINAPI timelinegrp_GetPriority(IAMTimelineGroup *iface, LONG *priority)
850 {
851 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
852 FIXME("(%p)->(%p)\n", This, priority);
853 return E_NOTIMPL;
854 }
855
timelinegrp_GetMediaType(IAMTimelineGroup * iface,AM_MEDIA_TYPE * mediatype)856 static HRESULT WINAPI timelinegrp_GetMediaType(IAMTimelineGroup *iface, AM_MEDIA_TYPE *mediatype)
857 {
858 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
859 FIXME("(%p)->(%p)\n", This, mediatype);
860 return E_NOTIMPL;
861 }
862
timelinegrp_SetMediaType(IAMTimelineGroup * iface,AM_MEDIA_TYPE * mediatype)863 static HRESULT WINAPI timelinegrp_SetMediaType(IAMTimelineGroup *iface, AM_MEDIA_TYPE *mediatype)
864 {
865 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
866 FIXME("(%p)->(%p)\n", This, mediatype);
867 return E_NOTIMPL;
868 }
869
timelinegrp_SetOutputFPS(IAMTimelineGroup * iface,double fps)870 static HRESULT WINAPI timelinegrp_SetOutputFPS(IAMTimelineGroup *iface, double fps)
871 {
872 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
873 FIXME("(%p)->(%f)\n", This, fps);
874 return E_NOTIMPL;
875 }
876
timelinegrp_GetOutputFPS(IAMTimelineGroup * iface,double * fps)877 static HRESULT WINAPI timelinegrp_GetOutputFPS(IAMTimelineGroup *iface, double *fps)
878 {
879 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
880 FIXME("(%p)->(%p)\n", This, fps);
881 return E_NOTIMPL;
882 }
883
timelinegrp_SetGroupName(IAMTimelineGroup * iface,BSTR name)884 static HRESULT WINAPI timelinegrp_SetGroupName(IAMTimelineGroup *iface, BSTR name)
885 {
886 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
887 FIXME("(%p)->(%s)\n", This, debugstr_w(name));
888 return E_NOTIMPL;
889 }
890
timelinegrp_GetGroupName(IAMTimelineGroup * iface,BSTR * name)891 static HRESULT WINAPI timelinegrp_GetGroupName(IAMTimelineGroup *iface, BSTR *name)
892 {
893 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
894 FIXME("(%p)->(%p)\n", This, name);
895 return E_NOTIMPL;
896 }
897
timelinegrp_SetPreviewMode(IAMTimelineGroup * iface,BOOL preview)898 static HRESULT WINAPI timelinegrp_SetPreviewMode(IAMTimelineGroup *iface, BOOL preview)
899 {
900 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
901 FIXME("(%p)->(%d)\n", This, preview);
902 return E_NOTIMPL;
903 }
904
timelinegrp_GetPreviewMode(IAMTimelineGroup * iface,BOOL * preview)905 static HRESULT WINAPI timelinegrp_GetPreviewMode(IAMTimelineGroup *iface, BOOL *preview)
906 {
907 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
908 FIXME("(%p)->(%p)\n", This, preview);
909 return E_NOTIMPL;
910 }
911
timelinegrp_SetMediaTypeForVB(IAMTimelineGroup * iface,LONG type)912 static HRESULT WINAPI timelinegrp_SetMediaTypeForVB(IAMTimelineGroup *iface, LONG type)
913 {
914 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
915 FIXME("(%p)->(%d)\n", This, type);
916 return E_NOTIMPL;
917 }
918
timelinegrp_GetOutputBuffering(IAMTimelineGroup * iface,int * buffer)919 static HRESULT WINAPI timelinegrp_GetOutputBuffering(IAMTimelineGroup *iface, int *buffer)
920 {
921 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
922 FIXME("(%p)->(%p)\n", This, buffer);
923 return E_NOTIMPL;
924 }
925
timelinegrp_SetOutputBuffering(IAMTimelineGroup * iface,int buffer)926 static HRESULT WINAPI timelinegrp_SetOutputBuffering(IAMTimelineGroup *iface, int buffer)
927 {
928 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
929 FIXME("(%p)->(%d)\n", This, buffer);
930 return E_NOTIMPL;
931 }
932
timelinegrp_SetSmartRecompressFormat(IAMTimelineGroup * iface,LONG * format)933 static HRESULT WINAPI timelinegrp_SetSmartRecompressFormat(IAMTimelineGroup *iface, LONG *format)
934 {
935 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
936 FIXME("(%p)->(%p)\n", This, format);
937 return E_NOTIMPL;
938 }
939
timelinegrp_GetSmartRecompressFormat(IAMTimelineGroup * iface,LONG ** format)940 static HRESULT WINAPI timelinegrp_GetSmartRecompressFormat(IAMTimelineGroup *iface, LONG **format)
941 {
942 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
943 FIXME("(%p)->(%p)\n", This, format);
944 return E_NOTIMPL;
945 }
946
timelinegrp_IsSmartRecompressFormatSet(IAMTimelineGroup * iface,BOOL * set)947 static HRESULT WINAPI timelinegrp_IsSmartRecompressFormatSet(IAMTimelineGroup *iface, BOOL *set)
948 {
949 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
950 FIXME("(%p)->(%p)\n", This, set);
951 return E_NOTIMPL;
952 }
953
timelinegrp_IsRecompressFormatDirty(IAMTimelineGroup * iface,BOOL * dirty)954 static HRESULT WINAPI timelinegrp_IsRecompressFormatDirty(IAMTimelineGroup *iface, BOOL *dirty)
955 {
956 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
957 FIXME("(%p)->(%p)\n", This, dirty);
958 return E_NOTIMPL;
959 }
960
timelinegrp_ClearRecompressFormatDirty(IAMTimelineGroup * iface)961 static HRESULT WINAPI timelinegrp_ClearRecompressFormatDirty(IAMTimelineGroup *iface)
962 {
963 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
964 FIXME("(%p)->()\n", This);
965 return E_NOTIMPL;
966 }
967
timelinegrp_SetRecompFormatFromSource(IAMTimelineGroup * iface,IAMTimelineSrc * source)968 static HRESULT WINAPI timelinegrp_SetRecompFormatFromSource(IAMTimelineGroup *iface, IAMTimelineSrc *source)
969 {
970 TimelineObjImpl *This = impl_from_IAMTimelineGroup(iface);
971 FIXME("(%p)->(%p)\n", This, source);
972 return E_NOTIMPL;
973 }
974
975 static const IAMTimelineGroupVtbl IAMTimelineGroup_VTable =
976 {
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
1000 };
1001