private void Stop()
 {
     if (m_Player != null)
         try
         {
             m_Player.Dispose();
         }
         finally
         {
             m_Player = null;
         }
     if (m_Recorder != null)
         try
         {
             m_Recorder.Dispose();
         }
         finally
         {
             m_Recorder = null;
         }
     m_Fifo.Flush(); // clear all pending data
 }
 private void Start()
 {
     Stop();
     try
     {
         WaveFormat fmt = new WaveFormat(44100, 16, 2);
         m_Player = new WaveOutPlayer(-1, fmt, 16384, 3, new BufferFillEventHandler(Filler));
         m_Recorder = new WaveInRecorder(-1, fmt, 16384, 3, new BufferDoneEventHandler(Voice_Out));
     }
     catch
     {
         Stop();
         throw;
     }
 }
        public ServerVideoChatViewModel()
        {
            try
            {
                UDP_IP_VIDEO = new UDP_Client() { ServerIP = "224.0.0.1", ServerPort = 5000 };
                UDP_IP_VIDEO.Start();
                UDP_IP_AUDIO = new UDP_Client() { ServerIP = "224.0.0.1", ServerPort = 6000 };
                UDP_IP_AUDIO.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка создания UDP серверов\n" + ex.ToString());
                //throw;
            }

            try
            {
                if (waveIn == null)
                {
                    if(WaveInRecorder.Devices.Length>0)
                    {
                        WaveIn = new WaveInRecorder(-1, waveFormat, 4096, 2);
                        WaveIn.DevRecordIn = WaveInRecorder.Devices[0];
                    }
                    else
                        WaveIn = new WaveInRecorder(-1, waveFormat, 4096, 2);
                }

            }
            catch (Exception)
            {

            }

            try
            {
                netCamera.NewImage += (_1, e) =>
                {
                    if (Participant != null && Participant.State == CommunicationState.Opened)
                    {
                        lock (this)
                        {
                            IPVideoSample = e.ImageBuffer.Clone() as byte[];
                        }
                    }
                };
                tmrPing = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(1) };
                StartIPVideoSending();

                IsPinging = true;
                CheckAutoStart();
                ClickOnceUpdater.Restarting += (_1, _2) => { SaveSettings(); };
                tmrTime.Tick += (_1, _2) =>
                {
                    tmrTime.Stop();
                    if (Participant != null && Participant.State == CommunicationState.Opened)
                    {
                        Participant.TimeSignal(ServerName, DateTime.Now);
                    }
                    tmrTime.Start();
                };
                tmrTime.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.StackTrace);
            }
        }
        public void CloseModel()
        {
            try
            {
                if (waveIn != null)
                    waveIn.Dispose();
                waveIn = null;
            }
            catch (Exception)
            {

            }
            try
            {
                UDP_IP_AUDIO.Stop();
                UDP_IP_VIDEO.Stop();
            }
            catch (Exception)
            {
            }
        }
        public VideoChatClientViewModel()
        {
            try
            {
                UDP_VIDEO_Server = new UDP_Server() { ServerIP = "224.0.0.1", ServerPort = 5000 };
                UDP_VIDEO_Server.evRecBuf += (CurUDP_Server_evRecBuf);
                UDP_VIDEO_Server.Start();

                UDP_AUDIO_Server = new UDP_Server() { ServerIP = "224.0.0.1", ServerPort = 6000 };
                UDP_AUDIO_Server.evRecBuf += (UDP_AUDIO_Server_evRecBuf);
                UDP_AUDIO_Server.Start();
                /*
                UDP_VIDEO_Conference_Client = new UDP_Client() { ServerIP = "224.0.0.1", ServerPort = 7000 };
                UDP_VIDEO_Conference_Client.Start();

                UDP_VIDEO_Conference_Server = new UDP_Server() { ServerIP = "224.0.0.1", ServerPort = 7000 };
                UDP_VIDEO_Conference_Server.evRecBuf += (UDP_VIDEO_Conference_Server_evRecBuf);
                UDP_VIDEO_Conference_Server.Start();

                UDP_AUDIO_Conference_Client = new UDP_Client() { ServerIP = "224.0.0.1", ServerPort = 8000 };
                UDP_AUDIO_Conference_Client.Start();

                UDP_AUDIO_Conference_Server = new UDP_Server() { ServerIP = "224.0.0.1", ServerPort = 8000 };
                UDP_AUDIO_Conference_Server.evRecBuf += (UDP_AUDIO_Conference_Server_evRecBuf);
                UDP_AUDIO_Conference_Server.Start();*/
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка создания UDP серверов\n" + ex.ToString());
            }

            ConferenceRoom = new ObservableCollection<ConferenceClass>();

            for(int i=0;i<4;i++)
            {
                string sRoom = MachineSettings.ButtonNumberToRoom(31 + i);

                var cc = new ConferenceClass() { SName = sRoom };
                cc.PropertyChanged += VideoChatClientViewModel_PropertyChanged;
                ConferenceRoom.Add(cc);
            }

            WebCamDevices = MultimediaUtil.VideoInputDevices;
            RunConferencService();

            if (waveOut == null) 
                waveOut = new WaveOutPlayer(-1, waveFormat, 4096, 2, Filler);
            if (WaveIn == null)
                WaveIn = new WaveInRecorder(-1, waveFormat, 4096, 2);

            tmrSendVideo.Interval = SendVideoInerval;
            tmrSendVideo.Tick += (_1,_2) => 
            {
                if (Participant == null 
                    || MyVideoFrame == null 
                    || SelectedConferenceRoom.Count == 0) return;

                tmrSendVideo.Stop();
                if (IsUDPConference==false)
                {
                    participant.VideoSample(
                        new SendBytes
                            {
                                From = Room,
                                Data = MyVideoFrame.Clone() as byte[],
                                To = SelectedConferenceRoom
                            });
                }
                else
                {
                    var um = 
                        new UPD_Message()
                            {
                                From = Room,
                                Data = MyVideoFrame.Clone() as byte[],
                                To = SelectedConferenceRoom
                            };
                    UDP_VIDEO_Conference_Client.SendBigBuffer(um.ToByte());
                }
                tmrSendVideo.Start();
            };
            tmrSendVideo.Start();
            InitControlDevice();
            CheckAutoStart();

        }
Example #6
0
 private void BufferClear()
 {
     if (wavePlayer != null)
         try
         {
             wavePlayer.Dispose();
         }
         finally
         {
             wavePlayer = null;
         }
     if (waveRecorder != null)
         try
         {
             waveRecorder.Dispose();
         }
         finally
         {
             waveRecorder = null;
         }
     m_Fifo.Flush();
 }
Example #7
0
        private void InitCall()
        {
            ShowStatus("연결 완료");
            SetBtn(1);
            //원격 연결점 생성
            targetDataIP = tempIP;
            targetVoiceIP = new IPEndPoint(tempIP.Address, 2000);

            WaveFormat fmt = new WaveFormat(44100, 16, 2);
            wavePlayer = new WaveOutPlayer(-1, fmt, 16384, 3, new BufferFillEventHandler(Filler));
            waveRecorder = new WaveInRecorder(-1, fmt, 16384, 3, new BufferDoneEventHandler(Voice_Out));
            //음성 비동기 수신 대기
            udpVoice.BeginReceive(new AsyncCallback(ReceiveVoiceCallback), udpVoice);
        }