public override bool Config() { // We need to stop the Vis first, otherwise some plugins don't allow the config to be called if (_visParam.VisHandle != 0) { BassVis.BASSVIS_SetPlayState(_visParam, BASSVIS_PLAYSTATE.Stop); 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; } 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); } return(true); }
public override bool Config() { // We need to stop the Vis first, otherwise some plugins don't allow the config to be called if (_visParam.VisHandle != 0) { BassVis.BASSVIS_SetPlayState(_visParam, BASSVIS_PLAYSTATE.Stop); BassVis.BASSVIS_Free(_visParam); bool bFree = BassVis.BASSVIS_IsFree(_visParam); if (bFree) { _visParam.VisHandle = 0; } else { Log.Warn("Visualization Manager: Failed to unload Winamp viz module - {0}", VizPluginInfo.Name); _visParam.VisHandle = 0; } } 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); } return(true); }
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 override bool Config() { // We need to stop the Vis first, otherwise some plugins don't allow the config to be called if (_visParam.VisHandle != 0) { BassVis.BASSVIS_SetPlayState(_visParam, BASSVIS_PLAYSTATE.Stop); BassVis.BASSVIS_Free(_visParam, ref _baseVisParam); _visParam.VisHandle = 0; } 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); } 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 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); }