示例#1
0
文件: Auto3D.cs 项目: caomw/Auto3D
        public Auto3D()
        {
            Auto3DUPnP.Init();

            // add new instances of all existing devices here...

            _listDevices.Add(new NoDevice());

            String fullPath      = System.Reflection.Assembly.GetAssembly(typeof(Auto3D)).Location;
            String directoryName = Path.GetDirectoryName(fullPath);

            directoryName = Path.Combine(directoryName, "Auto3D");

            String[] files = Directory.GetFiles(directoryName, "Auto3D-*.dll");

            foreach (String file in files)
            {
                if (!file.Contains("Auto3D-BaseDevice.dll"))
                {
                    Assembly asm = Assembly.LoadFrom(file); // pre-load assembly...

                    IAuto3D[] results = (from type in asm.GetTypes()
                                         where typeof(IAuto3D).IsAssignableFrom(type)
                                         select(IAuto3D) Activator.CreateInstance(type)).ToArray();

                    foreach (IAuto3D result in results)
                    {
                        _listDevices.Add(result);

                        // if this is an UPnP device we register for callbacks

                        if (result is IAuto3DUPnPServiceCallBack)
                        {
                            Auto3DUPnP.RegisterForCallbacks((IAuto3DUPnPServiceCallBack)result);
                        }
                    }
                }
            }
        }
示例#2
0
文件: Auto3D.cs 项目: caomw/Auto3D
        public void Stop()
        {
            // sometimes stop is called before SystemEvents_SessionEnding
            // in this case we shut down devices here, if necessary (before connection is closed)

            bool bShutDownPending = GetSystemMetrics(0x2000) != 0;

            Log.Debug("Auto3D: Stop - ShutDownPending = " + bShutDownPending);
            Log.Debug("Auto3D: Stop - MePoPowerOff = " + GUIGraphicsContext.StoppingToPowerOff);

            if (bShutDownPending || GUIGraphicsContext.StoppingToPowerOff)
            {
                SystemShutDown();
            }

            // stop UPnP
            Auto3DUPnP.StopSSDP();

            _run = false;
            _activeDevice.Stop();

            if (bMenuMCERemote)
            {
                HIDInput.getInstance().HidEvent -= Auto3DSetup_HidEvent;
            }

            if (!bSuppressSwitchBackTo2D)
            {
                GUIGraphicsContext.Render3DMode = GUIGraphicsContext.eRender3DMode.None;
            }

            g_Player.PlayBackEnded   -= OnVideoEnded;
            g_Player.PlayBackStopped -= OnVideoStopped;
            g_Player.PlayBackStarted -= OnVideoStarted;

            SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged;
        }
示例#3
0
文件: Auto3D.cs 项目: caomw/Auto3D
        public void Start()
        {
            _run = true;

            g_Player.PlayBackEnded    += OnVideoEnded;
            g_Player.PlayBackStopped  += OnVideoStopped;
            g_Player.PlayBackStarted  += OnVideoStarted;
            g_Player.TVChannelChanged += OnTVChannelChanged;

            using (Settings reader = new MPSettings())
            {
                b3DMenuAlways = reader.GetValueAsBool("Auto3DPlugin", "3DMenuAlways", false);
                b3DMenuOnKey  = reader.GetValueAsBool("Auto3DPlugin", "3DMenuOnKey", false);
                String menuHotKey = reader.GetValueAsString("Auto3DPlugin", "3DMenuKey", "CTRL + D");

                if (menuHotKey.StartsWith("MCE")) // reject old configs
                {
                    menuHotKey = "";
                }

                if (menuHotKey.StartsWith("HID"))
                {
                    bMenuMCERemote = true;
                    mceRemoteKey   = menuHotKey;

                    HIDInput.getInstance().HidEvent += Auto3DSetup_HidEvent;
                }
                else
                {
                    bMenuHotKeyShift = menuHotKey.Contains("SHIFT");
                    bMenuHotKeyCtrl  = menuHotKey.Contains("CTRL");
                    bMenuHotKeyAlt   = menuHotKey.Contains("ALT");

                    if (menuHotKey.Contains("+"))
                    {
                        int pos = menuHotKey.LastIndexOf('+');
                        menuHotKey = menuHotKey.Substring(pos + 1).Trim();
                    }

                    _menuHotKey = (Keys)Enum.Parse(typeof(Keys), menuHotKey, true);
                }

                bCheckNameSimple = reader.GetValueAsBool("Auto3DPlugin", "CheckNameSimple", true);
                bCheckNameFull   = reader.GetValueAsBool("Auto3DPlugin", "CheckNameFull", true);

                bCheckSideBySide      = reader.GetValueAsBool("Auto3DPlugin", "SideBySide", true);
                bCheckTopAndBottom    = reader.GetValueAsBool("Auto3DPlugin", "TopAndBottom", false);
                bAnalyzeNetworkStream = reader.GetValueAsBool("Auto3DPlugin", "AnalyzeNetworkStream", true);

                String activeDeviceName = reader.GetValueAsString("Auto3DPlugin", "ActiveDevice", "");

                bTV    = reader.GetValueAsBool("Auto3DPlugin", "TV", false);
                bVideo = reader.GetValueAsBool("Auto3DPlugin", "Video", true);

                if (reader.GetValueAsBool("Auto3DPlugin", "CheckNameFormatSBS", true))
                {
                    _nameFormat = VideoFormat.Fmt3DSBS;
                }
                else
                {
                    _nameFormat = VideoFormat.Fmt3DTAB;
                }

                foreach (IAuto3D device in _listDevices)
                {
                    if (device.ToString() == activeDeviceName)
                    {
                        _activeDevice = device;
                    }
                }

                if (_activeDevice == null)
                {
                    _activeDevice = _listDevices[0];
                }

                Log.Info("Auto3D: Connecting to Device " + _activeDevice.ToString());

                _activeDevice.Start();

                if (_activeDevice is Auto3DUPnPBaseDevice)
                {
                    Auto3DUPnP.StartSSDP();
                }

                if (b3DMenuOnKey)
                {
                    Auto3DHelpers.GetMainForm().PreviewKeyDown += form_PreviewKeyDown;
                }

                GUIGraphicsContext.Render3DSubtitle         = reader.GetValueAsBool("Auto3DPlugin", "3DSubtitles", true);
                GUIGraphicsContext.Render3DSubtitleDistance = -reader.GetValueAsInt("Auto3DPlugin", "SubtitleDepth", 0);

                bConvert2Dto3DEnabled = reader.GetValueAsBool("Auto3DPlugin", "ConvertTo3D", false);
                GUIGraphicsContext.Convert2Dto3DSkewFactor = reader.GetValueAsInt("Auto3DPlugin", "SkewFactor", 10);

                bStretchSubtitles = reader.GetValueAsBool("Auto3DPlugin", "StretchSubtitles", false);

                bSuppressSwitchBackTo2D = reader.GetValueAsBool("Auto3DPlugin", "SupressSwitchBackTo2D", false);
                bConvert3DTo2D          = reader.GetValueAsBool("Auto3DPlugin", "Convert3DTo2D", false);

                SplitKeywords(ref _keywordsSBS, reader.GetValueAsString("Auto3DPlugin", "SwitchSBSLabels", "\"3DSBS\", \"3D SBS\""));
                SplitKeywords(ref _keywordsSBSR, reader.GetValueAsString("Auto3DPlugin", "SwitchSBSRLabels", "\"3DSBSR\", \"3D SBS R\""));
                SplitKeywords(ref _keywordsTAB, reader.GetValueAsString("Auto3DPlugin", "SwitchTABLabels", "\"3DTAB\", \"3D TAB\""));
                SplitKeywords(ref _keywordsTABR, reader.GetValueAsString("Auto3DPlugin", "SwitchTABRLabels", "\"3DTABR\", \"3D TAB R\""));

                bTurnDeviceOff     = reader.GetValueAsBool("Auto3DPlugin", "TurnDeviceOff", false);
                nTurnDeviceOffVia  = reader.GetValueAsInt("Auto3DPlugin", "TurnDeviceOffVia", 0);
                nTurnDeviceOffWhen = reader.GetValueAsInt("Auto3DPlugin", "TurnDeviceOffWhen", 0);

                bTurnDeviceOn     = reader.GetValueAsBool("Auto3DPlugin", "TurnDeviceOn", false);
                nTurnDeviceOnVia  = reader.GetValueAsInt("Auto3DPlugin", "TurnDeviceOnVia", 0);
                nTurnDeviceOnWhen = reader.GetValueAsInt("Auto3DPlugin", "TurnDeviceOnWhen", 0);
            }

            SystemEvents.PowerModeChanged  += SystemEvents_PowerModeChanged;
            SystemEvents.SessionEnding     += SystemEvents_SessionEnding;
            GUIGraphicsContext.OnNewAction += GUIGraphicsContext_OnNewAction;

            if (bTurnDeviceOff && (nTurnDeviceOnWhen == 0 || nTurnDeviceOnWhen == 2) && _activeDevice.GetTurnOffInterfaces() != DeviceInterface.None)
            {
                _activeDevice.TurnOn((DeviceInterface)nTurnDeviceOnVia);
            }
        }
示例#4
0
        private void comboBoxModel_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (_lastDevice != null)
            {
                _lastDevice.Stop();
            }

            Auto3DUPnP.StopSSDP();

            IAuto3DSetup setup = (IAuto3DSetup)((IAuto3D)comboBoxModel.SelectedItem).GetSetupControl();

            setup.BringToFront();
            setup.GetDevice().Start();

            if (setup.GetDevice() is Auto3DUPnPBaseDevice)
            {
                Auto3DUPnP.StartSSDP();
            }

            buttonConfig.Visible = (setup.GetDevice().GetRemoteControl() != null);

            Auto3DBaseDevice baseDevice = (Auto3DBaseDevice)setup.GetDevice();

            if (baseDevice.GetTurnOffInterfaces() == DeviceInterface.None)
            {
                checkBoxTurnOffDevice.Enabled = false;
                comboBoxTurnOffDevice.Enabled = false;
                buttonTurnOffDevice.Enabled   = false;
                radioButtonIpOff.Enabled      = false;
                radioButtonIrOff.Enabled      = false;
            }
            else
            {
                checkBoxTurnOffDevice.Enabled = true;
                comboBoxTurnOffDevice.Enabled = true;
                buttonTurnOffDevice.Enabled   = true;

                if ((baseDevice.GetTurnOffInterfaces() & DeviceInterface.IR) == DeviceInterface.IR)
                {
                    using (Settings reader = new MPSettings())
                    {
                        radioButtonIrOff.Enabled = true;
                        radioButtonIrOff.Checked = reader.GetValueAsInt("Auto3DPlugin", "TurnDeviceOffVia", 0) == 2;
                    }
                }
                else
                {
                    using (Settings reader = new MPSettings())
                    {
                        radioButtonIrOff.Enabled = false;
                        radioButtonIrOff.Checked = false;
                    }
                }

                if ((baseDevice.GetTurnOffInterfaces() & DeviceInterface.Network) == DeviceInterface.Network)
                {
                    using (Settings reader = new MPSettings())
                    {
                        radioButtonIpOff.Enabled = true;
                        radioButtonIpOff.Checked = reader.GetValueAsInt("Auto3DPlugin", "TurnDeviceOffVia", 0) == 1;
                    }
                }
                else
                {
                    using (Settings reader = new MPSettings())
                    {
                        radioButtonIpOff.Enabled = false;
                        radioButtonIpOff.Checked = false;
                    }
                }
            }

            if (baseDevice.GetTurnOnInterfaces() == DeviceInterface.None)
            {
                checkBoxTurnOnDevice.Enabled = false;
                comboBoxTurnOnDevice.Enabled = false;
                buttonTurnOnDevice.Enabled   = false;
                radioButtonIpOn.Enabled      = false;
                radioButtonIrOn.Enabled      = false;
            }
            else
            {
                checkBoxTurnOnDevice.Enabled = true;
                comboBoxTurnOnDevice.Enabled = true;
                buttonTurnOnDevice.Enabled   = true;

                if ((baseDevice.GetTurnOnInterfaces() & DeviceInterface.IR) == DeviceInterface.IR)
                {
                    using (Settings reader = new MPSettings())
                    {
                        radioButtonIrOn.Enabled = true;
                        radioButtonIrOn.Checked = reader.GetValueAsInt("Auto3DPlugin", "TurnDeviceOnVia", 0) == 2;
                    }
                }
                else
                {
                    using (Settings reader = new MPSettings())
                    {
                        radioButtonIrOn.Enabled = false;
                        radioButtonIrOn.Checked = false;
                    }
                }

                if ((baseDevice.GetTurnOnInterfaces() & DeviceInterface.Network) == DeviceInterface.Network)
                {
                    using (Settings reader = new MPSettings())
                    {
                        radioButtonIpOn.Enabled = true;
                        radioButtonIpOn.Checked = reader.GetValueAsInt("Auto3DPlugin", "TurnDeviceOnVia", 0) == 1;
                    }
                }
                else
                {
                    using (Settings reader = new MPSettings())
                    {
                        radioButtonIpOn.Enabled = false;
                        radioButtonIpOn.Checked = false;
                    }
                }
            }
        }