예제 #1
0
        static void CycleSendVideo()
        {
            long lastMemory    = 0;
            long currentMemory = 0;
            int  i             = 0;

            VideoCapability vc = null;

            FilterInfo[] cameras = VideoSource.Sources();
            if (cameras.Length > 0)
            {
                vc = new VideoCapability(cameras[0]);
                vc.ActivateCamera();
            }

            JoinVenue();
            while (vc != null)
            {
                Console.WriteLine(string.Format(CultureInfo.CurrentCulture, Strings.CycleSendVideoTestRun +
                                                "\n", ++i));

                vc.BeginSend(null, null);
                Thread.Sleep(15000);
                vc.BeginStopSending(null, null);
                Thread.Sleep(5000);

                currentMemory = GC.GetTotalMemory(true);
                Console.WriteLine(string.Format(CultureInfo.CurrentCulture, Strings.MemoryUsed, currentMemory,
                                                (currentMemory - lastMemory).ToString(CultureInfo.InvariantCulture)));
                lastMemory = currentMemory;
            }
        }
예제 #2
0
        private void FHelloCXP_Load(object sender, System.EventArgs e)
        {
            // ConferenceAPI to autoplay any incoming streams
            Conference.AutoPlayLocal = true;
            Conference.AutoPlayRemote = true;

            // Tell ConferenceApi who the calling form is so it knows how to send events to the form on the correct thread
            Conference.CallingForm = this;

            // ConferenceAPI to autoposition any new windows
            Conference.AutoPosition = Conference.AutoPositionMode.Tiled;

            // Don't connect to a Venue Service; create a local venue and join it.
            Conference.VenueServiceWrapper.VenueServiceUrl = null;
            Venue localVenue = Conference.VenueServiceWrapper.CreateRandomMulticastVenue("Local Venue", null);
            Conference.JoinVenue( localVenue );

            // Send audio and video streams
            FilterInfo[] cameras = VideoSource.Sources();

            if (cameras.Length > 0)
            {
                VideoCapability vc = new VideoCapability(cameras[0]);
                vc.ActivateCamera();
                vc.Send();
            }
        }
예제 #3
0
        static void CycleSendVideo()
        {
            long lastMemory = 0;
            long currentMemory = 0;
            int i = 0;

            VideoCapability vc = null;

            FilterInfo[] cameras = VideoSource.Sources();
            if (cameras.Length > 0)
            {
                vc = new VideoCapability(cameras[0]);
                vc.ActivateCamera();
            }

            JoinVenue();
            while (vc != null)
            {
                Console.WriteLine("CycleSendVideo Test Run #" + ++i + ":\n");

                vc.BeginSend(null, null);
                Thread.Sleep(15000);
                vc.BeginStopSending(null, null);
                Thread.Sleep(5000);

                currentMemory = GC.GetTotalMemory(true);
                Console.WriteLine("Memory Used: " + currentMemory + ", Diff: " + (currentMemory - lastMemory).ToString());
                lastMemory = currentMemory;
            }
        }
예제 #4
0
        private void ActivateVideoCapability(FilterInfo fi)
        {
            Debug.Assert(!vcs.Contains(fi));
            vc = new VideoCapability(fi);
            vcs.Add(fi, vc);

            vc.SetLogger(new AVLogger(Log));
            vc.ActivateCamera();
            vcg = vc.VideoCaptureGraph;

            RenderAndRunVideo(vcg);
        }
예제 #5
0
        public frmVideoSettings(FilterInfo fi, frmAVDevices frmAV)
        {
            InitializeComponent();

            Debug.Assert(frmAV != null);

            this.fi    = fi;
            this.frmAV = frmAV;

            if (!frmAV.videoCapabilities.ContainsKey(fi))
            {
                vc = new VideoCapability(fi);
                vc.SetLogger(new AVLogger(Log));
                vc.ActivateCamera();
                disposeCapability = true;
            }
            else
            {
                vc = frmAV.videoCapabilities[fi];
                disposeCapability = false;
            }
        }
예제 #6
0
        private void AutoSendAV()
        {
            // Determine if the form is shared
            string[] linkedCamera = AVReg.ValueNames(AVReg.LinkedCamera);
            if (linkedCamera != null)
            {
                Debug.Assert(linkedCamera.Length <= 1);
            }

            // Create the audio capability
            FilterInfo[] mics = AudioCapability.SelectedMicrophones();
            Debug.Assert(mics.Length <= 1);  // For now we only support 1

            AudioCapability ac = null;
            foreach (FilterInfo fi in mics)
            {
                ac = new AudioCapability(fi);
            }

            // Create the video capabilities and start sending their data
            foreach (FilterInfo fi in VideoCapability.SelectedCameras())
            {
                VideoCapability vc = new VideoCapability(fi);

                // Set the shared form ID
                if (ac != null && linkedCamera != null && linkedCamera.Length > 0)
                {
                    if (fi.Moniker == linkedCamera[0])
                    {
                        Guid sharedFormID = Guid.NewGuid();
                        ac.SharedFormID = sharedFormID;
                        vc.SharedFormID = sharedFormID;
                    }
                }

                try
                {
                    vc.ActivateCamera();
                    vc.Send();
                }
                catch (Exception)
                {
                    vc.Dispose();

                    MessageBox.Show(string.Format("ConferenceXP was unable to send video from " +
                        "the device - {0}.  See the ConferenceAPI Event Log for details.", vc.Name),
                        "Unable to send video", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            // Start sending the audio data
            try
            {
                if (ac != null)
                {
                    ac.ActivateMicrophone();
                    ac.Send();
                }
            }
            catch (Exception)
            {
                ac.Dispose();

                MessageBox.Show(string.Format("ConferenceXP was unable to send audio from " +
                    "the device - {0}.  See the ConferenceAPI Event Log for details.", ac.Name),
                    "Unable to send audio", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #7
0
 /// <summary>
 /// Create a VideoCapability for the specified camera, grab the data from the 
 /// capture graph, then dispose the capability.
 /// </summary>
 /// <param name="fi"></param>
 private void UpdateVideoBox(FilterInfo fi)
 {
     if (videoCapabilities.ContainsKey(fi)) {
         //The capability might exist if there is a video test underway.
         UpdateVideoBox(videoCapabilities[fi].CaptureGraph);
     }
     else {
         VideoCapability vc = new VideoCapability(fi);
         vc.SetLogger(new AVLogger(Log));
         vc.ActivateCamera();
         UpdateVideoBox(vc.CaptureGraph);
         vc.Dispose();
     }
 }
예제 #8
0
 /// <summary>
 /// Turn the specified video test on or off
 /// </summary>
 /// <param name="fi"></param>
 /// <param name="start"></param>
 private void TestVideo(FilterInfo fi, bool start)
 {
     if (start) {
         VideoCapability vc = new VideoCapability(fi);
         videoCapabilities.Add(fi, vc);
         vc.SetLogger(new AVLogger(Log));
         vc.ActivateCamera();
         RenderAndRunVideo(vc.CaptureGraph);
     }
     else {
         if (videoCapabilities.ContainsKey(fi)) {
             VideoCapability vc = videoCapabilities[fi];
             videoCapabilities.Remove(fi);
             RenderAndRunVideo(vc.CaptureGraph, false);
             vc.Dispose();
         }
     }
 }
예제 #9
0
        private void AutoSendAV()
        {
            // Determine if the form is shared
            string[] linkedCamera = AVReg.ValueNames(AVReg.LinkedCamera);
            if (linkedCamera != null)
            {
                Debug.Assert(linkedCamera.Length <= 1);
            }

            // Create the audio capability
            FilterInfo[] mics = AudioCapability.SelectedMicrophones();
            Debug.Assert(mics.Length <= 1);  // For now we only support 1

            AudioCapability ac = null;
            foreach (FilterInfo fi in mics)
            {
                ac = new AudioCapability(fi);
                ac.FecEnabled = enableAudioFec;
            }

            // Create the video capabilities and start sending their data
            foreach (FilterInfo fi in VideoCapability.SelectedCameras())
            {
                VideoCapability vc = new VideoCapability(fi);
                vc.FecEnabled = enableVideoFec;

                // Set the shared form ID
                if (ac != null && linkedCamera != null && linkedCamera.Length > 0)
                {
                    if (fi.Moniker == linkedCamera[0])
                    {
                        Guid sharedFormID = Guid.NewGuid();
                        ac.SharedFormID = sharedFormID;
                        vc.SharedFormID = sharedFormID;
                    }
                }

                try
                {
                    vc.ActivateCamera();
                    vc.Send();
                }
                catch (Exception)
                {
                    vc.Dispose();

                    RtlAwareMessageBox.Show(this, string.Format(CultureInfo.CurrentCulture,
                        Strings.SendVideoErrorText, vc.Name), Strings.SendVideoErrorTitle, MessageBoxButtons.OK,
                        MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, (MessageBoxOptions)0);
                }
            }

            // Start sending the audio data
            try
            {
                if (ac != null)
                {
                    ac.ActivateMicrophone();
                    ac.Send();
                }
            }
            catch (Exception)
            {
                ac.Dispose();

                RtlAwareMessageBox.Show(this, string.Format(CultureInfo.CurrentCulture, Strings.SendAudioErrorText,
                    ac.Name), Strings.SendAudioErrorTitle, MessageBoxButtons.OK, MessageBoxIcon.Error,
                    MessageBoxDefaultButton.Button1, (MessageBoxOptions)0);
            }
        }
예제 #10
0
        public frmVideoSettings(FilterInfo fi, frmAVDevices frmAV)
        {
            InitializeComponent();

            Debug.Assert(frmAV != null);

            this.fi = fi;
            this.frmAV = frmAV;

            if (!frmAV.videoCapabilities.ContainsKey(fi)) {
                vc = new VideoCapability(fi);
                vc.SetLogger(new AVLogger(Log));
                vc.ActivateCamera();
                disposeCapability = true;
            }
            else {
                vc = frmAV.videoCapabilities[fi];
                disposeCapability = false;
            }
        }
예제 #11
0
        static void CycleSendVideo()
        {
            long lastMemory = 0;
            long currentMemory = 0;
            int i = 0;

            VideoCapability vc = null;
            
            FilterInfo[] cameras = VideoSource.Sources();
            if (cameras.Length > 0)
            {
                vc = new VideoCapability(cameras[0]);
                vc.ActivateCamera();
            }

            JoinVenue();
            while (vc != null)
            {
                Console.WriteLine(string.Format(CultureInfo.CurrentCulture, Strings.CycleSendVideoTestRun + 
                    "\n", ++i));

                vc.BeginSend(null, null);
                Thread.Sleep(15000);
                vc.BeginStopSending(null, null);
                Thread.Sleep(5000);
                
                currentMemory = GC.GetTotalMemory(true);
                Console.WriteLine(string.Format(CultureInfo.CurrentCulture, Strings.MemoryUsed, currentMemory,
                    (currentMemory - lastMemory).ToString(CultureInfo.InvariantCulture)));
                lastMemory = currentMemory;
            }
        }
예제 #12
0
        private void ActivateVideoCapability(FilterInfo fi)
        {
            Debug.Assert(!vcs.Contains(fi));
            vc = new VideoCapability(fi);
            vcs.Add(fi, vc);

            vc.SetLogger(new AVLogger(Log));
            vc.ActivateCamera();
            vcg = vc.VideoCaptureGraph;

            RenderAndRunVideo(vcg);
        }