コード例 #1
0
 public void Load_New_Media()
 {
     try
     {
         MediaControl.Stop();
         MediaControl.Source = new Uri(getrandomfile2(@"C:\Queuing System\Media\"));
         MediaControl.Play();
     }
     catch
     {
         Load_New_Media();
     }
 }
コード例 #2
0
ファイル: ViewModel.cs プロジェクト: webstorage119/RTSPSource
 /// <summary>
 /// Clean up stuff
 /// </summary>
 public void Dispose()
 {
     if (MediaControl != null)
     {
         MediaControl.Stop();
     }
     //debug
     if (rot != null)
     {
         rot.Dispose();
         rot = null;
     }
 }
コード例 #3
0
ファイル: GraphBase.cs プロジェクト: ttsuki/ttsuki
        /// <summary>
        /// 停止
        /// </summary>
        public void Stop()
        {
            CheckAlive();
            Status = GraphState.Stopped;
            MediaControl.Stop();
            long pos = 0;

            MediaSeeking.SetPositions(ref pos, AMSeekingSeekingFlags.AbsolutePositioning, ref pos, AMSeekingSeekingFlags.NoPositioning);
            MediaControl.StopWhenReady();
            if (MediaStop != null)
            {
                MediaStop(this, EventArgs.Empty);
            }
        }
コード例 #4
0
 private void Media_Stop_Click(object sender, RoutedEventArgs e)
 {
     if (Model.IsServer)
     {
         MediaControl.Stop();
     }
     else
     {
         NetworkCommunicator.SendAsync(new HarmonyPacket()
         {
             Type = HarmonyPacket.PacketType.MediaControl,
             Pack = new HarmonyPacket.MediaControlPacket()
             {
                 Action = HarmonyPacket.MediaControlPacket.MediaAction.Stop
             }
         });
     }
 }
コード例 #5
0
        public override void SetCurrentPosition(long time)
        {
            if (IsGraphSeekable)
            {
                var state = GraphState;
                PauseGraph();
                long pStop = 0;
                MediaSeeking.SetPositions(ref time, SeekingFlags.AbsolutePositioning, ref pStop, SeekingFlags.NoPositioning);

                switch (state)
                {
                case GraphState.Running:
                    ResumeGraph();
                    break;

                case GraphState.Stopped:
                    MediaControl.Stop();
                    GraphState = GraphState.Stopped;
                    break;
                }
            }
        }
コード例 #6
0
ファイル: ViewModel.cs プロジェクト: webstorage119/RTSPSource
 /// <summary>
 /// Actualy run the graph
 /// </summary>
 private void RunGraph()
 {
     try
     {
         Running = true;
         while (Running)
         {
             Thread.Sleep(500);
             EventCode ev;
             IntPtr    p1, p2;
             Application.DoEvents();
             while (MediaEvent.GetEvent(out ev, out p1, out p2, 0) == 0)
             {
                 if (ev == EventCode.Complete || ev == EventCode.UserAbort || ev == EventCode.ErrorAbort)
                 {
                     if (ev == EventCode.ErrorAbort)
                     {
                         string msg = DecodeHrResult((uint)p1.ToInt64());
                         Program.LogError("ERROR: HRESULT={0:X} {1}", p1, msg);
                         Trace("ERROR: HRESULT={0:X} {1}", p1, msg);
                     }
                     MediaControl.Stop();
                     Running = false;
                     Trace("Done!");
                     Program.LogSuccess("Done!");
                 }
                 MediaEvent.FreeEventParams(ev, p1, p2);
             }
         }
         Graph.Abort();
         Trace("Graph Closed");
     }
     catch (Exception ex)
     {
         ExceptionHelper.HandleException(ex);
         Trace("ERROR: Running Graph");
     }
 }
コード例 #7
0
ファイル: GraphBase.cs プロジェクト: ttsuki/ttsuki
        public void Load()
        {
            GraphBuilder = new FilgraphManager() as IGraphBuilder;

            MediaControl = GraphBuilder as IMediaControl;
            MediaSeeking = GraphBuilder as IMediaSeeking;
            MediaEventEx = GraphBuilder as IMediaEventEx;
            MediaFilter  = GraphBuilder as IMediaFilter;

            thread = new Tsukikage.Windows.Messaging.MessageThread(true);
            thread.Invoke(m => { window = new Tsukikage.Windows.Messaging.MessageWindow(); });

            const int WM_APP_MEDIA_EVENT = 0x8001;

            window.MessageHandlers[WM_APP_MEDIA_EVENT] = m =>
            {
                int ev, p1, p2;
                while (MediaEventEx.GetEvent(out ev, out p1, out p2, 0) == 0)
                {
                    if (ev == 0x01 && MediaComplete != null)
                    {
                        MediaComplete(this, EventArgs.Empty);
                    }
                    MediaEventEx.FreeEventParams(ev, p1, p2);
                }
            };
            MediaEventEx.SetNotifyWindow(window.Handle, WM_APP_MEDIA_EVENT, 0);

            BuildGraph(path);

            if (RegisterToROT)
            {
                RotEntry = new RunningObjectTableEntry(GraphBuilder, "FilterGraph");
            }

            MediaControl.Stop();
        }
コード例 #8
0
ファイル: GraphBase.cs プロジェクト: ttsuki/ttsuki
        public void Release()
        {
            if (GraphBuilder != null)
            {
                MediaControl.Stop();
                ReleaseGraph();

                MediaEventEx.SetNotifyWindow(IntPtr.Zero, 0, 0);
                window.Dispose(); window = null;
                thread.Dispose(); thread = null;

                Marshal.ReleaseComObject(MediaControl); MediaControl = null;
                Marshal.ReleaseComObject(MediaSeeking); MediaSeeking = null;
                Marshal.ReleaseComObject(MediaEventEx); MediaEventEx = null;
                Marshal.ReleaseComObject(MediaFilter); MediaFilter   = null;
                Marshal.ReleaseComObject(GraphBuilder); GraphBuilder = null;
            }

            if (RotEntry != null)
            {
                RotEntry.Revoke();
                RotEntry = null;
            }
        }
コード例 #9
0
 /// <summary>
 /// Stop the graph.
 /// </summary>
 public virtual void Stop()
 {
     LogMessage("Graph stopped");
     reply = MediaControl.Stop();
     DsError.ThrowExceptionForHR(reply);
 }
コード例 #10
0
ファイル: ViewModel.cs プロジェクト: webstorage119/RTSPSource
 /// <summary>
 /// Invoked when the Pause command is executed
 /// </summary>
 /// <param name="sender">Sender</param>
 private void DoRestart(object sender)
 {
     AutoRestart = true;
     MediaControl.Stop();
     Graph.Abort();
 }
コード例 #11
0
ファイル: ViewModel.cs プロジェクト: webstorage119/RTSPSource
 /// <summary>
 /// Invoked when the Pause command is executed
 /// </summary>
 /// <param name="sender">Sender</param>
 private void DoStop(object sender)
 {
     MediaControl.Stop();
     Graph.Abort();
 }
コード例 #12
0
        private static void ServerProcessReceived()
        {
            while (true)
            {
                var hp = _toProcess.Take();

                switch (hp.Type)
                {
                case HarmonyPacket.PacketType.MouseMovePacket:
                    break;

                case HarmonyPacket.PacketType.MousePacket:
                    break;

                case HarmonyPacket.PacketType.KeyBoardPacket:
                    if (OnSlave == 0)
                    {
                        Keyboard.SendInput(hp.Pack);
                    }
                    else
                    {
                        SendAsync(hp);
                    }
                    break;

                case HarmonyPacket.PacketType.DisplayPacket:
                    break;

                case HarmonyPacket.PacketType.SaltPacket:
                    break;

                case HarmonyPacket.PacketType.MediaControl:
                    switch (((HarmonyPacket.MediaControlPacket)hp.Pack).Action)
                    {
                    case HarmonyPacket.MediaControlPacket.MediaAction.PlayPause:
                        MediaControl.PlayPause();
                        break;

                    case HarmonyPacket.MediaControlPacket.MediaAction.Stop:
                        MediaControl.Stop();
                        break;

                    case HarmonyPacket.MediaControlPacket.MediaAction.SkipPrevious:
                        MediaControl.SkipPrevious();
                        break;

                    case HarmonyPacket.MediaControlPacket.MediaAction.SkipForward:
                        MediaControl.SkipForward();
                        break;

                    case HarmonyPacket.MediaControlPacket.MediaAction.Reload:
                        MediaControl.Reload();
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }