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);
        }
Beispiel #2
0
        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;
        }