├── .version ├── images ├── axiom.png ├── axiom-old.png ├── axiom-logo-128.png ├── axiom-logo-large.png └── versions │ ├── axiom_v0.0.1.0-alpha.png │ ├── axiom_v0.1.0.0-alpha.png │ ├── axiom_v0.2.6.0-alpha.png │ ├── axiom_v0.3.0.0-alpha.png │ ├── axiom_v0.5.0.0-alpha.png │ ├── axiom_v0.6.1.0-alpha.png │ ├── axiom_v0.7.1.0-alpha.png │ ├── axiom_v0.9.9.0-alpha.png │ ├── axiom_v1.1.3.0-alpha.png │ ├── axiom_v1.2.7.0-alpha.png │ ├── axiom_v1.6.1.0-alpha.png │ └── axiom_v1.7.9.2-alpha.png ├── docs ├── User Guide.pdf └── Windows Environment Variables │ ├── 2-System-Properties.png │ ├── Environment-Variables.png │ ├── 3-Environment-Variables.png │ ├── 1-Advanced-system-settings.png │ └── 4-Edit-environment-variable.png ├── source ├── Axiom │ ├── Axiom │ │ ├── axiom.ico │ │ ├── Resources │ │ │ └── Images │ │ │ │ ├── Icons │ │ │ │ ├── info.ico │ │ │ │ ├── axiom.ico │ │ │ │ ├── configure.ico │ │ │ │ ├── LogConsole.ico │ │ │ │ └── DebugConsole.ico │ │ │ │ ├── Buttons │ │ │ │ ├── Black │ │ │ │ │ ├── cmd.png │ │ │ │ │ ├── log.png │ │ │ │ │ ├── web.png │ │ │ │ │ ├── 2pass.png │ │ │ │ │ ├── clear.png │ │ │ │ │ ├── delete.png │ │ │ │ │ ├── export.png │ │ │ │ │ ├── folder.png │ │ │ │ │ ├── import.png │ │ │ │ │ ├── info.png │ │ │ │ │ ├── save.png │ │ │ │ │ ├── update.png │ │ │ │ │ ├── window.png │ │ │ │ │ ├── ArrowUp.png │ │ │ │ │ ├── autoplay.png │ │ │ │ │ ├── ArrowDown.png │ │ │ │ │ ├── logconsole.png │ │ │ │ │ ├── properties.png │ │ │ │ │ ├── revertarrow.png │ │ │ │ │ ├── configuregear.png │ │ │ │ │ ├── debugconsole.png │ │ │ │ │ └── autosortscript.png │ │ │ │ └── White │ │ │ │ │ ├── cmd.png │ │ │ │ │ ├── log.png │ │ │ │ │ ├── web.png │ │ │ │ │ ├── 2pass.png │ │ │ │ │ ├── clear.png │ │ │ │ │ ├── delete.png │ │ │ │ │ ├── export.png │ │ │ │ │ ├── folder.png │ │ │ │ │ ├── import.png │ │ │ │ │ ├── info.png │ │ │ │ │ ├── save.png │ │ │ │ │ ├── update.png │ │ │ │ │ ├── window.png │ │ │ │ │ ├── ArrowUp.png │ │ │ │ │ ├── autoplay.png │ │ │ │ │ ├── ArrowDown.png │ │ │ │ │ ├── logconsole.png │ │ │ │ │ ├── properties.png │ │ │ │ │ ├── revertarrow.png │ │ │ │ │ ├── configuregear.png │ │ │ │ │ ├── debugconsole.png │ │ │ │ │ └── autosortscript.png │ │ │ │ └── Themes │ │ │ │ └── Axiom │ │ │ │ ├── background.jpg │ │ │ │ ├── BrowseTextBox.png │ │ │ │ ├── TextBoxEnabled.png │ │ │ │ ├── TextBoxDisabled.png │ │ │ │ ├── buttonCropEnabled.png │ │ │ │ ├── config-background.jpg │ │ │ │ ├── buttonCropDisabled.png │ │ │ │ ├── ComboBoxDisabled-75x22.png │ │ │ │ ├── ComboBoxEnabled-75x22.png │ │ │ │ ├── TextBoxSettingsEnabled.png │ │ │ │ ├── buttonCropClearEnabled.png │ │ │ │ ├── ToggleButtonSmallChecked.png │ │ │ │ ├── buttonCropClearDisabled.png │ │ │ │ ├── ToggleButtonSmallDisabled.png │ │ │ │ ├── ToggleButtonSmallMouseOver.png │ │ │ │ ├── ToggleButtonSmallUnchecked.png │ │ │ │ ├── ComboBoxMouseOverBorder-75x22.png │ │ │ │ └── ToggleButtonSmallMouseOver-Unchecked.png │ │ ├── App.config │ │ ├── Properties │ │ │ ├── Settings.settings │ │ │ ├── Settings.Designer.cs │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ └── Resources.resx │ │ ├── App.xaml.cs │ │ ├── Controls │ │ │ └── ScriptView.cs │ │ ├── App.xaml │ │ ├── Generators │ │ │ ├── Arguments │ │ │ │ └── CRF.cs │ │ │ ├── Audio │ │ │ │ ├── Codec.cs │ │ │ │ ├── Audio.cs │ │ │ │ ├── Metadata.cs │ │ │ │ └── Channel.cs │ │ │ ├── Subtitles │ │ │ │ ├── Metadata.cs │ │ │ │ └── Subtitle.cs │ │ │ ├── Video │ │ │ │ └── Codec.cs │ │ │ └── Encode.cs │ │ ├── FailedImportWindow.xaml.cs │ │ ├── FailedImportWindow.xaml │ │ ├── UpdateWindow.xaml │ │ ├── app.manifest │ │ ├── ViewModel │ │ │ └── ViewModelBase.cs │ │ ├── FilePropertiesWindow.xaml │ │ ├── LogConsole.xaml.cs │ │ ├── Codecs │ │ │ ├── Subtitle │ │ │ │ ├── None.cs │ │ │ │ ├── Burn.cs │ │ │ │ ├── SRT.cs │ │ │ │ ├── SSA.cs │ │ │ │ ├── Copy.cs │ │ │ │ └── MOV_Text.cs │ │ │ └── Audio │ │ │ │ ├── None.cs │ │ │ │ ├── MP2.cs │ │ │ │ ├── LAME.cs │ │ │ │ ├── Opus.cs │ │ │ │ ├── Vorbis.cs │ │ │ │ └── AAC.cs │ │ ├── LogConsole.xaml │ │ ├── FilePropertiesWindow.xaml.cs │ │ ├── DebugConsole.xaml │ │ ├── InfoWindow.xaml │ │ ├── CropWindow.xaml │ │ └── Preview │ │ │ └── FFplay.cs │ └── Axiom.sln └── Troubleshooter │ ├── Axiom Troubleshooter │ ├── app.ico │ ├── app.rc │ ├── resource.h │ ├── stdafx.cpp │ ├── stdafx.h │ ├── Axiom Troubleshooter.cpp │ ├── AssemblyInfo.cpp │ ├── Axiom Troubleshooter.vcxproj.filters │ └── Axiom Troubleshooter.vcxproj │ ├── Resources │ └── troubleshooter.ico │ ├── Notes.txt │ └── Axiom Troubleshooter.sln ├── .gitignore └── README.md /.version: -------------------------------------------------------------------------------- 1 | 1.9.6.1-alpha -------------------------------------------------------------------------------- /images/axiom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/axiom.png -------------------------------------------------------------------------------- /docs/User Guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/docs/User Guide.pdf -------------------------------------------------------------------------------- /images/axiom-old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/axiom-old.png -------------------------------------------------------------------------------- /images/axiom-logo-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/axiom-logo-128.png -------------------------------------------------------------------------------- /images/axiom-logo-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/axiom-logo-large.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/axiom.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/axiom.ico -------------------------------------------------------------------------------- /images/versions/axiom_v0.0.1.0-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v0.0.1.0-alpha.png -------------------------------------------------------------------------------- /images/versions/axiom_v0.1.0.0-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v0.1.0.0-alpha.png -------------------------------------------------------------------------------- /images/versions/axiom_v0.2.6.0-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v0.2.6.0-alpha.png -------------------------------------------------------------------------------- /images/versions/axiom_v0.3.0.0-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v0.3.0.0-alpha.png -------------------------------------------------------------------------------- /images/versions/axiom_v0.5.0.0-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v0.5.0.0-alpha.png -------------------------------------------------------------------------------- /images/versions/axiom_v0.6.1.0-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v0.6.1.0-alpha.png -------------------------------------------------------------------------------- /images/versions/axiom_v0.7.1.0-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v0.7.1.0-alpha.png -------------------------------------------------------------------------------- /images/versions/axiom_v0.9.9.0-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v0.9.9.0-alpha.png -------------------------------------------------------------------------------- /images/versions/axiom_v1.1.3.0-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v1.1.3.0-alpha.png -------------------------------------------------------------------------------- /images/versions/axiom_v1.2.7.0-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v1.2.7.0-alpha.png -------------------------------------------------------------------------------- /images/versions/axiom_v1.6.1.0-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v1.6.1.0-alpha.png -------------------------------------------------------------------------------- /images/versions/axiom_v1.7.9.2-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/images/versions/axiom_v1.7.9.2-alpha.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Icons/info.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Icons/info.ico -------------------------------------------------------------------------------- /source/Troubleshooter/Axiom Troubleshooter/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Troubleshooter/Axiom Troubleshooter/app.ico -------------------------------------------------------------------------------- /source/Troubleshooter/Axiom Troubleshooter/app.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Troubleshooter/Axiom Troubleshooter/app.rc -------------------------------------------------------------------------------- /source/Troubleshooter/Axiom Troubleshooter/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by app.rc 4 | -------------------------------------------------------------------------------- /source/Troubleshooter/Resources/troubleshooter.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Troubleshooter/Resources/troubleshooter.ico -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Icons/axiom.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Icons/axiom.ico -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Icons/configure.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Icons/configure.ico -------------------------------------------------------------------------------- /source/Axiom/Axiom/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/cmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/cmd.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/log.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/web.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/cmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/cmd.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/log.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/web.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Icons/LogConsole.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Icons/LogConsole.ico -------------------------------------------------------------------------------- /docs/Windows Environment Variables/2-System-Properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/docs/Windows Environment Variables/2-System-Properties.png -------------------------------------------------------------------------------- /docs/Windows Environment Variables/Environment-Variables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/docs/Windows Environment Variables/Environment-Variables.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/2pass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/2pass.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/clear.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/delete.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/export.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/folder.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/import.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/info.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/save.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/update.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/window.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/2pass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/2pass.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/clear.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/delete.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/export.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/folder.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/import.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/info.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/save.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/update.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/window.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Icons/DebugConsole.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Icons/DebugConsole.ico -------------------------------------------------------------------------------- /docs/Windows Environment Variables/3-Environment-Variables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/docs/Windows Environment Variables/3-Environment-Variables.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/ArrowUp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/ArrowUp.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/autoplay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/autoplay.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/ArrowUp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/ArrowUp.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/autoplay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/autoplay.png -------------------------------------------------------------------------------- /docs/Windows Environment Variables/1-Advanced-system-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/docs/Windows Environment Variables/1-Advanced-system-settings.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/ArrowDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/ArrowDown.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/logconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/logconsole.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/properties.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/revertarrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/revertarrow.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/ArrowDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/ArrowDown.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/logconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/logconsole.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/properties.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/revertarrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/revertarrow.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/background.jpg -------------------------------------------------------------------------------- /docs/Windows Environment Variables/4-Edit-environment-variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/docs/Windows Environment Variables/4-Edit-environment-variable.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/configuregear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/configuregear.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/debugconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/debugconsole.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/configuregear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/configuregear.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/debugconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/debugconsole.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/BrowseTextBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/BrowseTextBox.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/TextBoxEnabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/TextBoxEnabled.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/Black/autosortscript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/Black/autosortscript.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Buttons/White/autosortscript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Buttons/White/autosortscript.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/TextBoxDisabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/TextBoxDisabled.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/buttonCropEnabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/buttonCropEnabled.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/config-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/config-background.jpg -------------------------------------------------------------------------------- /source/Troubleshooter/Notes.txt: -------------------------------------------------------------------------------- 1 | Must use Visual Studio 2010 (v100) Platform Toolset 2 | 3 | Project > Axiom Troubleshooter Properties > Configuration Properties > General > Platform Toolset -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/buttonCropDisabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/buttonCropDisabled.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/ComboBoxDisabled-75x22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/ComboBoxDisabled-75x22.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/ComboBoxEnabled-75x22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/ComboBoxEnabled-75x22.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/TextBoxSettingsEnabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/TextBoxSettingsEnabled.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/buttonCropClearEnabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/buttonCropClearEnabled.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/ToggleButtonSmallChecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/ToggleButtonSmallChecked.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/buttonCropClearDisabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/buttonCropClearDisabled.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/ToggleButtonSmallDisabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/ToggleButtonSmallDisabled.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/ToggleButtonSmallMouseOver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/ToggleButtonSmallMouseOver.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/ToggleButtonSmallUnchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/ToggleButtonSmallUnchecked.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/ComboBoxMouseOverBorder-75x22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/ComboBoxMouseOverBorder-75x22.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Resources/Images/Themes/Axiom/ToggleButtonSmallMouseOver-Unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MattMcManis/Axiom/HEAD/source/Axiom/Axiom/Resources/Images/Themes/Axiom/ToggleButtonSmallMouseOver-Unchecked.png -------------------------------------------------------------------------------- /source/Axiom/Axiom/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/Troubleshooter/Axiom Troubleshooter/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // Axiom Troubleshooter.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | 8 | -------------------------------------------------------------------------------- /source/Troubleshooter/Axiom Troubleshooter/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | #pragma once 5 | 6 | // TODO: reference additional headers your program requires here 7 | -------------------------------------------------------------------------------- /source/Troubleshooter/Axiom Troubleshooter/Axiom Troubleshooter.cpp: -------------------------------------------------------------------------------- 1 | // Axiom Troubleshooter.cpp : main project file. 2 | 3 | #include "stdafx.h" 4 | #include "Form1.h" 5 | 6 | using namespace AxiomTroubleshooter; 7 | 8 | [STAThreadAttribute] 9 | int main(array ^args) 10 | { 11 | // Enabling Windows XP visual effects before any controls are created 12 | Application::EnableVisualStyles(); 13 | Application::SetCompatibleTextRenderingDefault(false); 14 | 15 | // Create the main window and run it 16 | Application::Run(gcnew Form1()); 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /source/Troubleshooter/Axiom Troubleshooter.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Axiom Troubleshooter", "Axiom Troubleshooter\Axiom Troubleshooter.vcxproj", "{4D52D5AA-715C-4081-BE1C-1EFF16DC55E9}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {4D52D5AA-715C-4081-BE1C-1EFF16DC55E9}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {4D52D5AA-715C-4081-BE1C-1EFF16DC55E9}.Debug|Win32.Build.0 = Debug|Win32 14 | {4D52D5AA-715C-4081-BE1C-1EFF16DC55E9}.Release|Win32.ActiveCfg = Release|Win32 15 | {4D52D5AA-715C-4081-BE1C-1EFF16DC55E9}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /source/Axiom/Axiom.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Axiom", "Axiom\Axiom.csproj", "{6AC014C0-8CC1-47A0-9E31-2CF9A5A16885}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {6AC014C0-8CC1-47A0-9E31-2CF9A5A16885}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {6AC014C0-8CC1-47A0-9E31-2CF9A5A16885}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {6AC014C0-8CC1-47A0-9E31-2CF9A5A16885}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {6AC014C0-8CC1-47A0-9E31-2CF9A5A16885}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Axiom.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/App.xaml.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Configuration; 25 | using System.Data; 26 | using System.Linq; 27 | using System.Threading.Tasks; 28 | using System.Windows; 29 | 30 | namespace Axiom 31 | { 32 | /// 33 | /// Interaction logic for App.xaml 34 | /// 35 | public partial class App : Application 36 | { 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /source/Troubleshooter/Axiom Troubleshooter/AssemblyInfo.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | using namespace System; 4 | using namespace System::Reflection; 5 | using namespace System::Runtime::CompilerServices; 6 | using namespace System::Runtime::InteropServices; 7 | using namespace System::Security::Permissions; 8 | 9 | // 10 | // General Information about an assembly is controlled through the following 11 | // set of attributes. Change these attribute values to modify the information 12 | // associated with an assembly. 13 | // 14 | [assembly:AssemblyTitleAttribute("AxiomTroubleshooter")]; 15 | [assembly:AssemblyDescriptionAttribute("")]; 16 | [assembly:AssemblyConfigurationAttribute("")]; 17 | [assembly:AssemblyCompanyAttribute("")]; 18 | [assembly:AssemblyProductAttribute("AxiomTroubleshooter")]; 19 | [assembly:AssemblyCopyrightAttribute("Copyright (c) 2019")]; 20 | [assembly:AssemblyTrademarkAttribute("")]; 21 | [assembly:AssemblyCultureAttribute("")]; 22 | 23 | // 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the value or you can default the Revision and Build Numbers 32 | // by using the '*' as shown below: 33 | 34 | [assembly:AssemblyVersionAttribute("1.0.*")]; 35 | 36 | [assembly:ComVisible(false)]; 37 | 38 | [assembly:CLSCompliantAttribute(true)]; 39 | 40 | [assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; 41 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Controls/ScriptView.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Windows.Documents; 24 | using ViewModel; 25 | // Disable XML Comment warnings 26 | #pragma warning disable 1591 27 | #pragma warning disable 1587 28 | #pragma warning disable 1570 29 | 30 | namespace Controls 31 | { 32 | public class ScriptView 33 | { 34 | public static bool sort = false; 35 | 36 | /// 37 | /// Clear RichTextBox 38 | /// 39 | public static void ClearScriptView() 40 | { 41 | VM.MainView.ScriptView_Text = string.Empty; 42 | } 43 | 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/App.xaml: -------------------------------------------------------------------------------- 1 | 21 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Generators/Arguments/CRF.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | /* ---------------------------------- 23 | METHODS 24 | 25 | * Arguments 26 | ---------------------------------- */ 27 | 28 | using System; 29 | using System.Collections.Generic; 30 | using System.Linq; 31 | using System.Text; 32 | using System.Threading.Tasks; 33 | using ViewModel; 34 | 35 | namespace Generate 36 | { 37 | public partial class FFmpeg 38 | { 39 | public class CRF 40 | { 41 | /// 42 | /// CRF Arguments 43 | /// 44 | /// 45 | /// Is the same as 1 Pass Arguments 46 | /// 47 | public static String Arguments() 48 | { 49 | return _1_Pass.Arguments(); 50 | } 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /source/Troubleshooter/Axiom Troubleshooter/Axiom Troubleshooter.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 20 | Resource Files 21 | 22 | 23 | 24 | 25 | Source Files 26 | 27 | 28 | Source Files 29 | 30 | 31 | Source Files 32 | 33 | 34 | 35 | 36 | Header Files 37 | 38 | 39 | Header Files 40 | 41 | 42 | Header Files 43 | 44 | 45 | 46 | 47 | Resource Files 48 | 49 | 50 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/FailedImportWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System.Windows; 23 | using System.Windows.Documents; 24 | // Disable XML Comment warnings 25 | #pragma warning disable 1591 26 | #pragma warning disable 1587 27 | #pragma warning disable 1570 28 | 29 | namespace Axiom 30 | { 31 | /// 32 | /// Interaction logic for FailedImportWindow.xaml 33 | /// 34 | public partial class FailedImportWindow : Window 35 | { 36 | public FailedImportWindow() 37 | { 38 | InitializeComponent(); 39 | } 40 | 41 | /// 42 | /// Window Loaded 43 | /// 44 | public void Window_Loaded(object sender, RoutedEventArgs e) 45 | { 46 | Paragraph p = new Paragraph(); 47 | rtbFailedImport.Document = new FlowDocument(p); 48 | 49 | rtbFailedImport.BeginChange(); 50 | p.Inlines.Add(new Run("Please set the following and re-save your profile.\n\n")); 51 | p.Inlines.Add(new Run(Profiles.Profiles.failedImportMessage)); 52 | rtbFailedImport.EndChange(); 53 | 54 | // Clear 55 | Profiles.Profiles.failedImportMessage = string.Empty; 56 | } 57 | 58 | 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/FailedImportWindow.xaml: -------------------------------------------------------------------------------- 1 | 21 | 40 | 41 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/UpdateWindow.xaml: -------------------------------------------------------------------------------- 1 | 21 | 37 | 38 | 39 | 40 | 41 | 42 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [assembly: AssemblyTitle("Axiom")] 11 | [assembly: AssemblyDescription("FFmpeg UI")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("Matt McManis")] 14 | [assembly: AssemblyProduct("Axiom UI")] 15 | [assembly: AssemblyCopyright("© MattMcManis 2017-2021")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // Setting ComVisible to false makes the types in this assembly not visible 20 | // to COM components. If you need to access a type in this assembly from 21 | // COM, set the ComVisible attribute to true on that type. 22 | [assembly: ComVisible(false)] 23 | 24 | //In order to begin building localizable applications, set 25 | //CultureYouAreCodingWith in your .csproj file 26 | //inside a . For example, if you are using US english 27 | //in your source files, set the to en-US. Then uncomment 28 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 29 | //the line below to match the UICulture setting in the project file. 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | 34 | [assembly: ThemeInfo( 35 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 36 | //(used if a resource is not found in the page, 37 | // or application resource dictionaries) 38 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 39 | //(used if a resource is not found in the page, 40 | // app, or any theme specific resource dictionaries) 41 | )] 42 | 43 | 44 | // Version information for an assembly consists of the following four values: 45 | // 46 | // Major Version 47 | // Minor Version 48 | // Build Number 49 | // Revision 50 | // 51 | // You can specify all the values or you can default the Build and Revision Numbers 52 | // by using the '*' as shown below: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.9.6.1")] 55 | [assembly: AssemblyFileVersion("1.9.6.1")] 56 | [assembly: Guid("A955B72D-37BB-4668-8970-82EE6997E38E")] 57 | 58 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/ViewModel/ViewModelBase.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | // Disable XML Comment warnings 25 | #pragma warning disable 1591 26 | #pragma warning disable 1587 27 | #pragma warning disable 1570 28 | 29 | namespace ViewModel 30 | { 31 | public class VM : INotifyPropertyChanged 32 | { 33 | public event PropertyChangedEventHandler PropertyChanged = delegate { }; 34 | private void OnPropertyChanged(string prop) 35 | { 36 | PropertyChangedEventHandler handler = PropertyChanged; 37 | 38 | if (handler != null) 39 | { 40 | handler(this, new PropertyChangedEventArgs(prop)); 41 | } 42 | } 43 | 44 | /// 45 | /// ViewModel Base 46 | /// 47 | public VM() 48 | { 49 | 50 | } 51 | 52 | // Main 53 | public static ViewModel.Main MainView { get; set; } = new Main(); 54 | // Format 55 | public static ViewModel.Format FormatView { get; set; } = new Format(); 56 | // Video 57 | public static ViewModel.Video VideoView { get; set; } = new Video(); 58 | // Subtitle 59 | public static ViewModel.Subtitle SubtitleView { get; set; } = new Subtitle(); 60 | // Audio 61 | public static ViewModel.Audio AudioView { get; set; } = new Audio(); 62 | // Filter Video 63 | public static ViewModel.FilterVideo FilterVideoView { get; set; } = new FilterVideo(); 64 | // Filter Audio 65 | public static ViewModel.FilterAudio FilterAudioView { get; set; } = new FilterAudio(); 66 | // Configure 67 | public static ViewModel.Configure ConfigureView { get; set; } = new Configure(); 68 | 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Generators/Audio/Codec.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | /* ---------------------------------- 23 | METHODS 24 | 25 | * Audio Codec 26 | ---------------------------------- */ 27 | 28 | using System; 29 | using System.Collections.Generic; 30 | using System.Data; 31 | using System.Linq; 32 | using System.Text.RegularExpressions; 33 | using System.Windows; 34 | using System.Windows.Documents; 35 | using Axiom; 36 | using ViewModel; 37 | // Disable XML Comment warnings 38 | #pragma warning disable 1591 39 | #pragma warning disable 1587 40 | #pragma warning disable 1570 41 | 42 | namespace Generate 43 | { 44 | namespace Audio 45 | { 46 | public class Codec 47 | { 48 | public static string aCodec { get; set; } 49 | 50 | /// 51 | /// Audio Codec 52 | /// 53 | public static String AudioCodec(string codec_SelectedItem, 54 | string codec_Command 55 | ) 56 | { 57 | // Passed Command 58 | if (codec_SelectedItem != "None") 59 | { 60 | aCodec = codec_Command; 61 | } 62 | 63 | // PCM Special Rule 64 | if (codec_SelectedItem == "PCM") 65 | { 66 | aCodec = "-c:a " + Controls.Audio.Codec.PCM.Codec_Set(); 67 | } 68 | 69 | // Log Console Message ///////// 70 | Log.WriteAction = () => 71 | { 72 | Log.logParagraph.Inlines.Add(new LineBreak()); 73 | Log.logParagraph.Inlines.Add(new Bold(new Run("Codec: ")) { Foreground = Log.ConsoleDefault }); 74 | Log.logParagraph.Inlines.Add(new Run(codec_Command) { Foreground = Log.ConsoleDefault }); 75 | }; 76 | Log.LogActions.Add(Log.WriteAction); 77 | 78 | return aCodec; 79 | } 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/FilePropertiesWindow.xaml: -------------------------------------------------------------------------------- 1 | 21 | 36 | 37 | 38 | 49 | 50 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Axiom.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Axiom.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Generators/Audio/Audio.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | /* ---------------------------------- 23 | METHODS 24 | 25 | * 26 | ---------------------------------- */ 27 | 28 | using Axiom; 29 | using System; 30 | using System.Collections.Generic; 31 | using System.Data; 32 | using System.IO; 33 | using System.Linq; 34 | using System.Windows; 35 | using System.Windows.Documents; 36 | // Disable XML Comment warnings 37 | #pragma warning disable 1591 38 | #pragma warning disable 1587 39 | #pragma warning disable 1570 40 | 41 | namespace Generate.Audio 42 | { 43 | public class Audio 44 | { 45 | public static string audioMux { get; set; } 46 | //public static List audioMuxList; 47 | 48 | public static string audioDir { get; set; } // Subtitles Directory 49 | public static List audioFilePathsList = new List(); // Files Added 50 | public static List audioFileNamesList = new List(); // File Names without Path 51 | 52 | /// 53 | /// Audio External 54 | /// 55 | public static/* List */String AudioMux(string codec_SelectedItem, 56 | string stream_SelectedItem 57 | ) 58 | { 59 | // ------------------------- 60 | // External 61 | // ------------------------- 62 | if (codec_SelectedItem != "None" && 63 | stream_SelectedItem == "mux" && 64 | audioFilePathsList != null && 65 | audioFilePathsList.Count > 0) 66 | { 67 | audioMux = "-i " + string.Join(" \r\n\r\n-i ", audioFilePathsList 68 | .Where(s => !string.IsNullOrWhiteSpace(s)) 69 | ); 70 | 71 | //for (var i = 0; i < audioFilePathsList.Count; i++) 72 | //{ 73 | // audioMuxList.Add("-i " + MainWindow.WrapWithQuotes(audioFilePathsList[i])); 74 | //} 75 | } 76 | 77 | return audioMux; 78 | //return audioMuxList; 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/LogConsole.xaml.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System.ComponentModel; 23 | using System.Windows; 24 | using System.Windows.Media; 25 | // Disable XML Comment warnings 26 | #pragma warning disable 1591 27 | 28 | namespace Axiom 29 | { 30 | /// 31 | /// Interaction logic for Console.xaml 32 | /// 33 | public partial class LogConsole : Window 34 | { 35 | public LogConsole() 36 | { 37 | InitializeComponent(); 38 | 39 | // Set Width/Height to prevent Tablets maximizing 40 | //this.Width = 400; 41 | //this.Height = 500; 42 | this.MinWidth = 200; 43 | this.MinHeight = 200; 44 | } 45 | 46 | 47 | /// 48 | /// Close 49 | /// 50 | private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 51 | { 52 | e.Cancel = true; 53 | this.Close(); 54 | } 55 | 56 | 57 | /// 58 | /// Hide Window Instead of Closing 59 | /// 60 | protected override void OnClosing(CancelEventArgs e) 61 | { 62 | this.Hide(); 63 | this.Width = 400; 64 | this.Height = 500; 65 | e.Cancel = true; 66 | base.OnClosing(e); 67 | } 68 | 69 | 70 | /// 71 | /// Expand Button 72 | /// 73 | private void btnExpand_Click(object sender, RoutedEventArgs e) 74 | { 75 | // If less than 600px Height 76 | if (this.Height <= 650) 77 | { 78 | this.Width = 650; 79 | this.Height = 600; 80 | 81 | double screenWidth = System.Windows.SystemParameters.PrimaryScreenWidth; 82 | double screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight; 83 | double windowWidth = this.Width; 84 | double windowHeight = this.Height; 85 | this.Left = (screenWidth / 2) - (windowWidth / 2); 86 | this.Top = (screenHeight / 2) - (windowHeight / 2); 87 | } 88 | } 89 | 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Subtitle/None.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using ViewModel; 29 | 30 | namespace Controls.Subtitles.Codec 31 | { 32 | public class None : Controls.ISubtitleCodec 33 | { 34 | // --------------------------------------------------------------------------- 35 | // Codec 36 | // --------------------------------------------------------------------------- 37 | public ObservableCollection codec { get; set; } = new ObservableCollection() 38 | { 39 | new ViewModel.Subtitle.SubtitleCodec() { Codec = string.Empty, Parameters = string.Empty } 40 | }; 41 | 42 | // ------------------------- 43 | // Stream 44 | // ------------------------- 45 | public ObservableCollection stream { get; set; } = new ObservableCollection() 46 | { 47 | "none" 48 | }; 49 | 50 | 51 | // --------------------------------------------------------------------------- 52 | // Controls Behavior 53 | // --------------------------------------------------------------------------- 54 | 55 | // ------------------------- 56 | // Selected Items 57 | // ------------------------- 58 | public List controls_Selected { get; set; } = new List() 59 | { 60 | new ViewModel.Subtitle.Selected() { Stream = "none" }, 61 | }; 62 | 63 | // ------------------------- 64 | // Enabled 65 | // ------------------------- 66 | public List controls_Enabled { get; set; } = new List() 67 | { 68 | new ViewModel.Subtitle.Enabled() { Stream = false }, 69 | // Subtitle List View controlled in cboSubtitle_Stream_SelectionChanged 70 | 71 | // All other controls are set through Format.Controls.MediaTypeControls() 72 | }; 73 | 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/LogConsole.xaml: -------------------------------------------------------------------------------- 1 | 21 | 35 | 36 | 37 | 47 | 53 | 54 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Subtitle/Burn.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using ViewModel; 29 | 30 | namespace Controls.Subtitles.Codec 31 | { 32 | public class Burn : Controls.ISubtitleCodec 33 | { 34 | // --------------------------------------------------------------------------- 35 | // Codec 36 | // --------------------------------------------------------------------------- 37 | public ObservableCollection codec { get; set; } = new ObservableCollection() 38 | { 39 | new ViewModel.Subtitle.SubtitleCodec() { Codec = string.Empty, Parameters = string.Empty } 40 | }; 41 | 42 | // ------------------------- 43 | // Stream 44 | // ------------------------- 45 | public ObservableCollection stream { get; set; } = new ObservableCollection() 46 | { 47 | "none", 48 | "external" 49 | }; 50 | 51 | 52 | // --------------------------------------------------------------------------- 53 | // Controls Behavior 54 | // --------------------------------------------------------------------------- 55 | 56 | // ------------------------- 57 | // Selected Items 58 | // ------------------------- 59 | public List controls_Selected { get; set; } = new List() 60 | { 61 | new ViewModel.Subtitle.Selected() { Stream = "external" }, 62 | }; 63 | 64 | // ------------------------- 65 | // Enabled 66 | // ------------------------- 67 | public List controls_Enabled { get; set; } = new List() 68 | { 69 | new ViewModel.Subtitle.Enabled() { Stream = true }, 70 | // Subtitle List View controlled in cboSubtitle_Stream_SelectionChanged 71 | 72 | // All other controls are set through Format.Controls.MediaTypeControls() 73 | }; 74 | 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Subtitle/SRT.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using ViewModel; 29 | 30 | namespace Controls.Subtitles.Codec 31 | { 32 | public class SRT : Controls.ISubtitleCodec 33 | { 34 | // --------------------------------------------------------------------------- 35 | // Codec 36 | // --------------------------------------------------------------------------- 37 | public ObservableCollection codec { get; set; } = new ObservableCollection() 38 | { 39 | new ViewModel.Subtitle.SubtitleCodec() { Codec = "srt", Parameters = "" } 40 | }; 41 | 42 | // ------------------------- 43 | // Stream 44 | // ------------------------- 45 | public ObservableCollection stream { get; set; } = new ObservableCollection() 46 | { 47 | "all", 48 | "mux", 49 | "none", 50 | "1", 51 | "2", 52 | "3", 53 | "4", 54 | "5", 55 | "6", 56 | "7", 57 | "8", 58 | }; 59 | 60 | 61 | // --------------------------------------------------------------------------- 62 | // Controls Behavior 63 | // --------------------------------------------------------------------------- 64 | 65 | // ------------------------- 66 | // Selected Items 67 | // ------------------------- 68 | public List controls_Selected { get; set; } = new List() 69 | { 70 | new ViewModel.Subtitle.Selected() { Stream = "all" }, 71 | }; 72 | 73 | // ------------------------- 74 | // Enabled 75 | // ------------------------- 76 | public List controls_Enabled { get; set; } = new List() 77 | { 78 | new ViewModel.Subtitle.Enabled() { Stream = true }, 79 | // Subtitle List View controlled in cboSubtitle_Stream_SelectionChanged 80 | 81 | // All other controls are set through Format.Controls.MediaTypeControls() 82 | }; 83 | 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Subtitle/SSA.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using ViewModel; 29 | 30 | namespace Controls.Subtitles.Codec 31 | { 32 | public class SSA : Controls.ISubtitleCodec 33 | { 34 | // --------------------------------------------------------------------------- 35 | // Codec 36 | // --------------------------------------------------------------------------- 37 | public ObservableCollection codec { get; set; } = new ObservableCollection() 38 | { 39 | new ViewModel.Subtitle.SubtitleCodec() { Codec = "ass", Parameters = "" } 40 | }; 41 | 42 | // ------------------------- 43 | // Stream 44 | // ------------------------- 45 | public ObservableCollection stream { get; set; } = new ObservableCollection() 46 | { 47 | "all", 48 | "mux", 49 | "none", 50 | "1", 51 | "2", 52 | "3", 53 | "4", 54 | "5", 55 | "6", 56 | "7", 57 | "8", 58 | }; 59 | 60 | 61 | // --------------------------------------------------------------------------- 62 | // Controls Behavior 63 | // --------------------------------------------------------------------------- 64 | 65 | // ------------------------- 66 | // Selected Items 67 | // ------------------------- 68 | public List controls_Selected { get; set; } = new List() 69 | { 70 | new ViewModel.Subtitle.Selected() { Stream = "all" }, 71 | }; 72 | 73 | // ------------------------- 74 | // Enabled 75 | // ------------------------- 76 | public List controls_Enabled { get; set; } = new List() 77 | { 78 | new ViewModel.Subtitle.Enabled() { Stream = true }, 79 | // Subtitle List View controlled in cboSubtitle_Stream_SelectionChanged 80 | 81 | // All other controls are set through Format.Controls.MediaTypeControls() 82 | }; 83 | 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Subtitle/Copy.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using ViewModel; 29 | 30 | namespace Controls.Subtitles.Codec 31 | { 32 | public class Copy : Controls.ISubtitleCodec 33 | { 34 | // --------------------------------------------------------------------------- 35 | // Codec 36 | // --------------------------------------------------------------------------- 37 | public ObservableCollection codec { get; set; } = new ObservableCollection() 38 | { 39 | new ViewModel.Subtitle.SubtitleCodec() { Codec = "copy", Parameters = "" } 40 | }; 41 | 42 | // ------------------------- 43 | // Stream 44 | // ------------------------- 45 | public ObservableCollection stream { get; set; } = new ObservableCollection() 46 | { 47 | "all", 48 | "mux", 49 | "none", 50 | "1", 51 | "2", 52 | "3", 53 | "4", 54 | "5", 55 | "6", 56 | "7", 57 | "8", 58 | }; 59 | 60 | 61 | // --------------------------------------------------------------------------- 62 | // Controls Behavior 63 | // --------------------------------------------------------------------------- 64 | 65 | // ------------------------- 66 | // Selected Items 67 | // ------------------------- 68 | public List controls_Selected { get; set; } = new List() 69 | { 70 | new ViewModel.Subtitle.Selected() { Stream = "all" }, 71 | }; 72 | 73 | // ------------------------- 74 | // Enabled 75 | // ------------------------- 76 | public List controls_Enabled { get; set; } = new List() 77 | { 78 | new ViewModel.Subtitle.Enabled() { Stream = false }, 79 | // Subtitle List View controlled in cboSubtitle_Stream_SelectionChanged 80 | 81 | // All other controls are set through Format.Controls.MediaTypeControls() 82 | }; 83 | 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Subtitle/MOV_Text.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using ViewModel; 29 | 30 | namespace Controls.Subtitles.Codec 31 | { 32 | public class MOV_Text : Controls.ISubtitleCodec 33 | { 34 | // --------------------------------------------------------------------------- 35 | // Codec 36 | // --------------------------------------------------------------------------- 37 | public ObservableCollection codec { get; set; } = new ObservableCollection() 38 | { 39 | new ViewModel.Subtitle.SubtitleCodec() { Codec = "mov_text", Parameters = "" } 40 | }; 41 | 42 | // ------------------------- 43 | // Stream 44 | // ------------------------- 45 | public ObservableCollection stream { get; set; } = new ObservableCollection() 46 | { 47 | "all", 48 | "mux", 49 | "none", 50 | "1", 51 | "2", 52 | "3", 53 | "4", 54 | "5", 55 | "6", 56 | "7", 57 | "8", 58 | }; 59 | 60 | 61 | // --------------------------------------------------------------------------- 62 | // Controls Behavior 63 | // --------------------------------------------------------------------------- 64 | 65 | // ------------------------- 66 | // Selected Items 67 | // ------------------------- 68 | public List controls_Selected { get; set; } = new List() 69 | { 70 | new ViewModel.Subtitle.Selected() { Stream = "all" }, 71 | }; 72 | 73 | // ------------------------- 74 | // Enabled 75 | // ------------------------- 76 | public List controls_Enabled { get; set; } = new List() 77 | { 78 | new ViewModel.Subtitle.Enabled() { Stream = true }, 79 | // Subtitle List View controlled in cboSubtitle_Stream_SelectionChanged 80 | 81 | // All other controls are set through Format.Controls.MediaTypeControls() 82 | }; 83 | 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Generators/Subtitles/Metadata.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using Axiom; 23 | using System; 24 | using System.Collections.Generic; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using System.Windows; 29 | using ViewModel; 30 | 31 | namespace Generate.Subtitle 32 | { 33 | public class Metadata 34 | { 35 | public static List titleList = new List(); 36 | 37 | public static List languageList = new List(); 38 | 39 | public static List delayList = new List(); 40 | 41 | /// 42 | /// Subtitles Metadata 43 | /// 44 | public static String Subtitles() 45 | { 46 | string metadata = string.Empty; 47 | 48 | if (VM.SubtitleView.Subtitle_Stream_SelectedItem == "mux") 49 | { 50 | try 51 | { 52 | for (var i = 0; i < VM.SubtitleView.Subtitle_ListView_Items.Count; i++) 53 | { 54 | // Title 55 | if (!string.IsNullOrWhiteSpace(titleList[i])) 56 | { 57 | metadata += "-metadata:s:s:" + i + " title=" + MainWindow.WrapWithQuotes(titleList[i]) + "\r\n"; 58 | } 59 | 60 | // Language 61 | if (!string.IsNullOrWhiteSpace(languageList[i]) && 62 | languageList[i] != "none") 63 | { 64 | metadata += "-metadata:s:s:" + i + " language=" + MainWindow.WrapWithQuotes( 65 | VM.SubtitleView.Subtitle_Metadata_Language_Items 66 | .FirstOrDefault(item => item.Name == languageList[i])?.Param 67 | ) + "\r\n"; 68 | } 69 | } 70 | } 71 | catch (Exception ex) 72 | { 73 | MessageBox.Show(ex.ToString(), 74 | "Mux Subtitles Error", 75 | MessageBoxButton.OK, 76 | MessageBoxImage.Error); 77 | 78 | } 79 | } 80 | 81 | return metadata; 82 | } 83 | 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Generators/Video/Codec.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | /* ---------------------------------- 23 | METHODS 24 | 25 | * Video Codec 26 | ---------------------------------- */ 27 | 28 | using System; 29 | using System.Collections.Generic; 30 | using System.Data; 31 | using System.Linq; 32 | using System.Text.RegularExpressions; 33 | using System.Windows; 34 | using System.Windows.Documents; 35 | using Axiom; 36 | // Disable XML Comment warnings 37 | #pragma warning disable 1591 38 | #pragma warning disable 1587 39 | #pragma warning disable 1570 40 | 41 | namespace Generate.Video 42 | { 43 | public class Codec 44 | { 45 | public static string vCodec { get; set; } // Video Codec 46 | 47 | /// 48 | /// Video Codec 49 | /// 50 | public static String VideoCodec(string hwAccel_transcode_SelectedItem, 51 | string codec_SelectedItem, 52 | string codec_Command 53 | ) 54 | { 55 | // Passed Command 56 | if (codec_SelectedItem != "None") 57 | { 58 | vCodec = codec_Command; 59 | 60 | //// HW Acceleration vCodec Override 61 | //if (hwAccel_transcode_SelectedItem == "AMD AMF" || // h264_amf / hevc_amf 62 | // hwAccel_transcode_SelectedItem == "NVIDIA NVENC" || // h264_nvenc / hevc_nvenc 63 | // hwAccel_transcode_SelectedItem == "Intel QSV" // h264_qsv / hevc_qsv 64 | // ) 65 | //{ 66 | // vCodec = Encoding.HWAccelerationCodecOverride(hwAccel_transcode_SelectedItem, 67 | // codec_SelectedItem 68 | // ); 69 | 70 | // //MessageBox.Show(vCodec); //debug 71 | //} 72 | } 73 | 74 | // Log Console Message ///////// 75 | Log.WriteAction = () => 76 | { 77 | Log.logParagraph.Inlines.Add(new LineBreak()); 78 | Log.logParagraph.Inlines.Add(new Bold(new Run("Codec: ")) { Foreground = Log.ConsoleDefault }); 79 | Log.logParagraph.Inlines.Add(new Run(codec_Command) { Foreground = Log.ConsoleDefault }); 80 | }; 81 | Log.LogActions.Add(Log.WriteAction); 82 | 83 | //MessageBox.Show(vCodec); //debug 84 | 85 | return vCodec; 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Generators/Audio/Metadata.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using Axiom; 23 | using System; 24 | using System.Collections.Generic; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using System.Windows; 29 | using ViewModel; 30 | 31 | namespace Generate.Audio 32 | { 33 | public class Metadata 34 | { 35 | public static List titleList = new List(); 36 | 37 | public static List languageList = new List(); 38 | 39 | public static List delayList = new List(); 40 | 41 | /// 42 | /// Audio Metadata 43 | /// 44 | public static String Audio() 45 | { 46 | string metadata = string.Empty; 47 | 48 | if (VM.AudioView.Audio_Stream_SelectedItem == "mux") 49 | { 50 | try 51 | { 52 | for (var i = 0; i < VM.AudioView.Audio_ListView_Items.Count; i++) 53 | { 54 | // Title 55 | if (!string.IsNullOrWhiteSpace(titleList[i])) 56 | { 57 | metadata += "-metadata:s:a:" + i + " title=" + MainWindow.WrapWithQuotes(titleList[i]) + "\r\n"; 58 | } 59 | 60 | // Language 61 | if (!string.IsNullOrWhiteSpace(languageList[i]) && 62 | languageList[i] != "none") 63 | { 64 | metadata += "-metadata:s:a:" + i + " language=" + MainWindow.WrapWithQuotes( 65 | VM.AudioView.Audio_Metadata_Language_Items 66 | .FirstOrDefault(item => item.Name == languageList[i])?.Param 67 | ) + "\r\n"; 68 | } 69 | } 70 | } 71 | catch (Exception ex) 72 | { 73 | MessageBox.Show(ex.ToString(), 74 | "Mux Audio Error", 75 | MessageBoxButton.OK, 76 | MessageBoxImage.Error); 77 | 78 | } 79 | 80 | // Remove last linebreak 81 | metadata = metadata.TrimEnd('\r', '\n'); 82 | } 83 | 84 | return metadata; 85 | } 86 | 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Generators/Subtitles/Subtitle.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Linq; 25 | // Disable XML Comment warnings 26 | #pragma warning disable 1591 27 | #pragma warning disable 1587 28 | #pragma warning disable 1570 29 | 30 | namespace Generate.Subtitle 31 | { 32 | public class Subtitle 33 | { 34 | // -------------------------------------------------------------------------------------------------------- 35 | /// 36 | /// Global Variables 37 | /// 38 | /// -------------------------------------------------------------------------------------------------------- 39 | 40 | public static string sCodec { get; set; } // Subtitle Codec 41 | public static string subtitles { get; set; } 42 | 43 | public static string subsDir { get; set; } // Subtitles Directory 44 | public static List subtitleFilePathsList = new List(); // Files Added 45 | public static List subtitleFileNamesList = new List(); // File Names without Path 46 | 47 | 48 | 49 | // -------------------------------------------------------------------------------------------------------- 50 | /// 51 | /// Methods 52 | /// 53 | // -------------------------------------------------------------------------------------------------------- 54 | 55 | /// 56 | /// Subtitle Codec 57 | /// 58 | public static String SubtitleCodec(string codec_SelectedItem, 59 | string codec_Command 60 | ) 61 | { 62 | // Passed Command 63 | if (codec_SelectedItem != "None") 64 | { 65 | // e.g. -c:s srt 66 | sCodec = codec_Command; 67 | } 68 | 69 | return sCodec; 70 | } 71 | 72 | /// 73 | /// Subtitles Mux 74 | /// 75 | public static String SubtitlesMux(string codec_SelectedItem, 76 | string stream_SelectedItem 77 | ) 78 | { 79 | if (codec_SelectedItem != "Burn" && // Ignore if Burn 80 | (stream_SelectedItem == "mux" || stream_SelectedItem == "external") && 81 | subtitleFilePathsList != null && 82 | subtitleFilePathsList.Count > 0) 83 | { 84 | subtitles = "-i " + string.Join(" \r\n\r\n-i ", subtitleFilePathsList 85 | .Where(s => !string.IsNullOrWhiteSpace(s)) 86 | ); 87 | } 88 | 89 | return subtitles; 90 | } 91 | 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/FilePropertiesWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System.Windows; 23 | using System.Windows.Documents; 24 | using ViewModel; 25 | // Disable XML Comment warnings 26 | #pragma warning disable 1591 27 | 28 | namespace Axiom 29 | { 30 | /// 31 | /// Interaction logic for Console.xaml 32 | /// 33 | public partial class FilePropertiesWindow : Window 34 | { 35 | private MainWindow mainwindow; 36 | 37 | public FilePropertiesWindow(MainWindow mainwindow) 38 | { 39 | InitializeComponent(); 40 | 41 | //DataContext = vm; 42 | 43 | // Set Width/Height to prevent Tablets maximizing 44 | //this.Width = 420; 45 | //this.Height = 400; 46 | this.MinWidth = 200; 47 | this.MinHeight = 200; 48 | 49 | this.mainwindow = mainwindow; 50 | } 51 | 52 | /// 53 | /// Window Loaded 54 | /// 55 | private void Window_Loaded(object sender, RoutedEventArgs e) 56 | { 57 | //MainView vm = mainwindow.DataContext as MainView; 58 | 59 | // ------------------------- 60 | // Display FFprobe File Properties 61 | // ------------------------- 62 | 63 | // Get FFprobe Path 64 | MainWindow.FFprobePath(); 65 | 66 | // ------------------------- 67 | // Write Properties to Window 68 | // ------------------------- 69 | try 70 | { 71 | Paragraph propertiesParagraph = new Paragraph(); //RichTextBox 72 | 73 | // Clear Rich Text Box on Start 74 | propertiesParagraph.Inlines.Clear(); 75 | 76 | // Start 77 | rtbFileProperties.Document = new FlowDocument(propertiesParagraph); 78 | 79 | Analyze.FFprobe.argsFileProperties = " -i" + " " + "\"" + VM.MainView.Input_Text + "\"" + " -v quiet -print_format ini -show_format -show_streams"; 80 | 81 | Analyze.FFprobe.inputFileProperties = Analyze.FFprobe.InputFileInfo(VM.MainView.Input_Text, 82 | VM.MainView.Batch_IsChecked, 83 | Analyze.FFprobe.argsFileProperties 84 | ); 85 | 86 | // Write All File Properties to Rich Text Box 87 | if (!string.IsNullOrEmpty(Analyze.FFprobe.inputFileProperties)) 88 | { 89 | rtbFileProperties.BeginChange(); // begin change 90 | 91 | propertiesParagraph.Inlines.Add(new Run(Analyze.FFprobe.inputFileProperties) { Foreground = Log.ConsoleDefault }); 92 | 93 | rtbFileProperties.EndChange(); // end change 94 | } 95 | } 96 | catch 97 | { 98 | 99 | } 100 | } 101 | 102 | 103 | /// 104 | /// Close 105 | /// 106 | private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 107 | { 108 | e.Cancel = true; 109 | this.Close(); 110 | } 111 | 112 | 113 | /// 114 | /// Expand Button 115 | /// 116 | private void buttonExpand_Click(object sender, RoutedEventArgs e) 117 | { 118 | // If less than 600px Height 119 | if (this.Height <= 650) 120 | { 121 | this.Width = 650; 122 | this.Height = 600; 123 | 124 | double screenWidth = SystemParameters.PrimaryScreenWidth; 125 | double screenHeight = SystemParameters.PrimaryScreenHeight; 126 | double windowWidth = this.Width; 127 | double windowHeight = this.Height; 128 | this.Left = (screenWidth / 2) - (windowWidth / 2); 129 | this.Top = (screenHeight / 2) - (windowHeight / 2); 130 | } 131 | } 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/DebugConsole.xaml: -------------------------------------------------------------------------------- 1 | 21 | 35 | 36 | 37 | 38 | 48 | 53 | 54 | 55 | 56 | 71 | 72 | 73 | 88 | 89 | 90 | 105 | 106 | 107 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /source/Troubleshooter/Axiom Troubleshooter/Axiom Troubleshooter.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | {4D52D5AA-715C-4081-BE1C-1EFF16DC55E9} 15 | v4.0 16 | ManagedCProj 17 | AxiomTroubleshooter 18 | 19 | 20 | 21 | Application 22 | true 23 | Pure 24 | Unicode 25 | 26 | 27 | Application 28 | false 29 | Pure 30 | Unicode 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | true 44 | 45 | 46 | false 47 | 48 | 49 | 50 | Level3 51 | Disabled 52 | WIN32;_DEBUG;%(PreprocessorDefinitions) 53 | Use 54 | 55 | 56 | true 57 | 58 | 59 | Windows 60 | main 61 | 62 | 63 | 64 | 65 | Level3 66 | WIN32;NDEBUG;%(PreprocessorDefinitions) 67 | Use 68 | 69 | 70 | true 71 | 72 | 73 | Windows 74 | main 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | Create 93 | Create 94 | 95 | 96 | 97 | 98 | CppForm 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | Form1.h 109 | Designer 110 | 111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | artifacts/ 46 | 47 | *_i.c 48 | *_p.c 49 | *_i.h 50 | *.ilk 51 | *.meta 52 | *.obj 53 | *.pch 54 | *.pdb 55 | *.pgc 56 | *.pgd 57 | *.rsp 58 | *.sbr 59 | *.tlb 60 | *.tli 61 | *.tlh 62 | *.tmp 63 | *.tmp_proj 64 | *.log 65 | *.vspscc 66 | *.vssscc 67 | .builds 68 | *.pidb 69 | *.svclog 70 | *.scc 71 | 72 | # Chutzpah Test files 73 | _Chutzpah* 74 | 75 | # Visual C++ cache files 76 | ipch/ 77 | *.aps 78 | *.ncb 79 | *.opendb 80 | *.opensdf 81 | *.sdf 82 | *.cachefile 83 | *.VC.db 84 | *.VC.VC.opendb 85 | 86 | # Visual Studio profiler 87 | *.psess 88 | *.vsp 89 | *.vspx 90 | *.sap 91 | 92 | # TFS 2012 Local Workspace 93 | $tf/ 94 | 95 | # Guidance Automation Toolkit 96 | *.gpState 97 | 98 | # ReSharper is a .NET coding add-in 99 | _ReSharper*/ 100 | *.[Rr]e[Ss]harper 101 | *.DotSettings.user 102 | 103 | # JustCode is a .NET coding add-in 104 | .JustCode 105 | 106 | # TeamCity is a build add-in 107 | _TeamCity* 108 | 109 | # DotCover is a Code Coverage Tool 110 | *.dotCover 111 | 112 | # NCrunch 113 | _NCrunch_* 114 | .*crunch*.local.xml 115 | nCrunchTemp_* 116 | 117 | # MightyMoose 118 | *.mm.* 119 | AutoTest.Net/ 120 | 121 | # Web workbench (sass) 122 | .sass-cache/ 123 | 124 | # Installshield output folder 125 | [Ee]xpress/ 126 | 127 | # DocProject is a documentation generator add-in 128 | DocProject/buildhelp/ 129 | DocProject/Help/*.HxT 130 | DocProject/Help/*.HxC 131 | DocProject/Help/*.hhc 132 | DocProject/Help/*.hhk 133 | DocProject/Help/*.hhp 134 | DocProject/Help/Html2 135 | DocProject/Help/html 136 | 137 | # Click-Once directory 138 | publish/ 139 | 140 | # Publish Web Output 141 | *.[Pp]ublish.xml 142 | *.azurePubxml 143 | # TODO: Comment the next line if you want to checkin your web deploy settings 144 | # but database connection strings (with potential passwords) will be unencrypted 145 | *.pubxml 146 | *.publishproj 147 | 148 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 149 | # checkin your Azure Web App publish settings, but sensitive information contained 150 | # in these scripts will be unencrypted 151 | PublishScripts/ 152 | 153 | # NuGet Packages 154 | *.nupkg 155 | # The packages folder can be ignored because of Package Restore 156 | **/packages/* 157 | # except build/, which is used as an MSBuild target. 158 | !**/packages/build/ 159 | # Uncomment if necessary however generally it will be regenerated when needed 160 | #!**/packages/repositories.config 161 | # NuGet v3's project.json files produces more ignoreable files 162 | *.nuget.props 163 | *.nuget.targets 164 | 165 | # Microsoft Azure Build Output 166 | csx/ 167 | *.build.csdef 168 | 169 | # Microsoft Azure Emulator 170 | ecf/ 171 | rcf/ 172 | 173 | # Windows Store app package directories and files 174 | AppPackages/ 175 | BundleArtifacts/ 176 | Package.StoreAssociation.xml 177 | _pkginfo.txt 178 | 179 | # Visual Studio cache files 180 | # files ending in .cache can be ignored 181 | *.[Cc]ache 182 | # but keep track of directories ending in .cache 183 | !*.[Cc]ache/ 184 | 185 | # Others 186 | ClientBin/ 187 | ~$* 188 | *~ 189 | *.dbmdl 190 | *.dbproj.schemaview 191 | *.pfx 192 | *.publishsettings 193 | node_modules/ 194 | orleans.codegen.cs 195 | 196 | # Since there are multiple workflows, uncomment next line to ignore bower_components 197 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 198 | #bower_components/ 199 | 200 | # RIA/Silverlight projects 201 | Generated_Code/ 202 | 203 | # Backup & report files from converting an old project file 204 | # to a newer Visual Studio version. Backup files are not needed, 205 | # because we have git ;-) 206 | _UpgradeReport_Files/ 207 | Backup*/ 208 | UpgradeLog*.XML 209 | UpgradeLog*.htm 210 | 211 | # SQL Server files 212 | *.mdf 213 | *.ldf 214 | 215 | # Business Intelligence projects 216 | *.rdl.data 217 | *.bim.layout 218 | *.bim_*.settings 219 | 220 | # Microsoft Fakes 221 | FakesAssemblies/ 222 | 223 | # GhostDoc plugin setting file 224 | *.GhostDoc.xml 225 | 226 | # Node.js Tools for Visual Studio 227 | .ntvs_analysis.dat 228 | 229 | # Visual Studio 6 build log 230 | *.plg 231 | 232 | # Visual Studio 6 workspace options file 233 | *.opt 234 | 235 | # Visual Studio LightSwitch build output 236 | **/*.HTMLClient/GeneratedArtifacts 237 | **/*.DesktopClient/GeneratedArtifacts 238 | **/*.DesktopClient/ModelManifest.xml 239 | **/*.Server/GeneratedArtifacts 240 | **/*.Server/ModelManifest.xml 241 | _Pvt_Extensions 242 | 243 | # Paket dependency manager 244 | .paket/paket.exe 245 | paket-files/ 246 | 247 | # FAKE - F# Make 248 | .fake/ 249 | 250 | # JetBrains Rider 251 | .idea/ 252 | *.sln.iml 253 | *.db 254 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Generators/Audio/Channel.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | /* ---------------------------------- 23 | METHODS 24 | 25 | * Channel 26 | ---------------------------------- */ 27 | 28 | using System; 29 | using System.Collections.Generic; 30 | using System.Data; 31 | using System.Linq; 32 | using System.Text.RegularExpressions; 33 | using System.Windows; 34 | using System.Windows.Documents; 35 | using ViewModel; 36 | using Axiom; 37 | // Disable XML Comment warnings 38 | #pragma warning disable 1591 39 | #pragma warning disable 1587 40 | #pragma warning disable 1570 41 | 42 | namespace Generate 43 | { 44 | namespace Audio 45 | { 46 | public class Channels 47 | { 48 | public static string aChannel { get; set; } 49 | 50 | /// 51 | /// Channel 52 | /// 53 | public static String Channel(string codec_SelectedItem, 54 | string channel_SelectedItem 55 | ) 56 | { 57 | // Check: 58 | // Audio Codec Not Copy 59 | if (codec_SelectedItem != "Copy") 60 | { 61 | switch (channel_SelectedItem) 62 | { 63 | // ------------------------- 64 | // Empty 65 | // ------------------------- 66 | case null: 67 | aChannel = string.Empty; 68 | break; 69 | 70 | case "": 71 | aChannel = string.Empty; 72 | break; 73 | 74 | // ------------------------- 75 | // Auto 76 | // ------------------------- 77 | case "Source": 78 | aChannel = string.Empty; 79 | break; 80 | 81 | // ------------------------- 82 | // Mono 83 | // ------------------------- 84 | case "Mono": 85 | aChannel = "-ac 1"; 86 | break; 87 | 88 | // ------------------------- 89 | // Stereo 90 | // ------------------------- 91 | case "Stereo": 92 | aChannel = "-ac 2"; 93 | break; 94 | 95 | // ------------------------- 96 | // Joint Stereo 97 | // ------------------------- 98 | case "Joint Stereo": 99 | aChannel = "-ac 2 -joint_stereo 1"; 100 | break; 101 | 102 | // ------------------------- 103 | // 5.1 104 | // ------------------------- 105 | case "5.1": 106 | aChannel = "-ac 6"; 107 | break; 108 | 109 | // ------------------------- 110 | // Default 111 | // ------------------------- 112 | default: 113 | aChannel = string.Empty; 114 | break; 115 | } 116 | 117 | // ------------------------- 118 | // Prevent Downmix Clipping 119 | // ------------------------- 120 | if (channel_SelectedItem != "Source") 121 | { 122 | aChannel = "-rematrix_maxval 1.0 " + aChannel; 123 | } 124 | 125 | 126 | // Log Console Message ///////// 127 | Log.WriteAction = () => 128 | { 129 | Log.logParagraph.Inlines.Add(new LineBreak()); 130 | Log.logParagraph.Inlines.Add(new Bold(new Run("Channel: ")) { Foreground = Log.ConsoleDefault }); 131 | Log.logParagraph.Inlines.Add(new Run(channel_SelectedItem) { Foreground = Log.ConsoleDefault }); 132 | }; 133 | Log.LogActions.Add(Log.WriteAction); 134 | } 135 | 136 | // Return Value 137 | return aChannel; 138 | } 139 | } 140 | } 141 | } 142 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Audio/None.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using ViewModel; 29 | 30 | namespace Controls.Audio.Codec 31 | { 32 | public class None : Controls.IAudioCodec 33 | { 34 | // --------------------------------------------------------------------------- 35 | // Codec 36 | // --------------------------------------------------------------------------- 37 | public ObservableCollection codec { get; set; } = new ObservableCollection() 38 | { 39 | new ViewModel.Audio.AudioCodec() { Codec = string.Empty, Parameters = string.Empty } 40 | }; 41 | 42 | // --------------------------------------------------------------------------- 43 | // Items Source 44 | // --------------------------------------------------------------------------- 45 | 46 | // ------------------------- 47 | // Stream 48 | // ------------------------- 49 | // Doesn't Change, List Source in ViewModel 50 | 51 | // ------------------------- 52 | // Channel 53 | // ------------------------- 54 | public ObservableCollection channel { get; set; } = new ObservableCollection() 55 | { 56 | "none" 57 | }; 58 | 59 | // ------------------------- 60 | // Quality 61 | // ------------------------- 62 | public ObservableCollection quality { get; set; } = new ObservableCollection() 63 | { 64 | new ViewModel.Audio.AudioQuality() { Name = "None", CBR_BitMode = "", CBR = "", VBR_BitMode = "", VBR = "", NA = ""} 65 | }; 66 | 67 | // ------------------------- 68 | // Compression Level 69 | // ------------------------- 70 | public ObservableCollection compressionLevel { get; set; } = new ObservableCollection() 71 | { 72 | "none" 73 | }; 74 | 75 | // ------------------------- 76 | // Sample Rate 77 | // ------------------------- 78 | public ObservableCollection sampleRate { get; set; } = new ObservableCollection() 79 | { 80 | new ViewModel.Audio.AudioSampleRate() { Name = "auto", Frequency = "" } 81 | }; 82 | 83 | // ------------------------- 84 | // Bit Depth 85 | // ------------------------- 86 | public ObservableCollection bitDepth { get; set; } = new ObservableCollection() 87 | { 88 | new ViewModel.Audio.AudioBitDepth() { Name = "auto", Depth = "" } 89 | }; 90 | 91 | 92 | // --------------------------------------------------------------------------- 93 | // Controls Behavior 94 | // --------------------------------------------------------------------------- 95 | 96 | // ------------------------- 97 | // Selected Items 98 | // ------------------------- 99 | public List controls_Selected { get; set; } = new List() 100 | { 101 | new ViewModel.Audio.Selected() { CompressionLevel = "none" }, 102 | }; 103 | 104 | // ------------------------- 105 | // Checked 106 | // ------------------------- 107 | public List controls_Checked { get; set; } = new List() 108 | { 109 | new ViewModel.Audio.Checked() { VBR = false }, 110 | }; 111 | 112 | // ------------------------- 113 | // Enabled 114 | // ------------------------- 115 | public List controls_Enabled { get; set; } = new List() 116 | { 117 | new ViewModel.Audio.Enabled() 118 | { 119 | Codec = true, 120 | Stream = false, 121 | Channel = false, 122 | Quality = false, 123 | CompressionLevel = false, 124 | VBR = false, 125 | SampleRate = false, 126 | BitDepth = false, 127 | Volume = false, 128 | HardLimiter = false 129 | }, 130 | 131 | // All other controls are set through Format.Controls.MediaTypeControls() 132 | }; 133 | 134 | } 135 | 136 | } 137 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Generators/Encode.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | /* ---------------------------------- 23 | METHODS 24 | 25 | * KeepWindow 26 | * Generate Single FFmpeg Args 27 | * FFmpeg Script 28 | * FFmpeg Start 29 | * FFmpeg Convert 30 | ---------------------------------- */ 31 | 32 | using System; 33 | using System.Collections.Generic; 34 | using System.Data; 35 | using System.IO; 36 | using System.Linq; 37 | using System.Text.RegularExpressions; 38 | using System.Windows; 39 | using System.Windows.Documents; 40 | using ViewModel; 41 | using Axiom; 42 | using System.Collections; 43 | using System.Threading.Tasks; 44 | // Disable XML Comment warnings 45 | #pragma warning disable 1591 46 | #pragma warning disable 1587 47 | #pragma warning disable 1570 48 | 49 | namespace Encode 50 | { 51 | public partial class FFmpeg 52 | { 53 | /// 54 | /// FFmpeg Start 55 | /// 56 | public static async Task FFmpegStartAsync(string args) 57 | { 58 | int count = 0; 59 | await Task.Run(() => 60 | { 61 | FFmpegStart(args); 62 | }); 63 | 64 | return count; 65 | } 66 | public static void FFmpegStart(string args) 67 | { 68 | // ------------------------- 69 | // Start FFmpeg Process 70 | // ------------------------- 71 | switch (VM.ConfigureView.Shell_SelectedItem) 72 | { 73 | // ------------------------- 74 | // CMD 75 | // ------------------------- 76 | case "CMD": 77 | System.Diagnostics.Process.Start( 78 | "cmd.exe", 79 | Sys.Shell.KeepWindow() + 80 | // Do not use WrapWithQuotes() Method on outputDir 81 | "cd " + "\"" + MainWindow.outputDir + "\"" + 82 | " & " + 83 | args 84 | ); 85 | break; 86 | 87 | // ------------------------- 88 | // PowerShell 89 | // ------------------------- 90 | case "PowerShell": 91 | System.Diagnostics.Process.Start( 92 | "powershell.exe", 93 | Sys.Shell.KeepWindow() + 94 | // Do not use WrapWithQuotes() Method on outputDir 95 | "-command \"Set-Location " + "\"" + MainWindow.outputDir.Replace("\\", "\\\\") // Format Backslashes for PowerShell \ → \\ 96 | .Replace("\"", "\\\"") + // Format Quotes " → \" 97 | "\"" + 98 | "; " + 99 | args.Replace("\"", "\\\"") // Format Quotes " → \" 100 | ); 101 | break; 102 | } 103 | } 104 | 105 | 106 | /// 107 | /// FFmpeg Convert 108 | /// 109 | //public static async Task FFmpegConvertAsync() 110 | //{ 111 | // int count = 0; 112 | // await Task.Run(() => 113 | // { 114 | // FFmpegConvert(); 115 | // }); 116 | 117 | // return count; 118 | //} 119 | //public async static void FFmpegConvert() 120 | //{ 121 | // Log.WriteAction = () => 122 | // { 123 | // Log.logParagraph.Inlines.Add(new LineBreak()); 124 | // Log.logParagraph.Inlines.Add(new LineBreak()); 125 | // Log.logParagraph.Inlines.Add(new Bold(new Run("Converting...")) { Foreground = Log.ConsoleAction }); 126 | // }; 127 | // Log.LogActions.Add(Log.WriteAction); 128 | 129 | // // ------------------------- 130 | // // Generate Controls Script 131 | // // ------------------------- 132 | // // Inline 133 | // // FFmpegArgs → ScriptView 134 | // //Generate.FFmpeg.FFmpegGenerateScript(); 135 | // Task script = Generate.FFmpeg.FFmpegGenerateScriptAsync(); 136 | // int count1 = await script; 137 | 138 | // // ------------------------- 139 | // // Start FFmpeg 140 | // // ------------------------- 141 | // // ScriptView → CMD/PowerShell 142 | // //FFmpegStart(MainWindow.ReplaceLineBreaksWithSpaces(VM.MainView.ScriptView_Text)); 143 | // //Task.Run(() => FFmpegStart(MainWindow.ReplaceLineBreaksWithSpaces(VM.MainView.ScriptView_Text))); 144 | // Task start = FFmpegStartAsync(MainWindow.ReplaceLineBreaksWithSpaces(VM.MainView.ScriptView_Text)); 145 | // int count2 = await start; 146 | //} 147 | 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![https://github.com/MattMcManis/Axiom](https://raw.githubusercontent.com/MattMcManis/Axiom/master/images/axiom-logo-128.png) 2 | 3 | # Axiom 4 | An FFmpeg GUI for Windows 5 | 6 | * [Overview](#overview) 7 | * [Features](#features) 8 | * [Downloads](#downloads) 9 | * [Installation](#installation) 10 | * [Examples](https://github.com/MattMcManis/Axiom/wiki/Examples) 11 | * [Build](#build) 12 | 13 |   14 | 15 | ## Overview 16 | Axiom generates command scripts to be processed by the multimedia encoder, [FFmpeg](https://www.ffmpeg.org), and streams analyzer, [FFprobe](https://ffmpeg.org/ffprobe.html). 17 | 18 | Convert to `webm`, `mp4`, `mkv`, `avi`, `ogv`, `mp3`, `m4a`, `ogg`, `flac`, `wav`, `png`, `jpg`, `webp` and more. 19 | 20 | ![Axiom](https://raw.githubusercontent.com/MattMcManis/Axiom/master/images/axiom.png) 21 | 22 |   23 | 24 | ### Features 25 | * The Power of FFmpeg in a Minimal Interface 26 | * Convert any media file to multiple formats 27 | * Cut Video and Audio timeline 28 | * Resize Video to standard aspect ratios 29 | * Lossless, Constant and Variable Quality 30 | * Auto-Quality and Copy Modes 31 | * Advanced Batch Processing 32 | * Video to Image Sequence 33 | * Custom User Defined Settings 34 | * Command Script Generator 35 | 36 |   37 | 38 | ## Downloads 39 | ### Axiom 40 | [Latest Release](https://github.com/MattMcManis/Axiom/releases) 41 | 42 | **Included Files** 43 | - Axiom UI 44 | - [FFmpeg](http://www.ffmpeg.org/download.html#build-windows) 45 | - [youtube-dl](https://github.com/ytdl-org/youtube-dl/releases) 46 | - Install Instructions 47 | - [User Guide pdf](https://github.com/MattMcManis/Axiom/blob/master/docs/User%20Guide.pdf) 48 | - Troubleshooter 49 | 50 | **Requirements** 51 | - Extract 7z file with [7-Zip](https://www.7-zip.org) 52 | - Axiom [Microsoft .NET Framework 4.5](https://www.microsoft.com/en-us/download/details.aspx?id=30653) 53 | - youtube-dl [Visual C++ 2010 x86](https://www.microsoft.com/en-US/download/details.aspx?id=5555) & [Python](https://www.python.org) (2.6, 2.7, or 3.2+) 54 | 55 | ### FFmpeg Builds 56 | https://www.gyan.dev/ffmpeg/builds 57 | https://github.com/BtbN/FFmpeg-Builds/releases 58 | 59 |   60 | 61 | ## Installation 62 | Axiom is portable and can be run from any location on the computer. 63 | 64 | 1. Extract `Axiom.FFmpeg.7z` to a location of your choice. 65 | 2. Run `Axiom.exe` or create a shortcut on the Desktop. 66 | 3. It will automatically detect `ffmpeg.exe` and `ffprobe.exe` in the included `ffmpeg` folder. 67 | 4. If you move the `ffmpeg` folder, set the Windows Environment Variable or specify a path in the Axiom Settings Tab. 68 | 69 | #### Add FFmpeg to Environment Variables (optional): 70 | 71 | 1. Move the `ffmpeg` folder to a location of your choice, such as `C:\Program Files\`. 72 | 2. Go to Control Panel → System and Security → System → Advanced system settings 73 | 3. Advanced Tab → Environment Variables → System variables → Path 74 | 4. Add `C:\Program Files\ffmpeg\bin\` 75 | 5. Separate multiple paths with a semicolon `;` (Windows 7, 8, 8.1) 76 | 6. Typing `ffmpeg` in Command Prompt will now execute without needing to specify a direct path. 77 | 78 | 79 | 80 | --- 81 | 82 | #### YouTube Download 83 | `youtube-dl.exe` is included in `Axiom.FFmpeg.7z`. 84 | Requires [Microsoft Visual C++ 2010 x86](https://www.microsoft.com/en-US/download/details.aspx?id=5555) & [Python](https://www.python.org) (2.6, 2.7, or 3.2+) installed. 85 | 86 | Axiom will auto-detect it in its included folder. You can also add it to Windows Environment Variables or specify a path in the Axiom Settings Tab. 87 | 88 | 1. Paste a YouTube URL into the Input TextBox 89 | 2. Download file only: 90 | - Select Preset: `YouTube-DL` → `Video` or `Music`, Press `Download` 91 | 3. Download and Convert: 92 | - Select any Presets or Settings you need and Press `Convert` 93 | 4. Generate a Script without Downloading: 94 | - Select any Settings you need and Press `Script` 95 | 96 |   97 | 98 | ## Resources 99 | * [Axiom Wiki](https://github.com/MattMcManis/Axiom/wiki) 100 | * [FFmpeg Wiki](https://trac.ffmpeg.org/wiki) 101 | * [FFmpeg Documentation](https://ffmpeg.org/ffmpeg.html) 102 | * [FFmpeg Filters](https://ffmpeg.org/ffmpeg-filters.html) 103 | * Video Codecs [VP8](https://trac.ffmpeg.org/wiki/Encode/VP8), [VP9](https://trac.ffmpeg.org/wiki/Encode/VP9), [x264](https://trac.ffmpeg.org/wiki/Encode/H.264), [x265](https://trac.ffmpeg.org/wiki/Encode/H.265), [AV1](https://trac.ffmpeg.org/wiki/Encode/AV1) 104 | * Audio Codecs [AC3](https://en.wikipedia.org/wiki/Dolby_Digital), [AAC](https://trac.ffmpeg.org/wiki/Encode/AAC), [Opus](https://en.wikipedia.org/wiki/Opus_(audio_format)), [Vorbis](https://en.wikipedia.org/wiki/Vorbis), [MP3](https://trac.ffmpeg.org/wiki/Encode/MP3), [FLAC](https://en.wikipedia.org/wiki/FLAC) 105 | * [CRF Quality Guide](https://slhck.info/video/2017/02/24/crf-guide.html) 106 | * [VBR Quality Guide](https://slhck.info/video/2017/02/24/vbr-settings.html) 107 | * [Scaling Algorithms](https://i.imgur.com/5jO3ay1.png) 108 | * x264/x265 [Profiles](https://en.wikipedia.org/wiki/Advanced_Video_Coding#Profiles), [Levels](https://en.wikipedia.org/wiki/Advanced_Video_Coding#Levels), [Tune](https://superuser.com/a/564404) 109 | * [Color Space](https://www.richardlackey.com/choosing-video-color-space/) 110 | * [Hardware Acceleration](https://trac.ffmpeg.org/wiki/HWAccelIntro) 111 | 112 |   113 | 114 | ## Build 115 | Visual Studio 2015 116 |
117 | WPF, C#, XAML 118 |
119 | Visual C++ 19.0 Compiler 120 | 121 |   122 | 123 | [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VTUE7KQ8RS3DN) 124 | 125 | Thank you for your support. 126 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/InfoWindow.xaml: -------------------------------------------------------------------------------- 1 | 21 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 48 | 50 | 52 | 125 | 126 | 127 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/CropWindow.xaml: -------------------------------------------------------------------------------- 1 | 21 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 169 | 170 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Audio/MP2.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using ViewModel; 29 | 30 | namespace Controls.Audio.Codec 31 | { 32 | public class MP2 : Controls.IAudioCodec 33 | { 34 | // --------------------------------------------------------------------------- 35 | // Codec 36 | // --------------------------------------------------------------------------- 37 | public ObservableCollection codec { get; set; } = new ObservableCollection() 38 | { 39 | new ViewModel.Audio.AudioCodec() { Codec = "mp2", Parameters = "" } 40 | }; 41 | 42 | 43 | // --------------------------------------------------------------------------- 44 | // Items Source 45 | // --------------------------------------------------------------------------- 46 | 47 | // ------------------------- 48 | // Stream 49 | // ------------------------- 50 | // Doesn't Change, List Source in ViewModel 51 | 52 | // ------------------------- 53 | // Channel 54 | // ------------------------- 55 | public ObservableCollection channel { get; set; } = new ObservableCollection() 56 | { 57 | "Source", 58 | "Mono", 59 | "Stereo", 60 | "5.1" 61 | }; 62 | 63 | // ------------------------- 64 | // Quality 65 | // ------------------------- 66 | public ObservableCollection quality { get; set; } = new ObservableCollection() 67 | { 68 | new ViewModel.Audio.AudioQuality() { Name = "Auto", CBR_BitMode = "-b:a", CBR = "", VBR_BitMode = "-q:a", VBR = "0", NA = "384" }, 69 | new ViewModel.Audio.AudioQuality() { Name = "384", CBR_BitMode = "-b:a", CBR = "384", VBR_BitMode = "-q:a", VBR = "0" }, 70 | new ViewModel.Audio.AudioQuality() { Name = "320", CBR_BitMode = "-b:a", CBR = "320", VBR_BitMode = "-q:a", VBR = "0" }, 71 | new ViewModel.Audio.AudioQuality() { Name = "256", CBR_BitMode = "-b:a", CBR = "256", VBR_BitMode = "-q:a", VBR = "0" }, 72 | new ViewModel.Audio.AudioQuality() { Name = "224", CBR_BitMode = "-b:a", CBR = "224", VBR_BitMode = "-q:a", VBR = "1" }, 73 | new ViewModel.Audio.AudioQuality() { Name = "192", CBR_BitMode = "-b:a", CBR = "192", VBR_BitMode = "-q:a", VBR = "2" }, 74 | new ViewModel.Audio.AudioQuality() { Name = "160", CBR_BitMode = "-b:a", CBR = "160", VBR_BitMode = "-q:a", VBR = "3" }, 75 | new ViewModel.Audio.AudioQuality() { Name = "128", CBR_BitMode = "-b:a", CBR = "128", VBR_BitMode = "-q:a", VBR = "5" }, 76 | new ViewModel.Audio.AudioQuality() { Name = "96", CBR_BitMode = "-b:a", CBR = "96", VBR_BitMode = "-q:a", VBR = "7" }, 77 | new ViewModel.Audio.AudioQuality() { Name = "64", CBR_BitMode = "-b:a", CBR = "64", VBR_BitMode = "-q:a", VBR = "9" }, 78 | new ViewModel.Audio.AudioQuality() { Name = "Custom", CBR_BitMode = "-b:a", CBR = "", VBR_BitMode = "-q:a", VBR = "" }, 79 | new ViewModel.Audio.AudioQuality() { Name = "Mute", CBR_BitMode = "", CBR = "", VBR_BitMode = "", VBR = "" } 80 | }; 81 | 82 | // ------------------------- 83 | // Compression Level 84 | // ------------------------- 85 | public ObservableCollection compressionLevel { get; set; } = new ObservableCollection() 86 | { 87 | "auto" 88 | }; 89 | 90 | // ------------------------- 91 | // Sample Rate 92 | // ------------------------- 93 | public ObservableCollection sampleRate { get; set; } = new ObservableCollection() 94 | { 95 | new ViewModel.Audio.AudioSampleRate() { Name = "auto", Frequency = "" }, 96 | new ViewModel.Audio.AudioSampleRate() { Name = "16k", Frequency = "16000" }, 97 | new ViewModel.Audio.AudioSampleRate() { Name = "22.05k", Frequency = "22050" }, 98 | new ViewModel.Audio.AudioSampleRate() { Name = "24k", Frequency = "24000" }, 99 | new ViewModel.Audio.AudioSampleRate() { Name = "32k", Frequency = "32000" }, 100 | new ViewModel.Audio.AudioSampleRate() { Name = "44.1k", Frequency = "44100" }, 101 | new ViewModel.Audio.AudioSampleRate() { Name = "48k", Frequency = "48000" }, 102 | }; 103 | 104 | // ------------------------- 105 | // Bit Depth 106 | // ------------------------- 107 | public ObservableCollection bitDepth { get; set; } = new ObservableCollection() 108 | { 109 | new ViewModel.Audio.AudioBitDepth() { Name = "auto", Depth = "" } 110 | }; 111 | 112 | 113 | // --------------------------------------------------------------------------- 114 | // Controls Behavior 115 | // --------------------------------------------------------------------------- 116 | 117 | // ------------------------- 118 | // Selected Items 119 | // ------------------------- 120 | public List controls_Selected { get; set; } = new List() 121 | { 122 | new ViewModel.Audio.Selected() { CompressionLevel = "auto" }, 123 | }; 124 | 125 | // ------------------------- 126 | // Checked 127 | // ------------------------- 128 | public List controls_Checked { get; set; } = new List() 129 | { 130 | new ViewModel.Audio.Checked() { VBR = false }, 131 | }; 132 | 133 | // ------------------------- 134 | // Enabled 135 | // ------------------------- 136 | public List controls_Enabled { get; set; } = new List() 137 | { 138 | new ViewModel.Audio.Enabled() 139 | { 140 | Quality = true, 141 | CompressionLevel = false, 142 | VBR = true, 143 | SampleRate = true, 144 | BitDepth = false, 145 | }, 146 | 147 | // All other controls are set through Format.Controls.MediaTypeControls() 148 | }; 149 | 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Preview/FFplay.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Linq; 25 | using System.Windows; 26 | using ViewModel; 27 | using Axiom; 28 | // Disable XML Comment warnings 29 | #pragma warning disable 1591 30 | #pragma warning disable 1587 31 | #pragma warning disable 1570 32 | 33 | namespace Preview 34 | { 35 | public class FFplay 36 | { 37 | // FFplay 38 | public static string ffplay { get; set; } // ffplay.exe 39 | 40 | /// 41 | /// Preview FFplay 42 | /// 43 | public static void Preview() 44 | { 45 | // ------------------------- 46 | // Clear Variables before Run 47 | // ------------------------- 48 | ffplay = string.Empty; 49 | MainWindow.ClearGlobalVariables(); 50 | 51 | // Ignore if Batch 52 | if (VM.MainView.Batch_IsChecked == false) 53 | { 54 | // ------------------------- 55 | // Set FFprobe Path 56 | // ------------------------- 57 | MainWindow.FFplayPath(); 58 | 59 | // ------------------------- 60 | // Arguments List 61 | // ------------------------- 62 | List FFplayArgsList = new List() 63 | { 64 | //ffplay, 65 | 66 | "-i " + "\"" + MainWindow.InputPath("pass 1") + "\"", 67 | 68 | Generate.Audio.Audio.AudioMux(VM.AudioView.Audio_Codec_SelectedItem, 69 | VM.AudioView.Audio_Stream_SelectedItem 70 | ), 71 | 72 | Generate.Subtitle.Subtitle.SubtitlesMux(VM.SubtitleView.Subtitle_Codec_SelectedItem, 73 | VM.SubtitleView.Subtitle_Stream_SelectedItem 74 | ), 75 | 76 | //Video.VideoCodec(), 77 | //Video.Speed(), 78 | //Video.VideoQuality(), 79 | Generate.Video.Video.FPS(VM.VideoView.Video_Codec_SelectedItem, 80 | VM.VideoView.Video_FPS_SelectedItem, 81 | VM.VideoView.Video_FPS_Text 82 | ), 83 | 84 | Filters.Video.VideoFilter(), 85 | 86 | Generate.Video.Video.Images(VM.FormatView.Format_MediaType_SelectedItem, 87 | VM.VideoView.Video_Codec_SelectedItem 88 | ), 89 | //Video.Optimize(), 90 | //Streams.VideoStreamMaps(), 91 | 92 | //Video.SubtitleCodec(), 93 | //"Streams.SubtitleMaps(), 94 | 95 | //Audio.AudioCodec(), 96 | //Audio.AudioQuality(), 97 | Generate.Audio.Quality.SampleRate(VM.AudioView.Audio_Codec_SelectedItem, 98 | VM.AudioView.Audio_SampleRate_Items, 99 | VM.AudioView.Audio_SampleRate_SelectedItem 100 | ), 101 | 102 | Generate.Audio.Quality.BitDepth(VM.AudioView.Audio_Codec_SelectedItem, 103 | VM.AudioView.Audio_BitDepth_Items, 104 | VM.AudioView.Audio_BitDepth_SelectedItem 105 | ), 106 | 107 | Generate.Audio.Channels.Channel(VM.AudioView.Audio_Codec_SelectedItem, 108 | VM.AudioView.Audio_Channel_SelectedItem 109 | ), 110 | 111 | Filters.Audio.AudioFilter(), 112 | //Streams.AudioStreamMaps(), 113 | 114 | //Format.Cut(), 115 | 116 | //Streams.FormatMaps(), 117 | 118 | //Format.ForceFormat(), 119 | 120 | //MainWindow.ThreadDetect(), 121 | 122 | //"\"" + MainWindow.OutputPath() + "\"" 123 | }; 124 | 125 | 126 | // Join List with Spaces 127 | // Remove: Empty, Null, Standalone LineBreak 128 | string ffplayArgs = MainWindow.ReplaceLineBreaksWithSpaces( 129 | string.Join(" ", FFplayArgsList 130 | .Where(s => !string.IsNullOrWhiteSpace(s)) 131 | .Where(s => !s.Equals(Environment.NewLine)) 132 | .Where(s => !s.Equals("\r\n\r\n")) 133 | .Where(s => !s.Equals("\r\n")) 134 | .Where(s => !s.Equals("\n")) 135 | .Where(s => !s.Equals("\u2028")) 136 | .Where(s => !s.Equals("\u000A")) 137 | .Where(s => !s.Equals("\u000B")) 138 | .Where(s => !s.Equals("\u000C")) 139 | .Where(s => !s.Equals("\u000D")) 140 | .Where(s => !s.Equals("\u0085")) 141 | .Where(s => !s.Equals("\u2028")) 142 | .Where(s => !s.Equals("\u2029")) 143 | ) 144 | ); 145 | //MessageBox.Show(ffplayArgs); //debug 146 | 147 | 148 | // Start FFplay 149 | System.Diagnostics.Process.Start( 150 | ffplay, 151 | //"/c " //always close cmd 152 | //FFmpeg.KeepWindow(mainwindow) 153 | ffplayArgs 154 | ); 155 | } 156 | 157 | // Batch Warning 158 | else 159 | { 160 | MessageBox.Show("Cannot Preview Batch.", 161 | "Notice", 162 | MessageBoxButton.OK, 163 | MessageBoxImage.Information); 164 | } 165 | } 166 | 167 | } 168 | } 169 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Audio/LAME.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using ViewModel; 29 | 30 | namespace Controls.Audio.Codec 31 | { 32 | public class LAME : Controls.IAudioCodec 33 | { 34 | // --------------------------------------------------------------------------- 35 | // Codec 36 | // --------------------------------------------------------------------------- 37 | public ObservableCollection codec { get; set; } = new ObservableCollection() 38 | { 39 | new ViewModel.Audio.AudioCodec() { Codec = "libmp3lame", Parameters = "" } 40 | }; 41 | 42 | 43 | // --------------------------------------------------------------------------- 44 | // Items Source 45 | // --------------------------------------------------------------------------- 46 | 47 | // ------------------------- 48 | // Stream 49 | // ------------------------- 50 | // Doesn't Change, List Source in ViewModel 51 | 52 | // ------------------------- 53 | // Channel 54 | // ------------------------- 55 | public ObservableCollection channel { get; set; } = new ObservableCollection() 56 | { 57 | "Source", 58 | "Mono", 59 | "Stereo", 60 | "Joint Stereo", 61 | "5.1" 62 | }; 63 | 64 | // ------------------------- 65 | // Quality 66 | // ------------------------- 67 | public ObservableCollection quality { get; set; } = new ObservableCollection() 68 | { 69 | new ViewModel.Audio.AudioQuality() { Name = "Auto", CBR_BitMode = "-b:a", CBR = "", VBR_BitMode = "-q:a", VBR = "0", NA = "320" }, 70 | new ViewModel.Audio.AudioQuality() { Name = "320", CBR_BitMode = "-b:a", CBR = "320", VBR_BitMode = "-q:a", VBR = "0" }, 71 | new ViewModel.Audio.AudioQuality() { Name = "256", CBR_BitMode = "-b:a", CBR = "256", VBR_BitMode = "-q:a", VBR = "0" }, 72 | new ViewModel.Audio.AudioQuality() { Name = "224", CBR_BitMode = "-b:a", CBR = "224", VBR_BitMode = "-q:a", VBR = "1" }, 73 | new ViewModel.Audio.AudioQuality() { Name = "192", CBR_BitMode = "-b:a", CBR = "192", VBR_BitMode = "-q:a", VBR = "2" }, 74 | new ViewModel.Audio.AudioQuality() { Name = "160", CBR_BitMode = "-b:a", CBR = "160", VBR_BitMode = "-q:a", VBR = "3" }, 75 | new ViewModel.Audio.AudioQuality() { Name = "128", CBR_BitMode = "-b:a", CBR = "128", VBR_BitMode = "-q:a", VBR = "5" }, 76 | new ViewModel.Audio.AudioQuality() { Name = "96", CBR_BitMode = "-b:a", CBR = "96", VBR_BitMode = "-q:a", VBR = "7" }, 77 | new ViewModel.Audio.AudioQuality() { Name = "64", CBR_BitMode = "-b:a", CBR = "64", VBR_BitMode = "-q:a", VBR = "9" }, 78 | new ViewModel.Audio.AudioQuality() { Name = "Custom", CBR_BitMode = "-b:a", CBR = "", VBR_BitMode = "-q:a", VBR = "" }, 79 | new ViewModel.Audio.AudioQuality() { Name = "Mute", CBR_BitMode = "", CBR = "", VBR_BitMode = "", VBR = "" } 80 | }; 81 | 82 | // ------------------------- 83 | // Compression Level 84 | // ------------------------- 85 | public ObservableCollection compressionLevel { get; set; } = new ObservableCollection() 86 | { 87 | "auto" 88 | }; 89 | 90 | // ------------------------- 91 | // Sample Rate 92 | // ------------------------- 93 | public ObservableCollection sampleRate { get; set; } = new ObservableCollection() 94 | { 95 | new ViewModel.Audio.AudioSampleRate() { Name = "auto", Frequency = "" }, 96 | new ViewModel.Audio.AudioSampleRate() { Name = "8k", Frequency = "8000" }, 97 | new ViewModel.Audio.AudioSampleRate() { Name = "11.025k", Frequency = "11025" }, 98 | new ViewModel.Audio.AudioSampleRate() { Name = "12k", Frequency = "12000" }, 99 | new ViewModel.Audio.AudioSampleRate() { Name = "16k", Frequency = "16000" }, 100 | new ViewModel.Audio.AudioSampleRate() { Name = "22.05k", Frequency = "22050" }, 101 | new ViewModel.Audio.AudioSampleRate() { Name = "24k", Frequency = "24000" }, 102 | new ViewModel.Audio.AudioSampleRate() { Name = "32k", Frequency = "32000" }, 103 | new ViewModel.Audio.AudioSampleRate() { Name = "44.1k", Frequency = "44100" }, 104 | new ViewModel.Audio.AudioSampleRate() { Name = "48k", Frequency = "48000" }, 105 | }; 106 | 107 | // ------------------------- 108 | // Bit Depth 109 | // ------------------------- 110 | public ObservableCollection bitDepth { get; set; } = new ObservableCollection() 111 | { 112 | new ViewModel.Audio.AudioBitDepth() { Name = "auto", Depth = "" } 113 | }; 114 | 115 | 116 | 117 | // --------------------------------------------------------------------------- 118 | // Controls Behavior 119 | // --------------------------------------------------------------------------- 120 | // ------------------------- 121 | // Selected Items 122 | // ------------------------- 123 | public List controls_Selected { get; set; } = new List() 124 | { 125 | new ViewModel.Audio.Selected() { CompressionLevel = "auto" }, 126 | }; 127 | 128 | // ------------------------- 129 | // Checked 130 | // ------------------------- 131 | public List controls_Checked { get; set; } = new List() 132 | { 133 | new ViewModel.Audio.Checked() { VBR = true }, 134 | }; 135 | 136 | // ------------------------- 137 | // Enabled 138 | // ------------------------- 139 | public List controls_Enabled { get; set; } = new List() 140 | { 141 | new ViewModel.Audio.Enabled() 142 | { 143 | Quality = true, 144 | CompressionLevel = false, 145 | VBR = true, 146 | SampleRate = true, 147 | BitDepth = false, 148 | }, 149 | 150 | // All other controls are set through Format.Controls.MediaTypeControls() 151 | }; 152 | } 153 | 154 | } 155 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Audio/Opus.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using ViewModel; 29 | 30 | namespace Controls.Audio.Codec 31 | { 32 | public class Opus : Controls.IAudioCodec 33 | { 34 | // --------------------------------------------------------------------------- 35 | // Codec 36 | // --------------------------------------------------------------------------- 37 | public ObservableCollection codec { get; set; } = new ObservableCollection() 38 | { 39 | new ViewModel.Audio.AudioCodec() { Codec = "libopus", Parameters = "" } 40 | }; 41 | 42 | 43 | // --------------------------------------------------------------------------- 44 | // Items Source 45 | // --------------------------------------------------------------------------- 46 | 47 | // ------------------------- 48 | // Stream 49 | // ------------------------- 50 | // Doesn't Change, List Source in ViewModel 51 | 52 | // ------------------------- 53 | // Channel 54 | // ------------------------- 55 | public ObservableCollection channel { get; set; } = new ObservableCollection() 56 | { 57 | "Source", 58 | "Mono", 59 | "Stereo", 60 | "5.1" 61 | }; 62 | 63 | // ------------------------- 64 | // Quality 65 | // ------------------------- 66 | public ObservableCollection quality { get; set; } = new ObservableCollection() 67 | { 68 | new ViewModel.Audio.AudioQuality() { Name = "Auto", CBR_BitMode = "-b:a", CBR = "", VBR_BitMode="-vbr on -b:a", VBR = "256", NA = "265" }, 69 | new ViewModel.Audio.AudioQuality() { Name = "510", CBR_BitMode = "-b:a", CBR = "510", VBR_BitMode="-vbr on -b:a", VBR = "256" }, 70 | new ViewModel.Audio.AudioQuality() { Name = "320", CBR_BitMode = "-b:a", CBR = "320", VBR_BitMode="-vbr on -b:a", VBR = "256" }, 71 | new ViewModel.Audio.AudioQuality() { Name = "256", CBR_BitMode = "-b:a", CBR = "256", VBR_BitMode="-vbr on -b:a", VBR = "256" }, 72 | new ViewModel.Audio.AudioQuality() { Name = "224", CBR_BitMode = "-b:a", CBR = "224", VBR_BitMode="-vbr on -b:a", VBR = "224" }, 73 | new ViewModel.Audio.AudioQuality() { Name = "192", CBR_BitMode = "-b:a", CBR = "192", VBR_BitMode="-vbr on -b:a", VBR = "192" }, 74 | new ViewModel.Audio.AudioQuality() { Name = "160", CBR_BitMode = "-b:a", CBR = "160", VBR_BitMode="-vbr on -b:a", VBR = "160" }, 75 | new ViewModel.Audio.AudioQuality() { Name = "128", CBR_BitMode = "-b:a", CBR = "128", VBR_BitMode="-vbr on -b:a", VBR = "128" }, 76 | new ViewModel.Audio.AudioQuality() { Name = "96", CBR_BitMode = "-b:a", CBR = "96", VBR_BitMode="-vbr on -b:a", VBR = "96" }, 77 | new ViewModel.Audio.AudioQuality() { Name = "64", CBR_BitMode = "-b:a", CBR = "64", VBR_BitMode="-vbr on -b:a", VBR = "64" }, 78 | new ViewModel.Audio.AudioQuality() { Name = "Custom", CBR_BitMode = "-b:a", CBR = "", VBR_BitMode="-vbr on -b:a", VBR = "" }, 79 | new ViewModel.Audio.AudioQuality() { Name = "Mute", CBR_BitMode = "", CBR = "", VBR_BitMode="", VBR = "" } 80 | }; 81 | 82 | // ------------------------- 83 | // Compression Level 84 | // ------------------------- 85 | public ObservableCollection compressionLevel { get; set; } = new ObservableCollection() 86 | { 87 | "auto", 88 | "0", 89 | "1", 90 | "2", 91 | "3", 92 | "4", 93 | "5", 94 | "6", 95 | "7", 96 | "8", 97 | "9", 98 | "10", 99 | }; 100 | 101 | // ------------------------- 102 | // Sample Rate 103 | // ------------------------- 104 | public ObservableCollection sampleRate { get; set; } = new ObservableCollection() 105 | { 106 | new ViewModel.Audio.AudioSampleRate() { Name = "auto", Frequency = "" }, 107 | new ViewModel.Audio.AudioSampleRate() { Name = "8k", Frequency = "8000" }, 108 | new ViewModel.Audio.AudioSampleRate() { Name = "12k", Frequency = "12000" }, 109 | new ViewModel.Audio.AudioSampleRate() { Name = "16k", Frequency = "16000" }, 110 | new ViewModel.Audio.AudioSampleRate() { Name = "24k", Frequency = "24000" }, 111 | new ViewModel.Audio.AudioSampleRate() { Name = "48k", Frequency = "48000" }, 112 | }; 113 | 114 | // ------------------------- 115 | // Bit Depth 116 | // ------------------------- 117 | public ObservableCollection bitDepth { get; set; } = new ObservableCollection() 118 | { 119 | new ViewModel.Audio.AudioBitDepth() { Name = "auto", Depth = "" } 120 | }; 121 | 122 | 123 | // --------------------------------------------------------------------------- 124 | // Controls Behavior 125 | // --------------------------------------------------------------------------- 126 | 127 | // ------------------------- 128 | // Selected Items 129 | // ------------------------- 130 | public List controls_Selected { get; set; } = new List() 131 | { 132 | new ViewModel.Audio.Selected() { CompressionLevel = "10" }, 133 | }; 134 | 135 | // ------------------------- 136 | // Checked 137 | // ------------------------- 138 | public List controls_Checked { get; set; } = new List() 139 | { 140 | new ViewModel.Audio.Checked() { VBR = false }, 141 | }; 142 | 143 | // ------------------------- 144 | // Enabled 145 | // ------------------------- 146 | public List controls_Enabled { get; set; } = new List() 147 | { 148 | new ViewModel.Audio.Enabled() 149 | { 150 | Quality = true, 151 | CompressionLevel = true, 152 | VBR = true, 153 | SampleRate = true, 154 | BitDepth = false, 155 | }, 156 | 157 | // All other controls are set through Format.Controls.MediaTypeControls() 158 | }; 159 | 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Audio/Vorbis.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using System.Text; 27 | using System.Threading.Tasks; 28 | using ViewModel; 29 | 30 | namespace Controls.Audio.Codec 31 | { 32 | public class Vorbis : Controls.IAudioCodec 33 | { 34 | 35 | // --------------------------------------------------------------------------- 36 | // Codec 37 | // --------------------------------------------------------------------------- 38 | public ObservableCollection codec { get; set; } = new ObservableCollection() 39 | { 40 | new ViewModel.Audio.AudioCodec() { Codec = "libvorbis", Parameters = "" } 41 | }; 42 | 43 | 44 | // --------------------------------------------------------------------------- 45 | // Items Source 46 | // --------------------------------------------------------------------------- 47 | 48 | // ------------------------- 49 | // Stream 50 | // ------------------------- 51 | // Doesn't Change, List Source in ViewModel 52 | 53 | // ------------------------- 54 | // Channel 55 | // ------------------------- 56 | public ObservableCollection channel { get; set; } = new ObservableCollection() 57 | { 58 | "Source", 59 | "Mono", 60 | "Stereo", 61 | "5.1" 62 | }; 63 | 64 | // ------------------------- 65 | // Quality 66 | // ------------------------- 67 | public ObservableCollection quality { get; set; } = new ObservableCollection() 68 | { 69 | new ViewModel.Audio.AudioQuality() { Name = "Auto", CBR_BitMode = "-b:a", CBR = "", VBR_BitMode = "-q:a", VBR = "10", NA = "256" }, 70 | new ViewModel.Audio.AudioQuality() { Name = "500", CBR_BitMode = "-b:a", CBR = "500", VBR_BitMode = "-q:a", VBR = "10" }, 71 | new ViewModel.Audio.AudioQuality() { Name = "320", CBR_BitMode = "-b:a", CBR = "320", VBR_BitMode = "-q:a", VBR = "9" }, 72 | new ViewModel.Audio.AudioQuality() { Name = "256", CBR_BitMode = "-b:a", CBR = "256", VBR_BitMode = "-q:a", VBR = "8" }, 73 | new ViewModel.Audio.AudioQuality() { Name = "224", CBR_BitMode = "-b:a", CBR = "224", VBR_BitMode = "-q:a", VBR = "7" }, 74 | new ViewModel.Audio.AudioQuality() { Name = "192", CBR_BitMode = "-b:a", CBR = "192", VBR_BitMode = "-q:a", VBR = "6" }, 75 | new ViewModel.Audio.AudioQuality() { Name = "160", CBR_BitMode = "-b:a", CBR = "160", VBR_BitMode = "-q:a", VBR = "5" }, 76 | new ViewModel.Audio.AudioQuality() { Name = "128", CBR_BitMode = "-b:a", CBR = "128", VBR_BitMode = "-q:a", VBR = "4" }, 77 | new ViewModel.Audio.AudioQuality() { Name = "96", CBR_BitMode = "-b:a", CBR = "96", VBR_BitMode = "-q:a", VBR = "2" }, 78 | new ViewModel.Audio.AudioQuality() { Name = "64", CBR_BitMode = "-b:a", CBR = "64", VBR_BitMode = "-q:a", VBR = "1" }, 79 | new ViewModel.Audio.AudioQuality() { Name = "Custom", CBR_BitMode = "-b:a", CBR = "", VBR_BitMode = "-q:a", VBR = "" }, 80 | new ViewModel.Audio.AudioQuality() { Name = "Mute", CBR_BitMode = "", CBR = "", VBR_BitMode = "", VBR = "" } 81 | }; 82 | 83 | // ------------------------- 84 | // Compression Level 85 | // ------------------------- 86 | public ObservableCollection compressionLevel { get; set; } = new ObservableCollection() 87 | { 88 | "auto" 89 | }; 90 | 91 | // ------------------------- 92 | // Sample Rate 93 | // ------------------------- 94 | public ObservableCollection sampleRate { get; set; } = new ObservableCollection() 95 | { 96 | new ViewModel.Audio.AudioSampleRate() { Name = "auto", Frequency = "" }, 97 | new ViewModel.Audio.AudioSampleRate() { Name = "8k", Frequency = "8000" }, 98 | new ViewModel.Audio.AudioSampleRate() { Name = "11.025k", Frequency = "11025" }, 99 | new ViewModel.Audio.AudioSampleRate() { Name = "12k", Frequency = "12000" }, 100 | new ViewModel.Audio.AudioSampleRate() { Name = "16k", Frequency = "16000" }, 101 | new ViewModel.Audio.AudioSampleRate() { Name = "22.05k", Frequency = "22050" }, 102 | new ViewModel.Audio.AudioSampleRate() { Name = "24k", Frequency = "24000" }, 103 | new ViewModel.Audio.AudioSampleRate() { Name = "32k", Frequency = "32000" }, 104 | new ViewModel.Audio.AudioSampleRate() { Name = "44.1k", Frequency = "44100" }, 105 | new ViewModel.Audio.AudioSampleRate() { Name = "48k", Frequency = "48000" } 106 | }; 107 | 108 | // ------------------------- 109 | // Bit Depth 110 | // ------------------------- 111 | public ObservableCollection bitDepth { get; set; } = new ObservableCollection() 112 | { 113 | new ViewModel.Audio.AudioBitDepth() { Name = "auto", Depth = "" } 114 | }; 115 | 116 | 117 | // --------------------------------------------------------------------------- 118 | // Controls Behavior 119 | // --------------------------------------------------------------------------- 120 | 121 | // ------------------------- 122 | // Selected Items 123 | // ------------------------- 124 | public List controls_Selected { get; set; } = new List() 125 | { 126 | new ViewModel.Audio.Selected() { CompressionLevel = "auto" }, 127 | }; 128 | 129 | // ------------------------- 130 | // Checked 131 | // ------------------------- 132 | public List controls_Checked { get; set; } = new List() 133 | { 134 | new ViewModel.Audio.Checked() { VBR = false }, 135 | }; 136 | 137 | // ------------------------- 138 | // Enabled 139 | // ------------------------- 140 | public List controls_Enabled { get; set; } = new List() 141 | { 142 | new ViewModel.Audio.Enabled() 143 | { 144 | Quality = true, 145 | CompressionLevel = false, 146 | VBR = true, 147 | SampleRate = true, 148 | BitDepth = false, 149 | }, 150 | 151 | // All other controls are set through Format.Controls.MediaTypeControls() 152 | }; 153 | 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /source/Axiom/Axiom/Codecs/Audio/AAC.cs: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------- 2 | Axiom UI 3 | Copyright (C) 2017-2021 Matt McManis 4 | https://github.com/MattMcManis/Axiom 5 | https://axiomui.github.io 6 | mattmcmanis@outlook.com 7 | 8 | This program is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program.If not, see . 20 | ---------------------------------------------------------------------- */ 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Collections.ObjectModel; 25 | using System.Linq; 26 | using ViewModel; 27 | 28 | namespace Controls.Audio.Codec 29 | { 30 | public class AAC : Controls.IAudioCodec 31 | { 32 | // --------------------------------------------------------------------------- 33 | // Codec 34 | // --------------------------------------------------------------------------- 35 | public ObservableCollection codec { get; set; } = new ObservableCollection() 36 | { 37 | new ViewModel.Audio.AudioCodec() { Codec = "aac", Parameters = "" } 38 | }; 39 | 40 | 41 | // --------------------------------------------------------------------------- 42 | // Items Source 43 | // --------------------------------------------------------------------------- 44 | 45 | // ------------------------- 46 | // Stream 47 | // ------------------------- 48 | // Doesn't Change, List Source in ViewModel 49 | 50 | // ------------------------- 51 | // Channel 52 | // ------------------------- 53 | public ObservableCollection channel { get; set; } = new ObservableCollection() 54 | { 55 | "Source", 56 | "Mono", 57 | "Stereo", 58 | "5.1" 59 | }; 60 | 61 | // ------------------------- 62 | // Quality 63 | // ------------------------- 64 | public ObservableCollection quality { get; set; } = new ObservableCollection() 65 | { 66 | new ViewModel.Audio.AudioQuality() { Name = "Auto", CBR_BitMode = "-b:a", CBR = "", VBR_BitMode = "-q:a", VBR = "2", NA = "400" }, 67 | new ViewModel.Audio.AudioQuality() { Name = "400", CBR_BitMode = "-b:a", CBR = "400", VBR_BitMode = "-q:a", VBR = "2" }, 68 | new ViewModel.Audio.AudioQuality() { Name = "320", CBR_BitMode = "-b:a", CBR = "320", VBR_BitMode = "-q:a", VBR = "2" }, 69 | new ViewModel.Audio.AudioQuality() { Name = "256", CBR_BitMode = "-b:a", CBR = "256", VBR_BitMode = "-q:a", VBR = "1.6" }, 70 | new ViewModel.Audio.AudioQuality() { Name = "224", CBR_BitMode = "-b:a", CBR = "224", VBR_BitMode = "-q:a", VBR = "1.4" }, 71 | new ViewModel.Audio.AudioQuality() { Name = "192", CBR_BitMode = "-b:a", CBR = "192", VBR_BitMode = "-q:a", VBR = "1.2" }, 72 | new ViewModel.Audio.AudioQuality() { Name = "160", CBR_BitMode = "-b:a", CBR = "160", VBR_BitMode = "-q:a", VBR = "1" }, 73 | new ViewModel.Audio.AudioQuality() { Name = "128", CBR_BitMode = "-b:a", CBR = "128", VBR_BitMode = "-q:a", VBR = "0.8" }, 74 | new ViewModel.Audio.AudioQuality() { Name = "96", CBR_BitMode = "-b:a", CBR = "96", VBR_BitMode = "-q:a", VBR = "0.6" }, 75 | new ViewModel.Audio.AudioQuality() { Name = "64", CBR_BitMode = "-b:a", CBR = "64", VBR_BitMode = "-q:a", VBR = "0.4" }, 76 | new ViewModel.Audio.AudioQuality() { Name = "Custom", CBR_BitMode = "-b:a", CBR = "", VBR_BitMode = "-q:a", VBR = "" }, 77 | new ViewModel.Audio.AudioQuality() { Name = "Mute", CBR_BitMode = "", CBR = "", VBR_BitMode = "", VBR = "" } 78 | }; 79 | 80 | // ------------------------- 81 | // Compression Level 82 | // ------------------------- 83 | public ObservableCollection compressionLevel { get; set; } = new ObservableCollection() 84 | { 85 | "auto" 86 | }; 87 | 88 | // ------------------------- 89 | // Sample Rate 90 | // ------------------------- 91 | public ObservableCollection sampleRate { get; set; } = new ObservableCollection() 92 | { 93 | new ViewModel.Audio.AudioSampleRate() { Name = "auto", Frequency = "" }, 94 | new ViewModel.Audio.AudioSampleRate() { Name = "7.35k", Frequency = "7350" }, 95 | new ViewModel.Audio.AudioSampleRate() { Name = "8k", Frequency = "8000" }, 96 | new ViewModel.Audio.AudioSampleRate() { Name = "11.025k", Frequency = "11025" }, 97 | new ViewModel.Audio.AudioSampleRate() { Name = "12k", Frequency = "12000" }, 98 | new ViewModel.Audio.AudioSampleRate() { Name = "16k", Frequency = "16000" }, 99 | new ViewModel.Audio.AudioSampleRate() { Name = "22.05k", Frequency = "22050" }, 100 | new ViewModel.Audio.AudioSampleRate() { Name = "24k", Frequency = "24000" }, 101 | new ViewModel.Audio.AudioSampleRate() { Name = "32k", Frequency = "32000" }, 102 | new ViewModel.Audio.AudioSampleRate() { Name = "44.1k", Frequency = "44100" }, 103 | new ViewModel.Audio.AudioSampleRate() { Name = "48k", Frequency = "48000" } 104 | }; 105 | 106 | // ------------------------- 107 | // Bit Depth 108 | // ------------------------- 109 | public ObservableCollection bitDepth { get; set; } = new ObservableCollection() 110 | { 111 | new ViewModel.Audio.AudioBitDepth() { Name = "auto", Depth = "" } 112 | }; 113 | 114 | 115 | 116 | // --------------------------------------------------------------------------- 117 | // Controls Behavior 118 | // --------------------------------------------------------------------------- 119 | 120 | // ------------------------- 121 | // Selected Items 122 | // ------------------------- 123 | public List controls_Selected { get; set; } = new List() 124 | { 125 | new ViewModel.Audio.Selected() { CompressionLevel = "auto" }, 126 | }; 127 | 128 | // ------------------------- 129 | // Checked 130 | // ------------------------- 131 | public List controls_Checked { get; set; } = new List() 132 | { 133 | new ViewModel.Audio.Checked() { VBR = false }, 134 | }; 135 | 136 | // ------------------------- 137 | // Enabled 138 | // ------------------------- 139 | public List controls_Enabled { get; set; } = new List() 140 | { 141 | new ViewModel.Audio.Enabled() 142 | { 143 | Quality = true, 144 | CompressionLevel = false, 145 | VBR = true, 146 | SampleRate = true, 147 | BitDepth = false, 148 | }, 149 | 150 | // All other controls are set through Format.Controls.MediaTypeControls() 151 | }; 152 | 153 | } 154 | } 155 | --------------------------------------------------------------------------------