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; } }
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(); } }
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; } }
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); }
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; } }
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); } }
/// <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(); } }
/// <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(); } } }
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); } }