private void SnapshotRetriever_CameraThumbnailProduced(object sender, CameraThumbnailProducedEventArgs e) { SnapshotRetriever retriever = sender as SnapshotRetriever; if (retriever != null) { retriever.CameraThumbnailProduced -= SnapshotRetriever_CameraThumbnailProduced; snapshotting.Remove(retriever.Identifier); } OnCameraThumbnailProduced(e); }
public override void StopAllThumbnails() { for (int i = snapshotting.Count - 1; i >= 0; i--) { SnapshotRetriever snapper = snapshotting[i]; snapper.Cancel(); snapper.Thread.Join(500); if (snapper.Thread.IsAlive) { snapper.Thread.Abort(); } snapper.CameraThumbnailProduced -= SnapshotRetriever_CameraThumbnailProduced; snapshotting.RemoveAt(i); } }
public override void GetSingleImage(CameraSummary summary) { if (snapshotting.IndexOf(summary.Identifier) >= 0) { return; } // TODO: Retrieve moniker from identifier. string moniker = summary.Identifier; // Spawn a thread to get a snapshot. SnapshotRetriever retriever = new SnapshotRetriever(summary, moniker); retriever.CameraThumbnailProduced += SnapshotRetriever_CameraThumbnailProduced; snapshotting.Add(summary.Identifier); ThreadPool.QueueUserWorkItem(retriever.Run); }
public override void GetSingleImage(CameraSummary summary) { SnapshotRetriever snapper = snapshotting.FirstOrDefault(s => s.Identifier == summary.Identifier); if (snapper != null) { return; } string moniker = summary.Identifier; // Spawn a thread to get a snapshot. snapper = new SnapshotRetriever(summary, moniker); snapper.CameraThumbnailProduced += SnapshotRetriever_CameraThumbnailProduced; snapshotting.Add(snapper); snapper.Start(); }
private void ProcessThumbnail(object sender, CameraThumbnailProducedEventArgs e) { SnapshotRetriever snapper = sender as SnapshotRetriever; if (snapper == null) { return; } log.DebugFormat("Received thumbnail for {0}.", snapper.Alias); snapper.CameraThumbnailProduced -= SnapshotRetriever_CameraThumbnailProduced; snapshotting.Remove(snapper); if (!e.Cancelled) { OnCameraThumbnailProduced(e); } }
public override ICaptureSource CreateCaptureSource(CameraSummary summary) { SnapshotRetriever snapper = snapshotting.FirstOrDefault(s => s.Identifier == summary.Identifier); if (snapper != null) { snapper.Cancel(); snapper.Thread.Join(500); if (snapper.Thread.IsAlive) { snapper.Thread.Abort(); } snapper.CameraThumbnailProduced -= SnapshotRetriever_CameraThumbnailProduced; snapshotting.Remove(snapper); } string moniker = summary.Identifier; FrameGrabber grabber = new FrameGrabber(summary, moniker); return(grabber); }