Module: wine Branch: master Commit: 8d9655b819cccef2ac2cf4a744351910deb2e253 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8d9655b819cccef2ac2cf4a744...
Author: Christian Costa titan.costa@gmail.com Date: Wed Mar 14 21:51:27 2012 +0100
amstream: Retrieve some interfaces needed to control the stream.
---
dlls/amstream/amstream.c | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/dlls/amstream/amstream.c b/dlls/amstream/amstream.c index 2f64689..516f2ba 100644 --- a/dlls/amstream/amstream.c +++ b/dlls/amstream/amstream.c @@ -35,6 +35,8 @@ typedef struct { IAMMultiMediaStream IAMMultiMediaStream_iface; LONG ref; IGraphBuilder* pFilterGraph; + IMediaSeeking* media_seeking; + IMediaControl* media_control; IPin* ipin; ULONG nbStreams; IMediaStream** pStreams; @@ -116,6 +118,10 @@ static ULONG WINAPI IAMMultiMediaStreamImpl_Release(IAMMultiMediaStream* iface) IMediaStream_Release(This->pStreams[i]); if (This->ipin) IPin_Release(This->ipin); + if (This->media_seeking) + IMediaSeeking_Release(This->media_seeking); + if (This->media_control) + IMediaControl_Release(This->media_control); if (This->pFilterGraph) IGraphBuilder_Release(This->pFilterGraph); HeapFree(GetProcessHeap(), 0, This); @@ -240,6 +246,22 @@ static HRESULT WINAPI IAMMultiMediaStreamImpl_Initialize(IAMMultiMediaStream* if if (SUCCEEDED(hr)) { This->StreamType = StreamType; + hr = IGraphBuilder_QueryInterface(This->pFilterGraph, &IID_IMediaSeeking, (void**)&This->media_seeking); + if (SUCCEEDED(hr)) + IGraphBuilder_QueryInterface(This->pFilterGraph, &IID_IMediaControl, (void**)&This->media_control); + } + + if (FAILED(hr)) + { + if (This->media_seeking) + IMediaSeeking_Release(This->media_seeking); + This->media_seeking = NULL; + if (This->media_control) + IMediaControl_Release(This->media_control); + This->media_control = NULL; + if (This->pFilterGraph) + IGraphBuilder_Release(This->pFilterGraph); + This->pFilterGraph = NULL; }
return hr;