/// <summary> /// Initializes a new instance of the <see cref="OpusCodec"/> class. /// </summary> /// <param name="acousticEchoCanceller">The acoustic echo canceller.</param> public OpusCodec(OpusEchoCanceller echoCanceller) : base(20) { EchoCanceller = echoCanceller; DisableFEC = false; PercentLossToTriggerFEC = 5; _Padep = new BasicAudioPadep(); }
// เริ่มทำการ Conference private void StartSenderConference() { // Create a new IceLink conference // สามารถศึกษา Conference ได้จากลิงค์ http://docs.frozenmountain.com/icelink2/#class=IceLink.DotNet45.FM.IceLink.Conference // Conference parameter : serverAddress : System.String , serverPort : System.Int32 , stream : FM.IceLink.Stream Sender = new FM.IceLink.Conference("172.18.6.226", 8888, new Stream[] { audioStream_sender, videoStream_sender }); //**** Event การทำงาน Conference ****// Sender.OnLinkInit += Sender_OnLinkInit; Sender.OnLinkUp += Sender_OnLinkUp; Sender.OnLinkDown += Sender_OnLinkDown; // Stop automatically when the application closes. // หยุด Conference เมื่อมีการปิดโปรแกรม Closing += (ss, e) => { // Stop localMedia ที่กำลังใช้งาน LocalMediaSender.Stop(); if (Sender != null) { // ยกเลิก Link ทั้งหมดในการทำ Conference Sender.UnlinkAll(); } }; //**** Event การทำงาน Conference ****// // In-memory signalling. Sender.OnLinkOfferAnswer += Sender_OnLinkOfferAnswer; Sender.OnLinkCandidate += Sender_OnLinkCandidate; // Start echo canceller OpusEchoCanceller = new OpusEchoCanceller(OpusClockRate, OpusChannels); OpusEchoCanceller.Start(); // สร้าง Link ในการสนทนาโดยกำหนด peerID ในส่วนนี้จะสร้าง offer/answer P2P link // ดู Flow การทำงานได้จากลิงค์ http://docs.frozenmountain.com/icelink2/#class=icelink-diagrams-signalling Sender.Link(peerID_link); }