├── App.ico ├── Icon.png ├── play.ico ├── pause.ico ├── x264_logo.gif ├── lib_x64 ├── 7z.dll ├── MediaInfo.dll └── AvisynthWrapper.dll ├── lib_x86 ├── 7z.dll ├── MediaInfo.dll └── AvisynthWrapper.dll ├── Changelog_full.txt ├── lib ├── SevenZipSharp.dll └── ICSharpCode.SharpZipLib.dll ├── obj └── x64 │ └── Debug │ ├── MeGUI.csproj.CoreCompileInputs.cache │ ├── MeGUI.exe │ ├── MeGUI.pdb │ ├── MeGUI.Calculator.resources │ ├── MeGUI.csproj.AssemblyReference.cache │ ├── MeGUI.csproj.GenerateResource.cache │ ├── DesignTimeResolveAssemblyReferences.cache │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ ├── MeGUI.packages.tools.calculator.ExtraSizeTab.resources │ └── MeGUI.packages.tools.calculator.AudioTrackSizeTab.resources ├── core ├── util │ ├── LanguageSelectionContainer.cs │ ├── DeinterlaceFilter.cs │ ├── Exceptions.cs │ ├── SubtitleUtil.cs │ ├── Drives.cs │ ├── HttpProxy.cs │ └── NotifyCounter.cs ├── gui │ ├── StandardAndCustomComboBox.Designer.cs │ ├── SplashScreen.cs │ ├── ConfigableProfilesControl.cs │ ├── ProgressWindowInfo.cs │ ├── HelpButton.cs │ ├── VideoPlayerControl.Designer.cs │ ├── AudioEncodingWindow.cs │ ├── ZonesWindow.cs │ ├── TextViewer.cs │ ├── HelpButton.Designer.cs │ ├── InputBox.cs │ ├── NumberChooser.cs │ ├── AdaptiveMuxWindow.Designer.cs │ ├── AudioEncodingWindow.Designer.cs │ └── FileSCBox.cs ├── plugins │ └── interfaces │ │ ├── IPackage.cs │ │ ├── JobProcessorManager.cs │ │ └── ISettingsProvider.cs └── details │ ├── VideoTrackInfo.cs │ ├── MediaFileFactory.cs │ ├── SubtitleTrackInfo.cs │ ├── video │ └── VideoJob.cs │ ├── PackageSystem.cs │ └── mux │ └── MuxWindow.Designer.cs ├── packages ├── tools │ ├── avscreator │ │ ├── AvisynthWrapper.dll │ │ └── AviSynthJob.cs │ ├── hdbdextractor │ │ ├── eac3to │ │ │ ├── Stream.cs │ │ │ ├── Chapter.cs │ │ │ ├── StreamType.cs │ │ │ ├── VideoStreamType.cs │ │ │ ├── File.cs │ │ │ ├── AudioStreamType.cs │ │ │ ├── ChapterStream.cs │ │ │ └── JoinStream.cs │ │ ├── CustomDataGridView.cs │ │ └── HDStreamsExJob.cs │ ├── chaptercreator │ │ ├── TextExtractor.cs │ │ ├── BDInfo │ │ │ ├── TSStreamFile.cs │ │ │ └── TSStreamClip.cs │ │ ├── ChapterExtractor.cs │ │ ├── BlurayExtractor.cs │ │ ├── MediaInfoExtractor.cs │ │ └── Chapter.cs │ ├── mp4fpsmod │ │ ├── MP4FpsModJob.cs │ │ └── MP4FpsMod.cs │ ├── fileindexer │ │ ├── D2VIndexJob.cs │ │ ├── LSMASHIndexJob.cs │ │ ├── FFMSIndexJob.cs │ │ ├── DGIIndexJob.cs │ │ ├── DGMIndexJob.cs │ │ └── IndexJob.cs │ ├── besplitter │ │ ├── AudioJoinJob.cs │ │ └── AudioSplitJob.cs │ ├── oneclick │ │ ├── OneClickAudioTrack.cs │ │ └── OneClickPostProcessingJob.cs │ ├── calculator │ │ └── ExtraSizeTab.cs │ ├── worker │ │ └── WorkerPriority.cs │ └── sourcedetector │ │ └── SourceDetectorConfigWindow.cs ├── audio │ ├── naac │ │ ├── neroConfigurationPanel.Designer.cs │ │ └── NeroAACSettings.cs │ ├── ffthd │ │ ├── THDSettings.cs │ │ └── THDConfigurationPanel.cs │ ├── vorbis │ │ ├── OggVorbisSettings.cs │ │ └── OggVorbisConfigurationPanel.cs │ ├── ffmp2 │ │ ├── MP2Settings.cs │ │ └── MP2ConfigurationPanel.cs │ ├── exhale │ │ └── ExhaleSettings.cs │ ├── opus │ │ ├── OpusSettings.cs │ │ └── OpusConfigurationPanel.Designer.cs │ ├── ffdca │ │ ├── DCASettings.cs │ │ └── DCAConfigurationPanel.cs │ ├── flac │ │ ├── FlacSettings.cs │ │ └── FlacConfigurationPanel.cs │ ├── ffac3 │ │ ├── AC3Settings.cs │ │ └── AC3ConfigurationPanel.cs │ ├── ffeac3 │ │ ├── EAC3Settings.cs │ │ └── EAC3ConfigurationPanel.cs │ ├── ffaac │ │ └── FFAACSettings.cs │ ├── lame │ │ └── MP3Settings.cs │ └── qaac │ │ └── QaacSettings.cs ├── video │ └── huffyuv │ │ └── hfyuSettings.cs ├── reader │ ├── mediainfo │ │ └── wrapper │ │ │ └── ChaptersTrack.cs │ └── ttxt │ │ └── ttxtReader.cs └── demuxer │ └── mkvextract │ └── MkvExtractJob.cs ├── packages.config ├── app.config ├── MeGUI.csproj.user ├── MeGUI.sln ├── README.md ├── Settings.cs ├── Properties └── Resources.Designer.cs └── Changelog.txt /App.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/App.ico -------------------------------------------------------------------------------- /Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/Icon.png -------------------------------------------------------------------------------- /play.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/play.ico -------------------------------------------------------------------------------- /pause.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/pause.ico -------------------------------------------------------------------------------- /x264_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/x264_logo.gif -------------------------------------------------------------------------------- /lib_x64/7z.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/lib_x64/7z.dll -------------------------------------------------------------------------------- /lib_x86/7z.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/lib_x86/7z.dll -------------------------------------------------------------------------------- /Changelog_full.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/Changelog_full.txt -------------------------------------------------------------------------------- /lib/SevenZipSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/lib/SevenZipSharp.dll -------------------------------------------------------------------------------- /lib_x64/MediaInfo.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/lib_x64/MediaInfo.dll -------------------------------------------------------------------------------- /lib_x86/MediaInfo.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/lib_x86/MediaInfo.dll -------------------------------------------------------------------------------- /obj/x64/Debug/MeGUI.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 7f3f68876dde409afb64b703c79785ee95aede8a 2 | -------------------------------------------------------------------------------- /obj/x64/Debug/MeGUI.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/obj/x64/Debug/MeGUI.exe -------------------------------------------------------------------------------- /obj/x64/Debug/MeGUI.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/obj/x64/Debug/MeGUI.pdb -------------------------------------------------------------------------------- /lib_x64/AvisynthWrapper.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/lib_x64/AvisynthWrapper.dll -------------------------------------------------------------------------------- /lib_x86/AvisynthWrapper.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/lib_x86/AvisynthWrapper.dll -------------------------------------------------------------------------------- /lib/ICSharpCode.SharpZipLib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/lib/ICSharpCode.SharpZipLib.dll -------------------------------------------------------------------------------- /core/util/LanguageSelectionContainer.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/core/util/LanguageSelectionContainer.cs -------------------------------------------------------------------------------- /obj/x64/Debug/MeGUI.Calculator.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/obj/x64/Debug/MeGUI.Calculator.resources -------------------------------------------------------------------------------- /packages/tools/avscreator/AvisynthWrapper.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/packages/tools/avscreator/AvisynthWrapper.dll -------------------------------------------------------------------------------- /packages/tools/hdbdextractor/eac3to/Stream.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/packages/tools/hdbdextractor/eac3to/Stream.cs -------------------------------------------------------------------------------- /obj/x64/Debug/MeGUI.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/obj/x64/Debug/MeGUI.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /obj/x64/Debug/MeGUI.csproj.GenerateResource.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/obj/x64/Debug/MeGUI.csproj.GenerateResource.cache -------------------------------------------------------------------------------- /obj/x64/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/obj/x64/Debug/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /obj/x64/Debug/MeGUI.packages.tools.calculator.ExtraSizeTab.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/obj/x64/Debug/MeGUI.packages.tools.calculator.ExtraSizeTab.resources -------------------------------------------------------------------------------- /obj/x64/Debug/MeGUI.packages.tools.calculator.AudioTrackSizeTab.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kurtnoise-zeus/megui/HEAD/obj/x64/Debug/MeGUI.packages.tools.calculator.AudioTrackSizeTab.resources -------------------------------------------------------------------------------- /packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /MeGUI.csproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | publish\ 5 | 6 | 7 | 8 | 9 | 10 | fr-FR 11 | false 12 | 13 | -------------------------------------------------------------------------------- /packages/audio/naac/neroConfigurationPanel.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MeGUI.packages.audio.naac 2 | { 3 | partial class neroConfigurationPanel 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | #endregion 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /core/gui/StandardAndCustomComboBox.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MeGUI.core.gui 2 | { 3 | partial class StandardAndCustomComboBox 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | } 33 | 34 | #endregion 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /core/gui/SplashScreen.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2023 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System.Windows.Forms; 22 | 23 | namespace MeGUI.core.gui 24 | { 25 | public partial class SplashScreen : Form 26 | { 27 | public SplashScreen() 28 | { 29 | InitializeComponent(); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /MeGUI.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 11.00 2 | # Visual Studio 2010 3 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MeGUI", "MeGUI.csproj", "{12D5215B-0254-4616-A53C-C8B7B6A2C8E9}" 4 | EndProject 5 | Global 6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 7 | Debug|x64 = Debug|x64 8 | Debug|x86 = Debug|x86 9 | Release|x64 = Release|x64 10 | Release|x86 = Release|x86 11 | EndGlobalSection 12 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 13 | {12D5215B-0254-4616-A53C-C8B7B6A2C8E9}.Debug|x64.ActiveCfg = Debug|x64 14 | {12D5215B-0254-4616-A53C-C8B7B6A2C8E9}.Debug|x64.Build.0 = Debug|x64 15 | {12D5215B-0254-4616-A53C-C8B7B6A2C8E9}.Debug|x86.ActiveCfg = Debug|x86 16 | {12D5215B-0254-4616-A53C-C8B7B6A2C8E9}.Debug|x86.Build.0 = Debug|x86 17 | {12D5215B-0254-4616-A53C-C8B7B6A2C8E9}.Release|x64.ActiveCfg = Release|x64 18 | {12D5215B-0254-4616-A53C-C8B7B6A2C8E9}.Release|x64.Build.0 = Release|x64 19 | {12D5215B-0254-4616-A53C-C8B7B6A2C8E9}.Release|x86.ActiveCfg = Release|x86 20 | {12D5215B-0254-4616-A53C-C8B7B6A2C8E9}.Release|x86.Build.0 = Release|x86 21 | EndGlobalSection 22 | GlobalSection(SolutionProperties) = preSolution 23 | HideSolutionNode = FALSE 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /core/plugins/interfaces/IPackage.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace MeGUI.core.plugins.interfaces 24 | { 25 | public interface ITool : IIDable 26 | { 27 | string Name { get;} 28 | void Run(MainForm info); 29 | System.Windows.Forms.Shortcut[] Shortcuts { get;} 30 | } 31 | } -------------------------------------------------------------------------------- /packages/tools/chaptercreator/TextExtractor.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2009 Jarrett Vance 4 | // 5 | // code from http://jvance.com/pages/ChapterGrabber.xhtml 6 | // 7 | // **************************************************************************** 8 | 9 | using System; 10 | using System.Collections.Generic; 11 | using System.IO; 12 | 13 | namespace MeGUI 14 | { 15 | public class TextExtractor : ChapterExtractor 16 | { 17 | public override bool SupportsMultipleStreams 18 | { 19 | get { return false; } 20 | } 21 | 22 | public override string[] Extensions 23 | { 24 | get { return new string[] { "txt" }; } 25 | } 26 | 27 | public override List GetStreams(string location) 28 | { 29 | ChapterInfo oChapterInfo = new ChapterInfo(); 30 | if (!oChapterInfo.LoadFile(location)) 31 | { 32 | OnExtractionComplete(); 33 | return new List(); 34 | } 35 | 36 | List pgcs = new List(); 37 | pgcs.Add(oChapterInfo); 38 | 39 | OnStreamDetected(pgcs[0]); 40 | OnChaptersLoaded(pgcs[0]); 41 | OnExtractionComplete(); 42 | return pgcs; 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /core/gui/ConfigableProfilesControl.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace MeGUI.core.gui 24 | { 25 | public partial class ConfigableProfilesControl : MeGUI.core.gui.SimpleProfilesControl 26 | { 27 | public ConfigableProfilesControl() 28 | { 29 | InitializeComponent(); 30 | } 31 | 32 | private void config_Click(object sender, EventArgs e) 33 | { 34 | Manager.Configure(SelectedProfile, UpdateSelectedProfile, GetInstance); 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /packages/tools/hdbdextractor/eac3to/Chapter.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace eac3to 24 | { 25 | /// A Chapter 26 | public class Chapter 27 | { 28 | public Chapter() { } 29 | 30 | /// Chapter Number 31 | public int Number { get; set; } 32 | /// Chapter TimeStamp 33 | public DateTime Time { get; set; } 34 | /// Chapter Name 35 | public string Name { get; set; } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /packages/tools/chaptercreator/BDInfo/TSStreamFile.cs: -------------------------------------------------------------------------------- 1 | //============================================================================ 2 | // BDInfo - Blu-ray Video and Audio Analysis Tool 3 | // Copyright © 2010 Cinema Squid 4 | // 5 | // This library is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU Lesser General Public 7 | // License as published by the Free Software Foundation; either 8 | // version 2.1 of the License, or (at your option) any later version. 9 | // 10 | // This library is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | // Lesser General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU Lesser General Public 16 | // License along with this library; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | //============================================================================= 19 | 20 | using System; 21 | using System.Collections.Generic; 22 | using System.Diagnostics; 23 | using System.IO; 24 | using System.Text; 25 | 26 | namespace BDInfo 27 | { 28 | public class TSStreamFile 29 | { 30 | public FileInfo FileInfo = null; 31 | public string Name = null; 32 | 33 | public TSStreamFile(FileInfo fileInfo) 34 | { 35 | FileInfo = fileInfo; 36 | Name = fileInfo.Name.ToUpper(); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /packages/tools/hdbdextractor/eac3to/StreamType.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using MeGUI.packages.tools.hdbdextractor; 22 | 23 | namespace eac3to 24 | { 25 | /// An enumeration of Stream types 26 | public enum StreamType 27 | { 28 | [StringValue("Join")] 29 | Join, 30 | [StringValue("Chapter")] 31 | Chapter, 32 | [StringValue("Video")] 33 | Video, 34 | [StringValue("Audio")] 35 | Audio, 36 | [StringValue("Subtitle")] 37 | Subtitle, 38 | [StringValue("Unknown")] 39 | Unknown 40 | } 41 | } -------------------------------------------------------------------------------- /packages/video/huffyuv/hfyuSettings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI 26 | { 27 | public class hfyuSettings : VideoCodecSettings 28 | { 29 | public static string ID = "Huffyuv"; 30 | 31 | public hfyuSettings() : base(ID, VideoEncoderType.HFYU) 32 | { 33 | base.BitrateQuantizer = 0; 34 | base.VideoEncodingType = VideoEncodingMode.CQ; 35 | } 36 | 37 | public override bool UsesSAR 38 | { 39 | get { return false; } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /packages/tools/avscreator/AviSynthJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI 26 | { 27 | public class AviSynthJob : Job 28 | { 29 | public AviSynthJob() : base() { } 30 | 31 | public AviSynthJob(string input) : base(input, null) 32 | { 33 | } 34 | 35 | public override string CodecString 36 | { 37 | get { return "avisynth"; } 38 | } 39 | 40 | public override string EncodingMode 41 | { 42 | get { return "avs"; } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /packages/tools/chaptercreator/ChapterExtractor.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2009 Jarrett Vance 4 | // 5 | // code from http://jvance.com/pages/ChapterGrabber.xhtml 6 | // 7 | // **************************************************************************** 8 | 9 | using System; 10 | using System.Collections.Generic; 11 | 12 | namespace MeGUI 13 | { 14 | public abstract class ChapterExtractor 15 | { 16 | public abstract string[] Extensions { get; } 17 | public virtual bool SupportsMultipleStreams { get { return true; } } 18 | public abstract List GetStreams(string location); 19 | 20 | public event EventHandler StreamDetected; 21 | public event EventHandler ChaptersLoaded; 22 | public event EventHandler ExtractionComplete; 23 | 24 | protected void OnExtractionComplete() 25 | { 26 | if (ExtractionComplete != null) 27 | ExtractionComplete(this, EventArgs.Empty); 28 | } 29 | 30 | protected void OnStreamDetected(ChapterInfo pgc) 31 | { 32 | if (StreamDetected != null) 33 | StreamDetected(this, new ProgramChainArg() { ProgramChain = pgc }); 34 | } 35 | 36 | protected void OnChaptersLoaded(ChapterInfo pgc) 37 | { 38 | if (ChaptersLoaded != null) 39 | ChaptersLoaded(this, new ProgramChainArg() { ProgramChain = pgc }); 40 | } 41 | } 42 | 43 | public class ProgramChainArg : EventArgs 44 | { 45 | public ChapterInfo ProgramChain { get; set; } 46 | } 47 | } -------------------------------------------------------------------------------- /packages/audio/ffthd/THDSettings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI 26 | { 27 | public class THDSettings : AudioCodecSettings 28 | { 29 | public static string ID = "FFmpeg TrueHD"; 30 | 31 | public THDSettings() 32 | : base(ID, AudioCodec.THD, AudioEncoderType.FFTHD, 384) 33 | { 34 | } 35 | 36 | public override BitrateManagementMode BitrateMode 37 | { 38 | get 39 | { 40 | return BitrateManagementMode.CBR; 41 | } 42 | set 43 | { 44 | // Do Nothing 45 | } 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /packages/reader/mediainfo/wrapper/ChaptersTrack.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | 24 | namespace MediaInfoWrapper 25 | { 26 | ///Contains properties for a ChaptersTrack 27 | public class ChaptersTrack 28 | { 29 | private Dictionary _chapters = new Dictionary(); 30 | 31 | /// Count of objects available in this stream 32 | public Dictionary Chapters 33 | { 34 | get 35 | { 36 | return _chapters; 37 | } 38 | set 39 | { 40 | this._chapters = value; 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /packages/tools/hdbdextractor/eac3to/VideoStreamType.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using MeGUI.packages.tools.hdbdextractor; 22 | 23 | namespace eac3to 24 | { 25 | /// An enumeration of Video Stream types 26 | public enum VideoStreamType 27 | { 28 | [StringValue("UNKNOWN")] 29 | UNKNOWN, 30 | [StringValue("AVC")] 31 | AVC, 32 | [StringValue("MVC")] 33 | MVC, 34 | [StringValue("HEVC")] 35 | HEVC, 36 | [StringValue("VC-1")] 37 | VC1, 38 | [StringValue("MPEG")] 39 | MPEG, 40 | [StringValue("DIRAC")] 41 | DIRAC, 42 | [StringValue("THEORA")] 43 | THEORA, 44 | [StringValue("AV1")] 45 | AV1 46 | } 47 | } -------------------------------------------------------------------------------- /core/gui/ProgressWindowInfo.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI.core.plugins.interfaces 26 | { 27 | public struct ProgressWindowInfo 28 | { 29 | string ProgressLabel; 30 | string DataLabel; 31 | string RateLabel; 32 | string RateUnit; 33 | string Name; 34 | public ProgressWindowInfo(string pLabel, string dataLabel, string rateLabel, 35 | string rateUnit, string name) 36 | { 37 | this.ProgressLabel = pLabel; 38 | this.DataLabel = dataLabel; 39 | this.RateLabel = rateLabel; 40 | this.RateUnit = rateUnit; 41 | this.Name = name; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /core/gui/HelpButton.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Windows.Forms; 23 | 24 | namespace MeGUI.core.gui 25 | { 26 | public partial class HelpButton : UserControl 27 | { 28 | private static readonly string BaseURL = "https://en.wikibooks.org/wiki/MeGUI/"; 29 | 30 | public HelpButton() 31 | { 32 | InitializeComponent(); 33 | } 34 | 35 | void HelpButton_Click(object sender, EventArgs e) 36 | { 37 | System.Diagnostics.Process.Start(BaseURL + articleName.Replace(' ', '_')); 38 | } 39 | 40 | private string articleName; 41 | 42 | public string ArticleName 43 | { 44 | get { return articleName; } 45 | set { articleName = value; } 46 | } 47 | 48 | } 49 | } -------------------------------------------------------------------------------- /packages/tools/chaptercreator/BlurayExtractor.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2009 Jarrett Vance 4 | // 5 | // code from http://jvance.com/pages/ChapterGrabber.xhtml 6 | // 7 | // **************************************************************************** 8 | 9 | using System.Collections.Generic; 10 | using System.Linq; 11 | using System.IO; 12 | 13 | using MeGUI.core.util; 14 | 15 | namespace MeGUI 16 | { 17 | public class BlurayExtractor : ChapterExtractor 18 | { 19 | public override string[] Extensions 20 | { 21 | get { return new string[] { }; } 22 | } 23 | 24 | public override List GetStreams(string location) 25 | { 26 | List mpls = new List(); 27 | 28 | string path = FileUtil.GetBlurayPath(location); 29 | if (!Directory.Exists(path)) 30 | return mpls; 31 | 32 | ChapterExtractor ex = new BDInfoExtractor(); 33 | ex.StreamDetected += (sender, args) => OnStreamDetected(args.ProgramChain); 34 | ex.ChaptersLoaded += (sender, args) => OnChaptersLoaded(args.ProgramChain); 35 | 36 | foreach (string file in Directory.GetFiles(path, "*.mpls")) 37 | { 38 | ChapterInfo pl = ex.GetStreams(file)[0]; 39 | if (pl == null) 40 | continue; 41 | 42 | pl.SourceFilePath = file; 43 | pl.SourceType = "Blu-Ray"; 44 | mpls.Add(pl); 45 | } 46 | 47 | mpls = mpls.OrderByDescending(p => p.Duration).ToList(); 48 | OnExtractionComplete(); 49 | return mpls; 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /packages/audio/vorbis/OggVorbisSettings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI 26 | { 27 | public class OggVorbisSettings: AudioCodecSettings 28 | { 29 | public static readonly string ID = "Vorbis"; 30 | 31 | public OggVorbisSettings() 32 | : base(ID, AudioCodec.VORBIS, AudioEncoderType.VORBIS, 0) 33 | { 34 | this.Quality = 1.0M; 35 | } 36 | 37 | public decimal Quality; 38 | 39 | public override BitrateManagementMode BitrateMode 40 | { 41 | get 42 | { 43 | return BitrateManagementMode.VBR; 44 | } 45 | set 46 | { 47 | // Do Nothing 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /packages/audio/ffmp2/MP2Settings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace MeGUI 24 | { 25 | public class MP2Settings : AudioCodecSettings 26 | { 27 | public static readonly string ID = "FFmpeg MP2"; 28 | 29 | public static readonly object[] SupportedBitrates = new object[] { 64, 128, 160, 192, 224, 256, 288, 320 }; 30 | 31 | 32 | public MP2Settings() : base(ID, AudioCodec.MP2, AudioEncoderType.FFMP2, 128) 33 | { 34 | base.DownmixMode = ChannelMode.StereoDownmix; 35 | } 36 | 37 | public override BitrateManagementMode BitrateMode 38 | { 39 | get 40 | { 41 | return BitrateManagementMode.CBR; 42 | } 43 | set 44 | { 45 | // Do Nothing 46 | } 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /packages/tools/mp4fpsmod/MP4FpsModJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace MeGUI 24 | { 25 | public class MP4FpsModJob : Job 26 | { 27 | public MP4FpsModJob() : base() { } 28 | 29 | public MP4FpsModJob(string input, string timeStampFile) 30 | { 31 | Input = input; 32 | TimeStampFile = timeStampFile; 33 | } 34 | 35 | private string _timeStampFile; 36 | public string TimeStampFile 37 | { 38 | get { return _timeStampFile; } 39 | set { _timeStampFile = value; } 40 | } 41 | 42 | public override string CodecString 43 | { 44 | get { return "mp4fpsmod"; } 45 | } 46 | 47 | public override string EncodingMode 48 | { 49 | get { return "mux"; } 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /core/util/DeinterlaceFilter.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI 26 | { 27 | public class DeinterlaceFilter 28 | { 29 | private string script; 30 | private string title; 31 | public DeinterlaceFilter(string title, string script) 32 | { 33 | this.title = title; 34 | this.script = script; 35 | } 36 | public override string ToString() 37 | { 38 | return this.title; 39 | } 40 | 41 | public string Script 42 | { 43 | get { return script; } 44 | set { script = value; } 45 | } 46 | 47 | public string Title 48 | { 49 | get { return title; } 50 | set { title = value; } 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /packages/audio/exhale/ExhaleSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace MeGUI 7 | { 8 | 9 | public enum ExhaleProfile 10 | { 11 | [EnumTitle("Automatic")] 12 | xHEAAC, 13 | [EnumTitle("xHE-AAC+eSBR")] 14 | xHEAACeSBR, 15 | } 16 | 17 | public class ExhaleSettings : AudioCodecSettings 18 | { 19 | public static readonly string ID = "Exhale"; 20 | 21 | public static readonly object[] SupportedBitrates = new object[] { 12, 16, 20, 24, 28, 32, 36, 40, 44, 48 }; 22 | public static readonly ExhaleProfile[] SupportedProfiles = new ExhaleProfile[] { ExhaleProfile.xHEAAC, ExhaleProfile.xHEAACeSBR}; 23 | 24 | 25 | public ExhaleSettings() : base(ID, AudioCodec.AAC, AudioEncoderType.EXHALE, 48) 26 | { 27 | base.DownmixMode = ChannelMode.KeepOriginal; 28 | base.supportedBitrates = Array.ConvertAll(SupportedBitrates, delegate (object o) { return (int)o; }); 29 | profile = ExhaleProfile.xHEAAC; 30 | quality = 5; 31 | } 32 | 33 | private ExhaleProfile profile; 34 | public ExhaleProfile Profile 35 | { 36 | get { return profile; } 37 | set { profile = value; } 38 | } 39 | 40 | private int quality; 41 | public int Quality 42 | { 43 | get { return quality; } 44 | set { quality = value; } 45 | } 46 | 47 | 48 | public override BitrateManagementMode BitrateMode 49 | { 50 | get 51 | { 52 | return BitrateManagementMode.CBR; 53 | } 54 | set 55 | { 56 | // Do Nothing 57 | } 58 | } 59 | } 60 | 61 | } 62 | 63 | -------------------------------------------------------------------------------- /core/plugins/interfaces/JobProcessorManager.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | using MeGUI; 26 | 27 | namespace MeGUI.core.plugins.implemented 28 | { 29 | public class JobProcessorManager : GenericRegisterer 30 | where TJob : Job 31 | { 32 | public IJobProcessor CreateProcessor(MainForm info, Job job) 33 | { 34 | Dictionary processors = new Dictionary(); 35 | foreach (JobProcessorFactory factory in this.Values) 36 | { 37 | IJobProcessor processor = factory.Factory(info, job); 38 | if (processor != null) 39 | processors.Add(factory, processor); 40 | } 41 | return null; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /packages/audio/opus/OpusSettings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace MeGUI 24 | { 25 | public enum OpusMode 26 | { 27 | [EnumTitle("VBR")] 28 | VBR, 29 | [EnumTitle("Constrained VBR")] 30 | CVBR, 31 | [EnumTitle("Hard CBR")] 32 | HCBR 33 | } 34 | 35 | public class OpusSettings : AudioCodecSettings 36 | { 37 | public static readonly string ID = "OPUS"; 38 | 39 | public static readonly OpusMode[] SupportedModes = new OpusMode[] { OpusMode.VBR, OpusMode.CVBR, OpusMode.HCBR }; 40 | 41 | public OpusSettings() 42 | : base(ID, AudioCodec.OPUS, AudioEncoderType.OPUS, 96, BitrateManagementMode.VBR) 43 | { 44 | Mode = OpusMode.VBR; 45 | } 46 | 47 | private OpusMode mode; 48 | public OpusMode Mode 49 | { 50 | get { return mode; } 51 | set { mode = value; } 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /packages/tools/hdbdextractor/eac3to/File.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace eac3to 24 | { 25 | /// A File 26 | public class File 27 | { 28 | public int Index { get; set; } 29 | public string Name { get { return FullName.Substring(0, FullName.IndexOf('.')); } } 30 | public string Extension { get { return FullName.Substring(FullName.IndexOf('.') + 1); } } 31 | public string FullName { get; set; } 32 | 33 | public File() { } 34 | 35 | public File(string fileName, int index) 36 | { 37 | if (string.IsNullOrEmpty(fileName)) 38 | throw new ArgumentNullException("fileName", "The string 'fileName' cannot be null or empty."); 39 | 40 | FullName = fileName; 41 | Index = index; 42 | } 43 | 44 | public override string ToString() 45 | { 46 | return FullName; 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /packages/audio/ffdca/DCASettings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI 26 | { 27 | public class DCASettings : AudioCodecSettings 28 | { 29 | public static string ID = "FFmpeg DTS"; 30 | 31 | public static readonly object[] SupportedBitrates = new object[] { 576, 640, 760, 1235, 1520}; 32 | 33 | public DCASettings() 34 | : base(ID, AudioCodec.DTS, AudioEncoderType.FFDCA, 760) 35 | { 36 | base.supportedBitrates = Array.ConvertAll(SupportedBitrates, delegate(object o) { return (int)o; }); 37 | } 38 | 39 | public override BitrateManagementMode BitrateMode 40 | { 41 | get 42 | { 43 | return BitrateManagementMode.CBR; 44 | } 45 | set 46 | { 47 | // Do Nothing 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /packages/audio/flac/FlacSettings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI 26 | { 27 | public class FlacSettings : AudioCodecSettings 28 | { 29 | public static readonly string ID = "Flac"; 30 | 31 | public FlacSettings() 32 | : base(ID, AudioCodec.FLAC, AudioEncoderType.FLAC, 0) 33 | { 34 | CompressionLevel = 5; 35 | base.AutoGain = false; 36 | } 37 | 38 | private int level; 39 | public int CompressionLevel 40 | { 41 | get { return level; } 42 | set { level = value; } 43 | } 44 | 45 | public override BitrateManagementMode BitrateMode 46 | { 47 | get 48 | { 49 | return BitrateManagementMode.CBR; 50 | } 51 | set 52 | { 53 | // Do Nothing 54 | } 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /core/gui/VideoPlayerControl.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MeGUI.core.gui 2 | { 3 | partial class VideoPlayerControl 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | #region Designer generated code 11 | 12 | /// 13 | /// Required for windows forms designer 14 | /// Do not change manually. 15 | /// 16 | private void InitializeComponent() 17 | { 18 | this.videoPreview = new System.Windows.Forms.PictureBox(); 19 | ((System.ComponentModel.ISupportInitialize)(this.videoPreview)).BeginInit(); 20 | this.SuspendLayout(); 21 | // 22 | // videoPreview 23 | // 24 | this.videoPreview.Dock = System.Windows.Forms.DockStyle.Fill; 25 | this.videoPreview.Location = new System.Drawing.Point(0, 0); 26 | this.videoPreview.Name = "videoPreview"; 27 | this.videoPreview.Size = new System.Drawing.Size(150, 150); 28 | this.videoPreview.TabIndex = 0; 29 | this.videoPreview.TabStop = false; 30 | // 31 | // VideoPlayerControl 32 | // 33 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 34 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 35 | this.Controls.Add(this.videoPreview); 36 | this.Name = "VideoPlayerControl"; 37 | this.Load += new System.EventHandler(this.VideoPlayerControl_Load); 38 | this.Resize += new System.EventHandler(this.VideoPlayerControl_Resize); 39 | ((System.ComponentModel.ISupportInitialize)(this.videoPreview)).EndInit(); 40 | this.ResumeLayout(false); 41 | 42 | } 43 | 44 | #endregion 45 | 46 | private System.Windows.Forms.PictureBox videoPreview; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /packages/audio/ffac3/AC3Settings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI 26 | { 27 | public class AC3Settings : AudioCodecSettings 28 | { 29 | public static string ID = "FFmpeg AC-3"; 30 | 31 | public static readonly object[] SupportedBitrates = new object[] { 64, 128, 160, 192, 224, 256, 288, 320, 352, 384, 448, 512, 576, 640}; 32 | 33 | public AC3Settings() 34 | : base(ID, AudioCodec.AC3, AudioEncoderType.FFAC3, 384) 35 | { 36 | base.supportedBitrates = Array.ConvertAll(SupportedBitrates, delegate(object o) { return (int)o; }); 37 | } 38 | 39 | public override BitrateManagementMode BitrateMode 40 | { 41 | get 42 | { 43 | return BitrateManagementMode.CBR; 44 | } 45 | set 46 | { 47 | // Do Nothing 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /packages/audio/ffeac3/EAC3Settings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI 26 | { 27 | public class EAC3Settings : AudioCodecSettings 28 | { 29 | public static string ID = "FFmpeg EAC-3"; 30 | 31 | public static readonly object[] SupportedBitrates = new object[] { 64, 128, 160, 192, 224, 256, 288, 320, 352, 384, 448, 512, 576, 640, 704, 768}; 32 | 33 | public EAC3Settings() 34 | : base(ID, AudioCodec.EAC3, AudioEncoderType.FFEAC3, 384) 35 | { 36 | base.supportedBitrates = Array.ConvertAll(SupportedBitrates, delegate(object o) { return (int)o; }); 37 | } 38 | 39 | public override BitrateManagementMode BitrateMode 40 | { 41 | get 42 | { 43 | return BitrateManagementMode.CBR; 44 | } 45 | set 46 | { 47 | // Do Nothing 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /core/gui/AudioEncodingWindow.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System.Windows.Forms; 22 | 23 | using MeGUI.core.details; 24 | 25 | namespace MeGUI.core.gui 26 | { 27 | public partial class AudioEncodingWindow : Form 28 | { 29 | public static readonly IDable Configurer = new IDable( 30 | "audio_reconfigure", delegate(Job j) 31 | { 32 | if (!(j is AudioJob)) 33 | return null; 34 | 35 | AudioEncodingWindow w = new AudioEncodingWindow(); 36 | w.audioEncodingTab1.AudioJob = (AudioJob)j; 37 | 38 | if (w.ShowDialog() == DialogResult.OK) 39 | j = w.audioEncodingTab1.AudioJob; 40 | 41 | return j; 42 | }); 43 | 44 | public AudioEncodingWindow() 45 | { 46 | InitializeComponent(); 47 | audioEncodingTab1.QueueJob = delegate(AudioJob j) 48 | { 49 | this.DialogResult = DialogResult.OK; 50 | }; 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /packages/audio/opus/OpusConfigurationPanel.Designer.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | 22 | using MeGUI.core.details.audio; 23 | 24 | 25 | namespace MeGUI.packages.audio.opus 26 | { 27 | partial class OpusConfigurationPanel 28 | { 29 | /// 30 | /// Required designer variable. 31 | /// 32 | private System.ComponentModel.IContainer components = null; 33 | 34 | /// 35 | /// Clean up any resources being used. 36 | /// 37 | /// true if managed resources should be disposed; otherwise, false. 38 | protected override void Dispose(bool disposing) 39 | { 40 | if (disposing && (components != null)) 41 | { 42 | components.Dispose(); 43 | } 44 | base.Dispose(disposing); 45 | } 46 | 47 | public System.Windows.Forms.TrackBar trackBar; 48 | public System.Windows.Forms.ComboBox cbMode; 49 | public System.Windows.Forms.Label label2; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /packages/tools/chaptercreator/BDInfo/TSStreamClip.cs: -------------------------------------------------------------------------------- 1 | //============================================================================ 2 | // BDInfo - Blu-ray Video and Audio Analysis Tool 3 | // Copyright © 2010 Cinema Squid 4 | // 5 | // This library is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU Lesser General Public 7 | // License as published by the Free Software Foundation; either 8 | // version 2.1 of the License, or (at your option) any later version. 9 | // 10 | // This library is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | // Lesser General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU Lesser General Public 16 | // License along with this library; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | //============================================================================= 19 | 20 | using System; 21 | using System.Collections.Generic; 22 | using System.Text; 23 | 24 | namespace BDInfo 25 | { 26 | public class TSStreamClip 27 | { 28 | public int AngleIndex = 0; 29 | public string Name; 30 | public double TimeIn; 31 | public double TimeOut; 32 | public double RelativeTimeIn; 33 | public double RelativeTimeOut; 34 | public double Length; 35 | 36 | public ulong FileSize = 0; 37 | public ulong InterleavedFileSize = 0; 38 | public ulong PayloadBytes = 0; 39 | public ulong PacketCount = 0; 40 | public double PacketSeconds = 0; 41 | 42 | public List Chapters = new List(); 43 | public TSStreamClipFile StreamClipFile = null; 44 | 45 | public TSStreamClip(TSStreamClipFile streamClipFile) 46 | { 47 | Name = streamClipFile.Name; 48 | StreamClipFile = streamClipFile; 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![GitHub version](https://img.shields.io/github/v/release/Kurtnoise-zeus/megui)](https://github.com/Kurtnoise-zeus/megui/) 2 | ![MeGUI number of downloads](https://img.shields.io/github/downloads/kurtnoise-zeus/megui/latest/total.svg) 3 | [![download latest release](https://img.shields.io/badge/Megui-download-green?style=flat)](https://github.com/Kurtnoise-zeus/megui/releases/latest) 4 | 5 | 6 | # MeGUI 6666 version 7 | 8 | During summer 2022, I upgraded the [current megui codebase](https://sourceforge.net/p/megui/code/HEAD/tree/megui/trunk/) in order to fix some issues and add some new features. 9 | 10 | The current branch has been **tested only on x64 dev environment** (Avisynth+, Windows 11 Pro Edition). 11 | 12 | 13 | ## Compilation 14 | 15 | Just open the MeGUI.sln file using Visual Studio and restaure NuGet missing packages. Currently, I'm using VS2026 Community Edition in order to compile the latest changes. The previous one (VS 2022) works fine also. 16 | 17 | ## What's new 18 | 19 | Nothing really new comparing to the official release except : 20 | 21 | - Audio transcoding in order to use channel mask values. This requires avisynth+ 3.7.3 or higher. 22 | - Exhale Audio Encoder (https://gitlab.com/ecodis/exhale) 23 | - FFmpeg DCA/EAC3/THD Audio Encoders (https://ffmpeg.org/) 24 | - BestSource avisynth support (https://github.com/vapoursynth/bestsource/releases) 25 | - FFV1 Lossless Video Encoder (https://ffmpeg.org/) 26 | - SVT-AV1-Essential Video Encoder (https://github.com/nekotrix/SVT-AV1-Essential) 27 | 28 | ## Release 29 | 30 | From time to time, I upload directly on [github Release page](https://github.com/Kurtnoise-zeus/megui/releases) a package having latest changes and/or fixes. Use it at your own risk. 31 | 32 | ## Todo 33 | 34 | - [ ] Add VVC Video Encoder (dunno which one yet) 35 | - [ ] Add Bitrate Video Viewer 36 | - [ ] Add Demuxers tool 37 | - [ ] ... 38 | 39 | ## Repository Activity 40 | 41 | ![Repository Activities](https://repobeats.axiom.co/api/embed/c013ca5965300e42e4021ac7fb736d5b5cc9ed58.svg "Repobeats analytics image") 42 | -------------------------------------------------------------------------------- /Settings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | namespace MeGUI.Properties { 22 | 23 | 24 | // This class allows you to handle specific events on the settings class: 25 | // The SettingChanging event is raised before a setting's value is changed. 26 | // The PropertyChanged event is raised after a setting's value is changed. 27 | // The SettingsLoaded event is raised after the setting values are loaded. 28 | // The SettingsSaving event is raised before the setting values are saved. 29 | internal sealed partial class Settings { 30 | 31 | public Settings() { 32 | // // To add event handlers for saving and changing settings, uncomment the lines below: 33 | } 34 | 35 | private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { 36 | // Add code to handle the SettingChangingEvent event here. 37 | } 38 | 39 | private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { 40 | // Add code to handle the SettingsSaving event here. 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /packages/tools/chaptercreator/MediaInfoExtractor.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.IO; 24 | 25 | namespace MeGUI 26 | { 27 | public class MediaInfoExtractor : ChapterExtractor 28 | { 29 | public override bool SupportsMultipleStreams 30 | { 31 | get { return false; } 32 | } 33 | 34 | public override string[] Extensions 35 | { 36 | get { return new string[] { "mkv" }; } 37 | } 38 | 39 | public override List GetStreams(string location) 40 | { 41 | List pgcs = new List(); 42 | 43 | MediaInfoFile oInfo = new MediaInfoFile(location); 44 | if (!oInfo.HasChapters ) 45 | { 46 | OnExtractionComplete(); 47 | return pgcs; 48 | } 49 | 50 | pgcs.Add(oInfo.ChapterInfo); 51 | OnStreamDetected(oInfo.ChapterInfo); 52 | OnChaptersLoaded(oInfo.ChapterInfo); 53 | OnExtractionComplete(); 54 | return pgcs; 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /packages/tools/hdbdextractor/CustomDataGridView.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Windows.Forms; 23 | using System.Drawing; 24 | 25 | namespace MeGUI.packages.tools.hdbdextractor 26 | { 27 | /// A custom DataGridView with VerticalScrollBar always shown 28 | public class CustomDataGridView : DataGridView 29 | { 30 | public CustomDataGridView() : base() 31 | { 32 | VerticalScrollBar.Visible = true; 33 | VerticalScrollBar.VisibleChanged += new EventHandler(VerticalScrollBar_VisibleChanged); 34 | } 35 | 36 | void VerticalScrollBar_VisibleChanged(object sender, EventArgs e) 37 | { 38 | if (!VerticalScrollBar.Visible) 39 | { 40 | VerticalScrollBar.Location = new Point(ClientRectangle.Width - VerticalScrollBar.Width, 1); 41 | VerticalScrollBar.Size = new Size(VerticalScrollBar.Width, ClientRectangle.Height - 1);// - HorizontalScrollBar.Height); 42 | VerticalScrollBar.Show(); 43 | } 44 | 45 | VerticalScrollBar.Visible = true; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /packages/tools/mp4fpsmod/MP4FpsMod.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.IO; 23 | using System.Text; 24 | 25 | using MeGUI.core.util; 26 | 27 | namespace MeGUI 28 | { 29 | public class MP4FpsMod : CommandlineJobProcessor 30 | { 31 | public static readonly JobProcessorFactory Factory = new JobProcessorFactory(new ProcessorFactory(init), "MP4FpsMod"); 32 | 33 | private static IJobProcessor init(MainForm mf, Job j) 34 | { 35 | if (j is MP4FpsModJob) 36 | return new MP4FpsMod(); 37 | return null; 38 | } 39 | 40 | public MP4FpsMod() 41 | { 42 | UpdateCacher.CheckPackage("mp4box"); 43 | Executable = Path.Combine(Path.GetDirectoryName(MainForm.Instance.Settings.Mp4Box.Path), @"mp4fpsmod\mp4fpsmod.exe"); 44 | } 45 | 46 | #region IJobProcessor Members 47 | protected override string Commandline 48 | { 49 | get 50 | { 51 | Su.Status = "Applying timecodes..."; 52 | return "-i -t \"" + Job.TimeStampFile + "\" -x \"" + Job.Input + "\""; 53 | } 54 | } 55 | #endregion 56 | } 57 | } -------------------------------------------------------------------------------- /packages/tools/hdbdextractor/eac3to/AudioStreamType.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | using MeGUI.packages.tools.hdbdextractor; 24 | 25 | namespace eac3to 26 | { 27 | /// An enumeration of Audio Stream types 28 | [Flags] 29 | public enum AudioStreamType 30 | { 31 | [StringValue("UNKNOWN")] 32 | UNKNOWN, 33 | [StringValue("AC3")] 34 | AC3, 35 | [StringValue("E-AC3")] 36 | EAC3, 37 | [StringValue("DTS")] 38 | DTS, 39 | [StringValue("TrueHD")] 40 | TrueHD, 41 | [StringValue("RAW")] 42 | RAW, 43 | [StringValue("PCM")] 44 | PCM, 45 | [StringValue("WAV")] 46 | WAV, 47 | [StringValue("Multi-Channel WAV")] 48 | WAVS, 49 | [StringValue("MP2")] 50 | MP2, 51 | [StringValue("MP3")] 52 | MP3, 53 | [StringValue("AAC")] 54 | AAC, 55 | [StringValue("FLAC")] 56 | FLAC, 57 | [StringValue("TTA1")] 58 | TTA, 59 | [StringValue("WAVPACK4")] 60 | WAVPACK, 61 | [StringValue("VORBIS")] 62 | VORBIS, 63 | [StringValue("OPUS")] 64 | OPUS 65 | } 66 | } -------------------------------------------------------------------------------- /core/details/VideoTrackInfo.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | 20 | using System; 21 | 22 | namespace MeGUI 23 | { 24 | public class VideoTrackInfo : TrackInfo 25 | { 26 | private string _codecMediaInfo; 27 | 28 | public VideoTrackInfo() : this(0, 0, null, null, null) 29 | { 30 | } 31 | 32 | public VideoTrackInfo(int trackID, int mmgTrackID, string language, string name, string codec) 33 | { 34 | base.TrackType = TrackType.Video; 35 | base.Language = language; 36 | base.Name = name; 37 | base.TrackID = trackID; 38 | base.MMGTrackID = mmgTrackID; 39 | base.Codec = codec; 40 | this._codecMediaInfo = codec; 41 | } 42 | 43 | /// 44 | /// The Codec information from MediaInfo 45 | /// 46 | public string CodecMediaInfo 47 | { 48 | get { return _codecMediaInfo; } 49 | } 50 | 51 | public override string ToString() 52 | { 53 | string fullString = "[" + TrackID + "] - " + this.Codec; 54 | if (!string.IsNullOrEmpty(Language)) 55 | fullString += " / " + Language; 56 | if (!string.IsNullOrEmpty(Name)) 57 | fullString += " / " + Name; 58 | return fullString.Trim(); 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /core/gui/ZonesWindow.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Windows.Forms; 23 | 24 | namespace MeGUI.core.gui 25 | { 26 | public partial class ZonesWindow : Form 27 | { 28 | public ZonesWindow(string input) 29 | { 30 | InitializeComponent(); 31 | zonesControl1.Input = input; 32 | } 33 | 34 | public Zone[] Zones 35 | { 36 | get { return zonesControl1.Zones; } 37 | set { zonesControl1.Zones = value ?? Array.Empty(); } 38 | } 39 | 40 | private void ZonesWindow_FormClosing(object sender, FormClosingEventArgs e) 41 | { 42 | zonesControl1.ClosePlayer(); 43 | } 44 | 45 | private void ZonesWindow_KeyDown(object sender, KeyEventArgs e) 46 | { 47 | if (e.KeyCode == Keys.Escape) 48 | { 49 | this.Close(); 50 | } 51 | } 52 | 53 | protected override bool ProcessDialogKey(Keys keyData) 54 | { 55 | if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape) 56 | { 57 | this.Close(); 58 | return true; 59 | } 60 | return base.ProcessDialogKey(keyData); 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /packages/tools/fileindexer/D2VIndexJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.IO; 24 | 25 | namespace MeGUI 26 | { 27 | /// 28 | /// Summary description for D2VIndexJob. 29 | /// 30 | public class D2VIndexJob : IndexJob 31 | { 32 | public D2VIndexJob():base() 33 | { 34 | } 35 | 36 | public D2VIndexJob(string input, string output, int demuxType, List audioTracks, bool loadSources, bool demuxVideo) 37 | : base() 38 | { 39 | Input = input; 40 | Output = output; 41 | DemuxMode = demuxType; 42 | AudioTracks = audioTracks; 43 | LoadSources = loadSources; 44 | DemuxVideo = demuxVideo; 45 | FilesToDelete.Add(Path.Combine(Path.GetDirectoryName(input), Path.GetFileNameWithoutExtension(input) + ".log")); 46 | FilesToDelete.Add(output + ".bad"); 47 | FilesToDelete.Add(Path.ChangeExtension(output,".fix.txt")); 48 | } 49 | 50 | public override string CodecString 51 | { 52 | get { return "d2vindex"; } 53 | } 54 | 55 | public override string EncodingMode 56 | { 57 | get { return "idx"; } 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /core/gui/TextViewer.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | 29 | namespace MeGUI.core.gui 30 | { 31 | public partial class TextViewer : Form 32 | { 33 | public TextViewer() 34 | { 35 | InitializeComponent(); 36 | } 37 | 38 | public string Contents 39 | { 40 | get { return textBox1.Text; } 41 | set { textBox1.Text = value; } 42 | } 43 | 44 | public bool Wrap 45 | { 46 | get { return textBox1.WordWrap; } 47 | set { textBox1.WordWrap = value; } 48 | } 49 | 50 | private void TextViewer_KeyDown(object sender, KeyEventArgs e) 51 | { 52 | if (e.KeyCode == Keys.Escape) 53 | { 54 | this.Close(); 55 | } 56 | } 57 | 58 | protected override bool ProcessDialogKey(Keys keyData) 59 | { 60 | if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape) 61 | { 62 | this.Close(); 63 | return true; 64 | } 65 | return base.ProcessDialogKey(keyData); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /packages/tools/fileindexer/LSMASHIndexJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | 24 | namespace MeGUI 25 | { 26 | public class LSMASHIndexJob : IndexJob 27 | { 28 | public LSMASHIndexJob() : base() 29 | { 30 | } 31 | 32 | public LSMASHIndexJob(string input, string indexFile, int demuxType, List audioTracks, bool loadSources) : base() 33 | { 34 | Input = input; 35 | if (String.IsNullOrEmpty(indexFile)) 36 | Output = input + ".lwi"; 37 | else 38 | Output = indexFile; 39 | LoadSources = loadSources; 40 | 41 | if (audioTracks == null || audioTracks.Count == 0) 42 | { 43 | AudioTracks = new List(); 44 | DemuxMode = 0; 45 | } 46 | else 47 | { 48 | DemuxMode = demuxType; 49 | AudioTracks = audioTracks; 50 | } 51 | 52 | DemuxVideo = false; 53 | } 54 | 55 | public override string CodecString 56 | { 57 | get { return "lsmashindex"; } 58 | } 59 | 60 | public override string EncodingMode 61 | { 62 | get { return "idx"; } 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /packages/audio/ffaac/FFAACSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace MeGUI 7 | { 8 | 9 | public enum FFAACProfile 10 | { 11 | [EnumTitle("MPEG-4 LC-AAC")] 12 | M4LC, 13 | [EnumTitle("MPEG-2 PNS-AAC")] 14 | M4PNS 15 | } 16 | 17 | public enum FFAACMode 18 | { 19 | [EnumTitle("CBR")] 20 | CBR, 21 | [EnumTitle("VBR")] 22 | VBR 23 | } 24 | 25 | public class FFAACSettings : AudioCodecSettings 26 | { 27 | public static readonly string ID = "FFmpeg AAC"; 28 | 29 | public static readonly object[] SupportedBitrates = new object[] { 32, 64, 128, 160, 192, 224, 256, 320, 528 }; 30 | public static readonly FFAACProfile[] SupportedProfiles = new FFAACProfile[] { FFAACProfile.M4LC, FFAACProfile.M4PNS}; 31 | public static readonly FFAACMode[] SupportedModes = new FFAACMode[] { FFAACMode.CBR, FFAACMode.VBR }; 32 | 33 | 34 | public FFAACSettings() : base(ID, AudioCodec.AAC, AudioEncoderType.FFAAC, 128) 35 | { 36 | base.DownmixMode = ChannelMode.KeepOriginal; 37 | base.supportedBitrates = Array.ConvertAll(SupportedBitrates, delegate (object o) { return (int)o; }); 38 | mode = FFAACMode.CBR; 39 | profile = FFAACProfile.M4LC; 40 | quality = 60; 41 | } 42 | 43 | private FFAACProfile profile; 44 | public FFAACProfile Profile 45 | { 46 | get { return profile; } 47 | set { profile = value; } 48 | } 49 | 50 | private FFAACMode mode; 51 | public FFAACMode Mode 52 | { 53 | get { return mode; } 54 | set { mode = value; } 55 | } 56 | 57 | private int quality; 58 | public int Quality 59 | { 60 | get { return quality; } 61 | set { quality = value; } 62 | } 63 | 64 | 65 | public override BitrateManagementMode BitrateMode 66 | { 67 | get 68 | { 69 | return BitrateManagementMode.CBR; 70 | } 71 | set 72 | { 73 | // Do Nothing 74 | } 75 | } 76 | } 77 | 78 | } 79 | 80 | -------------------------------------------------------------------------------- /packages/tools/fileindexer/FFMSIndexJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | 24 | namespace MeGUI 25 | { 26 | public class FFMSIndexJob : IndexJob 27 | { 28 | public FFMSIndexJob() 29 | : base() 30 | { 31 | } 32 | 33 | public FFMSIndexJob(string input, string indexFile, int demuxType, List audioTracks, bool loadSources) : base() 34 | { 35 | Input = input; 36 | LoadSources = loadSources; 37 | if (String.IsNullOrEmpty(indexFile)) 38 | Output = input + ".ffindex"; 39 | else 40 | Output = indexFile; 41 | 42 | if (audioTracks == null || audioTracks.Count == 0) 43 | { 44 | AudioTracks = new List(); 45 | DemuxMode = 0; 46 | } 47 | else 48 | { 49 | DemuxMode = demuxType; 50 | AudioTracks = audioTracks; 51 | } 52 | 53 | DemuxVideo = false; 54 | } 55 | 56 | public override string CodecString 57 | { 58 | get { return "ffmsindex"; } 59 | } 60 | 61 | public override string EncodingMode 62 | { 63 | get { return "idx"; } 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /core/util/Exceptions.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI.core.util 26 | { 27 | // The base class for MeGUI-triggered exceptions 28 | public class MeGUIException : Exception 29 | { 30 | public MeGUIException(string message) : base(message) { } 31 | 32 | public MeGUIException(Exception inner) : base(inner.Message, inner) { } 33 | 34 | public MeGUIException(string message, Exception inner) : base(message, inner) { } 35 | 36 | } 37 | 38 | public class JobRunException : MeGUIException 39 | { 40 | public JobRunException(string message) : base(message) { } 41 | 42 | public JobRunException(Exception inner) : base(inner.Message, inner) { } 43 | 44 | public JobRunException(string message, Exception inner) : base(message, inner) { } 45 | } 46 | 47 | public class MissingFileException : JobRunException 48 | { 49 | public string filename; 50 | 51 | public MissingFileException(string file) 52 | : base("Required file '" + file + "' is missing.") 53 | { 54 | filename = file; 55 | } 56 | } 57 | 58 | public class EncoderMissingException : MissingFileException 59 | { 60 | public EncoderMissingException(string file) : base(file) { } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /packages/tools/hdbdextractor/eac3to/ChapterStream.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using MeGUI.core.util; 24 | 25 | namespace eac3to 26 | { 27 | /// A Stream of StreamType Chapters 28 | public class ChapterStream : Stream 29 | { 30 | /// A list of chapters 31 | public List Chapters { get; set; } 32 | 33 | public override object[] ExtractTypes 34 | { 35 | get 36 | { 37 | return new object[] { "TXT" }; 38 | } 39 | } 40 | 41 | public ChapterStream(string s, LogItem _log) : base(StreamType.Chapter, s, _log) 42 | { 43 | if (string.IsNullOrEmpty(s)) 44 | throw new ArgumentNullException("s", "The string 's' cannot be null or empty."); 45 | } 46 | 47 | new public static Stream Parse(string s, LogItem _log) 48 | { 49 | //2: Chapters, 27 chapters without names 50 | 51 | if (string.IsNullOrEmpty(s)) 52 | throw new ArgumentNullException("s", "The string 's' cannot be null or empty."); 53 | 54 | return new ChapterStream(s, _log); 55 | } 56 | 57 | public override string ToString() 58 | { 59 | return base.ToString(); 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /packages/tools/fileindexer/DGIIndexJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | 24 | namespace MeGUI 25 | { 26 | public class DGIIndexJob : IndexJob 27 | { 28 | bool bOneClickProcessing; 29 | 30 | public DGIIndexJob() : base() 31 | { 32 | } 33 | 34 | public DGIIndexJob(string input, string output, int demuxType, List audioTracks, bool loadSources, bool demuxVideo, bool bOneClick) 35 | { 36 | Input = input; 37 | Output = output; 38 | DemuxMode = demuxType; 39 | AudioTracks = audioTracks; 40 | LoadSources = loadSources; 41 | DemuxVideo = demuxVideo; 42 | bOneClickProcessing = bOneClick; 43 | } 44 | 45 | /// 46 | /// gets / sets whether the job runs in a OneClick context (then the log file must be deleted later) 47 | /// 48 | public bool OneClickProcessing 49 | { 50 | get { return bOneClickProcessing; } 51 | set { bOneClickProcessing = value; } 52 | } 53 | 54 | public override string CodecString 55 | { 56 | get { return "dgiindex"; } 57 | } 58 | 59 | public override string EncodingMode 60 | { 61 | get { return "idx"; } 62 | } 63 | } 64 | } -------------------------------------------------------------------------------- /packages/tools/fileindexer/DGMIndexJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | 24 | namespace MeGUI 25 | { 26 | public class DGMIndexJob : IndexJob 27 | { 28 | bool bOneClickProcessing; 29 | 30 | public DGMIndexJob() : base() 31 | { 32 | } 33 | 34 | public DGMIndexJob(string input, string output, int demuxType, List audioTracks, bool loadSources, bool demuxVideo, bool bOneClick) 35 | { 36 | Input = input; 37 | Output = output; 38 | DemuxMode = demuxType; 39 | AudioTracks = audioTracks; 40 | LoadSources = loadSources; 41 | DemuxVideo = demuxVideo; 42 | bOneClickProcessing = bOneClick; 43 | } 44 | 45 | /// 46 | /// gets / sets whether the job runs in a OneClick context (then the log file must be deleted later) 47 | /// 48 | public bool OneClickProcessing 49 | { 50 | get { return bOneClickProcessing; } 51 | set { bOneClickProcessing = value; } 52 | } 53 | 54 | public override string CodecString 55 | { 56 | get { return "dgmindex"; } 57 | } 58 | 59 | public override string EncodingMode 60 | { 61 | get { return "idx"; } 62 | } 63 | } 64 | } -------------------------------------------------------------------------------- /packages/audio/naac/NeroAACSettings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace MeGUI 24 | { 25 | /// 26 | /// this class contains all the settings for the Nero AAC encoder 27 | /// 28 | public enum AacProfile 29 | { 30 | [EnumTitle("Automatic")] 31 | Auto, 32 | [EnumTitle("HE-AAC+PS")] 33 | PS, 34 | [EnumTitle("HE-AAC")] 35 | HE, 36 | [EnumTitle("AAC-LC")] 37 | LC, 38 | [EnumTitle("High")] 39 | HIGH 40 | } 41 | 42 | public class NeroAACSettings : AudioCodecSettings 43 | { 44 | public static readonly string ID = "Nero AAC"; 45 | 46 | public static readonly AacProfile[] SupportedProfiles = new AacProfile[] { AacProfile.Auto, AacProfile.PS, AacProfile.HE, AacProfile.LC }; 47 | 48 | public NeroAACSettings() 49 | : base(ID, AudioCodec.AAC, AudioEncoderType.NAAC, 0, BitrateManagementMode.VBR) 50 | { 51 | Quality = 0.5M; 52 | Profile = AacProfile.Auto; 53 | } 54 | 55 | private AacProfile profile; 56 | public AacProfile Profile 57 | { 58 | get { return profile; } 59 | set { profile = value; } 60 | } 61 | 62 | private decimal quality; 63 | public Decimal Quality 64 | { 65 | get { return quality; } 66 | set { quality = value; } 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /core/details/MediaFileFactory.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace MeGUI 24 | { 25 | public class MediaFileFactory 26 | { 27 | private MainForm mainForm; 28 | public MediaFileFactory(MainForm mainForm) 29 | { 30 | this.mainForm = mainForm; 31 | } 32 | 33 | public IMediaFile Open(string file) 34 | { 35 | int bestHandleLevel = -1; 36 | IMediaFile bestMediaFile = null; 37 | foreach (IMediaFileFactory factory in mainForm.PackageSystem.MediaFileTypes.Values) 38 | { 39 | int handleLevel = factory.HandleLevel(file); 40 | if (handleLevel < 0) 41 | continue; 42 | try 43 | { 44 | if (handleLevel > bestHandleLevel) 45 | { 46 | IMediaFile mFile = factory.Open(file); 47 | if (mFile != null) 48 | { 49 | bestHandleLevel = handleLevel; 50 | if (bestMediaFile != null) 51 | bestMediaFile.Dispose(); 52 | bestMediaFile = mFile; 53 | } 54 | } 55 | } 56 | catch (Exception ex) { string test = ex.Message; } 57 | } 58 | return bestMediaFile; 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /core/gui/HelpButton.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MeGUI.core.gui 2 | { 3 | partial class HelpButton 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Component Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.button1 = new System.Windows.Forms.Button(); 32 | this.SuspendLayout(); 33 | // 34 | // button1 35 | // 36 | this.button1.AutoSize = true; 37 | this.button1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 38 | this.button1.Dock = System.Windows.Forms.DockStyle.Fill; 39 | this.button1.Location = new System.Drawing.Point(0, 0); 40 | this.button1.Name = "button1"; 41 | this.button1.Size = new System.Drawing.Size(39, 23); 42 | this.button1.TabIndex = 0; 43 | this.button1.Text = "&Help"; 44 | this.button1.UseVisualStyleBackColor = true; 45 | this.button1.Click += new System.EventHandler(this.HelpButton_Click); 46 | // 47 | // HelpButton 48 | // 49 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 50 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 51 | this.Controls.Add(this.button1); 52 | this.Name = "HelpButton"; 53 | this.Size = new System.Drawing.Size(39, 23); 54 | this.ResumeLayout(false); 55 | this.PerformLayout(); 56 | 57 | } 58 | 59 | #endregion 60 | 61 | private System.Windows.Forms.Button button1; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /packages/audio/ffthd/THDConfigurationPanel.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | 29 | namespace MeGUI.packages.audio.ffthd 30 | { 31 | public partial class THDConfigurationPanel : MeGUI.core.details.audio.AudioConfigurationPanel, Editable 32 | { 33 | public THDConfigurationPanel():base() 34 | { 35 | InitializeComponent(); 36 | } 37 | 38 | #region properties 39 | /// 40 | /// gets / sets the settings that are being shown in this configuration dialog 41 | /// 42 | protected override AudioCodecSettings CodecSettings 43 | { 44 | get 45 | { 46 | THDSettings nas = new THDSettings(); 47 | return nas; 48 | } 49 | set 50 | { 51 | THDSettings nas = value as THDSettings; 52 | } 53 | } 54 | #endregion 55 | 56 | #region Editable Members 57 | 58 | THDSettings Editable.Settings 59 | { 60 | get 61 | { 62 | return (THDSettings)Settings; 63 | } 64 | set 65 | { 66 | Settings = value; 67 | } 68 | } 69 | 70 | #endregion 71 | } 72 | } -------------------------------------------------------------------------------- /packages/tools/hdbdextractor/eac3to/JoinStream.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using MeGUI.core.util; 23 | 24 | namespace eac3to 25 | { 26 | /// A Stream of StreamType Join 27 | public class JoinStream : Stream 28 | { 29 | public override object[] ExtractTypes 30 | { 31 | get 32 | { 33 | switch (base.Name.ToString()) 34 | { 35 | case "Joined EVO": 36 | return new object[] { "EVO" }; 37 | case "Joined VOB": 38 | return new object[] { "VOB" }; 39 | default: 40 | return new object[] { "" }; 41 | } 42 | } 43 | } 44 | 45 | public JoinStream(string s, LogItem _log) : base(StreamType.Join, s, _log) 46 | { 47 | if (string.IsNullOrEmpty(s)) 48 | throw new ArgumentNullException("s", "The string 's' cannot be null or empty."); 49 | } 50 | 51 | new public static Stream Parse(string s, LogItem _log) 52 | { 53 | //1: Joined EVO file 54 | 55 | if (string.IsNullOrEmpty(s)) 56 | throw new ArgumentNullException("s", "The string 's' cannot be null or empty."); 57 | 58 | return new JoinStream(s, _log); 59 | } 60 | 61 | public override string ToString() 62 | { 63 | return base.ToString(); 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /packages/audio/lame/MP3Settings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace MeGUI 24 | { 25 | /// 26 | /// Summary description for MP3Settings. 27 | /// 28 | public class MP3Settings : AudioCodecSettings 29 | { 30 | public static readonly string ID = "LAME MP3"; 31 | public static readonly int[] SupportedBitrates = new int[] { 32 | 32, 33 | 40, 34 | 48, 35 | 56, 36 | 64, 37 | 80, 38 | 96, 39 | 112, 40 | 128, 41 | 160, 42 | 192, 43 | 224, 44 | 256, 45 | 320}; 46 | 47 | private int quality; 48 | private int abrBitrate; 49 | 50 | public MP3Settings() : base(ID, AudioCodec.MP3, AudioEncoderType.LAME, 128) 51 | { 52 | quality = 4; 53 | base.DownmixMode = ChannelMode.StereoDownmix; 54 | } 55 | 56 | /// 57 | /// gets / sets the quality for vbr mode 58 | /// 59 | public int Quality 60 | { 61 | get 62 | { 63 | if (quality > 9) 64 | return quality / 10; 65 | else 66 | return quality; 67 | } 68 | set {quality = value;} 69 | } 70 | 71 | /// 72 | /// gets / sets the bitrate for abr mode 73 | /// 74 | public int AbrBitrate 75 | { 76 | get { return abrBitrate; } 77 | set { abrBitrate = value; } 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /packages/tools/besplitter/AudioJoinJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Diagnostics; 24 | using System.IO; 25 | using System.Text; 26 | 27 | namespace MeGUI.packages.tools.besplitter 28 | { 29 | public class AudioJoinJob : Job 30 | { 31 | private TimeSpan cliplength; 32 | 33 | public TimeSpan ClipLength 34 | { 35 | get { return cliplength; } 36 | set { cliplength = value; } 37 | } 38 | 39 | 40 | private string[] inputFiles; 41 | 42 | public string[] InputFiles 43 | { 44 | get { return inputFiles; } 45 | set { inputFiles = value; } 46 | } 47 | 48 | public string generateJoinCommandline(string tempFilename) 49 | { 50 | FilesToDelete.Add(tempFilename); 51 | return string.Format("-core ( -input \"{0}\" -prefix \"{1}\" -type lst -join )", 52 | tempFilename, Output); 53 | } 54 | 55 | public AudioJoinJob() { } 56 | 57 | public AudioJoinJob(string[] inputFiles, string output) 58 | { 59 | Debug.Assert(inputFiles.Length > 0); 60 | this.inputFiles = inputFiles; 61 | this.Output = output; 62 | this.Input = inputFiles[0]; 63 | } 64 | 65 | public override string CodecString 66 | { 67 | get { return "cut"; } 68 | } 69 | 70 | public override string EncodingMode 71 | { 72 | get { return "join"; } 73 | } 74 | 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /packages/tools/oneclick/OneClickAudioTrack.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Xml.Serialization; 24 | 25 | using MeGUI.core.details; 26 | using MeGUI.core.util; 27 | 28 | namespace MeGUI 29 | { 30 | /// 31 | /// Summary description for OneClickAudioTrack. 32 | /// 33 | public class OneClickAudioTrack 34 | { 35 | private AudioJob _audioJob; 36 | private MuxStream _directMuxAudio; 37 | private AudioTrackInfo _audioTrackInfo; 38 | 39 | public OneClickAudioTrack() : this(null, null, null, false) { } 40 | 41 | public OneClickAudioTrack(AudioJob oAudioJob, MuxStream oMuxStream, AudioTrackInfo oAudioTrackInfo, bool bMKVTrack) 42 | { 43 | _audioJob = oAudioJob; 44 | _directMuxAudio = oMuxStream; 45 | _audioTrackInfo = oAudioTrackInfo; 46 | if (_audioTrackInfo != null) 47 | _audioTrackInfo.ExtractMKVTrack = bMKVTrack; 48 | } 49 | 50 | /// 51 | /// gets / sets the container of the output 52 | /// 53 | public AudioJob AudioJob 54 | { 55 | get { return _audioJob; } 56 | set { _audioJob = value; } 57 | } 58 | 59 | public MuxStream DirectMuxAudio 60 | { 61 | get { return _directMuxAudio; } 62 | set { _directMuxAudio = value; } 63 | } 64 | 65 | public AudioTrackInfo AudioTrackInfo 66 | { 67 | get { return _audioTrackInfo; } 68 | set { _audioTrackInfo = value; } 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /core/gui/InputBox.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | 29 | namespace MeGUI.core.gui 30 | { 31 | public partial class InputBox : Form 32 | { 33 | private InputBox() 34 | { 35 | InitializeComponent(); 36 | } 37 | 38 | private void btnOk_Click(object sender, EventArgs e) 39 | { 40 | DialogResult = DialogResult.OK; 41 | Close(); 42 | } 43 | 44 | private void btnCancel_Click(object sender, EventArgs e) 45 | { 46 | DialogResult = DialogResult.Cancel; 47 | Close(); 48 | } 49 | 50 | internal static string Show(string message, string title, string defaultText) 51 | { 52 | using (InputBox box = new InputBox()) 53 | { 54 | box.lblMessage.Text = message; 55 | box.text.Text = defaultText; 56 | box.Text = title; 57 | if (box.ShowDialog() == DialogResult.OK) 58 | return box.text.Text; 59 | return null; 60 | } 61 | } 62 | 63 | private void text_KeyPress(object sender, KeyPressEventArgs e) 64 | { 65 | if (e.KeyChar == 13) 66 | { 67 | btnOk_Click(null, null); 68 | } 69 | else if (e.KeyChar == 27) 70 | { 71 | btnCancel_Click(null, null); 72 | } 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /packages/audio/flac/FlacConfigurationPanel.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | 29 | namespace MeGUI.packages.audio.flac 30 | { 31 | public partial class FlacConfigurationPanel : MeGUI.core.details.audio.AudioConfigurationPanel, Editable 32 | { 33 | public FlacConfigurationPanel():base() 34 | { 35 | InitializeComponent(); 36 | } 37 | 38 | #region properties 39 | /// 40 | /// gets / sets the settings that are being shown in this configuration dialog 41 | /// 42 | protected override AudioCodecSettings CodecSettings 43 | { 44 | get 45 | { 46 | FlacSettings nas = new FlacSettings(); 47 | nas.CompressionLevel = tbQuality.Value; 48 | return nas; 49 | } 50 | set 51 | { 52 | FlacSettings nas = value as FlacSettings; 53 | tbQuality.Value = nas.CompressionLevel; 54 | } 55 | } 56 | #endregion 57 | 58 | #region Editable Members 59 | 60 | FlacSettings Editable.Settings 61 | { 62 | get 63 | { 64 | return (FlacSettings)Settings; 65 | } 66 | set 67 | { 68 | Settings = value; 69 | } 70 | } 71 | 72 | #endregion 73 | } 74 | } 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /core/details/SubtitleTrackInfo.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | 20 | using System; 21 | 22 | namespace MeGUI 23 | { 24 | public class SubtitleTrackInfo : TrackInfo 25 | { 26 | public SubtitleTrackInfo() : this(0, null, null) 27 | { 28 | } 29 | 30 | public SubtitleTrackInfo(int mmgTrackID, string language, string name) 31 | { 32 | base.TrackType = TrackType.Subtitle; 33 | base.Language = language; 34 | base.TrackID = -1; 35 | base.MMGTrackID = mmgTrackID; 36 | base.Name = name; 37 | this._subtitleCodec = SubtitleCodec.UNKNOWN; 38 | } 39 | 40 | private SubtitleCodec _subtitleCodec; 41 | public SubtitleCodec SubtitleCodec 42 | { 43 | get { return _subtitleCodec; } 44 | set { _subtitleCodec = value; } 45 | } 46 | 47 | public override string ToString() 48 | { 49 | string strCodec = this.Codec.ToUpperInvariant(); 50 | if (IsMKVContainer()) 51 | { 52 | string[] arrCodec = new string[] { }; 53 | arrCodec = this.Codec.Split('/'); 54 | if (!String.IsNullOrEmpty(arrCodec[0]) && arrCodec[0].Substring(1, 1).Equals("_")) 55 | arrCodec[0] = arrCodec[0].Substring(2); 56 | strCodec = arrCodec[0].ToUpperInvariant(); 57 | } 58 | 59 | string fullString = "[" + MMGTrackID + "] - " + strCodec; 60 | if (!string.IsNullOrEmpty(Language)) 61 | fullString += " / " + Language; 62 | if (!string.IsNullOrEmpty(Name)) 63 | fullString += " / " + Name; 64 | return fullString.Trim(); 65 | } 66 | } 67 | } -------------------------------------------------------------------------------- /packages/audio/ffac3/AC3ConfigurationPanel.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | 29 | namespace MeGUI.packages.audio.ffac3 30 | { 31 | public partial class AC3ConfigurationPanel : MeGUI.core.details.audio.AudioConfigurationPanel, Editable 32 | { 33 | public AC3ConfigurationPanel():base() 34 | { 35 | InitializeComponent(); 36 | comboBox1.Items.AddRange(AC3Settings.SupportedBitrates); 37 | } 38 | 39 | #region properties 40 | /// 41 | /// gets / sets the settings that are being shown in this configuration dialog 42 | /// 43 | protected override AudioCodecSettings CodecSettings 44 | { 45 | get 46 | { 47 | AC3Settings nas = new AC3Settings(); 48 | nas.Bitrate = (int)comboBox1.SelectedItem; 49 | return nas; 50 | } 51 | set 52 | { 53 | AC3Settings nas = value as AC3Settings; 54 | comboBox1.SelectedItem = nas.Bitrate; 55 | } 56 | } 57 | #endregion 58 | 59 | #region Editable Members 60 | 61 | AC3Settings Editable.Settings 62 | { 63 | get 64 | { 65 | return (AC3Settings)Settings; 66 | } 67 | set 68 | { 69 | Settings = value; 70 | } 71 | } 72 | 73 | #endregion 74 | } 75 | } -------------------------------------------------------------------------------- /packages/audio/ffdca/DCAConfigurationPanel.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | 29 | namespace MeGUI.packages.audio.ffdca 30 | { 31 | public partial class DCAConfigurationPanel : MeGUI.core.details.audio.AudioConfigurationPanel, Editable 32 | { 33 | public DCAConfigurationPanel():base() 34 | { 35 | InitializeComponent(); 36 | comboBox1.Items.AddRange(DCASettings.SupportedBitrates); 37 | } 38 | 39 | #region properties 40 | /// 41 | /// gets / sets the settings that are being shown in this configuration dialog 42 | /// 43 | protected override AudioCodecSettings CodecSettings 44 | { 45 | get 46 | { 47 | DCASettings nas = new DCASettings(); 48 | nas.Bitrate = (int)comboBox1.SelectedItem; 49 | return nas; 50 | } 51 | set 52 | { 53 | DCASettings nas = value as DCASettings; 54 | comboBox1.SelectedItem = nas.Bitrate; 55 | } 56 | } 57 | #endregion 58 | 59 | #region Editable Members 60 | 61 | DCASettings Editable.Settings 62 | { 63 | get 64 | { 65 | return (DCASettings)Settings; 66 | } 67 | set 68 | { 69 | Settings = value; 70 | } 71 | } 72 | 73 | #endregion 74 | } 75 | } -------------------------------------------------------------------------------- /packages/audio/ffeac3/EAC3ConfigurationPanel.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | 29 | namespace MeGUI.packages.audio.ffeac3 30 | { 31 | public partial class EAC3ConfigurationPanel : MeGUI.core.details.audio.AudioConfigurationPanel, Editable 32 | { 33 | public EAC3ConfigurationPanel():base() 34 | { 35 | InitializeComponent(); 36 | comboBox1.Items.AddRange(EAC3Settings.SupportedBitrates); 37 | } 38 | 39 | #region properties 40 | /// 41 | /// gets / sets the settings that are being shown in this configuration dialog 42 | /// 43 | protected override AudioCodecSettings CodecSettings 44 | { 45 | get 46 | { 47 | EAC3Settings nas = new EAC3Settings(); 48 | nas.Bitrate = (int)comboBox1.SelectedItem; 49 | return nas; 50 | } 51 | set 52 | { 53 | EAC3Settings nas = value as EAC3Settings; 54 | comboBox1.SelectedItem = nas.Bitrate; 55 | } 56 | } 57 | #endregion 58 | 59 | #region Editable Members 60 | 61 | EAC3Settings Editable.Settings 62 | { 63 | get 64 | { 65 | return (EAC3Settings)Settings; 66 | } 67 | set 68 | { 69 | Settings = value; 70 | } 71 | } 72 | 73 | #endregion 74 | } 75 | } -------------------------------------------------------------------------------- /packages/reader/ttxt/ttxtReader.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.IO; 24 | using System.Text; 25 | using System.Windows.Forms; 26 | 27 | using MeGUI.core.util; 28 | 29 | namespace MeGUI 30 | { 31 | /// 32 | /// Summary description for ttxtReader. 33 | /// 34 | public class ttxtReader 35 | { 36 | private string fileName; 37 | 38 | /// 39 | /// initializes the ttxt reader 40 | /// 41 | /// the ttxt file that this reader will process 42 | public ttxtReader(string fileName) 43 | { 44 | this.fileName = fileName; 45 | } 46 | 47 | /// 48 | /// reads the ttxt file, which is essentially a text file 49 | /// 50 | public bool readFileProperties(string infoFile) 51 | { 52 | bool ttxtFileFound = false; 53 | string line; 54 | 55 | try 56 | { 57 | using (StreamReader sr = new StreamReader(infoFile)) 58 | { 59 | while ((line = sr.ReadLine()) != null) 60 | { 61 | if (line.StartsWith("")) 62 | ttxtFileFound = true; 63 | } 64 | } 65 | } 66 | catch (Exception i) 67 | { 68 | MessageBox.Show("The following error ocurred when parsing the ttxt file " + infoFile + "\r\n" + i.Message, "Error parsing ttxt file", MessageBoxButtons.OK); 69 | } 70 | 71 | return ttxtFileFound; 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /packages/tools/oneclick/OneClickPostProcessingJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Xml.Serialization; 24 | 25 | namespace MeGUI 26 | { 27 | /// 28 | /// Container object for OneClickPostProcessing 29 | /// 30 | public class OneClickPostProcessingJob : Job 31 | { 32 | private OneClickPostprocessingProperties postprocessingProperties; 33 | private string strIndexFile; 34 | 35 | public OneClickPostProcessingJob() : this(null, null, null) { } 36 | 37 | public OneClickPostProcessingJob(string input, string strIndexFile, OneClickPostprocessingProperties postprocessingProperties) : base(input, null) 38 | { 39 | this.postprocessingProperties = postprocessingProperties; 40 | this.strIndexFile = strIndexFile; 41 | } 42 | 43 | public override string CodecString 44 | { 45 | get { return "oneclick"; } 46 | } 47 | 48 | public override string EncodingMode 49 | { 50 | get { return "oneclick"; } 51 | } 52 | 53 | /// 54 | /// gets / sets the postprocessing properties 55 | /// and all the postprocessing that has to be done prior to audio encoding 56 | /// is defined in this property 57 | /// 58 | public OneClickPostprocessingProperties PostprocessingProperties 59 | { 60 | get { return postprocessingProperties; } 61 | set { postprocessingProperties = value; } 62 | } 63 | 64 | public string IndexFile 65 | { 66 | get { return strIndexFile; } 67 | set { strIndexFile = value; } 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /core/util/SubtitleUtil.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace MeGUI 24 | { 25 | /// 26 | /// SubtitleUtil is used to perform various subtitle tasks 27 | /// 28 | public static class SubtitleUtil 29 | { 30 | /// 31 | /// Adds or removes the forced track name specified in the global settings 32 | /// 33 | /// true if the track is a forced one 34 | /// the track name 35 | /// the new track name 36 | public static string ApplyForcedStringToTrackName(bool bForced, string strTrackName) 37 | { 38 | string strForceName = MainForm.Instance.Settings.AppendToForcedStreams; 39 | if (String.IsNullOrEmpty(strForceName)) 40 | return strTrackName; 41 | 42 | if (strTrackName == null) 43 | strTrackName = string.Empty; 44 | 45 | if (bForced) 46 | { 47 | if (strTrackName.ToLowerInvariant().EndsWith(strForceName.ToLowerInvariant())) 48 | strTrackName = strTrackName.Substring(0, strTrackName.Length - strForceName.Length).TrimEnd(); 49 | if (!String.IsNullOrEmpty(strTrackName) && !strTrackName.EndsWith(" ")) 50 | strTrackName += " "; 51 | strTrackName += strForceName; 52 | } 53 | else if (!bForced && strTrackName.ToLowerInvariant().EndsWith(strForceName.ToLowerInvariant())) 54 | { 55 | strTrackName = strTrackName.Substring(0, strTrackName.Length - strForceName.Length).TrimEnd(); 56 | } 57 | return strTrackName; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /core/gui/NumberChooser.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | 29 | namespace MeGUI.core.gui 30 | { 31 | public partial class NumberChooser : Form 32 | { 33 | private NumberChooser() 34 | { 35 | InitializeComponent(); 36 | } 37 | 38 | 39 | 40 | public static DialogResult ShowDialog(string message, string title, 41 | int decimals, decimal min, decimal max, 42 | decimal defaultFPSNum, decimal defaultFPSDen, out decimal number) 43 | { 44 | NumberChooser n = new NumberChooser(); 45 | n.Text = title; 46 | n.label1.Text = message; 47 | n.numericUpDown1.DecimalPlaces = decimals; 48 | n.numericUpDown1.Minimum = min; 49 | n.numericUpDown1.Maximum = max; 50 | n.numericUpDown1.Value = defaultFPSNum; 51 | n.numericUpDown2.Value = defaultFPSDen; 52 | 53 | DialogResult r = n.ShowDialog(); 54 | number = n.numericUpDown1.Value / n.numericUpDown2.Value; 55 | return r; 56 | } 57 | 58 | private void NumberChooser_Shown(object sender, EventArgs e) 59 | { 60 | numericUpDown1.Select(0, stringLength); 61 | numericUpDown1.Focus(); 62 | 63 | } 64 | 65 | private int stringLength 66 | { 67 | get 68 | { 69 | return Math.Round(numericUpDown1.Value, 0).ToString().Length + 70 | (numericUpDown1.DecimalPlaces > 0 ? 1 : 0) + 71 | numericUpDown1.DecimalPlaces; 72 | } 73 | } 74 | 75 | } 76 | } -------------------------------------------------------------------------------- /packages/tools/besplitter/AudioSplitJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Globalization; 24 | using System.IO; 25 | using System.Text; 26 | 27 | using MeGUI.core.util; 28 | 29 | namespace MeGUI.packages.tools.besplitter 30 | { 31 | public class AudioSplitJob : Job 32 | { 33 | private Cuts c; 34 | 35 | public string generateSplitCommandline() 36 | { 37 | StringBuilder sb = new StringBuilder(); 38 | CultureInfo ci = new CultureInfo("en-us"); 39 | 40 | sb.AppendFormat("-core( -input \"{0}\" -prefix \"{1}\" -type {2} -a )", Input, 41 | Output, Path.GetExtension(Input).Substring(1)); 42 | sb.Append(" -split( "); 43 | foreach (CutSection s in c.AllCuts) 44 | { 45 | double start = ((double)s.startFrame) / c.Framerate; 46 | double end = ((double)(s.endFrame + 1)) / c.Framerate; 47 | sb.AppendFormat("{0} {1} ", start.ToString(ci), end.ToString(ci)); 48 | } 49 | sb.Append(")"); 50 | 51 | return sb.ToString(); 52 | } 53 | 54 | public AudioSplitJob() { } 55 | 56 | public AudioSplitJob(string input, string output, Cuts c) 57 | { 58 | this.c = c; 59 | this.Input = input; 60 | this.Output = output; 61 | } 62 | 63 | public Cuts TheCuts 64 | { 65 | get { return c; } 66 | set { c = value; } 67 | } 68 | 69 | public override string CodecString 70 | { 71 | get { return "cut"; } 72 | } 73 | 74 | public override string EncodingMode 75 | { 76 | get { return "split"; } 77 | } 78 | 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /packages/tools/chaptercreator/Chapter.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.ComponentModel; 23 | using System.Xml.Serialization; 24 | 25 | namespace MeGUI 26 | { 27 | [Serializable] 28 | public struct Chapter 29 | { 30 | public string Name { get; set; } 31 | 32 | [XmlIgnore] 33 | public TimeSpan Time { get; set; } 34 | 35 | public Chapter(Chapter oOther) 36 | { 37 | Name = oOther.Name; 38 | Time = oOther.Time; 39 | } 40 | 41 | // XmlSerializer does not support TimeSpan, so use this property for serialization instead 42 | [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] 43 | public long TimeTicks 44 | { 45 | get { return Time.Ticks; } 46 | set { Time = new TimeSpan(value); } 47 | } 48 | 49 | //public string Lang { get; set; } 50 | public override string ToString() 51 | { 52 | return Time.ToString() + ": " + Name; 53 | } 54 | 55 | public void SetTimeBasedOnString(string strTimeCode) 56 | { 57 | if (strTimeCode.Length > 16) 58 | strTimeCode = strTimeCode.Substring(0, 16); 59 | 60 | if (TimeSpan.TryParse(strTimeCode, new System.Globalization.CultureInfo("en-US"), out TimeSpan result)) 61 | Time = result; 62 | } 63 | 64 | public static Chapter ChangeChapterFPS(Chapter oChapter, double fpsIn, double fpsOut) 65 | { 66 | if (fpsIn == fpsOut || fpsIn == 0 || fpsOut == 0) 67 | return oChapter; 68 | 69 | double frames = oChapter.Time.TotalSeconds * fpsIn; 70 | return new Chapter() { Name = oChapter.Name, Time = new TimeSpan((long)Math.Round(frames / fpsOut * TimeSpan.TicksPerSecond)) }; 71 | } 72 | } 73 | } -------------------------------------------------------------------------------- /core/details/video/VideoJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using MeGUI.core.util; 22 | 23 | namespace MeGUI 24 | { 25 | /// 26 | /// Summary description for VideoJob. 27 | /// 28 | public class VideoJob : Job 29 | { 30 | private VideoCodecSettings settings; 31 | public BitrateCalculationInfo BitrateCalculationInfo; 32 | 33 | public VideoJob():base() 34 | { 35 | } 36 | 37 | private Zone[] zones = new Zone[] { }; 38 | /// 39 | /// gets / sets the zones 40 | /// 41 | public Zone[] Zones 42 | { 43 | get { return zones; } 44 | set { zones = value; } 45 | } 46 | 47 | public VideoJob(string input, string output, VideoCodecSettings settings, Dar? dar, Zone[] zones) 48 | : base(input, output) 49 | { 50 | Settings = settings; 51 | DAR = dar; 52 | Zones = zones; 53 | } 54 | 55 | private Dar? dar; 56 | public Dar? DAR 57 | { 58 | get { return dar; } 59 | set { dar = value; } 60 | } 61 | 62 | /// 63 | /// the codec settings for this job 64 | /// 65 | public VideoCodecSettings Settings 66 | { 67 | get {return settings;} 68 | set {settings = value;} 69 | } 70 | /// 71 | /// codec used as presentable string 72 | /// 73 | public override string CodecString 74 | { 75 | get 76 | { 77 | return settings.SettingsID; 78 | } 79 | } 80 | /// 81 | /// returns the encoding mode as a human readable string 82 | /// (this string is placed in the appropriate column in the queue) 83 | /// 84 | public override string EncodingMode 85 | { 86 | get 87 | { 88 | return "video"; 89 | } 90 | } 91 | } 92 | } -------------------------------------------------------------------------------- /core/util/Drives.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | 20 | using System.Runtime.InteropServices; 21 | using System.Text; 22 | 23 | namespace MeGUI 24 | { 25 | public class Drives 26 | { 27 | public static bool ableToWriteOnThisDrive(string myDrive) 28 | { 29 | bool b = false; 30 | switch (GetDriveType(myDrive)) 31 | { 32 | case 0: // Unknown 33 | case 1: // Invalid Path 34 | case 5: // CDROM 35 | case 6: // RAM 36 | b = false; break; 37 | case 2: // Removable (floppy, drive) 38 | case 3: // Fixed (hard drive) 39 | case 4: // Remote (Network drive) 40 | b = true; break; 41 | } 42 | return b; 43 | } 44 | 45 | // used to send string message to media control interface device (mci) 46 | // like cd rom 47 | [DllImport("winmm.dll", EntryPoint = "mciSendStringA")] 48 | public static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback); 49 | 50 | // used to get information about a drive ex: its name, seial number 51 | // if this function return zero means that one of the information could not be retrieved 52 | // so if it is a CD ROM drive and we can't obtain its name ---> CD ROM is empty 53 | [DllImport("kernel32.dll", EntryPoint = "GetVolumeInformationA")] 54 | public static extern int GetVolumeInformation(string lpRootPathName, StringBuilder lpVolumeNameBuffer, int nVolumeNameSize, int lpVolumeSerialNumber, int lpMaximumComponentLength, int lpFileSystemFlags, string lpFileSystemNameBuffer, int nFileSystemNameSize); 55 | 56 | // get the drive type 57 | [DllImport("kernel32.dll", EntryPoint = "GetDriveTypeA")] 58 | public static extern int GetDriveType(string nDrive); 59 | } 60 | } -------------------------------------------------------------------------------- /packages/tools/hdbdextractor/HDStreamsExJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | 25 | namespace MeGUI 26 | { 27 | public class HDStreamsExJob : Job 28 | { 29 | private string featureNb; 30 | private string args; 31 | private int inputType; 32 | private List source; 33 | 34 | public HDStreamsExJob() 35 | : base() 36 | { 37 | featureNb = ""; 38 | args = ""; 39 | inputType = 1; 40 | source = new List(); 41 | } 42 | 43 | public HDStreamsExJob(List input, string ouput, string featureNb, string args, int inputType) 44 | { 45 | Input = input[0]; 46 | source = input; 47 | Output = ouput; 48 | FeatureNb = featureNb; 49 | Args = args; 50 | InputType = inputType; 51 | } 52 | 53 | public string FeatureNb 54 | { 55 | get { return featureNb; } 56 | set { featureNb = value; } 57 | } 58 | 59 | public string Args 60 | { 61 | get { return args; } 62 | set { args = value; } 63 | } 64 | 65 | public List Source 66 | { 67 | get { return source; } 68 | set { source = value; } 69 | } 70 | 71 | // 1 = Folder as Input 72 | // 2 = File(s) as Input 73 | public int InputType 74 | { 75 | get { return inputType; } 76 | set { inputType = value; } 77 | } 78 | 79 | public override string CodecString 80 | { 81 | get { return "eac3to"; } 82 | } 83 | 84 | public override string EncodingMode 85 | { 86 | get { return "ext"; } 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /packages/audio/ffmp2/MP2ConfigurationPanel.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | 29 | namespace MeGUI.packages.audio.ffmp2 30 | { 31 | public partial class MP2ConfigurationPanel : MeGUI.core.details.audio.AudioConfigurationPanel, Editable 32 | { 33 | public MP2ConfigurationPanel():base() 34 | { 35 | InitializeComponent(); 36 | comboBox1.Items.AddRange(MP2Settings.SupportedBitrates); 37 | } 38 | #region properties 39 | 40 | protected override bool IsMultichanelSupported 41 | { 42 | get 43 | { 44 | return false; 45 | } 46 | } 47 | 48 | /// 49 | /// gets / sets the settings that are being shown in this configuration dialog 50 | /// 51 | protected override AudioCodecSettings CodecSettings 52 | { 53 | get 54 | { 55 | MP2Settings nas = new MP2Settings(); 56 | nas.Bitrate = (int)comboBox1.SelectedItem; 57 | return nas; 58 | } 59 | set 60 | { 61 | MP2Settings nas = value as MP2Settings; 62 | comboBox1.SelectedItem = nas.Bitrate; 63 | } 64 | } 65 | #endregion 66 | 67 | #region Editable Members 68 | 69 | MP2Settings Editable.Settings 70 | { 71 | get 72 | { 73 | return (MP2Settings)Settings; 74 | } 75 | set 76 | { 77 | Settings = value; 78 | } 79 | } 80 | 81 | #endregion 82 | } 83 | } 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /core/util/HttpProxy.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Net; 23 | 24 | namespace MeGUI.core.util 25 | { 26 | internal class HttpProxy 27 | { 28 | #region Public Methods and Operators 29 | 30 | public static IWebProxy GetProxy(MeGUISettings settings) 31 | { 32 | // if None then return null 33 | if (settings.HttpProxyMode == ProxyMode.None) 34 | { 35 | return null; 36 | } 37 | 38 | // if SystemProxy then return the System proxy details with the logged in credentials 39 | if (settings.HttpProxyMode == ProxyMode.SystemProxy) 40 | { 41 | var systemProxy = WebRequest.GetSystemWebProxy(); 42 | systemProxy.Credentials = CredentialCache.DefaultCredentials; 43 | return systemProxy; 44 | } 45 | 46 | // CustomProxy and CustomProxyWithLogin both require a Url 47 | if (String.IsNullOrEmpty(settings.HttpProxyAddress)) 48 | { 49 | return null; 50 | } 51 | 52 | var address = string.IsNullOrEmpty(settings.HttpProxyPort) 53 | ? settings.HttpProxyAddress 54 | : string.Format("{0}:{1}", settings.HttpProxyAddress, settings.HttpProxyPort); 55 | 56 | // if CustomProxyWithLogin then generate the credentials 57 | ICredentials credentials; 58 | if (settings.HttpProxyMode == ProxyMode.CustomProxy || string.IsNullOrEmpty(settings.HttpProxyUid)) 59 | { 60 | credentials = null; 61 | } 62 | else 63 | { 64 | credentials = new NetworkCredential(settings.HttpProxyUid, settings.HttpProxyPwd); 65 | } 66 | 67 | var proxy = new WebProxy(address, true, null, credentials); 68 | 69 | return proxy; 70 | } 71 | 72 | #endregion 73 | } 74 | } -------------------------------------------------------------------------------- /packages/audio/qaac/QaacSettings.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | namespace MeGUI 24 | { 25 | public enum QaacProfile 26 | { 27 | [EnumTitle("LC-AAC")] 28 | LC, 29 | [EnumTitle("HE-AAC")] 30 | HE, 31 | [EnumTitle("ALAC")] 32 | ALAC 33 | } 34 | 35 | public enum QaacMode 36 | { 37 | [EnumTitle("True VBR")] 38 | TVBR, 39 | [EnumTitle("Constrained VBR")] 40 | CVBR, 41 | [EnumTitle("ABR")] 42 | ABR, 43 | [EnumTitle("CBR")] 44 | CBR 45 | } 46 | 47 | public class QaacSettings : AudioCodecSettings 48 | { 49 | public static readonly string ID = "QAAC"; 50 | 51 | public static readonly QaacProfile[] SupportedProfiles = new QaacProfile[] { QaacProfile.LC, QaacProfile.HE, QaacProfile.ALAC }; 52 | public static readonly QaacMode[] SupportedModes = new QaacMode[] { QaacMode.TVBR, QaacMode.CVBR, QaacMode.ABR, QaacMode.CBR }; 53 | 54 | public QaacSettings() : base(ID, AudioCodec.AAC, AudioEncoderType.QAAC, 0, BitrateManagementMode.VBR) 55 | { 56 | Quality = 91; 57 | Mode = QaacMode.TVBR; 58 | Profile = QaacProfile.LC; 59 | noDelay = true; 60 | } 61 | 62 | private QaacProfile profile; 63 | public QaacProfile Profile 64 | { 65 | get { return profile; } 66 | set { profile = value; } 67 | } 68 | 69 | private QaacMode mode; 70 | public QaacMode Mode 71 | { 72 | get { return mode; } 73 | set { mode = value; } 74 | } 75 | 76 | private Int16 quality; 77 | public Int16 Quality 78 | { 79 | get { return quality; } 80 | set { quality = value; } 81 | } 82 | 83 | private bool noDelay; 84 | public bool NoDelay 85 | { 86 | get { return noDelay; } 87 | set { noDelay = value; } 88 | } 89 | } 90 | } -------------------------------------------------------------------------------- /packages/tools/calculator/ExtraSizeTab.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | 29 | using MeGUI.core.details; 30 | using MeGUI.core.util; 31 | 32 | using MediaInfoWrapper; 33 | 34 | namespace MeGUI.packages.tools.calculator 35 | { 36 | public partial class ExtraSizeTab : UserControl 37 | { 38 | public event EventHandler SomethingChanged; 39 | 40 | public ExtraSizeTab() 41 | { 42 | InitializeComponent(); 43 | //DragDropUtil.RegisterSingleFileDragDrop(this, selectExtraFile, this.filter); 44 | } 45 | 46 | private void raiseEvent() 47 | { 48 | if (SomethingChanged != null) 49 | SomethingChanged(this, EventArgs.Empty); 50 | } 51 | 52 | private void selectExtraFile(string file) 53 | { 54 | FileSize = FileSize.Of2(file) ?? FileSize.Empty; 55 | size.Text = FileSize.ToString(); 56 | name.Text = System.IO.Path.GetFileName(file); 57 | raiseEvent(); 58 | } 59 | 60 | public FileSize FileSize { get; protected set; } 61 | 62 | private readonly string filter = "All Files (*.*)|*.*"; 63 | 64 | private void selectButton_Click(object sender, EventArgs e) 65 | { 66 | openFileDialog.Filter = this.filter; 67 | if (openFileDialog.ShowDialog() == DialogResult.OK) 68 | { 69 | selectExtraFile(openFileDialog.FileName); 70 | } 71 | } 72 | 73 | private void removeLink_LinkClicked(object sender, EventArgs e) 74 | { 75 | if (this.Parent != null) this.Parent.Controls.Remove(this); 76 | } 77 | 78 | private void selectButton_Enter(object sender, EventArgs e) 79 | { 80 | selectButton.Focus(); 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /core/gui/AdaptiveMuxWindow.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MeGUI 2 | { 3 | partial class AdaptiveMuxWindow 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AdaptiveMuxWindow)); 32 | this.containerFormat = new System.Windows.Forms.ComboBox(); 33 | this.label1 = new System.Windows.Forms.Label(); 34 | this.SuspendLayout(); 35 | // 36 | // containerFormat 37 | // 38 | this.containerFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 39 | this.containerFormat.FormattingEnabled = true; 40 | this.containerFormat.Location = new System.Drawing.Point(118, 45); 41 | this.containerFormat.Name = "containerFormat"; 42 | this.containerFormat.Size = new System.Drawing.Size(141, 21); 43 | this.containerFormat.TabIndex = 1; 44 | // 45 | // label1 46 | // 47 | this.label1.AutoSize = true; 48 | this.label1.Location = new System.Drawing.Point(10, 49); 49 | this.label1.Name = "label1"; 50 | this.label1.Size = new System.Drawing.Size(91, 13); 51 | this.label1.TabIndex = 0; 52 | this.label1.Text = "Container Format"; 53 | // 54 | // AdaptiveMuxWindow 55 | // 56 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 57 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 58 | this.ClientSize = new System.Drawing.Size(444, 597); 59 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 60 | this.Name = "AdaptiveMuxWindow"; 61 | this.Text = "MeGUI - Adaptive Muxer"; 62 | this.ResumeLayout(false); 63 | this.PerformLayout(); 64 | 65 | } 66 | 67 | #endregion 68 | 69 | private System.Windows.Forms.ComboBox containerFormat; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /packages/audio/vorbis/OggVorbisConfigurationPanel.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | 29 | namespace MeGUI.packages.audio.vorbis 30 | { 31 | public partial class OggVorbisConfigurationPanel : MeGUI.core.details.audio.AudioConfigurationPanel, Editable 32 | { 33 | public OggVorbisConfigurationPanel():base() 34 | { 35 | InitializeComponent(); 36 | vQuality_ValueChanged(null, null); 37 | } 38 | #region properties 39 | /// 40 | /// gets / sets the settings that are being shown in this configuration dialog 41 | /// 42 | protected override AudioCodecSettings CodecSettings 43 | { 44 | get 45 | { 46 | OggVorbisSettings nas = new OggVorbisSettings(); 47 | nas.Quality = (Decimal)vQuality.Value * 10.0M / vQuality.Maximum; 48 | return nas; 49 | } 50 | set 51 | { 52 | OggVorbisSettings nas = value as OggVorbisSettings; 53 | vQuality.Value = (int)(nas.Quality / 10.0M * (Decimal)vQuality.Maximum); 54 | } 55 | } 56 | #endregion 57 | private void vQuality_ValueChanged(object sender, EventArgs e) 58 | { 59 | Decimal q = ((Decimal)vQuality.Value) * 10.0M / vQuality.Maximum; 60 | label1.Text = String.Format("Variable Bitrate (Q={0}) ", q); 61 | } 62 | 63 | #region Editable Members 64 | 65 | OggVorbisSettings Editable.Settings 66 | { 67 | get 68 | { 69 | return (OggVorbisSettings)Settings; 70 | } 71 | set 72 | { 73 | Settings = value; 74 | } 75 | } 76 | 77 | #endregion 78 | } 79 | } 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /packages/tools/worker/WorkerPriority.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2017 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Linq; 24 | using System.Text; 25 | using System.Xml.Serialization; 26 | 27 | namespace MeGUI 28 | { 29 | public enum WorkerPriorityType : int { IDLE = 0, BELOW_NORMAL, NORMAL, ABOVE_NORMAL }; 30 | 31 | public class WorkerPriority 32 | { 33 | private JobType _jobType; 34 | private WorkerPriorityType _priority; 35 | private bool _lowIOPriority; 36 | 37 | public WorkerPriority() : this(JobType.Audio, WorkerPriorityType.IDLE, false) 38 | { 39 | 40 | } 41 | 42 | public WorkerPriority(JobType _jobType, WorkerPriorityType _priority, bool _lowIOPriority) 43 | { 44 | this._jobType = _jobType; 45 | this._priority = _priority; 46 | this._lowIOPriority = _lowIOPriority; 47 | } 48 | 49 | public JobType JobType 50 | { 51 | get { return _jobType; } 52 | set { _jobType = value; } 53 | } 54 | 55 | public WorkerPriorityType Priority 56 | { 57 | get { return _priority; } 58 | set { _priority = value; } 59 | } 60 | 61 | public bool LowIOPriority 62 | { 63 | get { return _lowIOPriority; } 64 | set { _lowIOPriority = value; } 65 | } 66 | 67 | public static void GetJobPriority(Job oJob, out WorkerPriorityType oPriority, out bool lowIOPriority) 68 | { 69 | JobType oType = WorkerSettings.GetJobType(oJob); 70 | foreach (WorkerPriority oPrioritySettings in MainForm.Instance.Settings.WorkerPriority) 71 | { 72 | if (oPrioritySettings.JobType.Equals(oType)) 73 | { 74 | oPriority = oPrioritySettings.Priority; 75 | lowIOPriority = oPrioritySettings.LowIOPriority; 76 | return; 77 | } 78 | } 79 | oPriority = WorkerPriorityType.IDLE; 80 | lowIOPriority = true; 81 | } 82 | } 83 | } -------------------------------------------------------------------------------- /core/gui/AudioEncodingWindow.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MeGUI.core.gui 2 | { 3 | partial class AudioEncodingWindow 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AudioEncodingWindow)); 32 | this.audioEncodingTab1 = new MeGUI.core.gui.AudioEncodingTab(); 33 | this.SuspendLayout(); 34 | // 35 | // audioEncodingTab1 36 | // 37 | this.audioEncodingTab1.AudioContainer = ""; 38 | this.audioEncodingTab1.Dock = System.Windows.Forms.DockStyle.Bottom; 39 | this.audioEncodingTab1.Location = new System.Drawing.Point(0, 2); 40 | this.audioEncodingTab1.Name = "audioEncodingTab1"; 41 | this.audioEncodingTab1.QueueButtonText = "Update"; 42 | this.audioEncodingTab1.ShowReset = false; 43 | this.audioEncodingTab1.Size = new System.Drawing.Size(484, 173); 44 | this.audioEncodingTab1.TabIndex = 0; 45 | // 46 | // AudioEncodingWindow 47 | // 48 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 49 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 50 | this.ClientSize = new System.Drawing.Size(484, 175); 51 | this.Controls.Add(this.audioEncodingTab1); 52 | this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 53 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; 54 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 55 | this.MaximumSize = new System.Drawing.Size(1000, 214); 56 | this.MinimumSize = new System.Drawing.Size(450, 214); 57 | this.Name = "AudioEncodingWindow"; 58 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 59 | this.Text = "Audio Encoding Window"; 60 | this.ResumeLayout(false); 61 | 62 | } 63 | 64 | #endregion 65 | 66 | private AudioEncodingTab audioEncodingTab1; 67 | } 68 | } -------------------------------------------------------------------------------- /packages/tools/fileindexer/IndexJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | 24 | namespace MeGUI 25 | { 26 | /// 27 | /// Summary description for IndexJob. 28 | /// 29 | public class IndexJob : Job 30 | { 31 | private bool loadSources; 32 | private bool demuxVideo; 33 | private int demuxMode; 34 | private List audioTracks; 35 | private List audioTracksDemux; 36 | 37 | public IndexJob():base() 38 | { 39 | loadSources = false; 40 | demuxVideo = false; 41 | demuxMode = 0; 42 | audioTracks = new List(); 43 | audioTracksDemux = new List(); 44 | } 45 | 46 | /// 47 | /// gets / sets whether the audio and video files should be loaded after indexing 48 | /// 49 | public bool LoadSources 50 | { 51 | get {return loadSources;} 52 | set {loadSources = value;} 53 | } 54 | 55 | /// 56 | /// gets / sets whether the video stream should be extracted 57 | /// 58 | public bool DemuxVideo 59 | { 60 | get { return demuxVideo; } 61 | set { demuxVideo = value; } 62 | } 63 | 64 | /// 65 | /// gets / sets the demux mode 66 | /// 0 = no audio demux 67 | /// 1 = demux selected audio track 68 | /// 2 = demux all audio tracks 69 | /// 70 | public int DemuxMode 71 | { 72 | get {return demuxMode;} 73 | set {demuxMode = value;} 74 | } 75 | 76 | public List AudioTracks 77 | { 78 | get { return audioTracks; } 79 | set { audioTracks = value; } 80 | } 81 | 82 | public List AudioTracksDemux 83 | { 84 | get { return audioTracksDemux; } 85 | set { audioTracksDemux = value; } 86 | } 87 | 88 | public override string CodecString 89 | { 90 | get { return "index"; } 91 | } 92 | 93 | public override string EncodingMode 94 | { 95 | get { return "idx"; } 96 | } 97 | } 98 | } -------------------------------------------------------------------------------- /core/util/NotifyCounter.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Diagnostics; 24 | using System.Text; 25 | 26 | namespace MeGUI.core.util 27 | { 28 | /// 29 | /// Keeps track of resources, including how many tasks are accessing it. 30 | /// The idea is to allow code to temporarily disable certain functions, and re-enable it later. 31 | /// Furthermore, this is nestable. 32 | /// 33 | /// See FileBar for a usage of this. 34 | /// 35 | public class NotifyCounter 36 | { 37 | private uint count = 0; 38 | 39 | /// 40 | /// Returns whether this function/resource can be used, ie whether anyone still forbids its use. 41 | /// 42 | public bool Ready 43 | { 44 | get { return (count == 0); } 45 | } 46 | 47 | /// 48 | /// Add another forbid of its use. 49 | /// 50 | public void Increment() { count++; } 51 | 52 | /// 53 | /// Take of one person forbidding its use. 54 | /// 55 | public void Decrement() { Debug.Assert(count > 0); count--; } 56 | 57 | /// 58 | /// To be used in a using() { } statement, to wrap a Increment/Decrement pair: 59 | /// using(IDisposable a = myAccessor.Wrap()) 60 | /// { 61 | /// // This code hase myAccessor disabled. 62 | /// } // but the curly brace ensures you don't forget to re-enable it 63 | /// 64 | /// 65 | public IDisposable Wrap() 66 | { 67 | return new AutoCloser(this); 68 | } 69 | 70 | internal class AutoCloser : IDisposable 71 | { 72 | private NotifyCounter counter; 73 | 74 | internal AutoCloser(NotifyCounter counter) 75 | { 76 | this.counter = counter; 77 | counter.Increment(); 78 | } 79 | 80 | public void Dispose() 81 | { 82 | counter.Decrement(); 83 | } 84 | } 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Ce code a été généré par un outil. 4 | // Version du runtime :4.0.30319.42000 5 | // 6 | // Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si 7 | // le code est régénéré. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace MeGUI.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées. 17 | /// 18 | // Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder 19 | // à l'aide d'un outil, tel que ResGen ou Visual Studio. 20 | // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen 21 | // avec l'option /str ou régénérez votre projet VS. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Retourne l'instance ResourceManager mise en cache utilisée par cette classe. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MeGUI.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Remplace la propriété CurrentUICulture du thread actuel pour toutes 51 | /// les recherches de ressources à l'aide de cette classe de ressource fortement typée. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /packages/tools/sourcedetector/SourceDetectorConfigWindow.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Threading; 23 | using System.Windows.Forms; 24 | 25 | namespace MeGUI 26 | { 27 | public partial class SourceDetectorConfigWindow : Form 28 | { 29 | public SourceDetectorConfigWindow() 30 | { 31 | InitializeComponent(); 32 | } 33 | 34 | private void portionsAllowed_CheckedChanged(object sender, EventArgs e) 35 | { 36 | portionThreshold.Enabled = portionsAllowed.Checked; 37 | maximumPortions.Enabled = portionsAllowed.Checked; 38 | } 39 | 40 | public SourceDetectorSettings Settings 41 | { 42 | get 43 | { 44 | SourceDetectorSettings settings = new SourceDetectorSettings(); 45 | settings.AnalysePercent = (int)analysisPercent.Value; 46 | settings.HybridFOPercent = (int)hybridFOThreshold.Value; 47 | settings.HybridPercent = (int)hybridThreshold.Value; 48 | settings.MinimumAnalyseSections = (int)minAnalyseSections.Value; 49 | settings.PortionsAllowed = portionsAllowed.Checked; 50 | if (settings.PortionsAllowed) 51 | { 52 | settings.PortionThreshold = (double)portionThreshold.Value; 53 | settings.MaxPortions = (int)maximumPortions.Value; 54 | } 55 | settings.Priority = (ThreadPriority)priority.SelectedIndex; 56 | return settings; 57 | } 58 | set 59 | { 60 | analysisPercent.Value = value.AnalysePercent; 61 | hybridFOThreshold.Value = value.HybridFOPercent; 62 | hybridThreshold.Value = value.HybridPercent; 63 | minAnalyseSections.Value = value.MinimumAnalyseSections; 64 | portionsAllowed.Checked = value.PortionsAllowed; 65 | portionThreshold.Value = (decimal)value.PortionThreshold; 66 | maximumPortions.Value = value.MaxPortions; 67 | priority.SelectedIndex = (int)value.Priority; 68 | } 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /packages/demuxer/mkvextract/MkvExtractJob.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Xml.Serialization; 24 | 25 | namespace MeGUI 26 | { 27 | /// 28 | /// Container object for MkvExtract 29 | /// 30 | public class MkvExtractJob : Job 31 | { 32 | private List _oTracks; 33 | private string _strOutputPath, _strTimeStampFile; 34 | private List _oAttachments; 35 | 36 | public MkvExtractJob() 37 | { 38 | } 39 | 40 | public MkvExtractJob(string strInput, string strOutputPath, List oTracks) 41 | : base(strInput, null) 42 | { 43 | this._oTracks = oTracks; 44 | this._strOutputPath = strOutputPath; 45 | this._oAttachments = new List(); 46 | } 47 | 48 | public MkvExtractJob(string strInput, string strOutputPath, List oTracks) 49 | : base(strInput, null) 50 | { 51 | this._oTracks = new List(); 52 | foreach (AudioTrackInfo oInfo in oTracks) 53 | this._oTracks.Add((TrackInfo)oInfo); 54 | this._strOutputPath = strOutputPath; 55 | this._oAttachments = new List(); 56 | } 57 | 58 | public override string CodecString 59 | { 60 | get { return "mkvextract"; } 61 | } 62 | 63 | public override string EncodingMode 64 | { 65 | get { return "ext"; } 66 | } 67 | 68 | public List MkvTracks 69 | { 70 | get { return _oTracks; } 71 | set { _oTracks = value; } 72 | } 73 | 74 | public string OutputPath 75 | { 76 | get { return _strOutputPath; } 77 | set { _strOutputPath = value; } 78 | } 79 | 80 | public List Attachments 81 | { 82 | get { return _oAttachments; } 83 | set { _oAttachments = value; } 84 | } 85 | 86 | public string TimeStampFile 87 | { 88 | get { return _strTimeStampFile; } 89 | set { _strTimeStampFile = value; } 90 | } 91 | } 92 | } -------------------------------------------------------------------------------- /core/details/PackageSystem.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | using MeGUI.core.plugins.interfaces; 24 | 25 | namespace MeGUI.core.details 26 | { 27 | 28 | /// 29 | /// Shows a dialog (normally) which allows the user to view the job's settings 30 | /// and reconfigure them. If a dialog is shown, the reconfigured job must be returned. 31 | /// 32 | /// If null is returned, this is taken to mean that the job configurer is 33 | /// not valid for this type of job. 34 | /// 35 | /// 36 | /// 37 | public delegate Job ReconfigureJob(Job j); 38 | 39 | public class PackageSystem 40 | { 41 | GenericRegisterer tools = new GenericRegisterer(); 42 | GenericRegisterer mediaFileTypes = new GenericRegisterer(); 43 | GenericRegisterer muxers = new GenericRegisterer(); 44 | GenericRegisterer jobPreProcessors = new GenericRegisterer(); 45 | GenericRegisterer jobPostProcessors = new GenericRegisterer(); 46 | GenericRegisterer jobProcessors = new GenericRegisterer(); 47 | 48 | public GenericRegisterer> JobConfigurers = new GenericRegisterer>(); 49 | 50 | public GenericRegisterer Tools 51 | { 52 | get { return tools; } 53 | } 54 | public GenericRegisterer MediaFileTypes 55 | { 56 | get { return mediaFileTypes; } 57 | } 58 | public GenericRegisterer MuxerProviders 59 | { 60 | get { return muxers; } 61 | } 62 | public GenericRegisterer JobPreProcessors 63 | { 64 | get { return jobPreProcessors; } 65 | } 66 | public GenericRegisterer JobPostProcessors 67 | { 68 | get { return jobPostProcessors; } 69 | } 70 | public GenericRegisterer JobProcessors 71 | { 72 | get { return jobProcessors; } 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /Changelog.txt: -------------------------------------------------------------------------------- 1 | Changelog version 6666 20251116 2 | 3 | - Added esc keyboard shortcut to close the main UI Forms. 4 | - Added CTRL+G as keyboard shortcut for the "Go to Frame" button on Video Preview. 5 | - Added FFmpeg DTS, TrueHD, EAC-3 Audio Encoders support. 6 | - Defined the same video input path for Audio, Subtitles & Chapters streams in Muxers. 7 | - Detected properly Windows 11 25H2 versioning. 8 | - Enabled WebM file handling for FFMS/L-Smash Indexers. Patch by Tengsen. 9 | - Fixed Audio Streams selection in the One-Click Encoder. 10 | - Updated MediaInfo Libraries. 11 | 12 | 13 | 14 | Changelog version 6666 20250716 15 | 16 | - Added hardware decoding support for BestSource and L-Smash input avisynth plugin. 17 | - Rearranged a little bit the Avisynth Extra Settings through Options. 18 | - Added qaac location settings through Options. 19 | - Added webm muxer. Patch by Lin Seng. 20 | - Fixed several issues in the One-Click Encoder. 21 | 22 | 23 | Changelog version 6666 20250210 24 | 25 | - Updated MediaInfo libraries. 26 | - Fixed FFmpeg AAC VBR Mode. 27 | - Improved Standard Error Output Logging for Opus Transcoding. 28 | - Updated url to the github & forum entries. 29 | - Allowed WebVTT subtitle format for MP4/MKV muxing. 30 | - Added AV1 as supported VideoCodec for MKV Muxer. 31 | - Added BSBideoSource support in AVS Script Creator. 32 | - Targeted Project as .Net Framework 4.8.1. 33 | - Fixed several issues for svt-av1-psy Video Encoder. 34 | - Added input Bits Depth information into the log. 35 | 36 | 37 | Changelog version 6666 20241125 38 | 39 | - Updated AvisynthWrapper and MediaInfo libraries. 40 | - Fixed issues within channel mask in audio transcoding. 41 | - Updated 7.1 & 6.1 avs downmix avs functions for audio transcoding. 42 | - Allowed dts audio streams as input for MP4 Muxer. 43 | - Added Windows 11 Build Revision Information. 44 | 45 | 46 | Changelog version 6666.2308 47 | 48 | - Introduced svt-av1-psy Video Encoder (https://github.com/gianni-rosato/svt-av1-psy) 49 | - Added FFV1 Video Encoder (https://ffmpeg.org/) 50 | - Switched update development tools server to the fork one - mainly x64 binaries in there 51 | - Added 10bits encoding setting for x265 52 | - Introduced Exhale Audio encoder (https://gitlab.com/ecodis/exhale) 53 | - Simplify audio transcoding channel mask use. 54 | - Removed mkv as input for mp4 muxing. Doesnt seems to be usable for the moment on Windows OS. 55 | - Fixed internal issues from audio transcoding when using channel mask. 56 | - HDStreamExtractor/eac3to : updated log event in order to be on par within the latest version. 57 | - Avoid false positive mismatch frames encoded vs frames source for final statistics. 58 | - Updated MediaInfo x64 library to the 24.06 release. 59 | - Used the same naming schemes for all indexers. Fix issue #988 (https://sourceforge.net/p/megui/bugs/988/) 60 | - Applied correctly the drc information from LSMASH-Works & FFMS2 as preferred audio source decoder. Fix issue #984 (https://sourceforge.net/p/megui/bugs/984/) 61 | - Added time modification 23 <-> 24 for audio conversion. Feature Request #690 (https://sourceforge.net/p/megui/feature-requests/690/) 62 | - Allowed UTF8 encoding format as Reader/Writer for avisynth input files. Feature Request #692 (https://sourceforge.net/p/megui/feature-requests/692/) 63 | -------------------------------------------------------------------------------- /core/details/mux/MuxWindow.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MeGUI 2 | { 3 | partial class MuxWindow 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MuxWindow)); 32 | this.label1 = new System.Windows.Forms.Label(); 33 | this.muxedInput = new MeGUI.FileBar(); 34 | this.SuspendLayout(); 35 | // 36 | // label1 37 | // 38 | this.label1.AutoSize = true; 39 | this.label1.Location = new System.Drawing.Point(14, 53); 40 | this.label1.Name = "label1"; 41 | this.label1.Size = new System.Drawing.Size(68, 13); 42 | this.label1.TabIndex = 2; 43 | this.label1.Text = "Muxed Input"; 44 | // 45 | // muxedInput 46 | // 47 | this.muxedInput.Filename = ""; 48 | this.muxedInput.Filter = null; 49 | this.muxedInput.FilterIndex = 0; 50 | this.muxedInput.FolderMode = false; 51 | this.muxedInput.Location = new System.Drawing.Point(118, 45); 52 | this.muxedInput.Name = "muxedInput"; 53 | this.muxedInput.ReadOnly = true; 54 | this.muxedInput.SaveMode = false; 55 | this.muxedInput.Size = new System.Drawing.Size(289, 23); 56 | this.muxedInput.TabIndex = 3; 57 | this.muxedInput.Title = null; 58 | this.muxedInput.FileSelected += new MeGUI.FileBarEventHandler(this.muxedInput_FileSelected); 59 | // 60 | // MuxWindow 61 | // 62 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 63 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 64 | this.AutoSize = true; 65 | this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 66 | this.ClientSize = new System.Drawing.Size(444, 562); 67 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 68 | this.Name = "MuxWindow"; 69 | this.Text = "MeGUI - Muxer"; 70 | this.ResumeLayout(false); 71 | this.PerformLayout(); 72 | 73 | } 74 | 75 | #endregion 76 | 77 | private FileBar muxedInput; 78 | } 79 | } -------------------------------------------------------------------------------- /core/gui/FileSCBox.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | using System.Windows.Forms; 23 | 24 | using MeGUI.core.util; 25 | 26 | namespace MeGUI.core.gui 27 | { 28 | public class FileSCBox : StandardAndCustomComboBox 29 | { 30 | public enum FileSCBoxType 31 | { 32 | Default, OC_FILE_AND_FOLDER, OC_FILE 33 | }; 34 | 35 | public FileSCBox() : base("Clear user-selected files...", "Select file...") 36 | { 37 | base.Getter = new Getter(getter); 38 | base.bSaveEveryItem = true; 39 | } 40 | 41 | OpenFileDialog ofd = new OpenFileDialog(); 42 | FolderBrowserDialog fbd = new FolderBrowserDialog(); 43 | FileSCBoxType oType = FileSCBoxType.Default; 44 | 45 | private object getter() 46 | { 47 | if (ofd.ShowDialog() == DialogResult.OK) 48 | return ofd.FileName; 49 | return null; 50 | } 51 | 52 | private object getterFolder() 53 | { 54 | if (fbd.ShowDialog() == DialogResult.OK) 55 | { 56 | MainForm.Instance.Settings.LastUsedOneClickFolder = fbd.SelectedPath; 57 | return fbd.SelectedPath; 58 | } 59 | return null; 60 | } 61 | 62 | public string Filter 63 | { 64 | get { return ofd.Filter; } 65 | set { ofd.Filter = value; } 66 | } 67 | 68 | public FileSCBoxType Type 69 | { 70 | get { return oType; } 71 | set 72 | { 73 | oType = value; 74 | if (oType == FileSCBoxType.OC_FILE || oType == FileSCBoxType.OC_FILE_AND_FOLDER) 75 | { 76 | base.SetFileSCBoxType("Select file...", "Select folder...", oType); 77 | if (oType == FileSCBoxType.OC_FILE_AND_FOLDER) 78 | { 79 | base.GetterFolder = new Getter(getterFolder); 80 | if (MainForm.Instance != null && System.IO.Directory.Exists(MainForm.Instance.Settings.LastUsedOneClickFolder)) 81 | fbd.SelectedPath = MainForm.Instance.Settings.LastUsedOneClickFolder; 82 | } 83 | } 84 | } 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /core/plugins/interfaces/ISettingsProvider.cs: -------------------------------------------------------------------------------- 1 | // **************************************************************************** 2 | // 3 | // Copyright (C) 2005-2025 Doom9 & al 4 | // 5 | // This program is free software; you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation; either version 2 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // 19 | // **************************************************************************** 20 | 21 | using System; 22 | 23 | using MeGUI.core.util; 24 | 25 | namespace MeGUI 26 | { 27 | 28 | public delegate void StringChanged(object sender, string val); 29 | public delegate void IntChanged(object sender, int val); 30 | public class VideoInfo 31 | { 32 | private string videoInput; 33 | public event StringChanged VideoInputChanged; 34 | public string VideoInput 35 | { 36 | get { return videoInput; } 37 | set { videoInput = value; VideoInputChanged(this, value); } 38 | } 39 | 40 | private string videoOutput; 41 | public event StringChanged VideoOutputChanged; 42 | public string VideoOutput 43 | { 44 | get { return videoOutput; } 45 | set { videoOutput = value; VideoOutputChanged(this, value); } 46 | } 47 | 48 | private Dar? dar = null; 49 | public Dar? DAR 50 | { 51 | get { return dar; } 52 | set { dar = value; } 53 | } 54 | 55 | private int introEndFrame; 56 | public int IntroEndFrame 57 | { 58 | get { return introEndFrame; } 59 | set { introEndFrame = value; } 60 | } 61 | 62 | private int creditsStartFrame; 63 | public int CreditsStartFrame 64 | { 65 | get { return creditsStartFrame; } 66 | set { creditsStartFrame = value; } 67 | } 68 | 69 | private Zone[] zones; 70 | public Zone[] Zones 71 | { 72 | get { return zones; } 73 | set { zones = value ?? new Zone[0]; } 74 | } 75 | 76 | public VideoInfo(string videoInput, string videoOutput, int darX, int darY, int creditsStartFrame, int introEndFrame, Zone[] zones) 77 | { 78 | this.videoInput = videoInput; 79 | this.videoOutput = videoOutput; 80 | this.creditsStartFrame = creditsStartFrame; 81 | this.introEndFrame = introEndFrame; 82 | this.zones = zones; 83 | } 84 | 85 | public VideoInfo() 86 | : this("", "", -1, -1, -1, -1, null) { } 87 | 88 | internal VideoInfo Clone() 89 | { 90 | return (VideoInfo)this.MemberwiseClone(); 91 | } 92 | } 93 | } --------------------------------------------------------------------------------