widl: Always check the runtimeclass interfaces presence.
[wine/zf.git] / dlls / wmvcore / syncreader.c
blobb245ff20d31e782a6a73afcce97794569f5f8af6
1 /*
2 * Copyright 2012 Austin English
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "wmvcore.h"
21 #include "wmsdk.h"
22 #include "wine/debug.h"
23 #include "wine/heap.h"
25 WINE_DEFAULT_DEBUG_CHANNEL(wmvcore);
27 typedef struct {
28 IWMProfile3 IWMProfile3_iface;
29 IWMSyncReader2 IWMSyncReader2_iface;
30 LONG ref;
31 } WMSyncReader;
33 static inline WMSyncReader *impl_from_IWMSyncReader2(IWMSyncReader2 *iface)
35 return CONTAINING_RECORD(iface, WMSyncReader, IWMSyncReader2_iface);
38 static HRESULT WINAPI WMSyncReader_QueryInterface(IWMSyncReader2 *iface, REFIID riid, void **ppv)
40 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
42 if(IsEqualGUID(riid, &IID_IUnknown)) {
43 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
44 *ppv = &This->IWMSyncReader2_iface;
45 }else if(IsEqualGUID(riid, &IID_IWMProfile)) {
46 TRACE("(%p)->(IID_IWMProfile %p)\n", This, ppv);
47 *ppv = &This->IWMProfile3_iface;
48 }else if(IsEqualGUID(riid, &IID_IWMProfile2)) {
49 TRACE("(%p)->(IID_IWMProfile2 %p)\n", This, ppv);
50 *ppv = &This->IWMProfile3_iface;
51 }else if(IsEqualGUID(riid, &IID_IWMProfile3)) {
52 TRACE("(%p)->(IID_IWMProfile3 %p)\n", This, ppv);
53 *ppv = &This->IWMProfile3_iface;
54 }else if(IsEqualGUID(riid, &IID_IWMSyncReader)) {
55 TRACE("(%p)->(IID_IWMSyncReader %p)\n", This, ppv);
56 *ppv = &This->IWMSyncReader2_iface;
57 }else if(IsEqualGUID(riid, &IID_IWMSyncReader2)) {
58 TRACE("(%p)->(IID_IWMSyncReader2 %p)\n", This, ppv);
59 *ppv = &This->IWMSyncReader2_iface;
60 }else {
61 *ppv = NULL;
62 FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
63 return E_NOINTERFACE;
66 IUnknown_AddRef((IUnknown*)*ppv);
67 return S_OK;
70 static ULONG WINAPI WMSyncReader_AddRef(IWMSyncReader2 *iface)
72 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
73 LONG ref = InterlockedIncrement(&This->ref);
75 TRACE("(%p) ref=%d\n", This, ref);
77 return ref;
80 static ULONG WINAPI WMSyncReader_Release(IWMSyncReader2 *iface)
82 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
83 LONG ref = InterlockedDecrement(&This->ref);
85 TRACE("(%p) ref=%d\n", This, ref);
87 if(!ref)
88 heap_free(This);
90 return ref;
93 static HRESULT WINAPI WMSyncReader_Close(IWMSyncReader2 *iface)
95 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
96 FIXME("(%p): stub!\n", This);
97 return E_NOTIMPL;
100 static HRESULT WINAPI WMSyncReader_GetMaxOutputSampleSize(IWMSyncReader2 *iface, DWORD output, DWORD *max)
102 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
103 FIXME("(%p)->(%d %p): stub!\n", This, output, max);
104 return E_NOTIMPL;
107 static HRESULT WINAPI WMSyncReader_GetMaxStreamSampleSize(IWMSyncReader2 *iface, WORD stream, DWORD *max)
109 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
110 FIXME("(%p)->(%d %p): stub!\n", This, stream, max);
111 return E_NOTIMPL;
114 static HRESULT WINAPI WMSyncReader_GetNextSample(IWMSyncReader2 *iface, WORD stream, INSSBuffer **sample,
115 QWORD *sample_time, QWORD *sample_duration, DWORD *flags, DWORD *output_num, WORD *stream_num)
117 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
118 FIXME("(%p)->(%d %p %p %p %p %p %p): stub!\n", This, stream, sample, sample_time,
119 sample_duration, flags, output_num, stream_num);
120 return E_NOTIMPL;
123 static HRESULT WINAPI WMSyncReader_GetOutputCount(IWMSyncReader2 *iface, DWORD *outputs)
125 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
126 FIXME("(%p)->(%p): stub!\n", This, outputs);
127 return E_NOTIMPL;
130 static HRESULT WINAPI WMSyncReader_GetOutputFormat(IWMSyncReader2 *iface, DWORD output_num, DWORD format_num,
131 IWMOutputMediaProps **props)
133 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
134 FIXME("(%p)->(%u %u %p): stub!\n", This, output_num, format_num, props);
135 return E_NOTIMPL;
138 static HRESULT WINAPI WMSyncReader_GetOutputFormatCount(IWMSyncReader2 *iface, DWORD output_num, DWORD *formats)
140 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
141 FIXME("(%p)->(%u %p): stub!\n", This, output_num, formats);
142 return E_NOTIMPL;
145 static HRESULT WINAPI WMSyncReader_GetOutputNumberForStream(IWMSyncReader2 *iface, WORD stream_num, DWORD *output_num)
147 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
148 FIXME("(%p)->(%u %p): stub!\n", This, stream_num, output_num);
149 return E_NOTIMPL;
152 static HRESULT WINAPI WMSyncReader_GetOutputProps(IWMSyncReader2 *iface, DWORD output_num, IWMOutputMediaProps **output)
154 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
155 FIXME("(%p)->(%u %p): stub!\n", This, output_num, output);
156 return E_NOTIMPL;
159 static HRESULT WINAPI WMSyncReader_GetOutputSetting(IWMSyncReader2 *iface, DWORD output_num, const WCHAR *name,
160 WMT_ATTR_DATATYPE *type, BYTE *value, WORD *length)
162 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
163 FIXME("(%p)->(%u %s %p %p %p): stub!\n", This, output_num, debugstr_w(name), type, value, length);
164 return E_NOTIMPL;
167 static HRESULT WINAPI WMSyncReader_GetReadStreamSamples(IWMSyncReader2 *iface, WORD stream_num, BOOL *compressed)
169 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
170 FIXME("(%p)->(%d %p): stub!\n", This, stream_num, compressed);
171 return E_NOTIMPL;
174 static HRESULT WINAPI WMSyncReader_GetStreamNumberForOutput(IWMSyncReader2 *iface, DWORD output, WORD *stream_num)
176 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
177 FIXME("(%p)->(%u %p): stub!\n", This, output, stream_num);
178 return S_OK;
181 static HRESULT WINAPI WMSyncReader_GetStreamSelected(IWMSyncReader2 *iface, WORD stream_num, WMT_STREAM_SELECTION *selection)
183 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
184 FIXME("(%p)->(%d %p): stub!\n", This, stream_num, selection);
185 return E_NOTIMPL;
188 static HRESULT WINAPI WMSyncReader_Open(IWMSyncReader2 *iface, const WCHAR *filename)
190 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
191 FIXME("(%p)->(%s): stub!\n", This, debugstr_w(filename));
192 return E_NOTIMPL;
195 static HRESULT WINAPI WMSyncReader_OpenStream(IWMSyncReader2 *iface, IStream *stream)
197 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
198 FIXME("(%p)->(%p): stub!\n", This, stream);
199 return S_OK;
202 static HRESULT WINAPI WMSyncReader_SetOutputProps(IWMSyncReader2 *iface, DWORD output_num, IWMOutputMediaProps *output)
204 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
205 FIXME("(%p)->(%u %p): stub!\n", This, output_num, output);
206 return E_NOTIMPL;
209 static HRESULT WINAPI WMSyncReader_SetOutputSetting(IWMSyncReader2 *iface, DWORD output_num, const WCHAR *name,
210 WMT_ATTR_DATATYPE type, const BYTE *value, WORD length)
212 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
213 FIXME("(%p)->(%d %s %d %p %d): stub!\n", This, output_num, debugstr_w(name), type, value, length);
214 return E_NOTIMPL;
217 static HRESULT WINAPI WMSyncReader_SetRange(IWMSyncReader2 *iface, QWORD start, LONGLONG duration)
219 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
220 FIXME("(%p)->(%s %s): stub!\n", This, wine_dbgstr_longlong(start), wine_dbgstr_longlong(duration));
221 return E_NOTIMPL;
224 static HRESULT WINAPI WMSyncReader_SetRangeByFrame(IWMSyncReader2 *iface, WORD stream_num, QWORD frame_num,
225 LONGLONG frames)
227 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
228 FIXME("(%p)->(%d %s %s): stub!\n", This, stream_num, wine_dbgstr_longlong(frame_num), wine_dbgstr_longlong(frames));
229 return E_NOTIMPL;
232 static HRESULT WINAPI WMSyncReader_SetReadStreamSamples(IWMSyncReader2 *iface, WORD stream_num, BOOL compressed)
234 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
235 FIXME("(%p)->(%u %x): stub!\n", This, stream_num, compressed);
236 return E_NOTIMPL;
239 static HRESULT WINAPI WMSyncReader_SetStreamsSelected(IWMSyncReader2 *iface, WORD stream_count,
240 WORD *stream_numbers, WMT_STREAM_SELECTION *selections)
242 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
243 FIXME("(%p)->(%d %p %p): stub!\n", This, stream_count, stream_numbers, selections);
244 return S_OK;
247 static HRESULT WINAPI WMSyncReader2_SetRangeByTimecode(IWMSyncReader2 *iface, WORD stream_num,
248 WMT_TIMECODE_EXTENSION_DATA *start, WMT_TIMECODE_EXTENSION_DATA *end)
250 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
251 FIXME("(%p)->(%u %p %p): stub!\n", This, stream_num, start, end);
252 return E_NOTIMPL;
255 static HRESULT WINAPI WMSyncReader2_SetRangeByFrameEx(IWMSyncReader2 *iface, WORD stream_num, QWORD frame_num,
256 LONGLONG frames_to_read, QWORD *starttime)
258 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
259 FIXME("(%p)->(%u %s %s %p): stub!\n", This, stream_num, wine_dbgstr_longlong(frame_num),
260 wine_dbgstr_longlong(frames_to_read), starttime);
261 return E_NOTIMPL;
264 static HRESULT WINAPI WMSyncReader2_SetAllocateForOutput(IWMSyncReader2 *iface, DWORD output_num, IWMReaderAllocatorEx *allocator)
266 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
267 FIXME("(%p)->(%d %p): stub!\n", This, output_num, allocator);
268 return E_NOTIMPL;
271 static HRESULT WINAPI WMSyncReader2_GetAllocateForOutput(IWMSyncReader2 *iface, DWORD output_num, IWMReaderAllocatorEx **allocator)
273 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
274 FIXME("(%p)->(%d %p): stub!\n", This, output_num, allocator);
275 return E_NOTIMPL;
278 static HRESULT WINAPI WMSyncReader2_SetAllocateForStream(IWMSyncReader2 *iface, DWORD stream_num, IWMReaderAllocatorEx *allocator)
280 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
281 FIXME("(%p)->(%d %p): stub!\n", This, stream_num, allocator);
282 return E_NOTIMPL;
285 static HRESULT WINAPI WMSyncReader2_GetAllocateForStream(IWMSyncReader2 *iface, DWORD stream_num, IWMReaderAllocatorEx **allocator)
287 WMSyncReader *This = impl_from_IWMSyncReader2(iface);
288 FIXME("(%p)->(%d %p): stub!\n", This, stream_num, allocator);
289 return E_NOTIMPL;
292 static const IWMSyncReader2Vtbl WMSyncReader2Vtbl = {
293 WMSyncReader_QueryInterface,
294 WMSyncReader_AddRef,
295 WMSyncReader_Release,
296 WMSyncReader_Open,
297 WMSyncReader_Close,
298 WMSyncReader_SetRange,
299 WMSyncReader_SetRangeByFrame,
300 WMSyncReader_GetNextSample,
301 WMSyncReader_SetStreamsSelected,
302 WMSyncReader_GetStreamSelected,
303 WMSyncReader_SetReadStreamSamples,
304 WMSyncReader_GetReadStreamSamples,
305 WMSyncReader_GetOutputSetting,
306 WMSyncReader_SetOutputSetting,
307 WMSyncReader_GetOutputCount,
308 WMSyncReader_GetOutputProps,
309 WMSyncReader_SetOutputProps,
310 WMSyncReader_GetOutputFormatCount,
311 WMSyncReader_GetOutputFormat,
312 WMSyncReader_GetOutputNumberForStream,
313 WMSyncReader_GetStreamNumberForOutput,
314 WMSyncReader_GetMaxOutputSampleSize,
315 WMSyncReader_GetMaxStreamSampleSize,
316 WMSyncReader_OpenStream,
317 WMSyncReader2_SetRangeByTimecode,
318 WMSyncReader2_SetRangeByFrameEx,
319 WMSyncReader2_SetAllocateForOutput,
320 WMSyncReader2_GetAllocateForOutput,
321 WMSyncReader2_SetAllocateForStream,
322 WMSyncReader2_GetAllocateForStream
325 static inline WMSyncReader *impl_from_IWMProfile3(IWMProfile3 *iface)
327 return CONTAINING_RECORD(iface, WMSyncReader, IWMProfile3_iface);
330 static HRESULT WINAPI WMProfile_QueryInterface(IWMProfile3 *iface, REFIID riid, void **ppv)
332 WMSyncReader *This = impl_from_IWMProfile3(iface);
333 return IWMSyncReader2_QueryInterface(&This->IWMSyncReader2_iface, riid, ppv);
336 static ULONG WINAPI WMProfile_AddRef(IWMProfile3 *iface)
338 WMSyncReader *This = impl_from_IWMProfile3(iface);
339 return IWMSyncReader2_AddRef(&This->IWMSyncReader2_iface);
342 static ULONG WINAPI WMProfile_Release(IWMProfile3 *iface)
344 WMSyncReader *This = impl_from_IWMProfile3(iface);
345 return IWMSyncReader2_Release(&This->IWMSyncReader2_iface);
348 static HRESULT WINAPI WMProfile_GetVersion(IWMProfile3 *iface, WMT_VERSION *version)
350 WMSyncReader *This = impl_from_IWMProfile3(iface);
351 FIXME("%p, %p\n", This, version);
352 return E_NOTIMPL;
355 static HRESULT WINAPI WMProfile_GetName(IWMProfile3 *iface, WCHAR *name, DWORD *length)
357 WMSyncReader *This = impl_from_IWMProfile3(iface);
358 FIXME("%p, %p, %p\n", This, name, length);
359 return E_NOTIMPL;
362 static HRESULT WINAPI WMProfile_SetName(IWMProfile3 *iface, const WCHAR *name)
364 WMSyncReader *This = impl_from_IWMProfile3(iface);
365 FIXME("%p, %s\n", This, debugstr_w(name));
366 return E_NOTIMPL;
369 static HRESULT WINAPI WMProfile_GetDescription(IWMProfile3 *iface, WCHAR *description, DWORD *length)
371 WMSyncReader *This = impl_from_IWMProfile3(iface);
372 FIXME("%p, %p, %p\n", This, description, length);
373 return E_NOTIMPL;
376 static HRESULT WINAPI WMProfile_SetDescription(IWMProfile3 *iface, const WCHAR *description)
378 WMSyncReader *This = impl_from_IWMProfile3(iface);
379 FIXME("%p, %s\n", This, debugstr_w(description));
380 return E_NOTIMPL;
383 static HRESULT WINAPI WMProfile_GetStreamCount(IWMProfile3 *iface, DWORD *count)
385 WMSyncReader *This = impl_from_IWMProfile3(iface);
386 FIXME("%p, %p\n", This, count);
388 if (!count)
389 return E_INVALIDARG;
391 *count = 0;
392 return S_OK;
395 static HRESULT WINAPI WMProfile_GetStream(IWMProfile3 *iface, DWORD index, IWMStreamConfig **config)
397 WMSyncReader *This = impl_from_IWMProfile3(iface);
398 FIXME("%p, %d, %p\n", This, index, config);
399 return E_NOTIMPL;
402 static HRESULT WINAPI WMProfile_GetStreamByNumber(IWMProfile3 *iface, WORD stream, IWMStreamConfig **config)
404 WMSyncReader *This = impl_from_IWMProfile3(iface);
405 FIXME("%p, %d, %p\n", This, stream, config);
406 return E_NOTIMPL;
409 static HRESULT WINAPI WMProfile_RemoveStream(IWMProfile3 *iface, IWMStreamConfig *config)
411 WMSyncReader *This = impl_from_IWMProfile3(iface);
412 FIXME("%p, %p\n", This, config);
413 return E_NOTIMPL;
416 static HRESULT WINAPI WMProfile_RemoveStreamByNumber(IWMProfile3 *iface, WORD stream)
418 WMSyncReader *This = impl_from_IWMProfile3(iface);
419 FIXME("%p, %d\n", This, stream);
420 return E_NOTIMPL;
423 static HRESULT WINAPI WMProfile_AddStream(IWMProfile3 *iface, IWMStreamConfig *config)
425 WMSyncReader *This = impl_from_IWMProfile3(iface);
426 FIXME("%p, %p\n", This, config);
427 return E_NOTIMPL;
430 static HRESULT WINAPI WMProfile_ReconfigStream(IWMProfile3 *iface, IWMStreamConfig *config)
432 WMSyncReader *This = impl_from_IWMProfile3(iface);
433 FIXME("%p, %p\n", This, config);
434 return E_NOTIMPL;
437 static HRESULT WINAPI WMProfile_CreateNewStream(IWMProfile3 *iface, REFGUID type, IWMStreamConfig **config)
439 WMSyncReader *This = impl_from_IWMProfile3(iface);
440 FIXME("%p, %s, %p\n", This, debugstr_guid(type), config);
441 return E_NOTIMPL;
444 static HRESULT WINAPI WMProfile_GetMutualExclusionCount(IWMProfile3 *iface, DWORD *count)
446 WMSyncReader *This = impl_from_IWMProfile3(iface);
447 FIXME("%p, %p\n", This, count);
448 return E_NOTIMPL;
451 static HRESULT WINAPI WMProfile_GetMutualExclusion(IWMProfile3 *iface, DWORD index, IWMMutualExclusion **mutual)
453 WMSyncReader *This = impl_from_IWMProfile3(iface);
454 FIXME("%p, %d, %p\n", This, index, mutual);
455 return E_NOTIMPL;
458 static HRESULT WINAPI WMProfile_RemoveMutualExclusion(IWMProfile3 *iface, IWMMutualExclusion *mutual)
460 WMSyncReader *This = impl_from_IWMProfile3(iface);
461 FIXME("%p, %p\n", This, mutual);
462 return E_NOTIMPL;
465 static HRESULT WINAPI WMProfile_AddMutualExclusion(IWMProfile3 *iface, IWMMutualExclusion *mutual)
467 WMSyncReader *This = impl_from_IWMProfile3(iface);
468 FIXME("%p, %p\n", This, mutual);
469 return E_NOTIMPL;
472 static HRESULT WINAPI WMProfile_CreateNewMutualExclusion(IWMProfile3 *iface, IWMMutualExclusion **mutual)
474 WMSyncReader *This = impl_from_IWMProfile3(iface);
475 FIXME("%p, %p\n", This, mutual);
476 return E_NOTIMPL;
479 static HRESULT WINAPI WMProfile2_GetProfileID(IWMProfile3 *iface, GUID *guid)
481 WMSyncReader *This = impl_from_IWMProfile3(iface);
482 FIXME("%p, %p\n", This, guid);
483 return E_NOTIMPL;
486 static HRESULT WINAPI WMProfile3_GetStorageFormat(IWMProfile3 *iface, WMT_STORAGE_FORMAT *storage)
488 WMSyncReader *This = impl_from_IWMProfile3(iface);
489 FIXME("%p, %p\n", This, storage);
490 return E_NOTIMPL;
493 static HRESULT WINAPI WMProfile3_SetStorageFormat(IWMProfile3 *iface, WMT_STORAGE_FORMAT storage)
495 WMSyncReader *This = impl_from_IWMProfile3(iface);
496 FIXME("%p, %d\n", This, storage);
497 return E_NOTIMPL;
500 static HRESULT WINAPI WMProfile3_GetBandwidthSharingCount(IWMProfile3 *iface, DWORD *count)
502 WMSyncReader *This = impl_from_IWMProfile3(iface);
503 FIXME("%p, %p\n", This, count);
504 return E_NOTIMPL;
507 static HRESULT WINAPI WMProfile3_GetBandwidthSharing(IWMProfile3 *iface, DWORD index, IWMBandwidthSharing **bandwidth)
509 WMSyncReader *This = impl_from_IWMProfile3(iface);
510 FIXME("%p, %d, %p\n", This, index, bandwidth);
511 return E_NOTIMPL;
514 static HRESULT WINAPI WMProfile3_RemoveBandwidthSharing( IWMProfile3 *iface, IWMBandwidthSharing *bandwidth)
516 WMSyncReader *This = impl_from_IWMProfile3(iface);
517 FIXME("%p, %p\n", This, bandwidth);
518 return E_NOTIMPL;
521 static HRESULT WINAPI WMProfile3_AddBandwidthSharing(IWMProfile3 *iface, IWMBandwidthSharing *bandwidth)
523 WMSyncReader *This = impl_from_IWMProfile3(iface);
524 FIXME("%p, %p\n", This, bandwidth);
525 return E_NOTIMPL;
528 static HRESULT WINAPI WMProfile3_CreateNewBandwidthSharing( IWMProfile3 *iface, IWMBandwidthSharing **bandwidth)
530 WMSyncReader *This = impl_from_IWMProfile3(iface);
531 FIXME("%p, %p\n", This, bandwidth);
532 return E_NOTIMPL;
535 static HRESULT WINAPI WMProfile3_GetStreamPrioritization(IWMProfile3 *iface, IWMStreamPrioritization **stream)
537 WMSyncReader *This = impl_from_IWMProfile3(iface);
538 FIXME("%p, %p\n", This, stream);
539 return E_NOTIMPL;
542 static HRESULT WINAPI WMProfile3_SetStreamPrioritization(IWMProfile3 *iface, IWMStreamPrioritization *stream)
544 WMSyncReader *This = impl_from_IWMProfile3(iface);
545 FIXME("%p, %p\n", This, stream);
546 return E_NOTIMPL;
549 static HRESULT WINAPI WMProfile3_RemoveStreamPrioritization(IWMProfile3 *iface)
551 WMSyncReader *This = impl_from_IWMProfile3(iface);
552 FIXME("%p\n", This);
553 return E_NOTIMPL;
556 static HRESULT WINAPI WMProfile3_CreateNewStreamPrioritization(IWMProfile3 *iface, IWMStreamPrioritization **stream)
558 WMSyncReader *This = impl_from_IWMProfile3(iface);
559 FIXME("%p, %p\n", This, stream);
560 return E_NOTIMPL;
563 static HRESULT WINAPI WMProfile3_GetExpectedPacketCount(IWMProfile3 *iface, QWORD duration, QWORD *packets)
565 WMSyncReader *This = impl_from_IWMProfile3(iface);
566 FIXME("%p, %s, %p\n", This, wine_dbgstr_longlong(duration), packets);
567 return E_NOTIMPL;
570 static const IWMProfile3Vtbl WMProfile3Vtbl =
572 WMProfile_QueryInterface,
573 WMProfile_AddRef,
574 WMProfile_Release,
575 WMProfile_GetVersion,
576 WMProfile_GetName,
577 WMProfile_SetName,
578 WMProfile_GetDescription,
579 WMProfile_SetDescription,
580 WMProfile_GetStreamCount,
581 WMProfile_GetStream,
582 WMProfile_GetStreamByNumber,
583 WMProfile_RemoveStream,
584 WMProfile_RemoveStreamByNumber,
585 WMProfile_AddStream,
586 WMProfile_ReconfigStream,
587 WMProfile_CreateNewStream,
588 WMProfile_GetMutualExclusionCount,
589 WMProfile_GetMutualExclusion,
590 WMProfile_RemoveMutualExclusion,
591 WMProfile_AddMutualExclusion,
592 WMProfile_CreateNewMutualExclusion,
593 WMProfile2_GetProfileID,
594 WMProfile3_GetStorageFormat,
595 WMProfile3_SetStorageFormat,
596 WMProfile3_GetBandwidthSharingCount,
597 WMProfile3_GetBandwidthSharing,
598 WMProfile3_RemoveBandwidthSharing,
599 WMProfile3_AddBandwidthSharing,
600 WMProfile3_CreateNewBandwidthSharing,
601 WMProfile3_GetStreamPrioritization,
602 WMProfile3_SetStreamPrioritization,
603 WMProfile3_RemoveStreamPrioritization,
604 WMProfile3_CreateNewStreamPrioritization,
605 WMProfile3_GetExpectedPacketCount
608 HRESULT WINAPI WMCreateSyncReader(IUnknown *pcert, DWORD rights, IWMSyncReader **syncreader)
610 WMSyncReader *sync;
612 TRACE("(%p, %x, %p)\n", pcert, rights, syncreader);
614 sync = heap_alloc(sizeof(*sync));
616 if (!sync)
617 return E_OUTOFMEMORY;
619 sync->IWMProfile3_iface.lpVtbl = &WMProfile3Vtbl;
620 sync->IWMSyncReader2_iface.lpVtbl = &WMSyncReader2Vtbl;
621 sync->ref = 1;
623 *syncreader = (IWMSyncReader *)&sync->IWMSyncReader2_iface;
625 return S_OK;
628 HRESULT WINAPI WMCreateSyncReaderPriv(IWMSyncReader **syncreader)
630 return WMCreateSyncReader(NULL, 0, syncreader);