ReactOS 0.4.17-dev-966-gf06eace
filter.c File Reference
#include "amstream_private.h"
#include "wine/debug.h"
#include "wine/list.h"
Include dependency graph for filter.c:

Go to the source code of this file.

Classes

struct  enum_pins
 
struct  filter
 
struct  event
 

Macros

#define COBJMACROS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (quartz)
 
static struct enum_pins * impl_from_IEnumPins (IEnumPins *iface)
 
static HRESULT WINAPI enum_pins_QueryInterface (IEnumPins *iface, REFIID iid, void **out)
 
static ULONG WINAPI enum_pins_AddRef (IEnumPins *iface)
 
static ULONG WINAPI enum_pins_Release (IEnumPins *iface)
 
static HRESULT WINAPI enum_pins_Next (IEnumPins *iface, ULONG count, IPin **pins, ULONG *ret_count)
 
static HRESULT WINAPI enum_pins_Skip (IEnumPins *iface, ULONG count)
 
static HRESULT WINAPI enum_pins_Reset (IEnumPins *iface)
 
static HRESULT WINAPI enum_pins_Clone (IEnumPins *iface, IEnumPins **out)
 
static struct filter * impl_from_IMediaStreamFilter (IMediaStreamFilter *iface)
 
static HRESULT WINAPI filter_QueryInterface (IMediaStreamFilter *iface, REFIID iid, void **out)
 
static ULONG WINAPI filter_AddRef (IMediaStreamFilter *iface)
 
static ULONG WINAPI filter_Release (IMediaStreamFilter *iface)
 
static HRESULT WINAPI filter_GetClassID (IMediaStreamFilter *iface, CLSID *clsid)
 
static void send_ec_complete (struct filter *filter)
 
static void set_state (struct filter *filter, FILTER_STATE state)
 
static HRESULT WINAPI filter_Stop (IMediaStreamFilter *iface)
 
static HRESULT WINAPI filter_Pause (IMediaStreamFilter *iface)
 
static HRESULT WINAPI filter_Run (IMediaStreamFilter *iface, REFERENCE_TIME start)
 
static HRESULT WINAPI filter_GetState (IMediaStreamFilter *iface, DWORD timeout, FILTER_STATE *state)
 
static HRESULT WINAPI filter_SetSyncSource (IMediaStreamFilter *iface, IReferenceClock *clock)
 
static HRESULT WINAPI filter_GetSyncSource (IMediaStreamFilter *iface, IReferenceClock **clock)
 
static HRESULT WINAPI filter_EnumPins (IMediaStreamFilter *iface, IEnumPins **enum_pins)
 
static HRESULT WINAPI filter_FindPin (IMediaStreamFilter *iface, const WCHAR *id, IPin **out)
 
static HRESULT WINAPI filter_QueryFilterInfo (IMediaStreamFilter *iface, FILTER_INFO *info)
 
static HRESULT WINAPI filter_JoinFilterGraph (IMediaStreamFilter *iface, IFilterGraph *graph, const WCHAR *name)
 
static HRESULT WINAPI filter_QueryVendorInfo (IMediaStreamFilter *iface, LPWSTR *vendor_info)
 
static HRESULT WINAPI filter_AddMediaStream (IMediaStreamFilter *iface, IAMMediaStream *pAMMediaStream)
 
static HRESULT WINAPI filter_GetMediaStream (IMediaStreamFilter *iface, REFMSPID idPurpose, IMediaStream **ppMediaStream)
 
static HRESULT WINAPI filter_EnumMediaStreams (IMediaStreamFilter *iface, LONG index, IMediaStream **stream)
 
static IMediaSeeking * get_seeking (IAMMediaStream *stream)
 
static HRESULT WINAPI filter_SupportSeeking (IMediaStreamFilter *iface, BOOL renderer)
 
static HRESULT WINAPI filter_ReferenceTimeToStreamTime (IMediaStreamFilter *iface, REFERENCE_TIME *time)
 
static HRESULT WINAPI filter_GetCurrentStreamTime (IMediaStreamFilter *iface, REFERENCE_TIME *time)
 
static HRESULT WINAPI filter_WaitUntil (IMediaStreamFilter *iface, REFERENCE_TIME time)
 
static HRESULT WINAPI filter_Flush (IMediaStreamFilter *iface, BOOL cancel_eos)
 
static HRESULT WINAPI filter_EndOfStream (IMediaStreamFilter *iface)
 
static struct filter * impl_from_IMediaSeeking (IMediaSeeking *iface)
 
static HRESULT WINAPI filter_seeking_QueryInterface (IMediaSeeking *iface, REFIID iid, void **out)
 
static ULONG WINAPI filter_seeking_AddRef (IMediaSeeking *iface)
 
static ULONG WINAPI filter_seeking_Release (IMediaSeeking *iface)
 
static HRESULT WINAPI filter_seeking_GetCapabilities (IMediaSeeking *iface, DWORD *capabilities)
 
static HRESULT WINAPI filter_seeking_CheckCapabilities (IMediaSeeking *iface, DWORD *capabilities)
 
static HRESULT WINAPI filter_seeking_IsFormatSupported (IMediaSeeking *iface, const GUID *format)
 
static HRESULT WINAPI filter_seeking_QueryPreferredFormat (IMediaSeeking *iface, GUID *format)
 
static HRESULT WINAPI filter_seeking_GetTimeFormat (IMediaSeeking *iface, GUID *format)
 
static HRESULT WINAPI filter_seeking_IsUsingTimeFormat (IMediaSeeking *iface, const GUID *format)
 
static HRESULT WINAPI filter_seeking_SetTimeFormat (IMediaSeeking *iface, const GUID *format)
 
static HRESULT WINAPI filter_seeking_GetDuration (IMediaSeeking *iface, LONGLONG *duration)
 
static HRESULT WINAPI filter_seeking_GetStopPosition (IMediaSeeking *iface, LONGLONG *stop)
 
static HRESULT WINAPI filter_seeking_GetCurrentPosition (IMediaSeeking *iface, LONGLONG *current)
 
static HRESULT WINAPI filter_seeking_ConvertTimeFormat (IMediaSeeking *iface, LONGLONG *target, const GUID *target_format, LONGLONG source, const GUID *source_format)
 
static HRESULT WINAPI filter_seeking_SetPositions (IMediaSeeking *iface, LONGLONG *current_ptr, DWORD current_flags, LONGLONG *stop_ptr, DWORD stop_flags)
 
static HRESULT WINAPI filter_seeking_GetPositions (IMediaSeeking *iface, LONGLONG *current, LONGLONG *stop)
 
static HRESULT WINAPI filter_seeking_GetAvailable (IMediaSeeking *iface, LONGLONG *earliest, LONGLONG *latest)
 
static HRESULT WINAPI filter_seeking_SetRate (IMediaSeeking *iface, double rate)
 
static HRESULT WINAPI filter_seeking_GetRate (IMediaSeeking *iface, double *rate)
 
static HRESULT WINAPI filter_seeking_GetPreroll (IMediaSeeking *iface, LONGLONG *preroll)
 
HRESULT filter_create (IUnknown *outer, void **out)
 

Variables

static const IEnumPinsVtbl enum_pins_vtbl
 
static const IMediaStreamFilterVtbl filter_vtbl
 
static const IMediaSeekingVtbl filter_seeking_vtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 21 of file filter.c.

Function Documentation

◆ enum_pins_AddRef()

static ULONG WINAPI enum_pins_AddRef ( IEnumPins *  iface)
static

Definition at line 60 of file filter.c.

61{
64 TRACE("%p increasing refcount to %lu.\n", enum_pins, refcount);
65 return refcount;
66}
#define InterlockedIncrement
Definition: armddk.h:53
static struct enum_pins * impl_from_IEnumPins(IEnumPins *iface)
Definition: filter.c:39
#define TRACE(s)
Definition: solgame.cpp:4
LONG refcount
Definition: filter.c:31
uint32_t ULONG
Definition: typedefs.h:59

◆ enum_pins_Clone()

static HRESULT WINAPI enum_pins_Clone ( IEnumPins *  iface,
IEnumPins **  out 
)
static

Definition at line 126 of file filter.c.

127{
128 struct enum_pins *enum_pins = impl_from_IEnumPins(iface);
129 struct enum_pins *object;
130 unsigned int i;
131
132 TRACE("iface %p, out %p.\n", iface, out);
133
134 if (!(object = calloc(1, sizeof(*object))))
135 return E_OUTOFMEMORY;
136
137 object->IEnumPins_iface.lpVtbl = &enum_pins_vtbl;
138 object->refcount = 1;
139 object->count = enum_pins->count;
140 object->index = enum_pins->index;
141 if (!(object->pins = malloc(enum_pins->count * sizeof(*object->pins))))
142 {
143 free(object);
144 return E_OUTOFMEMORY;
145 }
146 for (i = 0; i < enum_pins->count; ++i)
147 IPin_AddRef(object->pins[i] = enum_pins->pins[i]);
148
149 *out = &object->IEnumPins_iface;
150 return S_OK;
151}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
static const IEnumPinsVtbl enum_pins_vtbl
Definition: filter.c:37
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define S_OK
Definition: intsafe.h:52
#define calloc
Definition: rosglue.h:14
unsigned int index
Definition: filter.c:34
unsigned int count
Definition: filter.c:34
IPin ** pins
Definition: filter.c:33
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

◆ enum_pins_Next()

static HRESULT WINAPI enum_pins_Next ( IEnumPins *  iface,
ULONG  count,
IPin **  pins,
ULONG *  ret_count 
)
static

Definition at line 85 of file filter.c.

86{
88 unsigned int i;
89
90 TRACE("iface %p, count %lu, pins %p, ret_count %p.\n", iface, count, pins, ret_count);
91
92 if (!pins || (count > 1 && !ret_count))
93 return E_POINTER;
94
95 for (i = 0; i < count && enum_pins->index < enum_pins->count; ++i)
96 {
97 IPin_AddRef(pins[i] = enum_pins->pins[enum_pins->index]);
99 }
100
101 if (ret_count) *ret_count = i;
102 return i == count ? S_OK : S_FALSE;
103}
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define S_FALSE
Definition: winerror.h:3451
#define E_POINTER
Definition: winerror.h:3480

◆ enum_pins_QueryInterface()

static HRESULT WINAPI enum_pins_QueryInterface ( IEnumPins *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 44 of file filter.c.

45{
46 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
47
48 if (IsEqualGUID(iid, &IID_IUnknown) || IsEqualGUID(iid, &IID_IEnumPins))
49 {
50 IEnumPins_AddRef(iface);
51 *out = iface;
52 return S_OK;
53 }
54
55 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
56 *out = NULL;
57 return E_NOINTERFACE;
58}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
#define NULL
Definition: types.h:112
#define debugstr_guid
Definition: kernel32.h:35
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ enum_pins_Release()

static ULONG WINAPI enum_pins_Release ( IEnumPins *  iface)
static

Definition at line 68 of file filter.c.

69{
72 unsigned int i;
73
74 TRACE("%p decreasing refcount to %lu.\n", enum_pins, refcount);
75 if (!refcount)
76 {
77 for (i = 0; i < enum_pins->count; ++i)
78 IPin_Release(enum_pins->pins[i]);
81 }
82 return refcount;
83}
#define InterlockedDecrement
Definition: armddk.h:52

◆ enum_pins_Reset()

static HRESULT WINAPI enum_pins_Reset ( IEnumPins *  iface)
static

Definition at line 116 of file filter.c.

117{
118 struct enum_pins *enum_pins = impl_from_IEnumPins(iface);
119
120 TRACE("iface %p.\n", iface);
121
122 enum_pins->index = 0;
123 return S_OK;
124}

◆ enum_pins_Skip()

static HRESULT WINAPI enum_pins_Skip ( IEnumPins *  iface,
ULONG  count 
)
static

Definition at line 105 of file filter.c.

106{
107 struct enum_pins *enum_pins = impl_from_IEnumPins(iface);
108
109 TRACE("iface %p, count %lu.\n", iface, count);
110
112
113 return enum_pins->index >= enum_pins->count ? S_FALSE : S_OK;
114}

◆ filter_AddMediaStream()

static HRESULT WINAPI filter_AddMediaStream ( IMediaStreamFilter *  iface,
IAMMediaStream *  pAMMediaStream 
)
static

Definition at line 540 of file filter.c.

541{
544 HRESULT hr;
545
546 TRACE("(%p)->(%p)\n", iface, pAMMediaStream);
547
548 streams = realloc(This->streams, (This->nb_streams + 1) * sizeof(*streams));
549 if (!streams)
550 return E_OUTOFMEMORY;
551 This->streams = streams;
552
553 hr = IAMMediaStream_JoinFilter(pAMMediaStream, iface);
554 if (FAILED(hr))
555 return hr;
556
557 hr = IAMMediaStream_JoinFilterGraph(pAMMediaStream, This->graph);
558 if (FAILED(hr))
559 return hr;
560
561 This->streams[This->nb_streams] = pAMMediaStream;
562 This->nb_streams++;
563
564 IAMMediaStream_AddRef(pAMMediaStream);
565
566 return S_OK;
567}
#define realloc
Definition: debug_ros.c:6
HRESULT hr
Definition: delayimp.cpp:582
static struct filter * impl_from_IMediaStreamFilter(IMediaStreamFilter *iface)
Definition: filter.c:192
#define FAILED(hr)
Definition: intsafe.h:51
Definition: filter.c:165
IAMMediaStream ** streams
Definition: filter.c:175

◆ filter_AddRef()

static ULONG WINAPI filter_AddRef ( IMediaStreamFilter *  iface)
static

Definition at line 220 of file filter.c.

221{
224
225 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
226
227 return refcount;
228}
LONG refcount
Definition: filter.c:168

◆ filter_create()

HRESULT filter_create ( IUnknown *  outer,
void **  out 
)

Definition at line 1088 of file filter.c.

1089{
1090 struct filter *object;
1091
1092 TRACE("outer %p, out %p.\n", outer, out);
1093
1094 if (outer)
1095 return CLASS_E_NOAGGREGATION;
1096
1097 if (!(object = calloc(1, sizeof(*object))))
1098 return E_OUTOFMEMORY;
1099
1100 object->IMediaStreamFilter_iface.lpVtbl = &filter_vtbl;
1101 object->IMediaSeeking_iface.lpVtbl = &filter_seeking_vtbl;
1102 object->refcount = 1;
1103 list_init(&object->free_events);
1104 list_init(&object->used_events);
1106 object->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": MediaStreamFilter.cs");
1107
1108 TRACE("Created media stream filter %p.\n", object);
1109 *out = &object->IMediaStreamFilter_iface;
1110 return S_OK;
1111}
static void list_init(struct list_entry *head)
Definition: list.h:51
static const IMediaSeekingVtbl filter_seeking_vtbl
Definition: filter.c:1064
static const IMediaStreamFilterVtbl filter_vtbl
Definition: filter.c:824
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
Definition: sync.c:107
static IUnknown * outer
Definition: compobj.c:82
#define DWORD_PTR
Definition: treelist.c:76
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
Definition: winnt_old.h:1156

◆ filter_EndOfStream()

static HRESULT WINAPI filter_EndOfStream ( IMediaStreamFilter *  iface)
static

Definition at line 806 of file filter.c.

807{
809
810 TRACE("filter %p.\n", filter);
811
813
814 ++filter->eos_count;
815 if (filter->state == State_Running && filter->seekable_stream &&
818
820
821 return S_OK;
822}
static void send_ec_complete(struct filter *filter)
Definition: filter.c:272
long LONG
Definition: pedump.c:60
LONG eos_count
Definition: filter.c:181
FILTER_STATE state
Definition: filter.c:177
IAMMediaStream * seekable_stream
Definition: filter.c:176
ULONG nb_streams
Definition: filter.c:174
CRITICAL_SECTION cs
Definition: filter.c:169
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

◆ filter_EnumMediaStreams()

static HRESULT WINAPI filter_EnumMediaStreams ( IMediaStreamFilter *  iface,
LONG  index,
IMediaStream **  stream 
)
static

Definition at line 594 of file filter.c.

595{
597
598 TRACE("filter %p, index %ld, stream %p.\n", filter, index, stream);
599
600 if (index >= filter->nb_streams)
601 return S_FALSE;
602
603 if (!stream)
604 return E_POINTER;
605
606 IMediaStream_AddRef(*stream = (IMediaStream *)filter->streams[index]);
607 return S_OK;
608}
GLuint index
Definition: glext.h:6031
Definition: parse.h:23

◆ filter_EnumPins()

static HRESULT WINAPI filter_EnumPins ( IMediaStreamFilter *  iface,
IEnumPins **  enum_pins 
)
static

Definition at line 418 of file filter.c.

419{
421 struct enum_pins *object;
422 unsigned int i;
423
424 TRACE("iface %p, enum_pins %p.\n", iface, enum_pins);
425
426 if (!enum_pins)
427 return E_POINTER;
428
429 if (!(object = calloc(1, sizeof(*object))))
430 return E_OUTOFMEMORY;
431
433
434 object->IEnumPins_iface.lpVtbl = &enum_pins_vtbl;
435 object->refcount = 1;
436 object->count = filter->nb_streams;
437 object->index = 0;
438 if (!(object->pins = malloc(filter->nb_streams * sizeof(*object->pins))))
439 {
440 free(object);
442 return E_OUTOFMEMORY;
443 }
444 for (i = 0; i < filter->nb_streams; ++i)
445 {
446 if (FAILED(IAMMediaStream_QueryInterface(filter->streams[i], &IID_IPin, (void **)&object->pins[i])))
447 WARN("Stream %p does not support IPin.\n", filter->streams[i]);
448 }
449
451
452 *enum_pins = &object->IEnumPins_iface;
453 return S_OK;
454}
const GUID IID_IPin
Definition: pincontrol.cpp:15
IEnumPins IEnumPins_iface
Definition: filter.c:30

◆ filter_FindPin()

static HRESULT WINAPI filter_FindPin ( IMediaStreamFilter *  iface,
const WCHAR *  id,
IPin **  out 
)
static

Definition at line 456 of file filter.c.

457{
459 unsigned int i;
460 WCHAR *ret_id;
461 IPin *pin;
462
463 TRACE("iface %p, id %s, out %p.\n", iface, debugstr_w(id), out);
464
466
467 for (i = 0; i < filter->nb_streams; ++i)
468 {
469 if (FAILED(IAMMediaStream_QueryInterface(filter->streams[i], &IID_IPin, (void **)&pin)))
470 {
471 WARN("Stream %p does not support IPin.\n", filter->streams[i]);
472 continue;
473 }
474
475 if (SUCCEEDED(IPin_QueryId(pin, &ret_id)))
476 {
477 if (!wcscmp(id, ret_id))
478 {
479 CoTaskMemFree(ret_id);
480 *out = pin;
482 return S_OK;
483 }
484 CoTaskMemFree(ret_id);
485 }
486 IPin_Release(pin);
487 }
488
490
491 return VFW_E_NOT_FOUND;
492}
void WINAPI CoTaskMemFree(void *ptr)
Definition: malloc.c:389
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
Definition: wcs.c:1977
Definition: axcore.idl:92
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define debugstr_w
Definition: kernel32.h:32
short WCHAR
Definition: pedump.c:58
#define VFW_E_NOT_FOUND
Definition: vfwmsgs.h:61

◆ filter_Flush()

static HRESULT WINAPI filter_Flush ( IMediaStreamFilter *  iface,
BOOL  cancel_eos 
)
static

Definition at line 779 of file filter.c.

780{
782 struct event *event;
783
784 TRACE("filter %p, cancel_eos %d.\n", iface, cancel_eos);
785
787
789 {
790 if (!event->interrupted)
791 {
792 event->interrupted = TRUE;
793 IReferenceClock_Unadvise(filter->clock, event->cookie);
795 }
796 }
797
798 if (cancel_eos)
799 --filter->eos_count;
800
802
803 return S_OK;
804}
#define TRUE
Definition: types.h:120
uint32_t entry
Definition: isohybrid.c:63
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:236
Definition: filter.c:185
DWORD_PTR cookie
Definition: filter.c:188
HANDLE event
Definition: filter.c:187
BOOL interrupted
Definition: filter.c:189
struct list used_events
Definition: filter.c:180
IReferenceClock * clock
Definition: filter.c:171
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:669

◆ filter_GetClassID()

static HRESULT WINAPI filter_GetClassID ( IMediaStreamFilter *  iface,
CLSID *  clsid 
)
static

Definition at line 266 of file filter.c.

267{
268 *clsid = CLSID_MediaStreamFilter;
269 return S_OK;
270}
const CLSID * clsid
Definition: msctf.cpp:50

◆ filter_GetCurrentStreamTime()

static HRESULT WINAPI filter_GetCurrentStreamTime ( IMediaStreamFilter *  iface,
REFERENCE_TIME *  time 
)
static

Definition at line 697 of file filter.c.

698{
700
701 TRACE("filter %p, time %p.\n", filter, time);
702
703 if (!time)
704 return E_POINTER;
705
707
708 if (filter->state != State_Running || !filter->clock)
709 {
710 *time = 0;
712 return S_FALSE;
713 }
714
715 IReferenceClock_GetTime(filter->clock, time);
716
718
720
721 return S_OK;
722}
__u16 time
Definition: mkdosfs.c:8
REFERENCE_TIME start_time
Definition: filter.c:178

◆ filter_GetMediaStream()

static HRESULT WINAPI filter_GetMediaStream ( IMediaStreamFilter *  iface,
REFMSPID  idPurpose,
IMediaStream **  ppMediaStream 
)
static

Definition at line 569 of file filter.c.

570{
572 MSPID purpose_id;
573 unsigned int i;
574
575 TRACE("(%p)->(%s,%p)\n", iface, debugstr_guid(idPurpose), ppMediaStream);
576
577 if (!ppMediaStream)
578 return E_POINTER;
579
580 for (i = 0; i < This->nb_streams; i++)
581 {
582 IAMMediaStream_GetInformation(This->streams[i], &purpose_id, NULL);
583 if (IsEqualIID(&purpose_id, idPurpose))
584 {
585 *ppMediaStream = (IMediaStream *)This->streams[i];
586 IMediaStream_AddRef(*ppMediaStream);
587 return S_OK;
588 }
589 }
590
591 return MS_E_NOSTREAM;
592}
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ filter_GetState()

static HRESULT WINAPI filter_GetState ( IMediaStreamFilter *  iface,
DWORD  timeout,
FILTER_STATE *  state 
)
static

Definition at line 364 of file filter.c.

365{
367
368 TRACE("iface %p, timeout %lu, state %p.\n", iface, timeout, state);
369
370 if (!state)
371 return E_POINTER;
372
374
375 *state = filter->state;
376
378
379 return S_OK;
380}
static int state
Definition: maze.c:121
Definition: dhcpd.h:248

◆ filter_GetSyncSource()

static HRESULT WINAPI filter_GetSyncSource ( IMediaStreamFilter *  iface,
IReferenceClock **  clock 
)
static

Definition at line 401 of file filter.c.

402{
404
405 TRACE("iface %p, clock %p.\n", iface, clock);
406
408
409 if (filter->clock)
410 IReferenceClock_AddRef(filter->clock);
411 *clock = filter->clock;
412
414
415 return S_OK;
416}
_ACRTIMP clock_t __cdecl clock(void)
Definition: time.c:698

◆ filter_JoinFilterGraph()

static HRESULT WINAPI filter_JoinFilterGraph ( IMediaStreamFilter *  iface,
IFilterGraph *  graph,
const WCHAR *  name 
)
static

Definition at line 512 of file filter.c.

514{
516
517 TRACE("iface %p, graph %p, name.%s.\n", iface, graph, debugstr_w(name));
518
520
521 if (name)
523 else
524 filter->name[0] = 0;
525 filter->graph = graph;
526
528
529 return S_OK;
530}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define lstrcpynW
Definition: compat.h:738
IFilterGraph * graph
Definition: filter.c:173
WCHAR name[128]
Definition: filter.c:172
Definition: graph.c:32
Definition: name.c:39

◆ filter_Pause()

static HRESULT WINAPI filter_Pause ( IMediaStreamFilter *  iface)
static

Definition at line 329 of file filter.c.

330{
332
333 TRACE("iface %p.\n", iface);
334
336
337 set_state(filter, State_Paused);
338
340
341 return S_OK;
342}
static void set_state(struct filter *filter, FILTER_STATE state)
Definition: filter.c:288

◆ filter_QueryFilterInfo()

static HRESULT WINAPI filter_QueryFilterInfo ( IMediaStreamFilter *  iface,
FILTER_INFO *  info 
)
static

Definition at line 494 of file filter.c.

495{
497
498 TRACE("iface %p, info %p.\n", iface, info);
499
501
502 wcscpy(info->achName, filter->name);
503 if (filter->graph)
504 IFilterGraph_AddRef(filter->graph);
505 info->pGraph = filter->graph;
506
508
509 return S_OK;
510}
wcscpy

◆ filter_QueryInterface()

static HRESULT WINAPI filter_QueryInterface ( IMediaStreamFilter *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 197 of file filter.c.

198{
200
201 TRACE("filter %p, iid %s, out %p.\n", filter, debugstr_guid(iid), out);
202
203 *out = NULL;
204
205 if (IsEqualGUID(iid, &IID_IUnknown)
206 || IsEqualGUID(iid, &IID_IPersist)
207 || IsEqualGUID(iid, &IID_IMediaFilter)
209 || IsEqualGUID(iid, &IID_IMediaStreamFilter))
210 *out = iface;
211 else if (IsEqualGUID(iid, &IID_IMediaSeeking) && filter->seekable_stream)
213 else
214 return E_NOINTERFACE;
215
216 IUnknown_AddRef((IUnknown *)*out);
217 return S_OK;
218}
const GUID IID_IBaseFilter
const GUID IID_IPersist
Definition: proxy.cpp:14
IMediaSeeking IMediaSeeking_iface
Definition: filter.c:167

◆ filter_QueryVendorInfo()

static HRESULT WINAPI filter_QueryVendorInfo ( IMediaStreamFilter *  iface,
LPWSTR *  vendor_info 
)
static

Definition at line 532 of file filter.c.

533{
534 WARN("iface %p, vendor_info %p, stub!\n", iface, vendor_info);
535 return E_NOTIMPL;
536}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ filter_ReferenceTimeToStreamTime()

static HRESULT WINAPI filter_ReferenceTimeToStreamTime ( IMediaStreamFilter *  iface,
REFERENCE_TIME *  time 
)
static

Definition at line 676 of file filter.c.

677{
679
680 TRACE("filter %p, time %p.\n", filter, time);
681
683
684 if (!filter->clock)
685 {
687 return S_FALSE;
688 }
689
691
693
694 return S_OK;
695}

◆ filter_Release()

static ULONG WINAPI filter_Release ( IMediaStreamFilter *  iface)
static

Definition at line 230 of file filter.c.

231{
234 unsigned int i;
235
236 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
237
238 if (!refcount)
239 {
240 struct list *entry;
241
242 while ((entry = list_head(&filter->free_events)))
243 {
244 struct event *event = LIST_ENTRY(entry, struct event, entry);
247 free(event);
248 }
249 for (i = 0; i < filter->nb_streams; ++i)
250 {
251 IAMMediaStream_JoinFilter(filter->streams[i], NULL);
252 IAMMediaStream_Release(filter->streams[i]);
253 }
255 if (filter->clock)
256 IReferenceClock_Release(filter->clock);
257 if (filter->cs.DebugInfo)
258 filter->cs.DebugInfo->Spare[0] = 0;
260 free(filter);
261 }
262
263 return refcount;
264}
static void list_remove(struct list_entry *entry)
Definition: list.h:90
Definition: list.h:39
#define CloseHandle
Definition: compat.h:739
PRTL_CRITICAL_SECTION_DEBUG DebugInfo
Definition: rtltypes.h:1478
struct list free_events
Definition: filter.c:179
Definition: list.h:15
#define LIST_ENTRY(type)
Definition: queue.h:175
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)

◆ filter_Run()

static HRESULT WINAPI filter_Run ( IMediaStreamFilter *  iface,
REFERENCE_TIME  start 
)
static

Definition at line 344 of file filter.c.

345{
347
348 TRACE("iface %p, start %s.\n", iface, wine_dbgstr_longlong(start));
349
351
352 if (filter->state != State_Running && filter->seekable_stream
355
357 set_state(filter, State_Running);
358
360
361 return S_OK;
362}
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49
GLuint start
Definition: gl.h:1545

◆ filter_seeking_AddRef()

static ULONG WINAPI filter_seeking_AddRef ( IMediaSeeking *  iface)
static

Definition at line 863 of file filter.c.

864{
865 struct filter *filter = impl_from_IMediaSeeking(iface);
866 return IMediaStreamFilter_AddRef(&filter->IMediaStreamFilter_iface);
867}
static struct filter * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: filter.c:852
IMediaStreamFilter IMediaStreamFilter_iface
Definition: filter.c:166

◆ filter_seeking_CheckCapabilities()

static HRESULT WINAPI filter_seeking_CheckCapabilities ( IMediaSeeking *  iface,
DWORD *  capabilities 
)
static

Definition at line 882 of file filter.c.

883{
884 FIXME("iface %p, capabilities %p, stub!\n", iface, capabilities);
885
886 return E_NOTIMPL;
887}
#define FIXME(fmt,...)
Definition: precomp.h:53

◆ filter_seeking_ConvertTimeFormat()

static HRESULT WINAPI filter_seeking_ConvertTimeFormat ( IMediaSeeking *  iface,
LONGLONG *  target,
const GUID *  target_format,
LONGLONG  source,
const GUID *  source_format 
)
static

Definition at line 993 of file filter.c.

995{
996 FIXME("iface %p, target %p, target_format %s, source 0x%s, source_format %s, stub!\n", iface, target, debugstr_guid(target_format),
997 wine_dbgstr_longlong(source), debugstr_guid(source_format));
998
999 return E_NOTIMPL;
1000}
Definition: tools.h:99

◆ filter_seeking_GetAvailable()

static HRESULT WINAPI filter_seeking_GetAvailable ( IMediaSeeking *  iface,
LONGLONG *  earliest,
LONGLONG *  latest 
)
static

Definition at line 1036 of file filter.c.

1037{
1038 FIXME("iface %p, earliest %p, latest %p, stub!\n", iface, earliest, latest);
1039
1040 return E_NOTIMPL;
1041}

◆ filter_seeking_GetCapabilities()

static HRESULT WINAPI filter_seeking_GetCapabilities ( IMediaSeeking *  iface,
DWORD *  capabilities 
)
static

Definition at line 875 of file filter.c.

876{
877 FIXME("iface %p, capabilities %p, stub!\n", iface, capabilities);
878
879 return E_NOTIMPL;
880}

◆ filter_seeking_GetCurrentPosition()

static HRESULT WINAPI filter_seeking_GetCurrentPosition ( IMediaSeeking *  iface,
LONGLONG *  current 
)
static

Definition at line 986 of file filter.c.

987{
988 FIXME("iface %p, current %p, stub!\n", iface, current);
989
990 return E_NOTIMPL;
991}
struct task_struct * current
Definition: linux.c:32

◆ filter_seeking_GetDuration()

static HRESULT WINAPI filter_seeking_GetDuration ( IMediaSeeking *  iface,
LONGLONG *  duration 
)
static

Definition at line 940 of file filter.c.

941{
942 struct filter *filter = impl_from_IMediaSeeking(iface);
944 HRESULT hr;
945
946 TRACE("filter %p, duration %p.\n", filter, duration);
947
949
951
953
954 if (!seeking)
955 return E_NOTIMPL;
956
957 hr = IMediaSeeking_GetDuration(seeking, duration);
958 IMediaSeeking_Release(seeking);
959
960 return hr;
961}
static IMediaSeeking * get_seeking(IAMMediaStream *stream)
Definition: filter.c:610
IMediaSeeking * seeking
Definition: filtergraph.c:76

◆ filter_seeking_GetPositions()

static HRESULT WINAPI filter_seeking_GetPositions ( IMediaSeeking *  iface,
LONGLONG *  current,
LONGLONG *  stop 
)
static

Definition at line 1029 of file filter.c.

1030{
1031 FIXME("iface %p, current %p, stop %p, stub!\n", iface, current, stop);
1032
1033 return E_NOTIMPL;
1034}

◆ filter_seeking_GetPreroll()

static HRESULT WINAPI filter_seeking_GetPreroll ( IMediaSeeking *  iface,
LONGLONG *  preroll 
)
static

Definition at line 1057 of file filter.c.

1058{
1059 FIXME("iface %p, preroll %p, stub!\n", iface, preroll);
1060
1061 return E_NOTIMPL;
1062}

◆ filter_seeking_GetRate()

static HRESULT WINAPI filter_seeking_GetRate ( IMediaSeeking *  iface,
double *  rate 
)
static

Definition at line 1050 of file filter.c.

1051{
1052 FIXME("iface %p, rate %p, stub!\n", iface, rate);
1053
1054 return E_NOTIMPL;
1055}
unsigned int rate
Definition: audiorecord.c:87

◆ filter_seeking_GetStopPosition()

static HRESULT WINAPI filter_seeking_GetStopPosition ( IMediaSeeking *  iface,
LONGLONG *  stop 
)
static

Definition at line 963 of file filter.c.

964{
965 struct filter *filter = impl_from_IMediaSeeking(iface);
967 HRESULT hr;
968
969 TRACE("filter %p, stop %p.\n", filter, stop);
970
972
974
976
977 if (!seeking)
978 return E_NOTIMPL;
979
980 hr = IMediaSeeking_GetStopPosition(seeking, stop);
981 IMediaSeeking_Release(seeking);
982
983 return hr;
984}

◆ filter_seeking_GetTimeFormat()

static HRESULT WINAPI filter_seeking_GetTimeFormat ( IMediaSeeking *  iface,
GUID *  format 
)
static

Definition at line 919 of file filter.c.

920{
921 FIXME("iface %p, format %p, stub!\n", iface, format);
922
923 return E_NOTIMPL;
924}

◆ filter_seeking_IsFormatSupported()

static HRESULT WINAPI filter_seeking_IsFormatSupported ( IMediaSeeking *  iface,
const GUID *  format 
)
static

Definition at line 889 of file filter.c.

890{
891 struct filter *filter = impl_from_IMediaSeeking(iface);
893 HRESULT hr;
894
895 TRACE("filter %p, format %s.\n", filter, debugstr_guid(format));
896
898
900
902
903 if (!seeking)
904 return E_NOTIMPL;
905
906 hr = IMediaSeeking_IsFormatSupported(seeking, format);
907 IMediaSeeking_Release(seeking);
908
909 return hr;
910}

◆ filter_seeking_IsUsingTimeFormat()

static HRESULT WINAPI filter_seeking_IsUsingTimeFormat ( IMediaSeeking *  iface,
const GUID *  format 
)
static

Definition at line 926 of file filter.c.

927{
928 FIXME("iface %p, format %s, stub!\n", iface, debugstr_guid(format));
929
930 return E_NOTIMPL;
931}

◆ filter_seeking_QueryInterface()

static HRESULT WINAPI filter_seeking_QueryInterface ( IMediaSeeking *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 857 of file filter.c.

858{
859 struct filter *filter = impl_from_IMediaSeeking(iface);
860 return IMediaStreamFilter_QueryInterface(&filter->IMediaStreamFilter_iface, iid, out);
861}

◆ filter_seeking_QueryPreferredFormat()

static HRESULT WINAPI filter_seeking_QueryPreferredFormat ( IMediaSeeking *  iface,
GUID *  format 
)
static

Definition at line 912 of file filter.c.

913{
914 FIXME("iface %p, format %p, stub!\n", iface, format);
915
916 return E_NOTIMPL;
917}

◆ filter_seeking_Release()

static ULONG WINAPI filter_seeking_Release ( IMediaSeeking *  iface)
static

Definition at line 869 of file filter.c.

870{
871 struct filter *filter = impl_from_IMediaSeeking(iface);
872 return IMediaStreamFilter_Release(&filter->IMediaStreamFilter_iface);
873}

◆ filter_seeking_SetPositions()

static HRESULT WINAPI filter_seeking_SetPositions ( IMediaSeeking *  iface,
LONGLONG *  current_ptr,
DWORD  current_flags,
LONGLONG *  stop_ptr,
DWORD  stop_flags 
)
static

Definition at line 1002 of file filter.c.

1004{
1005 struct filter *filter = impl_from_IMediaSeeking(iface);
1007 HRESULT hr;
1008
1009 TRACE("iface %p, current %s, current_flags %#lx, stop %s, stop_flags %#lx.\n", iface,
1010 current_ptr ? wine_dbgstr_longlong(*current_ptr) : "<null>", current_flags,
1011 stop_ptr ? wine_dbgstr_longlong(*stop_ptr): "<null>", stop_flags);
1012
1014
1016
1018
1019 if (!seeking)
1020 return E_NOTIMPL;
1021
1022 hr = IMediaSeeking_SetPositions(seeking, current_ptr, current_flags, stop_ptr, stop_flags);
1023
1024 IMediaSeeking_Release(seeking);
1025
1026 return hr;
1027}

◆ filter_seeking_SetRate()

static HRESULT WINAPI filter_seeking_SetRate ( IMediaSeeking *  iface,
double  rate 
)
static

Definition at line 1043 of file filter.c.

1044{
1045 FIXME("iface %p, rate %f, stub!\n", iface, rate);
1046
1047 return E_NOTIMPL;
1048}

◆ filter_seeking_SetTimeFormat()

static HRESULT WINAPI filter_seeking_SetTimeFormat ( IMediaSeeking *  iface,
const GUID *  format 
)
static

Definition at line 933 of file filter.c.

934{
935 FIXME("iface %p, format %s, stub!\n", iface, debugstr_guid(format));
936
937 return E_NOTIMPL;
938}

◆ filter_SetSyncSource()

static HRESULT WINAPI filter_SetSyncSource ( IMediaStreamFilter *  iface,
IReferenceClock *  clock 
)
static

Definition at line 382 of file filter.c.

383{
385
386 TRACE("iface %p, clock %p.\n", iface, clock);
387
389
390 if (clock)
391 IReferenceClock_AddRef(clock);
392 if (filter->clock)
393 IReferenceClock_Release(filter->clock);
394 filter->clock = clock;
395
397
398 return S_OK;
399}

◆ filter_Stop()

static HRESULT WINAPI filter_Stop ( IMediaStreamFilter *  iface)
static

Definition at line 300 of file filter.c.

301{
303 struct event *event;
304
305 TRACE("iface %p.\n", iface);
306
308
309 if (filter->state != State_Stopped)
310 filter->eos_count = 0;
311
312 set_state(filter, State_Stopped);
313
315 {
316 if (!event->interrupted)
317 {
318 event->interrupted = TRUE;
319 IReferenceClock_Unadvise(filter->clock, event->cookie);
321 }
322 }
323
325
326 return S_OK;
327}

◆ filter_SupportSeeking()

static HRESULT WINAPI filter_SupportSeeking ( IMediaStreamFilter *  iface,
BOOL  renderer 
)
static

Definition at line 635 of file filter.c.

636{
638 unsigned int i;
639
640 TRACE("filter %p, renderer %d\n", iface, renderer);
641
642 if (!renderer)
643 FIXME("Non-renderer filter support is not yet implemented.\n");
644
646
648 {
651 }
652
653 for (i = 0; i < filter->nb_streams; ++i)
654 {
656 LONGLONG duration;
657
658 if (!seeking)
659 continue;
660
661 if (SUCCEEDED(IMediaSeeking_GetDuration(seeking, &duration)))
662 {
664 IMediaSeeking_Release(seeking);
666 return S_OK;
667 }
668
669 IMediaSeeking_Release(seeking);
670 }
671
673 return E_NOINTERFACE;
674}
int64_t LONGLONG
Definition: typedefs.h:68
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210
#define ERROR_ALREADY_INITIALIZED
Definition: winerror.h:1079

◆ filter_WaitUntil()

static HRESULT WINAPI filter_WaitUntil ( IMediaStreamFilter *  iface,
REFERENCE_TIME  time 
)
static

Definition at line 724 of file filter.c.

725{
727 struct event *event;
728 struct list *entry;
729 HRESULT hr;
730
731 TRACE("filter %p, time %s.\n", iface, wine_dbgstr_longlong(time));
732
734
735 if (!filter->clock)
736 {
738 return E_FAIL;
739 }
740
742 {
744 event = LIST_ENTRY(entry, struct event, entry);
745 }
746 else
747 {
748 event = calloc(1, sizeof(struct event));
749 event->event = CreateEventW(NULL, FALSE, FALSE, NULL);
750
751 entry = &event->entry;
752 }
753
754 hr = IReferenceClock_AdviseTime(filter->clock, time, filter->start_time, (HEVENT)event->event, &event->cookie);
755 if (FAILED(hr))
756 {
759 return hr;
760 }
761
762 event->interrupted = FALSE;
764
768
769 hr = event->interrupted ? S_FALSE : S_OK;
770
773
775
776 return hr;
777}
DWORD_PTR HEVENT
Definition: axcore.idl:61
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
Definition: list.h:83
#define E_FAIL
Definition: ddrawi.h:102
#define FALSE
Definition: types.h:117
#define INFINITE
Definition: serial.h:102
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:587

◆ get_seeking()

static IMediaSeeking * get_seeking ( IAMMediaStream *  stream)
static

Definition at line 610 of file filter.c.

611{
612 IMediaSeeking *seeking;
613 IPin *pin, *peer;
614 HRESULT hr;
615
616 if (FAILED(IAMMediaStream_QueryInterface(stream, &IID_IPin, (void **)&pin)))
617 {
618 WARN("Stream %p does not support IPin.\n", stream);
619 return NULL;
620 }
621
622 hr = IPin_ConnectedTo(pin, &peer);
623 IPin_Release(pin);
624 if (FAILED(hr))
625 return NULL;
626
627 hr = IPin_QueryInterface(peer, &IID_IMediaSeeking, (void **)&seeking);
628 IPin_Release(peer);
629 if (FAILED(hr))
630 return NULL;
631
632 return seeking;
633}

Referenced by filter_seeking_GetDuration(), filter_seeking_GetStopPosition(), filter_seeking_IsFormatSupported(), filter_seeking_SetPositions(), and filter_SupportSeeking().

◆ impl_from_IEnumPins()

static struct enum_pins * impl_from_IEnumPins ( IEnumPins *  iface)
static

Definition at line 39 of file filter.c.

40{
41 return CONTAINING_RECORD(iface, struct enum_pins, IEnumPins_iface);
42}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by enum_pins_AddRef(), enum_pins_Clone(), enum_pins_Next(), enum_pins_Release(), enum_pins_Reset(), and enum_pins_Skip().

◆ impl_from_IMediaSeeking()

static struct filter * impl_from_IMediaSeeking ( IMediaSeeking *  iface)
inlinestatic

◆ impl_from_IMediaStreamFilter()

◆ send_ec_complete()

static void send_ec_complete ( struct filter *  filter)
static

Definition at line 272 of file filter.c.

273{
274 IMediaEventSink *event_sink;
275
276 if (!filter->graph)
277 return;
278
279 if (FAILED(IFilterGraph_QueryInterface(filter->graph, &IID_IMediaEventSink, (void **)&event_sink)))
280 return;
281
282 IMediaEventSink_Notify(event_sink, EC_COMPLETE, S_OK,
284
285 IMediaEventSink_Release(event_sink);
286}
#define EC_COMPLETE
Definition: evcode.h:17
__int3264 LONG_PTR
Definition: mstsclib_h.h:276

Referenced by filter_EndOfStream(), and filter_Run().

◆ set_state()

static void set_state ( struct filter *  filter,
FILTER_STATE  state 
)
static

Definition at line 288 of file filter.c.

289{
290 if (filter->state != state)
291 {
292 ULONG i;
293
294 for (i = 0; i < filter->nb_streams; ++i)
295 IAMMediaStream_SetState(filter->streams[i], state);
296 filter->state = state;
297 }
298}

Referenced by filter_Pause(), filter_Run(), and filter_Stop().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( quartz  )

Variable Documentation

◆ enum_pins_vtbl

static const IEnumPinsVtbl enum_pins_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI enum_pins_Next(IEnumPins *iface, ULONG count, IPin **pins, ULONG *ret_count)
Definition: filter.c:85
static HRESULT WINAPI enum_pins_Reset(IEnumPins *iface)
Definition: filter.c:116
static HRESULT WINAPI enum_pins_Skip(IEnumPins *iface, ULONG count)
Definition: filter.c:105
static HRESULT WINAPI enum_pins_Clone(IEnumPins *iface, IEnumPins **out)
Definition: filter.c:126
static ULONG WINAPI enum_pins_AddRef(IEnumPins *iface)
Definition: filter.c:60
static HRESULT WINAPI enum_pins_QueryInterface(IEnumPins *iface, REFIID iid, void **out)
Definition: filter.c:44
static ULONG WINAPI enum_pins_Release(IEnumPins *iface)
Definition: filter.c:68

Definition at line 37 of file filter.c.

Referenced by enum_pins_Clone(), enum_pins_create(), and filter_EnumPins().

◆ filter_seeking_vtbl

const IMediaSeekingVtbl filter_seeking_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI filter_seeking_SetPositions(IMediaSeeking *iface, LONGLONG *current_ptr, DWORD current_flags, LONGLONG *stop_ptr, DWORD stop_flags)
Definition: filter.c:1002
static HRESULT WINAPI filter_seeking_SetTimeFormat(IMediaSeeking *iface, const GUID *format)
Definition: filter.c:933
static HRESULT WINAPI filter_seeking_GetAvailable(IMediaSeeking *iface, LONGLONG *earliest, LONGLONG *latest)
Definition: filter.c:1036
static HRESULT WINAPI filter_seeking_QueryInterface(IMediaSeeking *iface, REFIID iid, void **out)
Definition: filter.c:857
static HRESULT WINAPI filter_seeking_IsFormatSupported(IMediaSeeking *iface, const GUID *format)
Definition: filter.c:889
static HRESULT WINAPI filter_seeking_GetDuration(IMediaSeeking *iface, LONGLONG *duration)
Definition: filter.c:940
static HRESULT WINAPI filter_seeking_GetPositions(IMediaSeeking *iface, LONGLONG *current, LONGLONG *stop)
Definition: filter.c:1029
static HRESULT WINAPI filter_seeking_IsUsingTimeFormat(IMediaSeeking *iface, const GUID *format)
Definition: filter.c:926
static HRESULT WINAPI filter_seeking_GetRate(IMediaSeeking *iface, double *rate)
Definition: filter.c:1050
static ULONG WINAPI filter_seeking_AddRef(IMediaSeeking *iface)
Definition: filter.c:863
static HRESULT WINAPI filter_seeking_SetRate(IMediaSeeking *iface, double rate)
Definition: filter.c:1043
static HRESULT WINAPI filter_seeking_QueryPreferredFormat(IMediaSeeking *iface, GUID *format)
Definition: filter.c:912
static HRESULT WINAPI filter_seeking_CheckCapabilities(IMediaSeeking *iface, DWORD *capabilities)
Definition: filter.c:882
static HRESULT WINAPI filter_seeking_GetTimeFormat(IMediaSeeking *iface, GUID *format)
Definition: filter.c:919
static HRESULT WINAPI filter_seeking_GetStopPosition(IMediaSeeking *iface, LONGLONG *stop)
Definition: filter.c:963
static HRESULT WINAPI filter_seeking_GetPreroll(IMediaSeeking *iface, LONGLONG *preroll)
Definition: filter.c:1057
static HRESULT WINAPI filter_seeking_ConvertTimeFormat(IMediaSeeking *iface, LONGLONG *target, const GUID *target_format, LONGLONG source, const GUID *source_format)
Definition: filter.c:993
static HRESULT WINAPI filter_seeking_GetCurrentPosition(IMediaSeeking *iface, LONGLONG *current)
Definition: filter.c:986
static HRESULT WINAPI filter_seeking_GetCapabilities(IMediaSeeking *iface, DWORD *capabilities)
Definition: filter.c:875
static ULONG WINAPI filter_seeking_Release(IMediaSeeking *iface)
Definition: filter.c:869

Definition at line 1064 of file filter.c.

Referenced by filter_create().

◆ filter_vtbl

const IMediaStreamFilterVtbl filter_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI filter_EndOfStream(IMediaStreamFilter *iface)
Definition: filter.c:806
static HRESULT WINAPI filter_Run(IMediaStreamFilter *iface, REFERENCE_TIME start)
Definition: filter.c:344
static HRESULT WINAPI filter_QueryVendorInfo(IMediaStreamFilter *iface, LPWSTR *vendor_info)
Definition: filter.c:532
static HRESULT WINAPI filter_EnumMediaStreams(IMediaStreamFilter *iface, LONG index, IMediaStream **stream)
Definition: filter.c:594
static HRESULT WINAPI filter_Stop(IMediaStreamFilter *iface)
Definition: filter.c:300
static ULONG WINAPI filter_AddRef(IMediaStreamFilter *iface)
Definition: filter.c:220
static HRESULT WINAPI filter_ReferenceTimeToStreamTime(IMediaStreamFilter *iface, REFERENCE_TIME *time)
Definition: filter.c:676
static HRESULT WINAPI filter_SetSyncSource(IMediaStreamFilter *iface, IReferenceClock *clock)
Definition: filter.c:382
static HRESULT WINAPI filter_FindPin(IMediaStreamFilter *iface, const WCHAR *id, IPin **out)
Definition: filter.c:456
static HRESULT WINAPI filter_AddMediaStream(IMediaStreamFilter *iface, IAMMediaStream *pAMMediaStream)
Definition: filter.c:540
static HRESULT WINAPI filter_Flush(IMediaStreamFilter *iface, BOOL cancel_eos)
Definition: filter.c:779
static HRESULT WINAPI filter_WaitUntil(IMediaStreamFilter *iface, REFERENCE_TIME time)
Definition: filter.c:724
static HRESULT WINAPI filter_JoinFilterGraph(IMediaStreamFilter *iface, IFilterGraph *graph, const WCHAR *name)
Definition: filter.c:512
static HRESULT WINAPI filter_EnumPins(IMediaStreamFilter *iface, IEnumPins **enum_pins)
Definition: filter.c:418
static HRESULT WINAPI filter_SupportSeeking(IMediaStreamFilter *iface, BOOL renderer)
Definition: filter.c:635
static HRESULT WINAPI filter_GetCurrentStreamTime(IMediaStreamFilter *iface, REFERENCE_TIME *time)
Definition: filter.c:697
static HRESULT WINAPI filter_GetClassID(IMediaStreamFilter *iface, CLSID *clsid)
Definition: filter.c:266
static HRESULT WINAPI filter_QueryInterface(IMediaStreamFilter *iface, REFIID iid, void **out)
Definition: filter.c:197
static ULONG WINAPI filter_Release(IMediaStreamFilter *iface)
Definition: filter.c:230
static HRESULT WINAPI filter_QueryFilterInfo(IMediaStreamFilter *iface, FILTER_INFO *info)
Definition: filter.c:494
static HRESULT WINAPI filter_GetMediaStream(IMediaStreamFilter *iface, REFMSPID idPurpose, IMediaStream **ppMediaStream)
Definition: filter.c:569
static HRESULT WINAPI filter_Pause(IMediaStreamFilter *iface)
Definition: filter.c:329
static HRESULT WINAPI filter_GetSyncSource(IMediaStreamFilter *iface, IReferenceClock **clock)
Definition: filter.c:401
static HRESULT WINAPI filter_GetState(IMediaStreamFilter *iface, DWORD timeout, FILTER_STATE *state)
Definition: filter.c:364

Definition at line 824 of file filter.c.

Referenced by filter_create(), and strmbase_filter_init().