Beispiel #1
0
 private void _eventTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
 {
     try
     {
         _eventTimer.Enabled = false;
         IMediaEventEx mediaEvent = _graphBuilder as IMediaEventEx;
         if (mediaEvent == null)
         {
             AppLogger.Message("couldn't get IMediaEventEx from graph builder!");
             return;
         }
         EventCode eventCode;
         IntPtr    lparam1, lparam2;
         while (mediaEvent.GetEvent(out eventCode, out lparam1, out lparam2, 10) == 0)
         {
             AppLogger.Message("ASFNetSink -- Got Media Event: " + eventCode.ToString() + " 0x" + lparam1.ToString("X") + " 0x" + lparam2.ToString("X"));
             OnDirectShowEvent(eventCode, lparam1, lparam2);
             mediaEvent.FreeEventParams(eventCode, lparam1, lparam2);
         }
         _eventTimer.Enabled = true;
     }
     catch (Exception ex)
     {
         AppLogger.Message("ASFNetSink -- Can't get Media Event due to an error");
         AppLogger.Dump(ex);
     }
 }
Beispiel #2
0
        // Filter graph events
        public void HandleGraphEvent(GraphEventCallback pCB)
        {
            if (pCB == null)
            {
                throw new COMException("No callback set", E_Pointer);
            }

            if (m_pEvent == null)
            {
                throw new COMException("No event pointer", E_Unexpected);
            }

            EventCode evCode = 0;
            IntPtr    param1, param2;

            // Get the events from the queue.
            while (Succeeded(m_pEvent.GetEvent(out evCode, out param1, out param2, 0)))
            {
                // Invoke the callback.
                pCB.OnGraphEvent(evCode, param1, param2);

                // Free the event data.
                int hr = m_pEvent.FreeEventParams(evCode, param1, param2);
                DsError.ThrowExceptionForHR(hr);
            }
        }
        public override void OnVideoEvent(int cookies)
        {
            if (this.graphBuilder == null || this.graphBuilder2 == null)
            {
                return;
            }
            try
            {
                if (cookies == cookiesSink)
                {
                    IMediaEventEx mediaEvent = this.graphBuilder as IMediaEventEx;
                    EventCode     eventCode;
                    IntPtr        param1, param2;
                    while (mediaEvent.GetEvent(out eventCode, out param1, out param2, 0) >= 0)
                    {
                        Trace.WriteLineIf(trace.TraceVerbose, "OnVideoEvent(Sink) -> " + eventCode.ToString());

                        if (eventCode == EventCode.VMRRenderDeviceSet)
                        {
                            VideoRefresh();
                        }

                        //switch (eventCode)
                        //{
                        //    // Call application-defined functions for each
                        //    // type of event that you want to handle.
                        //}
                        int hr = mediaEvent.FreeEventParams(eventCode, param1, param2);
                    }
                }
                else if (cookies == cookiesSource)
                {
                    IMediaEventEx mediaEvent = this.graphBuilder2 as IMediaEventEx;
                    EventCode     eventCode;
                    IntPtr        param1, param2;
                    while (mediaEvent.GetEvent(out eventCode, out param1, out param2, 0) >= 0)
                    {
                        Trace.WriteLineIf(trace.TraceVerbose, "OnVideoEvent(Source) -> " + eventCode.ToString());

                        if (eventCode == EventCode.VMRRenderDeviceSet)
                        {
                            VideoRefresh();
                        }

                        //switch (eventCode)
                        //{
                        //    // Call application-defined functions for each
                        //    // type of event that you want to handle.
                        //}
                        int hr = mediaEvent.FreeEventParams(eventCode, param1, param2);
                    }
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLineIf(trace.TraceError, ex.ToString());
            }
        }