~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/dlls/amstream/mediastreamfilter.c

Version: ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  1 /*
  2  * Implementation of MediaStream Filter
  3  *
  4  * Copyright 2008 Christian Costa
  5  *
  6  * This file contains the (internal) driver registration functions,
  7  * driver enumeration APIs and DirectDraw creation functions.
  8  *
  9  * This library is free software; you can redistribute it and/or
 10  * modify it under the terms of the GNU Lesser General Public
 11  * License as published by the Free Software Foundation; either
 12  * version 2.1 of the License, or (at your option) any later version.
 13  *
 14  * This library is distributed in the hope that it will be useful,
 15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 17  * Lesser General Public License for more details.
 18  *
 19  * You should have received a copy of the GNU Lesser General Public
 20  * License along with this library; if not, write to the Free Software
 21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 22  */
 23 
 24 #include "wine/debug.h"
 25 
 26 #define COBJMACROS
 27 
 28 #include "winbase.h"
 29 #include "wingdi.h"
 30 
 31 #include "amstream_private.h"
 32 #include "amstream.h"
 33 
 34 #include "ddstream.h"
 35 
 36 WINE_DEFAULT_DEBUG_CHANNEL(amstream);
 37 
 38 typedef struct {
 39     IMediaStreamFilter lpVtbl;
 40     LONG ref;
 41     CRITICAL_SECTION csFilter;
 42     FILTER_STATE state;
 43     REFERENCE_TIME rtStreamStart;
 44     IReferenceClock * pClock;
 45     FILTER_INFO filterInfo;
 46 } IMediaStreamFilterImpl;
 47 
 48 static const struct IMediaStreamFilterVtbl MediaStreamFilter_Vtbl;
 49 
 50 HRESULT MediaStreamFilter_create(IUnknown *pUnkOuter, LPVOID *ppObj)
 51 {
 52     IMediaStreamFilterImpl* object;
 53 
 54     TRACE("(%p,%p)\n", pUnkOuter, ppObj);
 55 
 56     if( pUnkOuter )
 57         return CLASS_E_NOAGGREGATION;
 58 
 59     object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IMediaStreamFilterImpl));
 60     if (!object)
 61     {
 62         ERR("Out of memory\n");
 63         return E_OUTOFMEMORY;
 64     }
 65 
 66     object->lpVtbl.lpVtbl = &MediaStreamFilter_Vtbl;
 67     object->ref = 1;
 68 
 69     *ppObj = object;
 70 
 71     return S_OK;
 72 }
 73 
 74 /*** IUnknown methods ***/
 75 
 76 static HRESULT WINAPI MediaStreamFilterImpl_QueryInterface(IMediaStreamFilter * iface, REFIID riid, LPVOID * ppv)
 77 {
 78     IMediaStreamFilterImpl *This = (IMediaStreamFilterImpl *)iface;
 79 
 80     TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppv);
 81 
 82     *ppv = NULL;
 83 
 84     if (IsEqualIID(riid, &IID_IUnknown))
 85         *ppv = This;
 86     else if (IsEqualIID(riid, &IID_IPersist))
 87         *ppv = This;
 88     else if (IsEqualIID(riid, &IID_IMediaFilter))
 89         *ppv = This;
 90     else if (IsEqualIID(riid, &IID_IBaseFilter))
 91         *ppv = This;
 92     else if (IsEqualIID(riid, &IID_IMediaStreamFilter))
 93         *ppv = This;
 94 
 95     if (*ppv)
 96     {
 97         IUnknown_AddRef((IUnknown *)(*ppv));
 98         return S_OK;
 99     }
100 
101     return E_NOINTERFACE;
102 }
103 
104 static ULONG WINAPI MediaStreamFilterImpl_AddRef(IMediaStreamFilter * iface)
105 {
106     IMediaStreamFilterImpl *This = (IMediaStreamFilterImpl *)iface;
107     ULONG refCount = InterlockedIncrement(&This->ref);
108 
109     TRACE("(%p)->() AddRef from %d\n", iface, refCount - 1);
110 
111     return refCount;
112 }
113 
114 static ULONG WINAPI MediaStreamFilterImpl_Release(IMediaStreamFilter * iface)
115 {
116     IMediaStreamFilterImpl *This = (IMediaStreamFilterImpl *)iface;
117     ULONG refCount = InterlockedDecrement(&This->ref);
118 
119     TRACE("(%p)->() Release from %d\n", iface, refCount + 1);
120 
121     if (!refCount)
122     {
123         This->lpVtbl.lpVtbl = NULL;
124         HeapFree(GetProcessHeap(), 0, This);
125     }
126 
127     return refCount;
128 }
129 
130 /*** IPersist methods ***/
131 
132 static HRESULT WINAPI MediaStreamFilterImpl_GetClassID(IMediaStreamFilter * iface, CLSID * pClsid)
133 {
134     TRACE("(%p)->(%p)\n", iface, pClsid);
135 
136     *pClsid = CLSID_MediaStreamFilter;
137 
138     return S_OK;
139 }
140 
141 /*** IMediaFilter methods ***/
142 
143 static HRESULT WINAPI MediaStreamFilterImpl_Stop(IMediaStreamFilter * iface)
144 {
145     FIXME("(%p)->(): Stub!\n", iface);
146 
147     return E_NOTIMPL;
148 }
149 
150 static HRESULT WINAPI MediaStreamFilterImpl_Pause(IMediaStreamFilter * iface)
151 {
152     FIXME("(%p)->(): Stub!\n", iface);
153 
154     return E_NOTIMPL;
155 }
156 
157 static HRESULT WINAPI MediaStreamFilterImpl_Run(IMediaStreamFilter * iface, REFERENCE_TIME tStart)
158 {
159     FIXME("(%p)->(%s): Stub!\n", iface, wine_dbgstr_longlong(tStart));
160 
161     return E_NOTIMPL;
162 }
163 
164 static HRESULT WINAPI MediaStreamFilterImpl_GetState(IMediaStreamFilter * iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState)
165 {
166     FIXME("(%p)->(%d,%p): Stub!\n", iface, dwMilliSecsTimeout, pState);
167 
168     return E_NOTIMPL;
169 }
170 
171 static HRESULT WINAPI MediaStreamFilterImpl_SetSyncSource(IMediaStreamFilter * iface, IReferenceClock *pClock)
172 {
173     TRACE("(%p)->(%p): Stub!\n", iface, pClock);
174 
175     return E_NOTIMPL;
176 }
177 
178 static HRESULT WINAPI MediaStreamFilterImpl_GetSyncSource(IMediaStreamFilter * iface, IReferenceClock **ppClock)
179 {
180     FIXME("(%p)->(%p): Stub!\n", iface, ppClock);
181 
182     return E_NOTIMPL;
183 }
184 
185 /*** IBaseFilter methods ***/
186 
187 static HRESULT WINAPI MediaStreamFilterImpl_EnumPins(IMediaStreamFilter * iface, IEnumPins **ppEnum)
188 {
189     FIXME("(%p)->(%p): Stub!\n", iface, ppEnum);
190 
191     return E_NOTIMPL;
192 }
193 
194 static HRESULT WINAPI MediaStreamFilterImpl_FindPin(IMediaStreamFilter * iface, LPCWSTR Id, IPin **ppPin)
195 {
196     FIXME("(%p)->(%s,%p): Stub!\n", iface, debugstr_w(Id), ppPin);
197 
198     return E_NOTIMPL;
199 }
200 
201 static HRESULT WINAPI MediaStreamFilterImpl_QueryFilterInfo(IMediaStreamFilter * iface, FILTER_INFO *pInfo)
202 {
203     FIXME("(%p)->(%p): Stub!\n", iface, pInfo);
204 
205     return E_NOTIMPL;
206 }
207 
208 static HRESULT WINAPI MediaStreamFilterImpl_JoinFilterGraph(IMediaStreamFilter * iface, IFilterGraph *pGraph, LPCWSTR pName)
209 {
210     FIXME("(%p)->(%p, %s): Stub!\n", iface, pGraph, debugstr_w(pName));
211 
212     return E_NOTIMPL;
213 }
214 
215 static HRESULT WINAPI MediaStreamFilterImpl_QueryVendorInfo(IMediaStreamFilter * iface, LPWSTR *pVendorInfo)
216 {
217     FIXME("(%p)->(%p): Stub!\n", iface, pVendorInfo);
218 
219     return E_NOTIMPL;
220 }
221 
222 /*** IMediaStreamFilter methods ***/
223 
224 static HRESULT WINAPI MediaStreamFilterImpl_AddMediaStream(IMediaStreamFilter* iface, IAMMediaStream *pAMMediaStream)
225 {
226     FIXME("(%p)->(%p): Stub!\n", iface, pAMMediaStream);
227 
228     return E_NOTIMPL;
229 }
230 
231 static HRESULT WINAPI MediaStreamFilterImpl_GetMediaStream(IMediaStreamFilter* iface, REFMSPID idPurpose, IMediaStream **ppMediaStream)
232 {
233     FIXME("(%p)->(%s,%p): Stub!\n", iface, debugstr_guid(idPurpose), ppMediaStream);
234 
235     return E_NOTIMPL;
236 }
237 
238 static HRESULT WINAPI MediaStreamFilterImpl_EnumMediaStreams(IMediaStreamFilter* iface, LONG Index, IMediaStream **ppMediaStream)
239 {
240     FIXME("(%p)->(%d,%p): Stub!\n", iface, Index, ppMediaStream);
241 
242     return E_NOTIMPL;
243 }
244 
245 static HRESULT WINAPI MediaStreamFilterImpl_SupportSeeking(IMediaStreamFilter* iface, BOOL bRenderer)
246 {
247     FIXME("(%p)->(%d): Stub!\n", iface, bRenderer);
248 
249     return E_NOTIMPL;
250 }
251 
252 static HRESULT WINAPI MediaStreamFilterImpl_ReferenceTimeToStreamTime(IMediaStreamFilter* iface, REFERENCE_TIME *pTime)
253 {
254     FIXME("(%p)->(%p): Stub!\n", iface, pTime);
255 
256     return E_NOTIMPL;
257 }
258 
259 static HRESULT WINAPI MediaStreamFilterImpl_GetCurrentStreamTime(IMediaStreamFilter* iface, REFERENCE_TIME *pCurrentStreamTime)
260 {
261     FIXME("(%p)->(%p): Stub!\n", iface, pCurrentStreamTime);
262 
263     return E_NOTIMPL;
264 }
265 
266 static HRESULT WINAPI MediaStreamFilterImpl_WaitUntil(IMediaStreamFilter* iface, REFERENCE_TIME WaitStreamTime)
267 {
268     FIXME("(%p)->(%s): Stub!\n", iface, wine_dbgstr_longlong(WaitStreamTime));
269 
270     return E_NOTIMPL;
271 }
272 
273 static HRESULT WINAPI MediaStreamFilterImpl_Flush(IMediaStreamFilter* iface, BOOL bCancelEOS)
274 {
275     FIXME("(%p)->(%d): Stub!\n", iface, bCancelEOS);
276 
277     return E_NOTIMPL;
278 }
279 
280 static HRESULT WINAPI MediaStreamFilterImpl_EndOfStream(IMediaStreamFilter* iface)
281 {
282     FIXME("(%p)->(): Stub!\n",  iface);
283 
284     return E_NOTIMPL;
285 }
286 
287 static const IMediaStreamFilterVtbl MediaStreamFilter_Vtbl =
288 {
289     MediaStreamFilterImpl_QueryInterface,
290     MediaStreamFilterImpl_AddRef,
291     MediaStreamFilterImpl_Release,
292     MediaStreamFilterImpl_GetClassID,
293     MediaStreamFilterImpl_Stop,
294     MediaStreamFilterImpl_Pause,
295     MediaStreamFilterImpl_Run,
296     MediaStreamFilterImpl_GetState,
297     MediaStreamFilterImpl_SetSyncSource,
298     MediaStreamFilterImpl_GetSyncSource,
299     MediaStreamFilterImpl_EnumPins,
300     MediaStreamFilterImpl_FindPin,
301     MediaStreamFilterImpl_QueryFilterInfo,
302     MediaStreamFilterImpl_JoinFilterGraph,
303     MediaStreamFilterImpl_QueryVendorInfo,
304     MediaStreamFilterImpl_AddMediaStream,
305     MediaStreamFilterImpl_GetMediaStream,
306     MediaStreamFilterImpl_EnumMediaStreams,
307     MediaStreamFilterImpl_SupportSeeking,
308     MediaStreamFilterImpl_ReferenceTimeToStreamTime,
309     MediaStreamFilterImpl_GetCurrentStreamTime,
310     MediaStreamFilterImpl_WaitUntil,
311     MediaStreamFilterImpl_Flush,
312     MediaStreamFilterImpl_EndOfStream
313 };
314 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.