private void RendererAddedSink(AVRendererDiscovery sender, AVRenderer renderer) { this.Dispatcher.BeginInvoke(new Action(() => { if (!this.streamToMenu.DropDownItems.ContainsKey(renderer.UniqueDeviceName)) { var menuItem = new System.Windows.Forms.ToolStripMenuItem (renderer.FriendlyName, (renderer.device.favicon != null) ? renderer.device.favicon.ToBitmap() : null, streamMenu_RendererSelected) { Name = renderer.UniqueDeviceName, Tag = renderer }; this.streamToMenu.DropDownItems.Add(menuItem); if (renderer != null && renderer.Connections.Count > 0) { var connectionAV = renderer.Connections[0] as AVConnection; connectionAV.OnPlayStateChanged += new AVConnection.PlayStateChangedHandler(connectionAV_OnPlayStateChanged); if (autoStreamTo.Any(r => r.Equals(renderer.FriendlyName, StringComparison.InvariantCultureIgnoreCase))) { streamMenu_RendererSelected(menuItem, EventArgs.Empty); } } } if (this.streamToMenu.DropDownItems.ContainsKey(this.searchingItem.Name) && this.streamToMenu.DropDownItems.Count >= 2) { this.streamToMenu.DropDownItems.RemoveByKey(this.searchingItem.Name); } })); }
private void FormSink(AVRenderer r, AVConnection c) { RendererForm f = new RendererForm(c); ConnectionTable[c] = f; f.Show(); }
private void ClosedConnectionSink(AVRenderer sender, AVConnection connection) { if (this.currentRenderer != null && this.currentRenderer.AVConnection == connection) { this.currentRenderer = null; } }
private void NewConnectionSink(AVRenderer sender, AVConnection c) { object[] args = new Object[2]; args[0] = sender; args[1] = c; Invoke(new FormCreator(FormSink), args); }
private void ClosedConnectionSink(AVRenderer sender, AVConnection c) { RendererForm f = (RendererForm)ConnectionTable[c]; ConnectionTable.Remove(c); f.Close(); }
private void NewConnectionSink(AVRenderer sender, AVConnection connection) { if (this.currentRenderer != null) { this.currentRenderer = null; } this.currentRenderer = new Renderer(connection); }
private void RendererDebugForm_Closing(object sender, System.ComponentModel.CancelEventArgs e) { renderingControlWatcher.OnSniff -= new UPnPServiceWatcher.SniffHandler(renderingSniffHandlerSink); avTransportControlWatcher.OnSniff -= new UPnPServiceWatcher.SniffHandler(avTransportSniffHandlerSink); connectionManagerControlWatcher.OnSniff -= new UPnPServiceWatcher.SniffHandler(connectionManagerSniffHandlerSink); renderingControlWatcher = null; avTransportControlWatcher = null; connectionManagerControlWatcher = null; renderer = null; }
public RendererDebugForm(AVRenderer renderer) { // // Required for Windows Form Designer support // InitializeComponent(); this.renderer = renderer; renderingControlWatcher = renderer.RenderingControlWatcher; avTransportControlWatcher = renderer.AVTransportWatcher; connectionManagerControlWatcher = renderer.ConnectionManagerWatcher; renderingControlWatcher.OnSniff += new UPnPServiceWatcher.SniffHandler(renderingSniffHandlerSink); avTransportControlWatcher.OnSniff += new UPnPServiceWatcher.SniffHandler(avTransportSniffHandlerSink); connectionManagerControlWatcher.OnSniff += new UPnPServiceWatcher.SniffHandler(connectionManagerSniffHandlerSink); }
private void RendererRemovedSink(AVRendererDiscovery sender, AVRenderer renderer) { this.Dispatcher.BeginInvoke(new Action(() => { if (this.streamToMenu.DropDownItems.ContainsKey(renderer.UniqueDeviceName)) { this.streamToMenu.DropDownItems.RemoveByKey(renderer.UniqueDeviceName); if (renderer != null && renderer.Connections.Count > 0) { var connectionAV = renderer.Connections[0] as AVConnection; connectionAV.OnPlayStateChanged -= new AVConnection.PlayStateChangedHandler(connectionAV_OnPlayStateChanged); } } if (!this.streamToMenu.DropDownItems.ContainsKey(this.searchingItem.Name) && this.streamToMenu.DropDownItems.Count == 2) { this.streamToMenu.DropDownItems.Add(searchingItem); } })); }
private void PlayMediaMenuSelectedSink(object sender, EventArgs e) { if (mediaListView.SelectedItems.Count == 0) { return; } AVRenderer selectedSendToRenderer = (AVRenderer)PlayToRendererMenuItemMapping[sender]; lock (mediaListView) { ArrayList mediaList = new ArrayList(); foreach (ListViewItem li in mediaListView.SelectedItems) { if (li.Tag.GetType() == typeof(CpMediaItem)) { mediaList.Add(li.Tag); } } parent.PopupRendererForm(selectedSendToRenderer, (CpMediaItem[])mediaList.ToArray(typeof(CpMediaItem))); } }
private void mediaContextMenu_Popup(object sender, System.EventArgs e) { while (mediaContextMenu.MenuItems.Count > 2) { mediaContextMenu.MenuItems.RemoveAt(2); } PlayToRendererMenuItemMapping.Clear(); menuItem3.Visible = false; if (rendererRootNode.Nodes.Count > 0) { menuItem3.Visible = true; foreach (TreeNode node in rendererRootNode.Nodes) { AVRenderer renderer = (AVRenderer)node.Tag; if (renderer != null) { MenuItem m = new MenuItem("Send to " + renderer.FriendlyName, new EventHandler(PlayMediaMenuSelectedSink)); PlayToRendererMenuItemMapping.Add(m, renderer); mediaContextMenu.MenuItems.Add(m); } } } }
/// <summary> /// Starts the DLNA renderer. /// </summary> /// <param name="endpointName">The endpoint name.</param> public void StartRenderer(string endpointName) { // Create the device this.device = UPnPDevice.CreateRootDevice(900, 1, ""); device.FriendlyName = "S-Sound " + endpointName; device.UniqueDeviceName = "SSound_" + endpointName.Replace(" ", ""); device.StandardDeviceType = "MediaRenderer"; device.HasPresentation = false; device.Manufacturer = "Sebastien.warin.fr"; device.ManufacturerURL = "http://sebastien.warin.fr/"; device.PresentationURL = "/"; device.HasPresentation = true; device.ModelName = "AV Renderer"; device.ModelDescription = "Media Renderer Device"; device.ModelURL = new Uri("http://sebastien.warin.fr/"); // Create the AV renderer var avRenderer = new AVRenderer(0, new ProtocolInfoString[] { new ProtocolInfoString("http-get:*:audio/mp3:*"), new ProtocolInfoString("http-get:*:audio/x-ms-wma:*"), new ProtocolInfoString("http-get:*:audio/wma:*") }, new AVRenderer.ConnectionHandler(NewConnectionSink)); avRenderer.OnClosedConnection += new AVRenderer.ConnectionHandler(ClosedConnectionSink); avRenderer.Manager.RemoveAction_PrepareForConnection(); avRenderer.Manager.RemoveAction_ConnectionComplete(); // Set the UPnP Servoce state variables UPnPService upnpATService = avRenderer.AVT.GetUPnPService(); upnpATService.GetStateVariableObject("CurrentPlayMode").AllowedStringValues = new String[3] { "NORMAL", "REPEAT_ALL", "INTRO" }; UPnPService upnpControlService = avRenderer.Control.GetUPnPService(); upnpControlService.GetStateVariableObject("A_ARG_TYPE_Channel").AllowedStringValues = new String[3] { "Master", "LF", "RF" }; upnpControlService.GetStateVariableObject("RedVideoBlackLevel").SetRange((ushort)0, (ushort)100, (ushort)1); upnpControlService.GetStateVariableObject("GreenVideoBlackLevel").SetRange((ushort)0, (ushort)100, (ushort)1); upnpControlService.GetStateVariableObject("BlueVideoBlackLevel").SetRange((ushort)0, (ushort)100, (ushort)1); upnpControlService.GetStateVariableObject("RedVideoGain").SetRange((ushort)0, (ushort)100, (ushort)1); upnpControlService.GetStateVariableObject("GreenVideoGain").SetRange((ushort)0, (ushort)100, (ushort)1); upnpControlService.GetStateVariableObject("BlueVideoGain").SetRange((ushort)0, (ushort)100, (ushort)1); upnpControlService.GetStateVariableObject("Brightness").SetRange((ushort)0, (ushort)100, (ushort)1); upnpControlService.GetStateVariableObject("Contrast").SetRange((ushort)0, (ushort)100, (ushort)1); upnpControlService.GetStateVariableObject("Sharpness").SetRange((ushort)0, (ushort)100, (ushort)1); upnpControlService.GetStateVariableObject("Volume").SetRange((UInt16)0, (UInt16)100, (ushort)1); // Add the services device.AddService(avRenderer.Control); device.AddService(avRenderer.AVT); device.AddService(avRenderer.Manager); // Start the device device.StartDevice(); PackageHost.PushStateObject <bool>("DlnaMediaRenderer", true); PackageHost.WriteInfo("DLNA MediaRenderer '{0}' is started", endpointName); }
private void startMenuItem_Click(object sender, System.EventArgs e) { startMenuItem.Enabled = false; foreach (MenuItem i in pfcMenuItem.MenuItems) { i.Enabled = false; } foreach (MenuItem i in menuItem3.MenuItems) { i.Enabled = false; } InfoStringBox.Enabled = false; device = UPnPDevice.CreateRootDevice(900, 1, ""); device.UniqueDeviceName = Guid.NewGuid().ToString(); device.StandardDeviceType = "MediaRenderer"; device.FriendlyName = "Media Renderer (" + System.Net.Dns.GetHostName() + ")"; device.HasPresentation = false; device.Manufacturer = "OpenSource"; device.ManufacturerURL = "http://opentools.homeip.net/"; device.PresentationURL = "/"; device.HasPresentation = true; device.ModelName = "AV Renderer"; device.ModelDescription = "Media Renderer Device"; device.ModelURL = new Uri("http://opentools.homeip.net/"); UPnPService ts = new UPnPService(1, "EmptyService", "EmptyService", true, this); ts.AddMethod("NullMethod"); //device.AddService(ts); DText p = new DText(); p.ATTRMARK = "\r\n"; p[0] = this.InfoStringBox.Text; int len = p.DCOUNT(); ProtocolInfoString[] istring = new ProtocolInfoString[len]; for (int i = 1; i <= len; ++i) { istring[i - 1] = new ProtocolInfoString(p[i]); } r = new AVRenderer(MaxConnections, istring, new AVRenderer.ConnectionHandler(NewConnectionSink)); r.OnClosedConnection += new AVRenderer.ConnectionHandler(ClosedConnectionSink); if (supportRecordMenuItem.Checked == false) { r.AVT.RemoveAction_Record(); } if (supportRecordQualityMenuItem.Checked == false) { r.AVT.RemoveAction_SetRecordQualityMode(); } if (supportNextContentUriMenuItem.Checked == false) { r.AVT.RemoveAction_SetNextAVTransportURI(); } if (MaxConnections == 0) { r.Manager.RemoveAction_PrepareForConnection(); r.Manager.RemoveAction_ConnectionComplete(); } r.AVT.GetUPnPService().GetStateVariableObject("CurrentPlayMode").AllowedStringValues = new String[3] { "NORMAL", "REPEAT_ALL", "INTRO" }; r.Control.GetUPnPService().GetStateVariableObject("A_ARG_TYPE_Channel").AllowedStringValues = new String[3] { "Master", "LF", "RF" }; r.Control.GetUPnPService().GetStateVariableObject("RedVideoBlackLevel").SetRange((ushort)0, (ushort)100, (ushort)1); r.Control.GetUPnPService().GetStateVariableObject("GreenVideoBlackLevel").SetRange((ushort)0, (ushort)100, (ushort)1); r.Control.GetUPnPService().GetStateVariableObject("BlueVideoBlackLevel").SetRange((ushort)0, (ushort)100, (ushort)1); r.Control.GetUPnPService().GetStateVariableObject("RedVideoGain").SetRange((ushort)0, (ushort)100, (ushort)1); r.Control.GetUPnPService().GetStateVariableObject("GreenVideoGain").SetRange((ushort)0, (ushort)100, (ushort)1); r.Control.GetUPnPService().GetStateVariableObject("BlueVideoGain").SetRange((ushort)0, (ushort)100, (ushort)1); r.Control.GetUPnPService().GetStateVariableObject("Brightness").SetRange((ushort)0, (ushort)100, (ushort)1); r.Control.GetUPnPService().GetStateVariableObject("Contrast").SetRange((ushort)0, (ushort)100, (ushort)1); r.Control.GetUPnPService().GetStateVariableObject("Sharpness").SetRange((ushort)0, (ushort)100, (ushort)1); r.Control.GetUPnPService().GetStateVariableObject("Volume").SetRange((UInt16)0, (UInt16)100, (ushort)1); device.AddService(r.Control); device.AddService(r.AVT); device.AddService(r.Manager); //device.AddDevice(r); device.StartDevice(); //r.Start(); }
private void InitSink(AVRenderer sender) { Ev2.Set(); }
private void RecycledConnectionSink(AVRenderer sender, AVConnection c, object Tag) { TestConnection = c; Ev2.Set(); }