ReactOS 0.4.17-dev-966-gf06eace
pospass.c
Go to the documentation of this file.
1/*
2 * Filter Seeking and Control Interfaces
3 *
4 * Copyright 2003 Robert Shearman
5 * Copyright 2012 Aric Stewart, CodeWeavers
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21/* FIXME: critical sections */
22
23#include "strmbase_private.h"
24
26
28{
30}
31
33{
35}
36
37static struct strmbase_passthrough *impl_from_IMediaPosition(IMediaPosition *iface)
38{
40}
41
43{
44 struct strmbase_passthrough *passthrough = impl_from_ISeekingPassThru(iface);
45
46 return IUnknown_QueryInterface(passthrough->outer_unk, iid, out);
47}
48
50{
51 struct strmbase_passthrough *passthrough = impl_from_ISeekingPassThru(iface);
52
53 return IUnknown_AddRef(passthrough->outer_unk);
54}
55
57{
58 struct strmbase_passthrough *passthrough = impl_from_ISeekingPassThru(iface);
59
60 return IUnknown_Release(passthrough->outer_unk);
61}
62
64{
66
67 TRACE("(%p/%p)->(%d, %p)\n", This, iface, renderer, pin);
68
69 if (This->pin)
70 FIXME("Re-initializing?\n");
71
72 This->renderer = renderer;
73 This->pin = pin;
74
75 return S_OK;
76}
77
78static const ISeekingPassThruVtbl ISeekingPassThru_Vtbl =
79{
84};
85
87{
88 struct strmbase_passthrough *passthrough = impl_from_IMediaSeeking(iface);
89
90 return IUnknown_QueryInterface(passthrough->outer_unk, iid, out);
91}
92
94{
95 struct strmbase_passthrough *passthrough = impl_from_IMediaSeeking(iface);
96
97 return IUnknown_AddRef(passthrough->outer_unk);
98}
99
101{
102 struct strmbase_passthrough *passthrough = impl_from_IMediaSeeking(iface);
103
104 return IUnknown_Release(passthrough->outer_unk);
105}
106
108{
109 HRESULT hr;
110 IPin *pin;
111 *ppvObj = NULL;
112 hr = IPin_ConnectedTo(This->pin, &pin);
113 if (FAILED(hr))
114 return VFW_E_NOT_CONNECTED;
115 hr = IPin_QueryInterface(pin, riid, ppvObj);
116 IPin_Release(pin);
117 if (FAILED(hr))
118 hr = E_NOTIMPL;
119 return hr;
120}
121
123{
126 HRESULT hr;
127 TRACE("(%p/%p)->(%p)\n", iface, This, pCapabilities);
128 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
129 if (SUCCEEDED(hr)) {
130 hr = IMediaSeeking_GetCapabilities(seek, pCapabilities);
131 IMediaSeeking_Release(seek);
132 }
133 else
134 return E_NOTIMPL;
135 return hr;
136}
137
139{
142 HRESULT hr;
143 TRACE("(%p/%p)->(%p)\n", iface, This, pCapabilities);
144 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
145 if (SUCCEEDED(hr)) {
146 hr = IMediaSeeking_CheckCapabilities(seek, pCapabilities);
147 IMediaSeeking_Release(seek);
148 }
149 else
150 return E_NOTIMPL;
151 return hr;
152}
153
155{
158 HRESULT hr;
159 TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat));
160 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
161 if (SUCCEEDED(hr)) {
162 hr = IMediaSeeking_IsFormatSupported(seek, pFormat);
163 IMediaSeeking_Release(seek);
164 }
165 else
166 return E_NOTIMPL;
167 return hr;
168}
169
171{
174 HRESULT hr;
175 TRACE("(%p/%p)->(%p)\n", iface, This, pFormat);
176 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
177 if (SUCCEEDED(hr)) {
178 hr = IMediaSeeking_QueryPreferredFormat(seek, pFormat);
179 IMediaSeeking_Release(seek);
180 }
181 else
182 return E_NOTIMPL;
183 return hr;
184}
185
187{
190 HRESULT hr;
191 TRACE("(%p/%p)->(%p)\n", iface, This, pFormat);
192 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
193 if (SUCCEEDED(hr)) {
194 hr = IMediaSeeking_GetTimeFormat(seek, pFormat);
195 IMediaSeeking_Release(seek);
196 }
197 else
198 return E_NOTIMPL;
199 return hr;
200}
201
203{
206 HRESULT hr;
207 TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat));
208 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
209 if (SUCCEEDED(hr)) {
210 hr = IMediaSeeking_IsUsingTimeFormat(seek, pFormat);
211 IMediaSeeking_Release(seek);
212 }
213 else
214 return E_NOTIMPL;
215 return hr;
216}
217
219{
222 HRESULT hr;
223 TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat));
224 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
225 if (SUCCEEDED(hr)) {
226 hr = IMediaSeeking_SetTimeFormat(seek, pFormat);
227 IMediaSeeking_Release(seek);
228 }
229 else
230 return E_NOTIMPL;
231 return hr;
232}
233
235{
238 HRESULT hr;
239 TRACE("(%p/%p)->(%p)\n", iface, This, pDuration);
240 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
241 if (SUCCEEDED(hr)) {
242 hr = IMediaSeeking_GetDuration(seek, pDuration);
243 IMediaSeeking_Release(seek);
244 }
245 else
246 return E_NOTIMPL;
247 return hr;
248}
249
251{
254 HRESULT hr;
255 TRACE("(%p/%p)->(%p)\n", iface, This, pStop);
256 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
257 if (SUCCEEDED(hr)) {
258 hr = IMediaSeeking_GetStopPosition(seek, pStop);
259 IMediaSeeking_Release(seek);
260 }
261 else
262 return E_NOTIMPL;
263 return hr;
264}
265
267{
270 HRESULT hr = S_OK;
271 TRACE("(%p/%p)->(%p)\n", iface, This, pCurrent);
272 if (!pCurrent)
273 return E_POINTER;
274 EnterCriticalSection(&This->time_cs);
275 if (This->timevalid)
276 *pCurrent = This->time_earliest;
277 else
278 hr = E_FAIL;
279 LeaveCriticalSection(&This->time_cs);
280 if (SUCCEEDED(hr)) {
281 hr = IMediaSeeking_ConvertTimeFormat(iface, pCurrent, NULL, *pCurrent, &TIME_FORMAT_MEDIA_TIME);
282 return hr;
283 }
284 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
285 if (SUCCEEDED(hr)) {
286 hr = IMediaSeeking_GetCurrentPosition(seek, pCurrent);
287 IMediaSeeking_Release(seek);
288 }
289 else
290 return E_NOTIMPL;
291 return hr;
292}
293
294static HRESULT WINAPI MediaSeekingPassThru_ConvertTimeFormat(IMediaSeeking * iface, LONGLONG * pTarget, const GUID * pTargetFormat, LONGLONG Source, const GUID * pSourceFormat)
295{
298 HRESULT hr;
299
300 TRACE("iface %p, target %p, target_format %s, source %s, source_format %s.\n",
301 iface, pTarget, debugstr_guid(pTargetFormat),
302 wine_dbgstr_longlong(Source), debugstr_guid(pSourceFormat));
303
304 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
305 if (SUCCEEDED(hr)) {
306 hr = IMediaSeeking_ConvertTimeFormat(seek, pTarget, pTargetFormat, Source, pSourceFormat);
307 IMediaSeeking_Release(seek);
308 }
309 else
310 return E_NOTIMPL;
311 return hr;
312}
313
314static HRESULT WINAPI MediaSeekingPassThru_SetPositions(IMediaSeeking * iface, LONGLONG * pCurrent, DWORD dwCurrentFlags, LONGLONG * pStop, DWORD dwStopFlags)
315{
318 HRESULT hr;
319
320 TRACE("iface %p, current %p, current_flags %#lx, stop %p, stop_flags %#lx.\n",
321 iface, pCurrent, dwCurrentFlags, pStop, dwStopFlags);
322
323 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
324 if (SUCCEEDED(hr)) {
325 hr = IMediaSeeking_SetPositions(seek, pCurrent, dwCurrentFlags, pStop, dwStopFlags);
326 IMediaSeeking_Release(seek);
327 } else if (hr == VFW_E_NOT_CONNECTED)
328 hr = S_OK;
329 return hr;
330}
331
333{
336 HRESULT hr;
337 TRACE("(%p/%p)->(%p, %p)\n", iface, This, pCurrent, pStop);
338 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
339 if (SUCCEEDED(hr)) {
340 hr = IMediaSeeking_GetPositions(seek, pCurrent, pStop);
341 IMediaSeeking_Release(seek);
342 }
343 else
344 return E_NOTIMPL;
345 return hr;
346}
347
349{
352 HRESULT hr;
353 TRACE("(%p/%p)->(%p,%p)\n", iface, This, pEarliest, pLatest);
354 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
355 if (SUCCEEDED(hr)) {
356 hr = IMediaSeeking_GetAvailable(seek, pEarliest, pLatest);
357 IMediaSeeking_Release(seek);
358 }
359 else
360 return E_NOTIMPL;
361 return hr;
362}
363
365{
368 HRESULT hr;
369 TRACE("(%p/%p)->(%e)\n", iface, This, dRate);
370 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
371 if (SUCCEEDED(hr)) {
372 hr = IMediaSeeking_SetRate(seek, dRate);
373 IMediaSeeking_Release(seek);
374 }
375 else
376 return E_NOTIMPL;
377 return hr;
378}
379
381{
384 HRESULT hr;
385 TRACE("(%p/%p)->(%p)\n", iface, This, dRate);
386 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
387 if (SUCCEEDED(hr)) {
388 hr = IMediaSeeking_GetRate(seek, dRate);
389 IMediaSeeking_Release(seek);
390 }
391 else
392 return E_NOTIMPL;
393 return hr;
394}
395
397{
400 HRESULT hr;
401 TRACE("(%p)\n", pPreroll);
402 hr = get_connected(This, &IID_IMediaSeeking, (LPVOID*)&seek);
403 if (SUCCEEDED(hr)) {
404 hr = IMediaSeeking_GetPreroll(seek, pPreroll);
405 IMediaSeeking_Release(seek);
406 }
407 else
408 return E_NOTIMPL;
409 return hr;
410}
411
412static const IMediaSeekingVtbl IMediaSeekingPassThru_Vtbl =
413{
434};
435
436static HRESULT WINAPI MediaPositionPassThru_QueryInterface(IMediaPosition *iface, REFIID iid, void **out)
437{
438 struct strmbase_passthrough *passthrough = impl_from_IMediaPosition(iface);
439
440 return IUnknown_QueryInterface(passthrough->outer_unk, iid, out);
441}
442
443static ULONG WINAPI MediaPositionPassThru_AddRef(IMediaPosition *iface)
444{
445 struct strmbase_passthrough *passthrough = impl_from_IMediaPosition(iface);
446
447 return IUnknown_AddRef(passthrough->outer_unk);
448}
449
450static ULONG WINAPI MediaPositionPassThru_Release(IMediaPosition *iface)
451{
452 struct strmbase_passthrough *passthrough = impl_from_IMediaPosition(iface);
453
454 return IUnknown_Release(passthrough->outer_unk);
455}
456
458{
459 TRACE("iface %p, count %p.\n", iface, count);
460 *count = 1;
461 return S_OK;
462}
463
466{
467 TRACE("iface %p, index %u, lcid %#lx, typeinfo %p.\n", iface, index, lcid, typeinfo);
469}
470
472 LPOLESTR *names, UINT count, LCID lcid, DISPID *ids)
473{
475 HRESULT hr;
476
477 TRACE("iface %p, iid %s, names %p, count %u, lcid %#lx, ids %p.\n",
478 iface, debugstr_guid(iid), names, count, lcid, ids);
479
481 {
482 hr = ITypeInfo_GetIDsOfNames(typeinfo, names, count, ids);
483 ITypeInfo_Release(typeinfo);
484 }
485 return hr;
486}
487
488static HRESULT WINAPI MediaPositionPassThru_Invoke(IMediaPosition *iface, DISPID id, REFIID iid, LCID lcid,
489 WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepinfo, UINT *error_arg)
490{
492 HRESULT hr;
493
494 TRACE("iface %p, id %ld, iid %s, lcid %#lx, flags %#x, params %p, result %p, excepinfo %p, error_arg %p.\n",
495 iface, id, debugstr_guid(iid), lcid, flags, params, result, excepinfo, error_arg);
496
498 {
499 hr = ITypeInfo_Invoke(typeinfo, iface, id, flags, params, result, excepinfo, error_arg);
500 ITypeInfo_Release(typeinfo);
501 }
502 return hr;
503}
504
505static HRESULT WINAPI MediaPositionPassThru_get_Duration(IMediaPosition *iface, REFTIME *plength)
506{
508 IMediaPosition *pos;
509 HRESULT hr;
510
511 TRACE("(%p)\n", plength);
512
513 hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
514 if (SUCCEEDED(hr)) {
515 hr = IMediaPosition_get_Duration(pos, plength);
516 IMediaPosition_Release(pos);
517 }
518 else
519 return E_NOTIMPL;
520 return hr;
521}
522
524{
526 IMediaPosition *pos;
527 HRESULT hr;
528
529 TRACE("iface %p, time %.16e.\n", iface, llTime);
530
531 hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
532 if (SUCCEEDED(hr)) {
533 hr = IMediaPosition_put_CurrentPosition(pos, llTime);
534 IMediaPosition_Release(pos);
535 }
536 else
537 return E_NOTIMPL;
538 return hr;
539}
540
542{
544 IMediaPosition *pos;
545 HRESULT hr;
546
547 TRACE("(%p)\n", pllTime);
548
549 hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
550 if (SUCCEEDED(hr)) {
551 hr = IMediaPosition_get_CurrentPosition(pos, pllTime);
552 IMediaPosition_Release(pos);
553 }
554 else
555 return E_NOTIMPL;
556 return hr;
557}
558
559static HRESULT WINAPI MediaPositionPassThru_get_StopTime(IMediaPosition *iface, REFTIME *pllTime)
560{
562 IMediaPosition *pos;
563 HRESULT hr;
564
565 TRACE("(%p)\n", pllTime);
566
567 hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
568 if (SUCCEEDED(hr)) {
569 hr = IMediaPosition_get_StopTime(pos, pllTime);
570 IMediaPosition_Release(pos);
571 }
572 else
573 return E_NOTIMPL;
574 return hr;
575}
576
577static HRESULT WINAPI MediaPositionPassThru_put_StopTime(IMediaPosition *iface, REFTIME llTime)
578{
580 IMediaPosition *pos;
581 HRESULT hr;
582
583 TRACE("iface %p, time %.16e.\n", iface, llTime);
584
585 hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
586 if (SUCCEEDED(hr)) {
587 hr = IMediaPosition_put_StopTime(pos, llTime);
588 IMediaPosition_Release(pos);
589 }
590 else
591 return E_NOTIMPL;
592 return hr;
593}
594
595static HRESULT WINAPI MediaPositionPassThru_get_PrerollTime(IMediaPosition *iface, REFTIME *pllTime)
596{
598 IMediaPosition *pos;
599 HRESULT hr;
600
601 TRACE("(%p)\n", pllTime);
602
603 hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
604 if (SUCCEEDED(hr)) {
605 hr = IMediaPosition_get_PrerollTime(pos, pllTime);
606 IMediaPosition_Release(pos);
607 }
608 else
609 return E_NOTIMPL;
610 return hr;
611}
612
613static HRESULT WINAPI MediaPositionPassThru_put_PrerollTime(IMediaPosition *iface, REFTIME llTime)
614{
616 IMediaPosition *pos;
617 HRESULT hr;
618
619 TRACE("iface %p, time %.16e.\n", iface, llTime);
620
621 hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
622 if (SUCCEEDED(hr)) {
623 hr = IMediaPosition_put_PrerollTime(pos, llTime);
624 IMediaPosition_Release(pos);
625 }
626 else
627 return E_NOTIMPL;
628 return hr;
629}
630
631static HRESULT WINAPI MediaPositionPassThru_put_Rate(IMediaPosition *iface, double dRate)
632{
634 IMediaPosition *pos;
635 HRESULT hr;
636
637 TRACE("(%f)\n", dRate);
638
639 hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
640 if (SUCCEEDED(hr)) {
641 hr = IMediaPosition_put_Rate(pos, dRate);
642 IMediaPosition_Release(pos);
643 }
644 else
645 return E_NOTIMPL;
646 return hr;
647}
648
649static HRESULT WINAPI MediaPositionPassThru_get_Rate(IMediaPosition *iface, double *pdRate)
650{
652 IMediaPosition *pos;
653 HRESULT hr;
654
655 TRACE("(%p)\n", pdRate);
656
657 hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
658 if (SUCCEEDED(hr)) {
659 hr = IMediaPosition_get_Rate(pos, pdRate);
660 IMediaPosition_Release(pos);
661 }
662 else
663 return E_NOTIMPL;
664 return hr;
665}
666
667static HRESULT WINAPI MediaPositionPassThru_CanSeekForward(IMediaPosition *iface, LONG *pCanSeekForward)
668{
670 IMediaPosition *pos;
671 HRESULT hr;
672
673 TRACE("(%p)\n", pCanSeekForward);
674
675 hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
676 if (SUCCEEDED(hr)) {
677 hr = IMediaPosition_CanSeekForward(pos, pCanSeekForward);
678 IMediaPosition_Release(pos);
679 }
680 else
681 return E_NOTIMPL;
682 return hr;
683}
684
685static HRESULT WINAPI MediaPositionPassThru_CanSeekBackward(IMediaPosition *iface, LONG *pCanSeekBackward)
686{
688 IMediaPosition *pos;
689 HRESULT hr;
690
691 TRACE("(%p)\n", pCanSeekBackward);
692
693 hr = get_connected(This, &IID_IMediaPosition, (LPVOID*)&pos);
694 if (SUCCEEDED(hr)) {
695 hr = IMediaPosition_CanSeekBackward(pos, pCanSeekBackward);
696 IMediaPosition_Release(pos);
697 }
698 else
699 return E_NOTIMPL;
700 return hr;
701}
702
703static const IMediaPositionVtbl IMediaPositionPassThru_Vtbl =
704{
723};
724
726{
727 memset(passthrough, 0, sizeof(*passthrough));
728
729 passthrough->outer_unk = outer;
731 passthrough->IMediaSeeking_iface.lpVtbl = &IMediaSeekingPassThru_Vtbl;
732 passthrough->ISeekingPassThru_iface.lpVtbl = &ISeekingPassThru_Vtbl;
734 InitializeCriticalSection(&passthrough->time_cs);
735 passthrough->time_cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": strmbase_passthrough.time_cs" );
736}
737
739{
740 passthrough->time_cs.DebugInfo->Spare[0] = 0;
741 DeleteCriticalSection(&passthrough->time_cs);
742}
743
745{
746 EnterCriticalSection(&passthrough->time_cs);
747 passthrough->time_earliest = time;
748 passthrough->timevalid = TRUE;
749 LeaveCriticalSection(&passthrough->time_cs);
750}
751
753{
754 EnterCriticalSection(&passthrough->time_cs);
755 passthrough->timevalid = FALSE;
756 LeaveCriticalSection(&passthrough->time_cs);
757}
758
760{
762 HRESULT hr;
763
764 hr = IMediaSeeking_GetStopPosition(&passthrough->IMediaSeeking_iface, &time);
765 EnterCriticalSection(&passthrough->time_cs);
766 if (SUCCEEDED(hr))
767 {
768 passthrough->timevalid = TRUE;
769 passthrough->time_earliest = time;
770 }
771 else
772 passthrough->timevalid = FALSE;
773 LeaveCriticalSection(&passthrough->time_cs);
774}
DOUBLE REFTIME
Definition: axcore.idl:57
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
Definition: sync.c:107
LCID lcid
Definition: locale.c:5660
LONGLONG REFERENCE_TIME
Definition: dmusicks.h:9
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
FxIoTarget * pTarget
Definition: fxdeviceapi.cpp:97
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint * ids
Definition: glext.h:5907
GLuint GLuint * names
Definition: glext.h:11545
GLuint index
Definition: glext.h:6031
GLenum const GLfloat * params
Definition: glext.h:5645
GLbitfield flags
Definition: glext.h:7161
GLuint64EXT * result
Definition: glext.h:11304
unsigned int UINT
Definition: sysinfo.c:13
REFIID riid
Definition: atlbase.h:39
Definition: axcore.idl:92
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_guid
Definition: kernel32.h:35
__u16 time
Definition: mkdosfs.c:8
static EXCEPINFO excepinfo
Definition: automation.c:47
static IUnknown * outer
Definition: compobj.c:82
static VARIANTARG static DISPID
Definition: ordinal.c:49
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3169
long LONG
Definition: pedump.c:60
static HRESULT WINAPI MediaSeekingPassThru_GetAvailable(IMediaSeeking *iface, LONGLONG *pEarliest, LONGLONG *pLatest)
Definition: pospass.c:348
static HRESULT WINAPI MediaPositionPassThru_GetIDsOfNames(IMediaPosition *iface, REFIID iid, LPOLESTR *names, UINT count, LCID lcid, DISPID *ids)
Definition: pospass.c:471
static HRESULT WINAPI MediaSeekingPassThru_GetPreroll(IMediaSeeking *iface, LONGLONG *pPreroll)
Definition: pospass.c:396
static ULONG WINAPI SeekingPassThru_Release(ISeekingPassThru *iface)
Definition: pospass.c:56
static const IMediaSeekingVtbl IMediaSeekingPassThru_Vtbl
Definition: pospass.c:412
static HRESULT WINAPI MediaSeekingPassThru_GetDuration(IMediaSeeking *iface, LONGLONG *pDuration)
Definition: pospass.c:234
static HRESULT WINAPI MediaPositionPassThru_put_CurrentPosition(IMediaPosition *iface, REFTIME llTime)
Definition: pospass.c:523
void strmbase_passthrough_update_time(struct strmbase_passthrough *passthrough, REFERENCE_TIME time)
Definition: pospass.c:744
static HRESULT WINAPI MediaPositionPassThru_get_Duration(IMediaPosition *iface, REFTIME *plength)
Definition: pospass.c:505
static HRESULT WINAPI MediaSeekingPassThru_IsFormatSupported(IMediaSeeking *iface, const GUID *pFormat)
Definition: pospass.c:154
static HRESULT WINAPI MediaPositionPassThru_GetTypeInfoCount(IMediaPosition *iface, UINT *count)
Definition: pospass.c:457
static HRESULT WINAPI MediaPositionPassThru_put_StopTime(IMediaPosition *iface, REFTIME llTime)
Definition: pospass.c:577
static struct strmbase_passthrough * impl_from_ISeekingPassThru(ISeekingPassThru *iface)
Definition: pospass.c:27
static struct strmbase_passthrough * impl_from_IMediaPosition(IMediaPosition *iface)
Definition: pospass.c:37
static HRESULT WINAPI MediaSeekingPassThru_QueryInterface(IMediaSeeking *iface, REFIID iid, void **out)
Definition: pospass.c:86
static HRESULT WINAPI MediaPositionPassThru_CanSeekForward(IMediaPosition *iface, LONG *pCanSeekForward)
Definition: pospass.c:667
static ULONG WINAPI MediaPositionPassThru_Release(IMediaPosition *iface)
Definition: pospass.c:450
static HRESULT WINAPI MediaSeekingPassThru_GetCurrentPosition(IMediaSeeking *iface, LONGLONG *pCurrent)
Definition: pospass.c:266
static ULONG WINAPI SeekingPassThru_AddRef(ISeekingPassThru *iface)
Definition: pospass.c:49
static HRESULT WINAPI SeekingPassThru_QueryInterface(ISeekingPassThru *iface, REFIID iid, void **out)
Definition: pospass.c:42
void strmbase_passthrough_cleanup(struct strmbase_passthrough *passthrough)
Definition: pospass.c:738
static HRESULT WINAPI MediaPositionPassThru_get_Rate(IMediaPosition *iface, double *pdRate)
Definition: pospass.c:649
static HRESULT WINAPI MediaSeekingPassThru_ConvertTimeFormat(IMediaSeeking *iface, LONGLONG *pTarget, const GUID *pTargetFormat, LONGLONG Source, const GUID *pSourceFormat)
Definition: pospass.c:294
static ULONG WINAPI MediaPositionPassThru_AddRef(IMediaPosition *iface)
Definition: pospass.c:443
static HRESULT WINAPI MediaSeekingPassThru_SetPositions(IMediaSeeking *iface, LONGLONG *pCurrent, DWORD dwCurrentFlags, LONGLONG *pStop, DWORD dwStopFlags)
Definition: pospass.c:314
static const ISeekingPassThruVtbl ISeekingPassThru_Vtbl
Definition: pospass.c:78
static HRESULT WINAPI MediaSeekingPassThru_QueryPreferredFormat(IMediaSeeking *iface, GUID *pFormat)
Definition: pospass.c:170
static HRESULT WINAPI MediaPositionPassThru_get_CurrentPosition(IMediaPosition *iface, REFTIME *pllTime)
Definition: pospass.c:541
static HRESULT WINAPI MediaPositionPassThru_get_StopTime(IMediaPosition *iface, REFTIME *pllTime)
Definition: pospass.c:559
static HRESULT WINAPI MediaSeekingPassThru_IsUsingTimeFormat(IMediaSeeking *iface, const GUID *pFormat)
Definition: pospass.c:202
static HRESULT WINAPI MediaSeekingPassThru_GetStopPosition(IMediaSeeking *iface, LONGLONG *pStop)
Definition: pospass.c:250
static HRESULT WINAPI MediaPositionPassThru_get_PrerollTime(IMediaPosition *iface, REFTIME *pllTime)
Definition: pospass.c:595
static HRESULT WINAPI MediaSeekingPassThru_GetCapabilities(IMediaSeeking *iface, DWORD *pCapabilities)
Definition: pospass.c:122
static HRESULT WINAPI MediaPositionPassThru_put_PrerollTime(IMediaPosition *iface, REFTIME llTime)
Definition: pospass.c:613
static HRESULT WINAPI MediaPositionPassThru_QueryInterface(IMediaPosition *iface, REFIID iid, void **out)
Definition: pospass.c:436
static HRESULT WINAPI MediaSeekingPassThru_SetRate(IMediaSeeking *iface, double dRate)
Definition: pospass.c:364
static const IMediaPositionVtbl IMediaPositionPassThru_Vtbl
Definition: pospass.c:703
static ULONG WINAPI MediaSeekingPassThru_AddRef(IMediaSeeking *iface)
Definition: pospass.c:93
static HRESULT WINAPI MediaPositionPassThru_CanSeekBackward(IMediaPosition *iface, LONG *pCanSeekBackward)
Definition: pospass.c:685
static HRESULT WINAPI MediaPositionPassThru_Invoke(IMediaPosition *iface, DISPID id, REFIID iid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepinfo, UINT *error_arg)
Definition: pospass.c:488
void strmbase_passthrough_init(struct strmbase_passthrough *passthrough, IUnknown *outer)
Definition: pospass.c:725
static HRESULT WINAPI MediaSeekingPassThru_GetTimeFormat(IMediaSeeking *iface, GUID *pFormat)
Definition: pospass.c:186
static struct strmbase_passthrough * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: pospass.c:32
static HRESULT WINAPI MediaSeekingPassThru_SetTimeFormat(IMediaSeeking *iface, const GUID *pFormat)
Definition: pospass.c:218
static HRESULT get_connected(struct strmbase_passthrough *This, REFIID riid, void **ppvObj)
Definition: pospass.c:107
static HRESULT WINAPI MediaSeekingPassThru_CheckCapabilities(IMediaSeeking *iface, DWORD *pCapabilities)
Definition: pospass.c:138
static HRESULT WINAPI SeekingPassThru_Init(ISeekingPassThru *iface, BOOL renderer, IPin *pin)
Definition: pospass.c:63
void strmbase_passthrough_invalidate_time(struct strmbase_passthrough *passthrough)
Definition: pospass.c:752
static HRESULT WINAPI MediaSeekingPassThru_GetRate(IMediaSeeking *iface, double *dRate)
Definition: pospass.c:380
static ULONG WINAPI MediaSeekingPassThru_Release(IMediaSeeking *iface)
Definition: pospass.c:100
static HRESULT WINAPI MediaPositionPassThru_GetTypeInfo(IMediaPosition *iface, UINT index, LCID lcid, ITypeInfo **typeinfo)
Definition: pospass.c:464
void strmbase_passthrough_eos(struct strmbase_passthrough *passthrough)
Definition: pospass.c:759
static HRESULT WINAPI MediaSeekingPassThru_GetPositions(IMediaSeeking *iface, LONGLONG *pCurrent, LONGLONG *pStop)
Definition: pospass.c:332
static HRESULT WINAPI MediaPositionPassThru_put_Rate(IMediaPosition *iface, double dRate)
Definition: pospass.c:631
#define REFIID
Definition: guiddef.h:118
DWORD LCID
Definition: nls.h:13
int seek(void *fd, ulong off, int mode)
Definition: pe.c:51
#define memset(x, y, z)
Definition: compat.h:39
#define TRACE(s)
Definition: solgame.cpp:4
@ IMediaPosition_tid
Definition: strmbase.h:229
HRESULT strmbase_get_typeinfo(enum strmbase_type_id tid, ITypeInfo **typeinfo)
Definition: dispatch.c:38
PRTL_CRITICAL_SECTION_DEBUG DebugInfo
Definition: rtltypes.h:1478
ISeekingPassThru ISeekingPassThru_iface
Definition: strmbase.h:239
IMediaPosition IMediaPosition_iface
Definition: strmbase.h:241
IMediaSeeking IMediaSeeking_iface
Definition: strmbase.h:240
CRITICAL_SECTION time_cs
Definition: strmbase.h:247
REFERENCE_TIME time_earliest
Definition: strmbase.h:248
IUnknown * outer_unk
Definition: strmbase.h:243
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:687
#define DWORD_PTR
Definition: treelist.c:76
int64_t LONGLONG
Definition: typedefs.h:68
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
#define VFW_E_NOT_CONNECTED
Definition: vfwmsgs.h:48
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define WINAPI
Definition: msvc.h:6
#define E_POINTER
Definition: winerror.h:3480
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
Definition: winnt_old.h:1156