public VisualizationBase(VisualizationInfo vizPluginInfo, VisualizationWindow vizCtrl) : this() { VizPluginInfo = vizPluginInfo; VisualizationWindow = vizCtrl; // Init BAssVis IntPtr hInstance = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]); switch (VizPluginInfo.VisualizationType) { case VisualizationInfo.PluginType.Sonique: BassVis.BASSVIS_Init(BASSVISKind.BASSVISKIND_SONIQUE, GUIGraphicsContext.form.Handle); _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_SONIQUE); break; case VisualizationInfo.PluginType.Winamp: BassVis.BASSVIS_Init(BASSVISKind.BASSVISKIND_WINAMP, GUIGraphicsContext.form.Handle); _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_WINAMP); break; case VisualizationInfo.PluginType.Bassbox: BassVis.BASSVIS_Init(BASSVISKind.BASSVISKIND_BASSBOX, GUIGraphicsContext.form.Handle); _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_BASSBOX); break; } }
public virtual bool Close() { try { if (_visParam != null) { BassVis.BASSVIS_Quit(_visParam); _visParam = null; } return(true); } catch (Exception) {} return(false); }
private void btWinampConfig_Click(object sender, EventArgs e) { if (_visParam != null) { // Free first the previous winamp plugin BassVis.BASSVIS_Quit(_visParam); } _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_WINAMP); BassVis.BASSVIS_Init(BASSVISKind.BASSVISKIND_WINAMP, MediaPortal.GUI.Library.GUIGraphicsContext.form.Handle); int tmpVis = BassVis.BASSVIS_GetModuleHandle(BASSVISKind.BASSVISKIND_WINAMP, VizPluginInfo.FilePath); if (tmpVis != 0) { int numModules = BassVis.BASSVIS_GetModulePresetCount(_visParam, VizPluginInfo.FilePath); BassVis.BASSVIS_Config(_visParam, 0); } }
public virtual bool Close() { try { if (_visParam != null) { Log.Info("VisualizationBase: Destroy BassVis with {0} viz plugins...", VizPluginInfo.Name); BassVis.BASSVIS_Quit(_visParam); _visParam = null; } return(true); } catch (Exception ex) { Log.Error("VisualizationBase: Failed to destroy BassVis - {0}", ex.ToString()); } return(false); }
public override bool WindowSizeChanged(Size newSize) { // If width or height are 0 the call to CreateVis will fail. // If width or height are 1 the window is in transition so we can ignore it. if (VisualizationWindow.Width <= 1 || VisualizationWindow.Height <= 1) { return(false); } // Do a move of the Winamp Viz if (_visParam.VisHandle != 0) { // Hide the Viswindow, so that we don't see it, while moving Win32API.ShowWindow(hwndChild, Win32API.ShowWindowFlags.Hide); _tmpVisParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_WINAMP); _tmpVisParam.VisGenWinHandle = VisualizationWindow.Handle; BassVis.BASSVIS_Resize(_tmpVisParam, 0, 0, newSize.Width, newSize.Height); } return(true); }
public virtual bool Close() { try { if (_visParam != null) { Log.Info("VisualizationBase: Destroy BassVis with {0} viz plugins...", VizPluginInfo.Name); BassVis.BASSVIS_Quit(_visParam); _visParam = null; } return true; } catch (Exception ex) { Log.Error("VisualizationBase: Failed to destroy BassVis - {0}", ex.ToString()); } return false; }
public VisualizationBase(VisualizationInfo vizPluginInfo, VisualizationWindow vizCtrl) : this() { VizPluginInfo = vizPluginInfo; VisualizationWindow = vizCtrl; // Init of BassVis should only used if the BASSVISKind changed remove also here switch (VizPluginInfo.VisualizationType) { case VisualizationInfo.PluginType.Sonique: _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_SONIQUE); break; case VisualizationInfo.PluginType.Winamp: _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_WINAMP); break; case VisualizationInfo.PluginType.Bassbox: _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_BASSBOX); break; case VisualizationInfo.PluginType.WMP: _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_WMP); break; } }
/// <summary> /// Search the Visaulation Path for supported Vis /// </summary> /// <returns></returns> public List <VisualizationInfo> GetVisualizationPluginsInfo() { _VisualizationPluginsInfo.Clear(); try { _VisualizationPluginsInfo.Add(new VisualizationInfo("None", true)); // Close any Visualisation, which we may have running, because of VizManager Init CloseCurrentVisualization(); string skinFolderPath = Path.Combine(Application.StartupPath, @"musicplayer\plugins\visualizations"); // Search for Sonique and Winamp Plugins string[] soniqueVisPaths = BassVis.BASSVIS_FindPlugins(BASSVISKind.BASSVISKIND_SONIQUE, skinFolderPath, true); // Note: Recursive Searches for Winamp Plugins are not supported // Winamp plugins expect itself to be stored in a folder named Plugins in the root of the executable. This is where we will search // So this is the folder where all the MP Plugins are stored as well skinFolderPath = Path.Combine(Application.StartupPath, @"plugins"); string[] winampVisPaths = BassVis.BASSVIS_FindPlugins(BASSVISKind.BASSVISKIND_WINAMP, skinFolderPath, true); List <VisualizationInfo> wmpPluginsInfo = GetWMPPluginInfo(); if (IsGForceInstalled()) { VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.GForce, string.Empty, "G-Force", string.Empty, null); _VisualizationPluginsInfo.Add(vizInfo); } if (IsWhiteCapInstalled()) { VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.WhiteCap, string.Empty, "WhiteCap", string.Empty, null); _VisualizationPluginsInfo.Add(vizInfo); } if (IsSoftSkiesInstalled()) { VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.SoftSkies, string.Empty, "SoftSkies", string.Empty, null); _VisualizationPluginsInfo.Add(vizInfo); } if (wmpPluginsInfo != null) { for (int i = 0; i < wmpPluginsInfo.Count; i++) { _VisualizationPluginsInfo.Add(wmpPluginsInfo[i]); } } if (soniqueVisPaths != null && soniqueVisPaths[0] != "") { BassVis.BASSVIS_Init(BASSVISKind.BASSVISKIND_SONIQUE, VizRenderWindow.Handle); _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_SONIQUE); for (int i = 0; i < soniqueVisPaths.Length; i++) { string filePath = soniqueVisPaths[i]; string name = Path.GetFileNameWithoutExtension(filePath); BASSVIS_EXEC visExec = new BASSVIS_EXEC(filePath); visExec.SON_Flags = BASSVISFlags.BASSVIS_NOINIT; // don't execute the plugin yet visExec.SON_ConfigFile = Path.Combine(Path.GetDirectoryName(filePath), "vis.ini"); if (_visParam.VisHandle != 0) { int counter = 0; bool bFree = BassVis.BASSVIS_Free(_visParam); while ((!bFree) && (counter <= 10)) { bFree = BassVis.BASSVIS_IsFree(_visParam); System.Windows.Forms.Application.DoEvents(); counter++; } _visParam.VisHandle = 0; } BassVis.BASSVIS_ExecutePlugin(visExec, _visParam); string pluginname = BassVis.BASSVIS_GetPluginName(_visParam); if (pluginname != null) { name = pluginname; } VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.Sonique, filePath, name, string.Empty, null); _VisualizationPluginsInfo.Add(vizInfo); } BassVis.BASSVIS_Quit(_visParam); } if (winampVisPaths != null && winampVisPaths[0] != "") { _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_WINAMP); for (int i = 0; i < winampVisPaths.Length; i++) { List <string> presets = new List <string>(); string filePath = winampVisPaths[i]; string name = Path.GetFileNameWithoutExtension(filePath); _visParam.VisHandle = BassVis.BASSVIS_GetPluginHandle(BASSVISKind.BASSVISKIND_WINAMP, filePath); string pluginname = BassVis.BASSVIS_GetPluginName(_visParam); if (pluginname != null) { name = pluginname; } // Get modules int numModules = BassVis.BASSVIS_GetModulePresetCount(_visParam, filePath); if (numModules > 0) { if (numModules > 0) { for (int j = 0; j < numModules; j++) { presets.Add(BassVis.BASSVIS_GetModulePresetName(_visParam, j, filePath)); } } VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.Winamp, filePath, name, string.Empty, presets); if (!vizInfo.IsBlackListed) { _VisualizationPluginsInfo.Add(vizInfo); } } } } } catch (Exception ex) { Log.Error("VisualisationManager: Failed to get viz plugins - {0}", ex.ToString()); } return(_VisualizationPluginsInfo); }
private void btWinampConfig_Click(object sender, EventArgs e) { if (_visParam != null) { // Free first the previous winamp plugin BassVis.BASSVIS_Quit(_visParam); } _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_WINAMP); BassVis.BASSVIS_Init(BASSVISKind.BASSVISKIND_WINAMP, MediaPortal.GUI.Library.GUIGraphicsContext.form.Handle); int tmpVis = BassVis.BASSVIS_GetPluginHandle(BASSVISKind.BASSVISKIND_WINAMP, VizPluginInfo.FilePath); if (tmpVis != 0) { int numModules = BassVis.BASSVIS_GetModulePresetCount(_visParam, VizPluginInfo.FilePath); BassVis.BASSVIS_Config(_visParam, 0); } }
public override bool WindowSizeChanged(Size newSize) { // If width or height are 0 the call to CreateVis will fail. // If width or height are 1 the window is in transition so we can ignore it. if (VisualizationWindow.Width <= 1 || VisualizationWindow.Height <= 1) { return false; } // Do a move of the Winamp Viz if (_visParam.VisHandle != 0) { // Hide the Viswindow, so that we don't see it, while moving Win32API.ShowWindow(VisualizationWindow.Handle, Win32API.ShowWindowFlags.Hide); _tmpVisParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_WINAMP); _tmpVisParam.VisGenWinHandle = VisualizationWindow.Handle; BassVis.BASSVIS_Resize(_tmpVisParam, 0, 0, newSize.Width, newSize.Height); } return true; }
/// <summary> /// Search the Visaulation Path for supported Vis /// </summary> /// <returns></returns> public List<VisualizationInfo> GetVisualizationPluginsInfo() { _VisualizationPluginsInfo.Clear(); try { _VisualizationPluginsInfo.Add(new VisualizationInfo("None", true)); // Close any Visualisation, which we may have running, because of VizManager Init if (Viz != null) CloseCurrentVisualization(); string skinFolderPath = Path.Combine(Application.StartupPath, @"musicplayer\plugins\visualizations"); // Search for Sonique Plugins string[] soniqueVisPaths = BassVis.BASSVIS_FindPlugins(BASSVISKind.BASSVISKIND_SONIQUE, skinFolderPath, true); // Search for Bassbox Plugins skinFolderPath = Path.Combine(Application.StartupPath, @"BBPlugin"); string[] bassboxVisPaths = BassVis.BASSVIS_FindPlugins(BASSVISKind.BASSVISKIND_BASSBOX, skinFolderPath, true); // Note: Recursive Searches for Winamp Plugins are not supported // Winamp plugins expect itself to be stored in a folder named Plugins in the root of the executable. This is where we will search // So this is the folder where all the MP Plugins are stored as well skinFolderPath = Path.Combine(Application.StartupPath, @"plugins"); string[] winampVisPaths = BassVis.BASSVIS_FindPlugins(BASSVISKind.BASSVISKIND_WINAMP, skinFolderPath, true); string[] wmpFilelist = BassVis.BASSVIS_FindPlugins(BASSVISKind.BASSVISKIND_WMP, string.Empty, false); if (wmpFilelist != null) { _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_WMP); foreach (string name in wmpFilelist) { if (!string.IsNullOrEmpty(name)) { List<string> presets = new List<string>(); // Get presets count int NumPresets = BassVis.BASSVIS_GetModulePresetCount(_visParam, name); string pluginname = BassVis.BASSVIS_GetPluginName(_visParam); if (NumPresets > 0) { for (int i = 0; i <= (NumPresets - 1); i++) { presets.Add(BassVis.BASSVIS_GetModulePresetName(_visParam, i, name)); } } VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.WMP, string.Empty, name, presets); _VisualizationPluginsInfo.Add(vizInfo); } } } if (soniqueVisPaths != null && soniqueVisPaths[0] != "") { _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_SONIQUE); for (int i = 0; i < soniqueVisPaths.Length; i++) { string filePath = soniqueVisPaths[i]; string name = Path.GetFileNameWithoutExtension(filePath); _visParam.VisHandle = BassVis.BASSVIS_GetModuleHandle(BASSVISKind.BASSVISKIND_SONIQUE, filePath); string pluginname = BassVis.BASSVIS_GetPluginName(_visParam); if (pluginname != null) { name = pluginname; } VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.Sonique, filePath, name, null); _VisualizationPluginsInfo.Add(vizInfo); if (_visParam.VisHandle != 0) { BassVis.BASSVIS_Free(_visParam); bool bFree = BassVis.BASSVIS_IsFree(_visParam); if (bFree) { _visParam.VisHandle = 0; } else { Log.Warn("VisualisationManager: Failed to unload Sonique viz module - {0}", name); _visParam.VisHandle = 0; } } } } if (winampVisPaths != null && winampVisPaths[0] != "") { _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_WINAMP); for (int i = 0; i < winampVisPaths.Length; i++) { List<string> presets = new List<string>(); string filePath = winampVisPaths[i]; string name = Path.GetFileNameWithoutExtension(filePath); _visParam.VisHandle = BassVis.BASSVIS_GetModuleHandle(BASSVISKind.BASSVISKIND_WINAMP, filePath); string pluginname = BassVis.BASSVIS_GetPluginName(_visParam); if (pluginname != null) name = pluginname; // Get modules int numModules = BassVis.BASSVIS_GetModulePresetCount(_visParam, filePath); if (numModules > 0) { for (int j = 0; j < numModules; j++) { presets.Add(BassVis.BASSVIS_GetModulePresetName(_visParam, j, filePath)); } } VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.Winamp, filePath, name, presets); _VisualizationPluginsInfo.Add(vizInfo); } } if (bassboxVisPaths != null && bassboxVisPaths[0] != "") { // use only Filename BassBox can have Presetnames double for (int i = 0; i < bassboxVisPaths.Length; i++) { string filePath = bassboxVisPaths[i]; string name = Path.GetFileNameWithoutExtension(filePath); VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.Bassbox, filePath, name, null); _VisualizationPluginsInfo.Add(vizInfo); } } } catch (Exception ex) { Log.Error("VisualisationManager: Failed to get viz plugins - {0}", ex.ToString()); } return _VisualizationPluginsInfo; }
/// <summary> /// Search the Visaulation Path for supported Vis /// </summary> /// <returns></returns> public List<VisualizationInfo> GetVisualizationPluginsInfo() { _VisualizationPluginsInfo.Clear(); try { _VisualizationPluginsInfo.Add(new VisualizationInfo("None", true)); // Close any Visualisation, which we may have running, because of VizManager Init CloseCurrentVisualization(); string skinFolderPath = Path.Combine(Application.StartupPath, @"musicplayer\plugins\visualizations"); // Search for Sonique and Winamp Plugins string[] soniqueVisPaths = BassVis.BASSVIS_FindPlugins(BASSVISKind.BASSVISKIND_SONIQUE, skinFolderPath, true); // Note: Recursive Searches for Winamp Plugins are not supported // Winamp plugins expect itself to be stored in a folder named Plugins in the root of the executable. This is where we will search // So this is the folder where all the MP Plugins are stored as well skinFolderPath = Path.Combine(Application.StartupPath, @"plugins"); string[] winampVisPaths = BassVis.BASSVIS_FindPlugins(BASSVISKind.BASSVISKIND_WINAMP, skinFolderPath, true); List<VisualizationInfo> wmpPluginsInfo = GetWMPPluginInfo(); if (IsGForceInstalled()) { VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.GForce, string.Empty, "G-Force", string.Empty, null); _VisualizationPluginsInfo.Add(vizInfo); } if (IsWhiteCapInstalled()) { VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.WhiteCap, string.Empty, "WhiteCap", string.Empty, null); _VisualizationPluginsInfo.Add(vizInfo); } if (IsSoftSkiesInstalled()) { VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.SoftSkies, string.Empty, "SoftSkies", string.Empty, null); _VisualizationPluginsInfo.Add(vizInfo); } if (wmpPluginsInfo != null) { for (int i = 0; i < wmpPluginsInfo.Count; i++) { _VisualizationPluginsInfo.Add(wmpPluginsInfo[i]); } } if (soniqueVisPaths != null && soniqueVisPaths[0] != "") { BassVis.BASSVIS_Init(BASSVISKind.BASSVISKIND_SONIQUE, VizRenderWindow.Handle); _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_SONIQUE); for (int i = 0; i < soniqueVisPaths.Length; i++) { string filePath = soniqueVisPaths[i]; string name = Path.GetFileNameWithoutExtension(filePath); BASSVIS_EXEC visExec = new BASSVIS_EXEC(filePath); visExec.SON_Flags = BASSVISFlags.BASSVIS_NOINIT; // don't execute the plugin yet visExec.SON_ConfigFile = Path.Combine(Path.GetDirectoryName(filePath), "vis.ini"); if (_visParam.VisHandle != 0) { int counter = 0; bool bFree = BassVis.BASSVIS_Free(_visParam); while ((!bFree) && (counter <= 10)) { bFree = BassVis.BASSVIS_IsFree(_visParam); System.Windows.Forms.Application.DoEvents(); counter++; } _visParam.VisHandle = 0; } BassVis.BASSVIS_ExecutePlugin(visExec, _visParam); string pluginname = BassVis.BASSVIS_GetPluginName(_visParam); if (pluginname != null) { name = pluginname; } VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.Sonique, filePath, name, string.Empty, null); _VisualizationPluginsInfo.Add(vizInfo); } BassVis.BASSVIS_Quit(_visParam); } if (winampVisPaths != null && winampVisPaths[0] != "") { _visParam = new BASSVIS_PARAM(BASSVISKind.BASSVISKIND_WINAMP); for (int i = 0; i < winampVisPaths.Length; i++) { List<string> presets = new List<string>(); string filePath = winampVisPaths[i]; string name = Path.GetFileNameWithoutExtension(filePath); _visParam.VisHandle = BassVis.BASSVIS_GetPluginHandle(BASSVISKind.BASSVISKIND_WINAMP, filePath); string pluginname = BassVis.BASSVIS_GetPluginName(_visParam); if (pluginname != null) name = pluginname; // Get modules int numModules = BassVis.BASSVIS_GetModulePresetCount(_visParam, filePath); if (numModules > 0) { if (numModules > 0) { for (int j = 0; j < numModules; j++) { presets.Add(BassVis.BASSVIS_GetModulePresetName(_visParam, j, filePath)); } } VisualizationInfo vizInfo = new VisualizationInfo(VisualizationInfo.PluginType.Winamp, filePath, name, string.Empty, presets); if (!vizInfo.IsBlackListed) { _VisualizationPluginsInfo.Add(vizInfo); } } } } } catch (Exception ex) { Log.Error("VisualisationManager: Failed to get viz plugins - {0}", ex.ToString()); } return _VisualizationPluginsInfo; }
public virtual bool Close() { try { if (_visParam != null) { BassVis.BASSVIS_Quit(_visParam); _visParam = null; } return true; } catch (Exception) {} return false; }