Skip to content
Matt McManis edited this page Dec 22, 2020 · 9 revisions

Axiom Program Design

└── Initialize Main Window
│     ├── ViewModel DataContext
│     ├── Start Log Console  
│     ├── Current Version  
│     ├── Current Build Phase  
│     ├── Read axiom.conf
│     ├── Load Theme
│     ├── Detect System Info  
│     └── Load Saved Settings  
│  
└── Window Loaded  
│     ├── Set Control Defaults  
│     └── Check for Updates
│  
└── Settings Tab  
│     ├── Load Saved Settings  
│     ├── ComboBox Set FFmpeg Path  
│     ├── ComboBox Set FFprobe Path  
│     ├── ComboBox Set FFplay Path 
│     ├── ComboBox Set Log Path  
│     ├── ComboBox Set Threads  
│     ├── ComboBox Set Theme  
│     ├── Reset/Delete Saved Settings
│     └── Save Settings
│  
└── Update Button
│     ├── Check for Internet Connection
│     ├── Detect GitHub Latest Version & Build Phase
│     ├── Compare Current Version & Latest Version
│     ├── Download to AppData/Local/Temp/
│     ├── Close Axiom
│     └── Run PowerShell
│          ├── Extract zip and Overwrite current exe
│          └── Relaunch Axiom
│  
└── Preview Button
│     ├── Generate FFplay Args
│     └── Run FFplay
│
└── Convert Button
│     ├── Keep CMD Window Open Check
│     ├── Batch Extension Check
│     ├── FFprobe Path
│     ├── Script Edit Check
│     ├── Ready Halts
│     ├── Ready Check
│     │
│     └── FFprobe Metadata
│     │     ├── Video Entry Type
│     │     ├── Audio Entry Type
│     │     ├── Input File Info  
│     │     ├── Video Bitrate Calculator  
│     │     └── Audio Bitrate Calculator  
│     │
│     ├── Generate FFmpeg Args  
│     │     └── One Pass / CRF  
│     │     │     ├── FFmpeg Path  
│     │     │     │
│     │     │     ├── Input File Path  
│     │     │     │
│     │     │     ├── Video Codec  
│     │     │     ├── Speed  
│     │     │     ├── Video Quality  
│     │     │     ├── FPS  
│     │     │     ├── Images  
│     │     │     ├── Optimize  
│     │     │     ├── Video Filter  
│     │     │     ├── Video Stream Maps  
│     │     │     │
│     │     │     ├── Subtitle Codec  
│     │     │     ├── Subtitle Maps  
│     │     │     │
│     │     │     ├── Audio Codec  
│     │     │     ├── Audio Quality  
│     │     │     ├── Sample Rate  
│     │     │     ├── Bit Depth  
│     │     │     ├── Channel  
│     │     │     ├── Audio Filter  
│     │     │     ├── Audio Stream Maps  
│     │     │     │
│     │     │     ├── Cut
│     │     │     ├── Format Maps
│     │     │     │
│     │     │     ├── Thread Detect
│     │     │     │
│     │     │     ├── Output File Path
│     │     │     │
│     │     │     ├── Args
│     │     │     └── Args Sorted
│     │     │ 
│     │     └── Two Pass
│     │           ├── Pass 1
│     │           ├── Pass 2
│     │           │
│     │           ├── Args
│     │           └── Args Sorted
│     │       
│     ├── Generate FFmpeg Batch Args
│     │     └── Batch
│     │           ├── 1-Pass / CRF
│     │           └── 2-Pass
│     │
│     ├── Generate YouTube Download Args
│     │     ├── Args
│     │     └── Args Sorted
│     │      
│     ├── FFmpeg Convert
│     │     └── Remove Linebreaks
│     │     └── Launch CMD
│     │           └── Launch FFmpeg + Args
│     │
│     ├── Write Log
│     └── Reset	
│     
└── Script Button  
│     ├── Keep CMD Window Open Check
│     ├── Batch Extension Check
│     ├── FFprobe Path
│     ├── Ready Halts
│     ├── Ready Check
│     │
│     ├── FFprobe Metadata
│     ├── Generate FFmpeg Args
│     │     ├── Args
│     │     └── Args Sorted
│     │
│     ├── Generate FFmpeg Batch Args
│     │     ├── Args
│     │     └── Args Sorted
│     │
│     ├── Generate YouTube Download Args
│     │     ├── Args
│     │     └── Args Sorted
│     │
│     └── Open Script View
│     │     ├── Write FFmpeg Args to TextBox
│     │     └── Sort Button
│     │           └── Inline 
│     │           │     └── Remove Linebreaks
│     │           └── Sort
│     │                 └── Add Linebreaks
│     │
│     ├── Write Log
│     └── Reset	
│
└── Window Closing
      └── Save axiom.conf