Пример #1
0
 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();
        }
Пример #3
0
 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();
        }
Пример #6
0
 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);
        }
Пример #9
0
 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);
                    }
                }
            }
        }
Пример #12
0
        /// <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();
 }