private void TestStateAndEOS() { int hr; IntPtr pEOS; StreamState pState; ManualResetEvent mre = new ManualResetEvent(false); //////////////// /// The AddMediaStream does something that prevents playback (I don't /// know what). Create a new stream to do the actual run. IAMMultiMediaStream amms = (IAMMultiMediaStream) new AMMultiMediaStream(); hr = amms.OpenFile("foo.avi", AMOpenModes.RenderAllStreams); MsError.ThrowExceptionForHR(hr); IMultiMediaStream mms = amms as IMultiMediaStream; //////////////// hr = mms.GetEndOfStreamEventHandle(out pEOS); MsError.ThrowExceptionForHR(hr); mre.SafeWaitHandle = new Microsoft.Win32.SafeHandles.SafeWaitHandle(pEOS, true); hr = mms.Seek(0); MsError.ThrowExceptionForHR(hr); hr = mms.GetState(out pState); MsError.ThrowExceptionForHR(hr); Debug.Assert(pState == StreamState.Stop, "GetState"); hr = mms.SetState(StreamState.Run); MsError.ThrowExceptionForHR(hr); hr = mms.GetState(out pState); MsError.ThrowExceptionForHR(hr); Debug.Assert(pState == StreamState.Run, "GetState2"); bool b = mre.WaitOne(1000 * 6, false); Debug.Assert(b, "WaitOne"); mre.Close(); Marshal.ReleaseComObject(mms); }
private void Config() { int hr; IAMMultiMediaStream amms = (IAMMultiMediaStream) new AMMultiMediaStream(); IMultiMediaStream mms = (IMultiMediaStream)amms; IMediaStream pStream = null; hr = amms.AddMediaStream(null, MSPID.PrimaryAudio, AMMStream.None, pStream); MsError.ThrowExceptionForHR(hr); hr = amms.OpenFile("foo.avi", AMOpenModes.RenderAllStreams); MsError.ThrowExceptionForHR(hr); hr = mms.EnumMediaStreams(0, out pStream); MsError.ThrowExceptionForHR(hr); m_ams = pStream as IAudioMediaStream; }
private void Config() { int hr; IMediaStream pStream = null; IAMMultiMediaStream amms = (IAMMultiMediaStream) new AMMultiMediaStream(); hr = amms.AddMediaStream(null, MSPID.PrimaryAudio, AMMStream.None, pStream); MsError.ThrowExceptionForHR(hr); hr = amms.OpenFile("foo.avi", AMOpenModes.RenderAllStreams); MsError.ThrowExceptionForHR(hr); IGraphBuilder pGraphBuilder; hr = amms.GetFilterGraph(out pGraphBuilder); MsError.ThrowExceptionForHR(hr); DsROTEntry rot = new DsROTEntry(pGraphBuilder); m_mms = (IMultiMediaStream)amms; }