/// <summary> /// Checks if the fileName has a video or not /// </summary> /// <param name="fileName">Filename to check</param> /// <returns>true, when file or stream has a video</returns> public bool HasFileOrStreamVideo(String fileName) { bool isVideo = false; if (fileName.StartsWith("dvd://")) { isVideo = true; } else if (fileName.StartsWith("dvdnav://")) { isVideo = true; } else if (fileName.StartsWith("vcd://")) { isVideo = true; } else if (fileName.StartsWith("svcd://")) { isVideo = true; } else if (fileName.StartsWith("cue://") || fileName.StartsWith("ftp://") || fileName.StartsWith("http://") || fileName.StartsWith("http_proxy://") || fileName.StartsWith("mms://") || fileName.StartsWith("mmst://") || fileName.StartsWith("mpst://") || fileName.StartsWith("rtp://") || fileName.StartsWith("rtsp://") || fileName.StartsWith("sdp://") || fileName.StartsWith("udp://") || fileName.StartsWith("unsv://")) { if (_extensionSettings.ContainsKey(System.IO.Path.GetExtension(fileName))) { isVideo = _extensionSettings[System.IO.Path.GetExtension(fileName)].PlayMode == PlayMode.Video; } else { isVideo = true; } } else if (fileName.EndsWith(".cda")) { } else { ExtensionSettings extSettings = _extensionSettings[System.IO.Path.GetExtension(fileName).Trim().ToLower()]; isVideo = (extSettings.PlayMode == PlayMode.Video); } return(isVideo); }
/// <summary> /// Loads the Plugin specific XML configuration file /// </summary> private static void LoadXMLData() { ExtensionSettings settings; PlayMode mode = PlayMode.Unrecognized; XmlDocument doc = new XmlDocument(); string path = Config.GetFile(Config.Dir.Config, "MPlayer_ExtPlayer.xml"); doc.Load(path); if (doc.DocumentElement != null) { XmlNodeList listExtensionFamilies = doc.DocumentElement.SelectNodes("/mplayer/extensions"); if (listExtensionFamilies != null) { foreach (XmlNode nodeFamily in listExtensionFamilies) { if (nodeFamily.Attributes["family"].Value.Equals("Video")) { mode = PlayMode.Video; } else if (nodeFamily.Attributes["family"].Value.Equals("Audio")) { mode = PlayMode.Audio; } XmlNodeList listExtensions = nodeFamily.SelectNodes("Extension"); if (listExtensions != null) { foreach (XmlNode nodeExtension in listExtensions) { settings = new ExtensionSettings(); settings.Name = nodeExtension.Attributes["name"].Value; settings.Arguments = nodeExtension.Attributes["arguments"].Value; settings.ExtPlayerUse = Boolean.Parse(nodeExtension.Attributes["extPlayerUse"].Value); settings.PlayMode = mode; if (!_extensionSettings.ContainsKey(settings.Name)) { _extensionSettings.Add(settings.Name, settings); if (settings.ExtPlayerUse) { _extensionSettingsExtPlayer.Add(settings.Name, settings); } } } } } } } }
/// <summary> /// Loads the Plugin specific XML configuration file /// </summary> private static void LoadXMLData() { ExtensionSettings settings; PlayMode mode = PlayMode.Unrecognized; XmlDocument doc = new XmlDocument(); string path = Config.GetFile(Config.Dir.Config, "MPlayer_ExtPlayer.xml"); doc.Load(path); if (doc.DocumentElement != null) { XmlNodeList listExtensionFamilies = doc.DocumentElement.SelectNodes("/mplayer/extensions"); if (listExtensionFamilies != null) foreach (XmlNode nodeFamily in listExtensionFamilies) { if (nodeFamily.Attributes["family"].Value.Equals("Video")) { mode = PlayMode.Video; } else if (nodeFamily.Attributes["family"].Value.Equals("Audio")) { mode = PlayMode.Audio; } XmlNodeList listExtensions = nodeFamily.SelectNodes("Extension"); if (listExtensions != null) foreach (XmlNode nodeExtension in listExtensions) { settings = new ExtensionSettings(); settings.Name = nodeExtension.Attributes["name"].Value; settings.Arguments = nodeExtension.Attributes["arguments"].Value; settings.ExtPlayerUse = Boolean.Parse(nodeExtension.Attributes["extPlayerUse"].Value); settings.PlayMode = mode; if (!_extensionSettings.ContainsKey(settings.Name)) { _extensionSettings.Add(settings.Name, settings); if (settings.ExtPlayerUse) { _extensionSettingsExtPlayer.Add(settings.Name, settings); } } } } } }
/// <summary> /// Reads the whole configuration /// </summary> private void ReadConfig() { try { ExtensionSettings mplayerSetting = new ExtensionSettings(".mplayer", PlayMode.Unrecognized, "", true); _extensionSettings = new Dictionary<string, ExtensionSettings>(); _extensionSettings.Add(mplayerSetting.Name, mplayerSetting); _extensionSettingsExtPlayer = new Dictionary<string, ExtensionSettings>(); _extensionSettingsExtPlayer.Add(mplayerSetting.Name, mplayerSetting); ExtensionSettings settings; using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { _osdMode = (OSDMode)xmlreader.GetValueAsInt("mplayer", "osd", (int)OSDMode.InternalMPlayer); _rebuildIndex = xmlreader.GetValueAsBool("mplayer", "rebuildIndex", false); _priorityBoost = xmlreader.GetValueAsBool("mplayer", "priorityBoost", true); _framedrop = xmlreader.GetValueAsBool("mplayer", "framedrop", false); _doubleBuffering = xmlreader.GetValueAsBool("mplayer", "doubleBuffering", true); _directRendering = xmlreader.GetValueAsBool("mplayer", "directRendering", true); _audioNormalize = xmlreader.GetValueAsBool("mplayer", "audioNormalize", false); _passthroughAC3_DTS = xmlreader.GetValueAsBool("mplayer", "passthroughAC3DTS", false); _soundOutputDriver = (SoundOutputDriver)xmlreader.GetValueAsInt("mplayer", "soundOutputDriver", (int)SoundOutputDriver.DirectSound); _soundOutputDevice = xmlreader.GetValueAsInt("mplayer", "soundOutputDevice", 0); _deinterlace = (Deinterlace)xmlreader.GetValueAsInt("mplayer", "deinterlace", (int)Deinterlace.Adaptive); _aspectRatio = (AspectRatio)xmlreader.GetValueAsInt("mplayer", "aspectRatio", (int)AspectRatio.Automatic); _postProcessing = (PostProcessing)xmlreader.GetValueAsInt("mplayer", "postProcessing", (int)PostProcessing.Maximum); _audioChannels = (AudioChannels)xmlreader.GetValueAsInt("mplayer", "audioChannels", (int)AudioChannels.Default); _noiseDenoise = (NoiseDenoise)xmlreader.GetValueAsInt("mplayer", "noise", (int)NoiseDenoise.Nothing); _cacheSize = xmlreader.GetValueAsInt("mplayer", "cacheSize", 0); _audioDelayStep = xmlreader.GetValueAsInt("mplayer", "audioDelayStep", 100); _subtitleDelayStep = xmlreader.GetValueAsInt("mplayer", "subtitleDelayStep", 100); _subtitlePosition = xmlreader.GetValueAsInt("mplayer", "subtitlePosition", 100); _subtitleSize = xmlreader.GetValueAsInt("mplayer", "subtitleSize", 5); string subtitleFontName = xmlreader.GetValueAsString("mplayer", "subtitleFontName", "Arial"); _subtitleFontSet = CheckSubtitleFont(subtitleFontName, out _subtitleFontFileName); _mplayerPath = xmlreader.GetValueAsString("mplayer", "mplayerPath", "C:\\Program Files\\MPlayer\\"); xmlreader.GetValueAsString("mplayer", "mplayerPath", "C:\\Program Files\\MPlayer\\Mplayer.exe"); string arguments = xmlreader.GetValueAsString("mplayer", "generalArguments", ""); settings = new ExtensionSettings("general", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "dvdArguments", String.Empty); settings = new ExtensionSettings("dvd://", PlayMode.Video, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "vcdArguments", String.Empty); settings = new ExtensionSettings("vcd://", PlayMode.Video, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "svcdArguments", String.Empty); settings = new ExtensionSettings("svcd://", PlayMode.Video, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "cueArguments", String.Empty); settings = new ExtensionSettings("cue://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "ftpArguments", String.Empty); settings = new ExtensionSettings("ftp://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "httpArguments", String.Empty); settings = new ExtensionSettings("http://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); settings = new ExtensionSettings("http_proxy://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "mmsArguments", String.Empty); settings = new ExtensionSettings("mms://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); settings = new ExtensionSettings("mmst://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "mpstArguments", String.Empty); settings = new ExtensionSettings("mpst://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "rtspArguments", String.Empty); settings = new ExtensionSettings("rtsp://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); settings = new ExtensionSettings("rtp://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "sdpArguments", String.Empty); settings = new ExtensionSettings("sdp://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "udpArguments", String.Empty); settings = new ExtensionSettings("udp://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "unsvArguments", String.Empty); settings = new ExtensionSettings("unsv://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); _enableSubtitles = xmlreader.GetValueAsBool("mplayer", "enableSubtitles", false); _videoOutputDriver = (VideoOutputDriver)xmlreader.GetValueAsInt("mplayer", "videoOutputDriver", (int)VideoOutputDriver.DirectX); string timeout = (xmlreader.GetValueAsString("movieplayer", "skipsteptimeout", "1500")); if (timeout == string.Empty) _seekStepTimeout = 1500; else _seekStepTimeout = Convert.ToInt16(timeout); String m_strLanguage = xmlreader.GetValueAsString("skin", "language", "English"); LocalizeStrings.Load(m_strLanguage); } LoadXMLData(); } catch (Exception e) { Log.Error(e); } _supportedExtensions = new String[_extensionSettingsExtPlayer.Count]; _extensionSettingsExtPlayer.Keys.CopyTo(_supportedExtensions, 0); }
/// <summary> /// Creates a process object and sets the starting _arguments /// </summary> /// <param name="fileName">FileName that should be started</param> /// <param name="handle">Handle of inner panel</param> /// <returns>UpdateGUI object</returns> public Process CreateProcessForFileName(String fileName, IntPtr handle) { Process mplayerProcess = new Process(); mplayerProcess.StartInfo.UseShellExecute = false; mplayerProcess.StartInfo.RedirectStandardInput = true; mplayerProcess.StartInfo.RedirectStandardOutput = true; mplayerProcess.StartInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(_mplayerPath); mplayerProcess.StartInfo.FileName = _mplayerPath; StringBuilder arguments = GetGeneralArguments(handle, fileName.StartsWith("dvdnav://")); if (fileName.StartsWith("dvd://")) { String file = fileName.Substring(6); arguments.Append(_extensionSettings["dvd://"].Arguments); arguments.Append(" -dvd-device \""); arguments.Append(file); arguments.Append("\""); arguments.Append(" -alang "); arguments.Append(CultureInfo.CurrentCulture.TwoLetterISOLanguageName); arguments.Append(" -slang "); arguments.Append(CultureInfo.CurrentCulture.TwoLetterISOLanguageName); arguments.Append(" dvd://"); } else if (fileName.StartsWith("dvdnav://")) { String file = fileName.Substring(9); arguments.Append(_extensionSettings["dvd://"].Arguments); arguments.Append(" -dvd-device \""); arguments.Append(file); arguments.Append("\""); arguments.Append(" -alang "); arguments.Append(CultureInfo.CurrentCulture.TwoLetterISOLanguageName); arguments.Append(" -slang "); arguments.Append(CultureInfo.CurrentCulture.TwoLetterISOLanguageName); arguments.Append(" dvdnav://"); } else if (fileName.StartsWith("vcd://")) { String file = fileName.Substring(6); arguments.Append(_extensionSettings["vcd://"].Arguments); arguments.Append(" \"vcd://"); arguments.Append(file); arguments.Append("\" "); } else if (fileName.StartsWith("svcd://")) { String file = fileName.Substring(7); arguments.Append(_extensionSettings["svcd://"].Arguments); arguments.Append(" \"vcd://"); arguments.Append(file); arguments.Append("\" "); } else if (fileName.StartsWith("cue://") || fileName.StartsWith("ftp://") || fileName.StartsWith("http://") || fileName.StartsWith("http_proxy://") || fileName.StartsWith("mms://") || fileName.StartsWith("mmst://") || fileName.StartsWith("mpst://") || fileName.StartsWith("rtp://") || fileName.StartsWith("rtsp://") || fileName.StartsWith("sdp://") || fileName.StartsWith("udp://") || fileName.StartsWith("unsv://")) { int index = fileName.IndexOf("://"); String file = fileName.Substring(index + 3); String protocol = fileName.Substring(0, index + +3).ToLower(); Log.Info("MPlayer: StreamProtocol: " + protocol); Log.Info("MPlayer: StremFilename: " + file); arguments.Append(_extensionSettings[protocol].Arguments); if (_extensionSettings.ContainsKey(System.IO.Path.GetExtension(fileName))) { arguments.Append(_extensionSettings[System.IO.Path.GetExtension(fileName)].Arguments); } arguments.Append(" \""); arguments.Append(protocol); arguments.Append(file); arguments.Append("\" "); } else if (fileName.EndsWith(".cda")) { String drive = System.IO.Path.GetDirectoryName(fileName); if (drive.EndsWith("\\")) { drive = drive.Substring(0, drive.Length - 1); } String trackNumber = System.IO.Path.GetFileNameWithoutExtension(fileName).Substring(5); arguments.Append(_extensionSettings[".cda"].Arguments); arguments.Append(" cdda://"); arguments.Append(trackNumber); arguments.Append(" -cdrom-device "); arguments.Append(drive); arguments.Append(" "); } else { ExtensionSettings extSettings = _extensionSettings[System.IO.Path.GetExtension(fileName).Trim().ToLower()]; arguments.Append(extSettings.Arguments); arguments.Append(" \""); arguments.Append(fileName); arguments.Append("\" "); } arguments.Append(GetScreenArguments()); Log.Info("MPlayer: All Arguments: " + arguments); mplayerProcess.StartInfo.Arguments = arguments.ToString(); mplayerProcess.StartInfo.CreateNoWindow = true; mplayerProcess.EnableRaisingEvents = true; return(mplayerProcess); }
/// <summary> /// Reads the whole configuration /// </summary> private void ReadConfig() { try { ExtensionSettings mplayerSetting = new ExtensionSettings(".mplayer", PlayMode.Unrecognized, "", true); _extensionSettings = new Dictionary <string, ExtensionSettings>(); _extensionSettings.Add(mplayerSetting.Name, mplayerSetting); _extensionSettingsExtPlayer = new Dictionary <string, ExtensionSettings>(); _extensionSettingsExtPlayer.Add(mplayerSetting.Name, mplayerSetting); ExtensionSettings settings; using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { _osdMode = (OSDMode)xmlreader.GetValueAsInt("mplayer", "osd", (int)OSDMode.InternalMPlayer); _rebuildIndex = xmlreader.GetValueAsBool("mplayer", "rebuildIndex", false); _priorityBoost = xmlreader.GetValueAsBool("mplayer", "priorityBoost", true); _framedrop = xmlreader.GetValueAsBool("mplayer", "framedrop", false); _doubleBuffering = xmlreader.GetValueAsBool("mplayer", "doubleBuffering", true); _directRendering = xmlreader.GetValueAsBool("mplayer", "directRendering", true); _audioNormalize = xmlreader.GetValueAsBool("mplayer", "audioNormalize", false); _passthroughAC3_DTS = xmlreader.GetValueAsBool("mplayer", "passthroughAC3DTS", false); _soundOutputDriver = (SoundOutputDriver)xmlreader.GetValueAsInt("mplayer", "soundOutputDriver", (int)SoundOutputDriver.DirectSound); _soundOutputDevice = xmlreader.GetValueAsInt("mplayer", "soundOutputDevice", 0); _deinterlace = (Deinterlace)xmlreader.GetValueAsInt("mplayer", "deinterlace", (int)Deinterlace.Adaptive); _aspectRatio = (AspectRatio)xmlreader.GetValueAsInt("mplayer", "aspectRatio", (int)AspectRatio.Automatic); _postProcessing = (PostProcessing)xmlreader.GetValueAsInt("mplayer", "postProcessing", (int)PostProcessing.Maximum); _audioChannels = (AudioChannels)xmlreader.GetValueAsInt("mplayer", "audioChannels", (int)AudioChannels.Default); _noiseDenoise = (NoiseDenoise)xmlreader.GetValueAsInt("mplayer", "noise", (int)NoiseDenoise.Nothing); _cacheSize = xmlreader.GetValueAsInt("mplayer", "cacheSize", 0); _audioDelayStep = xmlreader.GetValueAsInt("mplayer", "audioDelayStep", 100); _subtitleDelayStep = xmlreader.GetValueAsInt("mplayer", "subtitleDelayStep", 100); _subtitlePosition = xmlreader.GetValueAsInt("mplayer", "subtitlePosition", 100); _subtitleSize = xmlreader.GetValueAsInt("mplayer", "subtitleSize", 5); string subtitleFontName = xmlreader.GetValueAsString("mplayer", "subtitleFontName", "Arial"); _subtitleFontSet = CheckSubtitleFont(subtitleFontName, out _subtitleFontFileName); _mplayerPath = xmlreader.GetValueAsString("mplayer", "mplayerPath", "C:\\Program Files\\MPlayer\\"); xmlreader.GetValueAsString("mplayer", "mplayerPath", "C:\\Program Files\\MPlayer\\Mplayer.exe"); string arguments = xmlreader.GetValueAsString("mplayer", "generalArguments", ""); settings = new ExtensionSettings("general", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "dvdArguments", String.Empty); settings = new ExtensionSettings("dvd://", PlayMode.Video, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "vcdArguments", String.Empty); settings = new ExtensionSettings("vcd://", PlayMode.Video, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "svcdArguments", String.Empty); settings = new ExtensionSettings("svcd://", PlayMode.Video, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "cueArguments", String.Empty); settings = new ExtensionSettings("cue://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "ftpArguments", String.Empty); settings = new ExtensionSettings("ftp://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "httpArguments", String.Empty); settings = new ExtensionSettings("http://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); settings = new ExtensionSettings("http_proxy://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "mmsArguments", String.Empty); settings = new ExtensionSettings("mms://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); settings = new ExtensionSettings("mmst://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "mpstArguments", String.Empty); settings = new ExtensionSettings("mpst://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "rtspArguments", String.Empty); settings = new ExtensionSettings("rtsp://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); settings = new ExtensionSettings("rtp://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "sdpArguments", String.Empty); settings = new ExtensionSettings("sdp://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "udpArguments", String.Empty); settings = new ExtensionSettings("udp://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); arguments = xmlreader.GetValueAsString("mplayer", "unsvArguments", String.Empty); settings = new ExtensionSettings("unsv://", PlayMode.Unrecognized, arguments, false); _extensionSettings.Add(settings.Name, settings); _enableSubtitles = xmlreader.GetValueAsBool("mplayer", "enableSubtitles", false); _videoOutputDriver = (VideoOutputDriver)xmlreader.GetValueAsInt("mplayer", "videoOutputDriver", (int)VideoOutputDriver.DirectX); string timeout = (xmlreader.GetValueAsString("movieplayer", "skipsteptimeout", "1500")); if (timeout == string.Empty) { _seekStepTimeout = 1500; } else { _seekStepTimeout = Convert.ToInt16(timeout); } String m_strLanguage = xmlreader.GetValueAsString("skin", "language", "English"); LocalizeStrings.Load(m_strLanguage); } LoadXMLData(); } catch (Exception e) { Log.Error(e); } _supportedExtensions = new String[_extensionSettingsExtPlayer.Count]; _extensionSettingsExtPlayer.Keys.CopyTo(_supportedExtensions, 0); }