protected void SelectPresetSink(System.UInt32 InstanceID, DvRenderingControl.Enum_A_ARG_TYPE_PresetName PresetName)
        {
            if(ID_Table.ContainsKey(InstanceID)==false)
            {
                throw(new UPnPCustomException(802,InstanceID.ToString() + " is not a valid InstanceID"));
            }
            else
            {
                AVConnection c = (AVConnection)ID_Table[InstanceID];
                bool OK = false;
                foreach(string preset in c.Presets)
                {
                    if(preset==DvRenderingControl.Enum_A_ARG_TYPE_PresetName_ToString(PresetName))
                    {
                        OK = true;
                        break;
                    }
                }
                if(OK==true)
                {
                    c.CurrentPreset = DvRenderingControl.Enum_A_ARG_TYPE_PresetName_ToString(PresetName);

                    c._SetBlueVideoBlack(100);
                    c._SetBlueVideoGain(100);
                    c._SetBrightness(100);
                    c._SetContrast(100);
                    c._SetGreenVideoBlack(100);
                    c._SetGreenVideoGain(100);
                    c._SetRedVideoBlack(100);
                    c._SetRedVideoGain(100);
                    c._SetSharpness(100);

                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.B, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.CF, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.LF, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.LFC, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.LFE, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.LS, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.MASTER, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.RF, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.RFC, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.RS, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.SD, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.SL, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.SR, false);
                    c._SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel.T, false);

                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.B, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.CF, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.LF, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.LFC, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.LFE, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.LS, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.MASTER, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.RF, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.RFC, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.RS, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.SD, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.SL, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.SR, 100);
                    c._SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.T, 100);
                }
                else
                {
                    throw(new UPnPCustomException(701,DvRenderingControl.Enum_A_ARG_TYPE_PresetName_ToString(PresetName) + " is not a supported preset"));
                }
            }
        }
        public AVRenderer(int MaxConnections, ProtocolInfoString[] Info, ConnectionHandler h)
        {
            ConnectionMax = MaxConnections;
            OnNewConnection += h;

            InfoStrings = Info;
            device = UPnPDevice.CreateEmbeddedDevice(1,Guid.NewGuid().ToString());
            device.FriendlyName = "AVRenderer Device (" + Dns.GetHostName() +")";

            AVT = new DvAVTransport();
            AVT.GetUPnPService().Major = 1;
            AVT.GetUPnPService().Minor = 0;

            Manager = new DvConnectionManager();
            Manager.GetUPnPService().Major = 1;
            Manager.GetUPnPService().Minor = 0;

            Control = new DvRenderingControl();
            Control.GetUPnPService().Major = 1;
            Control.GetUPnPService().Minor = 0;

            Manager.External_PrepareForConnection = new DvConnectionManager.Delegate_PrepareForConnection(PrepareForConnectionSink);
            Manager.External_ConnectionComplete = new DvConnectionManager.Delegate_ConnectionComplete(ConnectionCompleteSink);
            Manager.External_GetCurrentConnectionIDs = new DvConnectionManager.Delegate_GetCurrentConnectionIDs(GetCurrentConnectionIDsSink);
            Manager.External_GetProtocolInfo = new DvConnectionManager.Delegate_GetProtocolInfo(GetProtocolInfoSink);
            Manager.External_GetCurrentConnectionInfo = new DvConnectionManager.Delegate_GetCurrentConnectionInfo(GetCurrentConnectionInfoSink);

            Manager.Evented_CurrentConnectionIDs = "";
            //Manager.Evented_PhysicalConnections = "";

            string Sink = "";
            foreach(ProtocolInfoString s in InfoStrings)
            {
                if(Sink=="")
                {
                    Sink = s.ToString();
                }
                else
                {
                    Sink = Sink + "," + s.ToString();
                }
            }

            Manager.Evented_SinkProtocolInfo = Sink;
            Manager.Evented_SourceProtocolInfo = "";

            AVT.Accumulator_LastChange = new InstanceID_LastChangeAccumulator("AVT");
            AVT.ModerationDuration_LastChange = 0.5;
            AVT.Evented_LastChange = "<Event xmlns = "urn:schemas-upnp-org:metadata-1-0/AVT/"/>";

            AVT.External_GetMediaInfo = new DvAVTransport.Delegate_GetMediaInfo(GetMediaInfoSink);
            AVT.External_GetPositionInfo = new DvAVTransport.Delegate_GetPositionInfo(GetPositionInfoSink);
            AVT.External_GetTransportInfo = new DvAVTransport.Delegate_GetTransportInfo(GetTransportInfoSink);
            AVT.External_GetTransportSettings = new DvAVTransport.Delegate_GetTransportSettings(GetTransportSettingsSink);
            AVT.External_GetDeviceCapabilities = new DvAVTransport.Delegate_GetDeviceCapabilities(GetDeviceCapabilitiesSink);
            AVT.External_GetCurrentTransportActions = new DvAVTransport.Delegate_GetCurrentTransportActions(GetCurrentTransportActionsSink);

            AVT.External_Play = new DvAVTransport.Delegate_Play(PlaySink);
            AVT.External_Stop = new DvAVTransport.Delegate_Stop(StopSink);
            AVT.External_Pause = new DvAVTransport.Delegate_Pause(PauseSink);
            AVT.External_Record = new DvAVTransport.Delegate_Record(RecordSink);
            AVT.External_Previous = new DvAVTransport.Delegate_Previous(PreviousSink);
            AVT.External_Next = new DvAVTransport.Delegate_Next(NextSink);
            AVT.External_Seek = new DvAVTransport.Delegate_Seek(SeekSink);
            AVT.External_SetAVTransportURI = new DvAVTransport.Delegate_SetAVTransportURI(SetAVTransportURISink);
            AVT.External_SetNextAVTransportURI = new DvAVTransport.Delegate_SetNextAVTransportURI(SetNextAVTransportURISink);
            AVT.External_SetPlayMode = new DvAVTransport.Delegate_SetPlayMode(SetPlayModeSink);
            AVT.External_SetRecordQualityMode = new DvAVTransport.Delegate_SetRecordQualityMode(SetRecordQualityModeSink);
            AVT.External_Record = new DvAVTransport.Delegate_Record(RecordSink);

            Control.Evented_LastChange = "<Event xmlns = "urn:schemas-upnp-org:metadata-1-0/RCS/"/>";

            Control.Accumulator_LastChange = new InstanceID_LastChangeAccumulator("RCS");
            Control.ModerationDuration_LastChange = 1;

            Control.External_GetMute = new DvRenderingControl.Delegate_GetMute(GetMuteSink);
            Control.External_SetMute = new DvRenderingControl.Delegate_SetMute(SetMuteSink);
            Control.External_GetVolume = new DvRenderingControl.Delegate_GetVolume(GetVolumeSink);
            Control.External_SetVolume = new DvRenderingControl.Delegate_SetVolume(SetVolumeSink);
            Control.External_GetBlueVideoBlackLevel  = new DvRenderingControl.Delegate_GetBlueVideoBlackLevel(GetBlueVideoBlackSink);
            Control.External_GetBlueVideoGain = new DvRenderingControl.Delegate_GetBlueVideoGain(GetBlueVideoGainSink);
            Control.External_SetBlueVideoBlackLevel = new DvRenderingControl.Delegate_SetBlueVideoBlackLevel(SetBlueVideoBlackSink);
            Control.External_SetBlueVideoGain = new DvRenderingControl.Delegate_SetBlueVideoGain(SetBlueVideoGainSink);
            Control.External_GetGreenVideoBlackLevel  = new DvRenderingControl.Delegate_GetGreenVideoBlackLevel(GetGreenVideoBlackSink);
            Control.External_GetGreenVideoGain = new DvRenderingControl.Delegate_GetGreenVideoGain(GetGreenVideoGainSink);
            Control.External_SetGreenVideoBlackLevel = new DvRenderingControl.Delegate_SetGreenVideoBlackLevel(SetGreenVideoBlackSink);
            Control.External_SetGreenVideoGain = new DvRenderingControl.Delegate_SetGreenVideoGain(SetGreenVideoGainSink);
            Control.External_GetRedVideoBlackLevel  = new DvRenderingControl.Delegate_GetRedVideoBlackLevel(GetRedVideoBlackSink);
            Control.External_GetRedVideoGain = new DvRenderingControl.Delegate_GetRedVideoGain(GetRedVideoGainSink);
            Control.External_SetRedVideoBlackLevel = new DvRenderingControl.Delegate_SetRedVideoBlackLevel(SetRedVideoBlackSink);
            Control.External_SetRedVideoGain = new DvRenderingControl.Delegate_SetRedVideoGain(SetRedVideoGainSink);
            Control.External_GetBrightness = new DvRenderingControl.Delegate_GetBrightness(GetBrightnessSink);
            Control.External_SetBrightness = new DvRenderingControl.Delegate_SetBrightness(SetBrightnessSink);
            Control.External_GetContrast = new DvRenderingControl.Delegate_GetContrast(GetContrastSink);
            Control.External_SetContrast = new DvRenderingControl.Delegate_SetContrast(SetContrastSink);
            Control.External_GetSharpness = new DvRenderingControl.Delegate_GetSharpness(GetSharpnessSink);
            Control.External_SetSharpness = new DvRenderingControl.Delegate_SetSharpness(SetSharpnessSink);

            Control.External_ListPresets = new DvRenderingControl.Delegate_ListPresets(ListPresetsSink);
            Control.External_SelectPreset = new DvRenderingControl.Delegate_SelectPreset(SelectPresetSink);

            device.Manufacturer = "OpenSource";
            device.ManufacturerURL = "";
            device.PresentationURL = "/";
            device.HasPresentation = false;
            device.ModelName = "Renderer";
            device.ModelDescription = "AV Media Renderer Device";
            device.ModelURL = new Uri("http://www.sourceforge.org");
            device.StandardDeviceType = "MediaRenderer";

            device.AddService(Manager);
            device.AddService(Control);
            device.AddService(AVT);

            if(ConnectionMax == 0)
            {
                Manager.Evented_CurrentConnectionIDs = "0";
                CurrentConnections = 1;
                AVConnection c = new AVConnection(this, "", "/", -1, DvConnectionManager.Enum_A_ARG_TYPE_Direction.INPUT, 0, 0, 0);
                c.Parent = this;
                c._WhoCreatedMe = new IPEndPoint(IPAddress.Parse("127.0.0.1"),0);
                ID_Table[(UInt32)0] = c;
                if(h!=null) h(this,c);
            }
        }
 protected void GetVolumeSink(System.UInt32 InstanceID, DvRenderingControl.Enum_A_ARG_TYPE_Channel Channel, out System.UInt16 CurrentVolume)
 {
     if(ID_Table.ContainsKey(InstanceID)==false)
     {
         throw(new UPnPCustomException(802,InstanceID.ToString() + " is not a valid InstanceID"));
     }
     else
     {
         AVConnection c = (AVConnection)ID_Table[InstanceID];
         CurrentVolume = c.GetVolume(Channel);
     }
 }
 internal void _SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel Channel, UInt16 DesiredVolume)
 {
     SetVolume(Channel,DesiredVolume);
     if(OnVolumeChanged!=null) OnVolumeChanged(this,Channel,DesiredVolume);
 }
 protected void SetMuteSink(System.UInt32 InstanceID, DvRenderingControl.Enum_A_ARG_TYPE_Channel Channel, System.Boolean DesiredMute)
 {
     if(ID_Table.ContainsKey(InstanceID)==false)
     {
         throw(new UPnPCustomException(802,InstanceID.ToString() + " is not a valid InstanceID"));
     }
     else
     {
         AVConnection c = (AVConnection)ID_Table[InstanceID];
         c._SetMute(Channel,DesiredMute);
     }
 }
 public void SetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel Channel, UInt16 DesiredVolume)
 {
     string arg = DvRenderingControl.Enum_A_ARG_TYPE_Channel_ToString(Channel);
     VolumeChannelTable[arg] = DesiredVolume;
     RC_LastChange("Volume",DesiredVolume.ToString(),"channel", DvRenderingControl.Enum_A_ARG_TYPE_Channel_ToString(Channel));
     /*
     if(Channel==RenderingControl.Enum_A_ARG_TYPE_Channel.MASTER)
     {
         RC_LastChange("Volume",DesiredVolume.ToString());
     }*/
 }
 internal void _SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel Channel, bool DesiredMute)
 {
     SetMute(Channel,DesiredMute);
     if(OnMuteChanged!=null) OnMuteChanged(this,Channel,DesiredMute);
 }
 public UInt16 GetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel Channel)
 {
     string arg = DvRenderingControl.Enum_A_ARG_TYPE_Channel_ToString(Channel);
     return((UInt16)VolumeChannelTable[arg]);
 }
        public void SetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel Channel, bool DesiredMute)
        {
            MuteChannelTable[DvRenderingControl.Enum_A_ARG_TYPE_Channel_ToString(Channel)] = DesiredMute;

            RC_LastChange("Mute",DesiredMute.ToString().ToLower(),"channel",DvRenderingControl.Enum_A_ARG_TYPE_Channel_ToString(Channel));

            //			if(Channel==DvRenderingControl.Enum_A_ARG_TYPE_Channel.MASTER)
            //			{
            //				RC_LastChange("Mute",DesiredMute.ToString().ToLower());
            //			}
        }
 public bool GetMute(DvRenderingControl.Enum_A_ARG_TYPE_Channel Channel)
 {
     return((bool)MuteChannelTable[DvRenderingControl.Enum_A_ARG_TYPE_Channel_ToString(Channel)]);
 }
Exemple #11
0
 internal _DvRenderingControl(DvRenderingControl n)
 {
     Outer = n;
     S = BuildUPnPService();
 }
        protected void VolumeSink(AVConnection sender, DvRenderingControl.Enum_A_ARG_TYPE_Channel Channel, System.UInt16 DesiredVolume)
        {
            if (InvokeRequired) { Invoke(new AVConnection.VolumeChangedHandler(VolumeSink), sender, Channel, DesiredVolume); return; }

            SetVolume((int)DesiredVolume, Channel);

            switch (Channel)
            {
                case DvRenderingControl.Enum_A_ARG_TYPE_Channel.LF:
                    LeftChannel = DesiredVolume;
                    break;
                case DvRenderingControl.Enum_A_ARG_TYPE_Channel.RF:
                    RightChannel = DesiredVolume;
                    break;
            }
            int balance = ((int)System.Math.Pow(((double)LeftChannel - (double)RightChannel) / (double)10, 4));
            if (LeftChannel > RightChannel) balance = balance * (-1);

            if (Channel != DvRenderingControl.Enum_A_ARG_TYPE_Channel.MASTER)
            {
                player.settings.balance = balance;
                DesiredVolume = (UInt16)((float)System.Math.Max(LeftChannel, RightChannel) * ((float)sender.GetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.MASTER) / (float)100));
            }
            else
            {
                DesiredVolume = (UInt16)((float)System.Math.Max(LeftChannel, RightChannel) * ((float)sender.GetVolume(DvRenderingControl.Enum_A_ARG_TYPE_Channel.MASTER) / (float)100));
            }

            //int nv = -1 * (int)(System.Math.Pow(((100 - ((((double)DesiredVolume) / 2.2) + 20)) / 10),4));
            player.settings.volume = DesiredVolume;
        }
        protected void MuteSink(AVConnection sender, DvRenderingControl.Enum_A_ARG_TYPE_Channel Channel, bool NewMute)
        {
            if (InvokeRequired) { Invoke(new AVConnection.MuteChangedHandler(MuteSink), sender, Channel, NewMute); return; }

            if (Channel == DvRenderingControl.Enum_A_ARG_TYPE_Channel.MASTER)
            {
                player.settings.mute = (bool)NewMute;
                SetMuteButton((bool)NewMute);
            }
        }
 public void SetVolume(int volume, DvRenderingControl.Enum_A_ARG_TYPE_Channel channel)
 {
     switch (channel)
     {
         case DvRenderingControl.Enum_A_ARG_TYPE_Channel.MASTER:
             volumeTrackBar.Value = volume;
             break;
         case DvRenderingControl.Enum_A_ARG_TYPE_Channel.LF:
             this.leftChannelTrackBar.Value = volume;
             break;
         case DvRenderingControl.Enum_A_ARG_TYPE_Channel.RF:
             this.rightChannelTrackBar.Value = volume;
             break;
     }
 }