├── .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 |
49 |
50 |
51 |
56 |
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 | 
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 | 
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 | [](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 |
54 |
67 |
68 |
69 |
75 |
88 |
89 |
90 |
96 |
109 |
110 |
111 |
117 |
130 |
131 |
132 |
139 |
140 |
141 |
153 |
154 |
155 |
167 |
168 |
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 |
--------------------------------------------------------------------------------