From: <ge...@us...> - 2010-01-07 17:00:32
|
Revision: 3332 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3332&view=rev Author: gemx Date: 2010-01-07 17:00:22 +0000 (Thu, 07 Jan 2010) Log Message: ----------- Atmolight Plugin: Initial check in Modified Paths: -------------- trunk/plugins/MediaPortal WebServices/WebApp/Default.aspx.cs trunk/plugins/MediaPortal WebServices/WebApp/TvServerStatus.aspx.cs trunk/plugins/MediaPortal WebServices/WebApp/config.xml Added Paths: ----------- trunk/plugins/Atmolight/ trunk/plugins/Atmolight/Atmolight.csproj trunk/plugins/Atmolight/Atmolight.sln trunk/plugins/Atmolight/AtmolightPlugin.cs trunk/plugins/Atmolight/AtmolightSettings.cs trunk/plugins/Atmolight/AtmolightSetupForm.Designer.cs trunk/plugins/Atmolight/AtmolightSetupForm.cs trunk/plugins/Atmolight/AtmolightSetupForm.resx trunk/plugins/Atmolight/Properties/ trunk/plugins/Atmolight/Properties/AssemblyInfo.cs trunk/plugins/Atmolight/bin/ trunk/plugins/Atmolight/bin/x86/ trunk/plugins/Atmolight/bin/x86/Debug/ Added: trunk/plugins/Atmolight/Atmolight.csproj =================================================================== --- trunk/plugins/Atmolight/Atmolight.csproj (rev 0) +++ trunk/plugins/Atmolight/Atmolight.csproj 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.21022</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{1A2ADEB0-CEB7-40F2-A146-91724EA884E0}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Atmolight</RootNamespace> + <AssemblyName>Atmolight</AssemblyName> + <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x86\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> + <OutputPath>bin\x86\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <ItemGroup> + <Reference Include="Core, Version=1.0.4.16709, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\Team MediaPortal\mediaportal\Core\bin\Release\Core.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="Utils, Version=2.2.7.15508, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\Team MediaPortal\mediaportal\Core\bin\Release\Utils.dll</HintPath> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="AtmolightPlugin.cs" /> + <Compile Include="AtmolightSettings.cs" /> + <Compile Include="AtmolightSetupForm.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="AtmolightSetupForm.Designer.cs"> + <DependentUpon>AtmolightSetupForm.cs</DependentUpon> + </Compile> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <COMReference Include="AtmoWinRemoteControl"> + <Guid>{E01E2041-5AFC-11D3-8E80-00805F91CDD9}</Guid> + <VersionMajor>1</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + </COMReference> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="AtmolightSetupForm.resx"> + <DependentUpon>AtmolightSetupForm.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file Added: trunk/plugins/Atmolight/Atmolight.sln =================================================================== --- trunk/plugins/Atmolight/Atmolight.sln (rev 0) +++ trunk/plugins/Atmolight/Atmolight.sln 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atmolight", "Atmolight.csproj", "{1A2ADEB0-CEB7-40F2-A146-91724EA884E0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Debug|x86.ActiveCfg = Debug|x86 + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Debug|x86.Build.0 = Debug|x86 + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Release|Any CPU.Build.0 = Release|Any CPU + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Release|x86.ActiveCfg = Release|x86 + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal Added: trunk/plugins/Atmolight/AtmolightPlugin.cs =================================================================== --- trunk/plugins/Atmolight/AtmolightPlugin.cs (rev 0) +++ trunk/plugins/Atmolight/AtmolightPlugin.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,241 @@ +using System; +using System.Collections.Generic; +using System.Text; +using MediaPortal.GUI.Library; +using MediaPortal.Profile; +using MediaPortal.Player; +using System.Diagnostics; +using System.Runtime.InteropServices; +using AtmoWinRemoteControl; + +namespace MediaPortal.ProcessPlugins.Atmolight +{ + public class AtmolightPlugin: ISetupForm, IPlugin + { + #region Variables + private IAtmoRemoteControl atmoCtrl=null; + #endregion + + #region Utilities + private bool ConnectToAtmoWinA() + { + try + { + atmoCtrl = (IAtmoRemoteControl)Marshal.GetActiveObject("AtmoRemoteControl.1"); + } + catch (Exception ex) + { + Log.Error("atmolight: exception= {0}",ex.Message); + atmoCtrl = null; + return false; + } + try + { + ComEffectMode effect = ComEffectMode.cemDisabled; + atmoCtrl.getEffect(ref effect); + Log.Debug("atmolight: successfully connected to AtmoWinA :)"); + } + catch (Exception ex) + { + Log.Error("atmolight= exception: {0}", ex.Message); + atmoCtrl = null; + return false; + } + return true; + } + private bool StartAtmoWinA() + { + if (!System.IO.File.Exists(AtmolightSettings.atmowinExe)) + { + Log.Error("atmolight: atmowina.exe not found."); + return false; + } + Process app = new Process(); + app.StartInfo.FileName = AtmolightSettings.atmowinExe; + app.StartInfo.UseShellExecute = true; + bool ret = true; + try + { + ret = app.Start(); + } + catch (Exception) + { + return false; + } + return ret; + } + private void SetAtmoEffect(ComEffectMode effect) + { + if (atmoCtrl == null) + return; + try + { + ComEffectMode oldEffect; + atmoCtrl.setEffect(effect, out oldEffect); + Log.Info("atmolight: Set effect from " + oldEffect.ToString() + " to " + ComEffectMode.cemLivePicture.ToString()); + } + catch (Exception ex) + { + Log.Error("atmolight: Failed to switch effect to "+effect.ToString()+Environment.NewLine+ex.Message+Environment.StackTrace); + } + } + private void SetAtmoColor(byte red, byte green, byte blue) + { + if (atmoCtrl == null) + return; + try + { + atmoCtrl.setStaticColor(red, green, blue); + Log.Info("atmolight: Set static color to RED={0} GREEN={1} BLUE={2}",red,green,blue); + } + catch (Exception ex) + { + Log.Error("atmolight: Failed to set static color to RED={0} GREEN={1} BLUE={2}"+Environment.NewLine+ex.Message+Environment.NewLine+ex.StackTrace, red, green, blue); + } + } + private void EnableLivePictureMode() + { + SetAtmoEffect(ComEffectMode.cemLivePicture); + } + private void DisableLEDs() + { + SetAtmoEffect(ComEffectMode.cemDisabled); + SetAtmoColor(0,0,0); + } + #endregion + + public AtmolightPlugin() + { + AtmolightSettings.LoadSettings(); + Log.Info("atmolight: Trying to connect to atmowina.exe..."); + if (!ConnectToAtmoWinA()) + { + Log.Warn("atmolight: AtmoWinA.exe not started. Trying to launch..."); + if (!StartAtmoWinA()) + { + Log.Error("atmolight: Can't start atmowin.exe. Atmolight control won't work :("); + return; + } + if (!ConnectToAtmoWinA()) + { + Log.Error("atmolight: AtmoWinA started but still can't connect. Atmolight control won't work :("); + return; + } + } + } + + #region Events + void g_Player_PlayBackEnded(g_Player.MediaType type, string filename) + { + if (!AtmolightSettings.enableAlways) + DisableLEDs(); + } + void g_Player_PlayBackStopped(g_Player.MediaType type, int stoptime, string filename) + { + if (!AtmolightSettings.enableAlways) + DisableLEDs(); + } + void g_Player_PlayBackStarted(g_Player.MediaType type, string filename) + { + switch (type) + { + case g_Player.MediaType.Music: + if (AtmolightSettings.enableMusic && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + case g_Player.MediaType.Radio: + if (AtmolightSettings.enableRadio && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + case g_Player.MediaType.Recording: + if (AtmolightSettings.enableRecording && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + case g_Player.MediaType.TV: + if (AtmolightSettings.enableTv && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + case g_Player.MediaType.Unknown: + if (AtmolightSettings.enableUnknown && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + case g_Player.MediaType.Video: + if (AtmolightSettings.enableVideo && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + } + } + #endregion + + #region ISetupForm impementation + public string Author() + { + return "gemx"; + } + public bool CanEnable() + { + return true; + } + public bool DefaultEnabled() + { + return true; + } + public string Description() + { + return "Interfaces AtmowinA.exe via COM to control the lights"; + } + public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage) + { + strButtonText = null; + strButtonImage = null; + strButtonImageFocus = null; + strPictureImage = null; + return false; + } + public int GetWindowId() + { + return -1; + } + public bool HasSetup() + { + return true; + } + public string PluginName() + { + return "Atmolight"; + } + public void ShowPlugin() + { + new AtmolightSetupForm().ShowDialog(); + } + #endregion + + #region IPlugin implementation + public void Start() + { + if (atmoCtrl != null) + { + g_Player.PlayBackStarted += new g_Player.StartedHandler(g_Player_PlayBackStarted); + g_Player.PlayBackStopped += new g_Player.StoppedHandler(g_Player_PlayBackStopped); + g_Player.PlayBackEnded += new g_Player.EndedHandler(g_Player_PlayBackEnded); + Log.Info("atmolight: Start() waiting for g_player events..."); + if (AtmolightSettings.enableAlways) + EnableLivePictureMode(); + } + } + public void Stop() + { + Log.Info("g_playerTrigger: Stop()"); + if (atmoCtrl != null) + { + g_Player.PlayBackStarted -= new g_Player.StartedHandler(g_Player_PlayBackStarted); + g_Player.PlayBackStopped -= new g_Player.StoppedHandler(g_Player_PlayBackStopped); + g_Player.PlayBackEnded -= new g_Player.EndedHandler(g_Player_PlayBackEnded); + if (AtmolightSettings.disableOnShutdown) + DisableLEDs(); + atmoCtrl = null; + } + } + #endregion + } +} Added: trunk/plugins/Atmolight/AtmolightSettings.cs =================================================================== --- trunk/plugins/Atmolight/AtmolightSettings.cs (rev 0) +++ trunk/plugins/Atmolight/AtmolightSettings.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Text; +using MediaPortal.Profile; + +namespace MediaPortal.ProcessPlugins.Atmolight +{ + public class AtmolightSettings + { + #region Config variables + public static string atmowinExe = ""; + public static bool enableAlways = false; + public static bool enableVideo = true; + public static bool enableTv = true; + public static bool enableRecording = true; + public static bool enableUnknown = true; + public static bool enableRadio=false; + public static bool enableMusic = false; + public static bool disableOnShutdown = true; + #endregion + + public static void LoadSettings() + { + using (Settings reader = new MPSettings()) + { + atmowinExe = reader.GetValueAsString("atmolight", "atmowinexe", ""); + enableAlways = reader.GetValueAsBool("atmolight", "enableAlways", false); + enableVideo = reader.GetValueAsBool("atmolight", "enableVideo", true); + enableTv = reader.GetValueAsBool("atmolight", "enableTv", true); + enableRecording = reader.GetValueAsBool("atmolight", "enableRecording", true); + enableUnknown = reader.GetValueAsBool("atmolight", "enableUnknown", true); + enableRadio = reader.GetValueAsBool("atmolight", "enableRadio", false); + enableMusic = reader.GetValueAsBool("atmolight", "enableMusic", false); + disableOnShutdown = reader.GetValueAsBool("atmolight", "disableOnShutdown", true); + } + } + public static void SaveSettings() + { + using (Settings reader = new MPSettings()) + { + reader.SetValue("atmolight", "atmowinexe", atmowinExe); + reader.SetValueAsBool("atmolight", "enableAlways", enableAlways); + reader.SetValueAsBool("atmolight", "enableVideo", enableVideo); + reader.SetValueAsBool("atmolight", "enableTv", enableTv); + reader.SetValueAsBool("atmolight", "enableRecording", enableRecording); + reader.SetValueAsBool("atmolight", "enableUnknown", enableUnknown); + reader.GetValueAsBool("atmolight", "enableRadio", enableRadio); + reader.SetValueAsBool("atmolight", "enableMusic", enableMusic); + reader.GetValueAsBool("atmolight", "disableOnShutdown", disableOnShutdown); + } + } + + } +} Added: trunk/plugins/Atmolight/AtmolightSetupForm.Designer.cs =================================================================== --- trunk/plugins/Atmolight/AtmolightSetupForm.Designer.cs (rev 0) +++ trunk/plugins/Atmolight/AtmolightSetupForm.Designer.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,242 @@ +namespace MediaPortal.ProcessPlugins.Atmolight +{ + partial class AtmolightSetupForm + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.edFile = new System.Windows.Forms.TextBox(); + this.btnSelectFile = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.cbAlways = new System.Windows.Forms.CheckBox(); + this.cbTv = new System.Windows.Forms.CheckBox(); + this.cbRadio = new System.Windows.Forms.CheckBox(); + this.cbMusic = new System.Windows.Forms.CheckBox(); + this.cbVideo = new System.Windows.Forms.CheckBox(); + this.cbRecording = new System.Windows.Forms.CheckBox(); + this.cbUnknown = new System.Windows.Forms.CheckBox(); + this.cbDisableOnShutdown = new System.Windows.Forms.CheckBox(); + this.btnSave = new System.Windows.Forms.Button(); + this.btnCancel = new System.Windows.Forms.Button(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(162, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Path+Filename of AtmoWinA.exe"; + // + // edFile + // + this.edFile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.edFile.Location = new System.Drawing.Point(9, 30); + this.edFile.Name = "edFile"; + this.edFile.Size = new System.Drawing.Size(248, 20); + this.edFile.TabIndex = 1; + // + // btnSelectFile + // + this.btnSelectFile.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnSelectFile.Location = new System.Drawing.Point(264, 29); + this.btnSelectFile.Name = "btnSelectFile"; + this.btnSelectFile.Size = new System.Drawing.Size(36, 23); + this.btnSelectFile.TabIndex = 2; + this.btnSelectFile.Text = "..."; + this.btnSelectFile.UseVisualStyleBackColor = true; + this.btnSelectFile.Click += new System.EventHandler(this.btnSelectFile_Click); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.cbDisableOnShutdown); + this.groupBox1.Controls.Add(this.cbUnknown); + this.groupBox1.Controls.Add(this.cbRecording); + this.groupBox1.Controls.Add(this.cbVideo); + this.groupBox1.Controls.Add(this.cbMusic); + this.groupBox1.Controls.Add(this.cbRadio); + this.groupBox1.Controls.Add(this.cbTv); + this.groupBox1.Controls.Add(this.cbAlways); + this.groupBox1.Location = new System.Drawing.Point(9, 57); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(287, 138); + this.groupBox1.TabIndex = 3; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Enable live picture mode when... starts"; + // + // cbAlways + // + this.cbAlways.AutoSize = true; + this.cbAlways.Location = new System.Drawing.Point(7, 20); + this.cbAlways.Name = "cbAlways"; + this.cbAlways.Size = new System.Drawing.Size(59, 17); + this.cbAlways.TabIndex = 0; + this.cbAlways.Text = "Always"; + this.cbAlways.UseVisualStyleBackColor = true; + // + // cbTv + // + this.cbTv.AutoSize = true; + this.cbTv.Location = new System.Drawing.Point(72, 19); + this.cbTv.Name = "cbTv"; + this.cbTv.Size = new System.Drawing.Size(39, 17); + this.cbTv.TabIndex = 1; + this.cbTv.Text = "Tv"; + this.cbTv.UseVisualStyleBackColor = true; + // + // cbRadio + // + this.cbRadio.AutoSize = true; + this.cbRadio.Location = new System.Drawing.Point(162, 20); + this.cbRadio.Name = "cbRadio"; + this.cbRadio.Size = new System.Drawing.Size(54, 17); + this.cbRadio.TabIndex = 5; + this.cbRadio.Text = "Radio"; + this.cbRadio.UseVisualStyleBackColor = true; + // + // cbMusic + // + this.cbMusic.AutoSize = true; + this.cbMusic.Location = new System.Drawing.Point(162, 43); + this.cbMusic.Name = "cbMusic"; + this.cbMusic.Size = new System.Drawing.Size(54, 17); + this.cbMusic.TabIndex = 6; + this.cbMusic.Text = "Music"; + this.cbMusic.UseVisualStyleBackColor = true; + // + // cbVideo + // + this.cbVideo.AutoSize = true; + this.cbVideo.Location = new System.Drawing.Point(72, 42); + this.cbVideo.Name = "cbVideo"; + this.cbVideo.Size = new System.Drawing.Size(53, 17); + this.cbVideo.TabIndex = 2; + this.cbVideo.Text = "Video"; + this.cbVideo.UseVisualStyleBackColor = true; + // + // cbRecording + // + this.cbRecording.AutoSize = true; + this.cbRecording.Location = new System.Drawing.Point(72, 65); + this.cbRecording.Name = "cbRecording"; + this.cbRecording.Size = new System.Drawing.Size(75, 17); + this.cbRecording.TabIndex = 3; + this.cbRecording.Text = "Recording"; + this.cbRecording.UseVisualStyleBackColor = true; + // + // cbUnknown + // + this.cbUnknown.AutoSize = true; + this.cbUnknown.Location = new System.Drawing.Point(72, 88); + this.cbUnknown.Name = "cbUnknown"; + this.cbUnknown.Size = new System.Drawing.Size(72, 17); + this.cbUnknown.TabIndex = 4; + this.cbUnknown.Text = "Unknown"; + this.cbUnknown.UseVisualStyleBackColor = true; + // + // cbDisableOnShutdown + // + this.cbDisableOnShutdown.AutoSize = true; + this.cbDisableOnShutdown.Location = new System.Drawing.Point(7, 111); + this.cbDisableOnShutdown.Name = "cbDisableOnShutdown"; + this.cbDisableOnShutdown.Size = new System.Drawing.Size(173, 17); + this.cbDisableOnShutdown.TabIndex = 7; + this.cbDisableOnShutdown.Text = "Disable LEDs on MP shutdown"; + this.cbDisableOnShutdown.UseVisualStyleBackColor = true; + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(9, 213); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(75, 23); + this.btnSave.TabIndex = 4; + this.btnSave.Text = "Save"; + this.btnSave.UseVisualStyleBackColor = true; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.Location = new System.Drawing.Point(220, 213); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 5; + this.btnCancel.Text = "Cancel"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + this.openFileDialog1.Filter = "AtmoWinA.exe|*.exe"; + this.openFileDialog1.RestoreDirectory = true; + // + // AtmolightSetupForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(307, 249); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.btnSelectFile); + this.Controls.Add(this.edFile); + this.Controls.Add(this.label1); + this.Name = "AtmolightSetupForm"; + this.Text = "Atmolight Setup"; + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox edFile; + private System.Windows.Forms.Button btnSelectFile; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.CheckBox cbRecording; + private System.Windows.Forms.CheckBox cbVideo; + private System.Windows.Forms.CheckBox cbMusic; + private System.Windows.Forms.CheckBox cbRadio; + private System.Windows.Forms.CheckBox cbTv; + private System.Windows.Forms.CheckBox cbAlways; + private System.Windows.Forms.CheckBox cbDisableOnShutdown; + private System.Windows.Forms.CheckBox cbUnknown; + private System.Windows.Forms.Button btnSave; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + } +} \ No newline at end of file Added: trunk/plugins/Atmolight/AtmolightSetupForm.cs =================================================================== --- trunk/plugins/Atmolight/AtmolightSetupForm.cs (rev 0) +++ trunk/plugins/Atmolight/AtmolightSetupForm.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +namespace MediaPortal.ProcessPlugins.Atmolight +{ + public partial class AtmolightSetupForm : Form + { + public AtmolightSetupForm() + { + InitializeComponent(); + edFile.Text = AtmolightSettings.atmowinExe; + cbAlways.Checked = AtmolightSettings.enableAlways; + cbTv.Checked = AtmolightSettings.enableTv; + cbVideo.Checked = AtmolightSettings.enableVideo; + cbRecording.Checked = AtmolightSettings.enableRecording; + cbUnknown.Checked = AtmolightSettings.enableUnknown; + cbRadio.Checked = AtmolightSettings.enableRadio; + cbMusic.Checked = AtmolightSettings.enableMusic; + cbDisableOnShutdown.Checked = AtmolightSettings.disableOnShutdown; + } + private void btnSelectFile_Click(object sender, EventArgs e) + { + if (openFileDialog1.ShowDialog() == DialogResult.OK) + edFile.Text = openFileDialog1.FileName; + } + + private void btnCancel_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + private void btnSave_Click(object sender, EventArgs e) + { + AtmolightSettings.atmowinExe = edFile.Text; + AtmolightSettings.enableAlways = cbAlways.Checked; + AtmolightSettings.enableTv = cbTv.Checked; + AtmolightSettings.enableVideo = cbVideo.Checked; + AtmolightSettings.enableRecording = cbRecording.Checked; + AtmolightSettings.enableUnknown = cbUnknown.Checked; + AtmolightSettings.enableRadio = cbRadio.Checked; + AtmolightSettings.enableMusic = cbMusic.Checked; + AtmolightSettings.disableOnShutdown = cbDisableOnShutdown.Checked; + AtmolightSettings.SaveSettings(); + this.DialogResult = DialogResult.OK; + } + } +} Added: trunk/plugins/Atmolight/AtmolightSetupForm.resx =================================================================== --- trunk/plugins/Atmolight/AtmolightSetupForm.resx (rev 0) +++ trunk/plugins/Atmolight/AtmolightSetupForm.resx 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> +</root> \ No newline at end of file Added: trunk/plugins/Atmolight/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/Atmolight/Properties/AssemblyInfo.cs (rev 0) +++ trunk/plugins/Atmolight/Properties/AssemblyInfo.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MediaPortal Atmolight Plugin")] +[assembly: AssemblyDescription("Utilizes the AtmoWinA.exe to toggle live picture mode")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Andreas Kwasnik")] +[assembly: AssemblyProduct("MediaPortal Atmolight Plugin")] +[assembly: AssemblyCopyright("Copyright © Andreas Kwasnik 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("e80d7999-780c-4576-af9f-d959d5f5148a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] Modified: trunk/plugins/MediaPortal WebServices/WebApp/Default.aspx.cs =================================================================== --- trunk/plugins/MediaPortal WebServices/WebApp/Default.aspx.cs 2010-01-07 16:31:13 UTC (rev 3331) +++ trunk/plugins/MediaPortal WebServices/WebApp/Default.aspx.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -187,6 +187,7 @@ dt.Columns.Add("logo", typeof(string)); foreach (WebMiniEPG epg in epgs) { + if (epg.idChannel == 0) continue; DataRow row = dt.NewRow(); row["channel"] = epg.name; row["now_next"] = epg.epgNow.startTime.ToShortTimeString() + " - " + epg.epgNow.endTime.ToShortTimeString() + ": " + GetScraperLink(epg.epgNow.title) + " <a href=EPGSearch.aspx?title=" + Server.UrlEncode(epg.epgNow.title) + " target=_blank><img border=0 src=\"pics/btnrecurrences.gif\" alt=\"Find recurrences\" title=\"Find recurrences\" /></a><br/>" + epg.epgNext.startTime.ToShortTimeString() + " - " + epg.epgNext.endTime.ToShortTimeString() + ": " + GetScraperLink(epg.epgNext.title) + " <a href=EPGSearch.aspx?title=" + Server.UrlEncode(epg.epgNext.title) + " target=_blank><img border=0 src=\"pics/btnrecurrences.gif\" alt=\"Find recurrences\" title=\"Find recurrences\" /></a>"; @@ -254,6 +255,7 @@ dt.Columns.Add("logo", typeof(string)); foreach (WebMiniEPG epg in epgs) { + if (epg.idChannel == 0) continue; DataRow row = dt.NewRow(); row["channel"] = epg.name; row["now_next"] = epg.epgNow.startTime.ToShortTimeString() + " - " + epg.epgNow.endTime.ToShortTimeString() + ": " + epg.epgNow.title + "<br/>" + epg.epgNext.startTime.ToShortTimeString() + " - " + epg.epgNext.endTime.ToShortTimeString() + ": " + epg.epgNext.title; Modified: trunk/plugins/MediaPortal WebServices/WebApp/TvServerStatus.aspx.cs =================================================================== --- trunk/plugins/MediaPortal WebServices/WebApp/TvServerStatus.aspx.cs 2010-01-07 16:31:13 UTC (rev 3331) +++ trunk/plugins/MediaPortal WebServices/WebApp/TvServerStatus.aspx.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -70,7 +70,7 @@ string manufacturer = ""; string model = ""; string computername = ""; - int totalPhysicalMem = 0; + UInt64 totalPhysicalMem = 0; ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT model,manufacturer,name,totalPhysicalMemory FROM Win32_ComputerSystem"); ManagementObjectCollection queryCollection = query.Get(); @@ -79,7 +79,7 @@ model = mo["model"].ToString(); manufacturer = mo["manufacturer"].ToString(); computername = mo["name"].ToString(); - totalPhysicalMem = Convert.ToInt32(mo["totalphysicalmemory"]); + totalPhysicalMem = Convert.ToUInt64(mo["totalphysicalmemory"]); totalPhysicalMem = (totalPhysicalMem / 1024) / 1024; } @@ -100,7 +100,10 @@ string usages=""; foreach (string drive in recPaths) - usages+=GetDriveUsageStr(drive.Substring(0,2))+"<br/>"; + { + if (drive.Length > 0) + usages += GetDriveUsageStr(drive.Substring(0, 2)) + "<br/>"; + } lSpace.Text=usages; } protected string GetOSVersionStr() Modified: trunk/plugins/MediaPortal WebServices/WebApp/config.xml =================================================================== --- trunk/plugins/MediaPortal WebServices/WebApp/config.xml 2010-01-07 16:31:13 UTC (rev 3331) +++ trunk/plugins/MediaPortal WebServices/WebApp/config.xml 2010-01-07 17:00:22 UTC (rev 3332) @@ -4,14 +4,14 @@ <transcoder name="direct" usetranscoding="0" filename=" " args="" inputmethod="1" outputmethod="1" /> <transcoder name="divx (320x200)" usetranscoding="1" filename="c:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -vf scale=320:200,harddup -ffourcc DX50 -oac mp3lame -o {1}" inputmethod="0" outputmethod="1" /> <transcoder name="mpeg2 (240x160)" usetranscoding="1" filename="c:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -vf scale=240:160 -oac lavc -of lavf -lavfopts format=dvd -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=512:threads=2:acodec=ac3:abitrate=128 -ofps 24000/1001 -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="vlc" usetranscoding="1" filename="c:\program files\videolan\vlc\vlc.exe" args=""{0}" --sout=#transcode{vcodec=mp4v,vb=1024,acodec=mp3,ab=64,channels=1,deinterlace,scale=0.50}:std{access=f ile,mux=ts,dst={1}}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (DSL1000)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (DSL2000)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (DSL6000)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (LAN10)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 -oac mp3lame -lameopts preset=standard -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (WLAN11)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 -oac mp3lame -lameopts preset=standard -vf scale=640:408 -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (WLAN54)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 -oac mp3lame -lameopts preset=standard -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (IPAQ)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="vlc" usetranscoding="1" filename="c:\program files\videolan\vlc\vlc.exe" args=""{0}" --sout=#transcode{vcodec=mp4v,vb=1024,acodec=mp3,ab=64,channels=1,deinterlace,scale=0.50}:std{access=file,mux=ts,dst={1}}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (DSL1000)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (DSL2000)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (DSL6000)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (LAN10)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 -oac mp3lame -lameopts preset=standard -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (WLAN11)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 -oac mp3lame -lameopts preset=standard -vf scale=640:408 -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (WLAN54)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 -oac mp3lame -lameopts preset=standard -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (IPAQ)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 -o {1}" inputmethod="0" outputmethod="1" /> </transcoders> <mpdatabases> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |