Compare commits
No commits in common. "505db279d87a77e743b7f83ac6e5f815fa1e8f56" and "762403b77048013f5274bda3bb04ccc862eedf2d" have entirely different histories.
505db279d8
...
762403b770
6 changed files with 65 additions and 844 deletions
13
DONE.md
13
DONE.md
|
|
@ -30,15 +30,7 @@ This file tracks completed features, fixes, and milestones.
|
||||||
- **UI Polish**
|
- **UI Polish**
|
||||||
- "Run Benchmark" button highlighted (HighImportance) on first run
|
- "Run Benchmark" button highlighted (HighImportance) on first run
|
||||||
- Returns to normal styling after initial benchmark
|
- Returns to normal styling after initial benchmark
|
||||||
- Guides new users to run initial benchmark
|
- Guides new users to run initial benchmark
|
||||||
|
|
||||||
- ✅ **AI Upscale Integration (Real-ESRGAN)**
|
|
||||||
- Added model presets with anime/general variants
|
|
||||||
- Processing presets (Ultra Fast → Maximum Quality) with tile/TTA tuning
|
|
||||||
- Upscale factor selection + output adjustment slider
|
|
||||||
- Tile size, output frame format, GPU and thread controls
|
|
||||||
- ncnn backend pipeline (extract → AI upscale → reassemble)
|
|
||||||
- Filters and frame rate conversion applied before AI upscaling
|
|
||||||
|
|
||||||
- ✅ **Bitrate Preset Simplification**
|
- ✅ **Bitrate Preset Simplification**
|
||||||
- Reduced from 13 confusing options to 6 clear presets
|
- Reduced from 13 confusing options to 6 clear presets
|
||||||
|
|
@ -841,9 +833,6 @@ This file tracks completed features, fixes, and milestones.
|
||||||
- ✅ Hide quality presets when bitrate mode is not CRF
|
- ✅ Hide quality presets when bitrate mode is not CRF
|
||||||
- ✅ Snippet UI now shows Convert Snippet + batch + options with context-sensitive controls
|
- ✅ Snippet UI now shows Convert Snippet + batch + options with context-sensitive controls
|
||||||
- ✅ Reduced module video pane minimum sizes to allow GNOME window snapping
|
- ✅ Reduced module video pane minimum sizes to allow GNOME window snapping
|
||||||
- ✅ Added cache/temp directory setting with SSD recommendation and override
|
|
||||||
- ✅ Snippet defaults now use conversion settings (not Match Source)
|
|
||||||
- ✅ Added frame interpolation presets to Filters and wired filter chain to Upscale
|
|
||||||
- ✅ Stabilized video seeking and embedded rendering
|
- ✅ Stabilized video seeking and embedded rendering
|
||||||
- ✅ Improved player window positioning
|
- ✅ Improved player window positioning
|
||||||
- ✅ Fixed clear video functionality
|
- ✅ Fixed clear video functionality
|
||||||
|
|
|
||||||
10
TODO.md
10
TODO.md
|
|
@ -66,9 +66,6 @@ This file tracks upcoming features, improvements, and known issues.
|
||||||
- Quality presets hidden when bitrate mode is not CRF
|
- Quality presets hidden when bitrate mode is not CRF
|
||||||
- Snippet UI rearranged into Convert Snippet / Batch / Options with context-sensitive visibility
|
- Snippet UI rearranged into Convert Snippet / Batch / Options with context-sensitive visibility
|
||||||
- Reduce module video pane min sizes to allow GNOME snapping
|
- Reduce module video pane min sizes to allow GNOME snapping
|
||||||
- Cache/temp directory setting with SSD recommendation
|
|
||||||
- Frame interpolation presets in Filters with Upscale linkage
|
|
||||||
- Real-ESRGAN AI upscale controls with ncnn pipeline (models, presets, tiles, TTA)
|
|
||||||
|
|
||||||
*Last Updated: 2025-12-20*
|
*Last Updated: 2025-12-20*
|
||||||
|
|
||||||
|
|
@ -112,13 +109,6 @@ This file tracks upcoming features, improvements, and known issues.
|
||||||
- Creative effects (grayscale, vignette)
|
- Creative effects (grayscale, vignette)
|
||||||
- Real-time preview system
|
- Real-time preview system
|
||||||
|
|
||||||
- [ ] **DVD Authoring module**
|
|
||||||
- Output VIDEO_TS folder + burn-ready ISO
|
|
||||||
- Auto-detect NTSC/PAL with manual override
|
|
||||||
- Preserve all audio tracks
|
|
||||||
- Subtitle support (start with SRT)
|
|
||||||
- Chapter sources: existing, manual markers, auto scene length
|
|
||||||
|
|
||||||
### Quality & Compression Improvements
|
### Quality & Compression Improvements
|
||||||
- [x] **Automatic black bar detection and cropping** (v0.1.0-dev13 - COMPLETED)
|
- [x] **Automatic black bar detection and cropping** (v0.1.0-dev13 - COMPLETED)
|
||||||
- Implement ffmpeg cropdetect analysis pass
|
- Implement ffmpeg cropdetect analysis pass
|
||||||
|
|
|
||||||
|
|
@ -252,7 +252,7 @@ func ProbeVideo(path string) (*VideoSource, error) {
|
||||||
|
|
||||||
// Extract embedded cover art if present
|
// Extract embedded cover art if present
|
||||||
if coverArtStreamIndex >= 0 {
|
if coverArtStreamIndex >= 0 {
|
||||||
coverPath := filepath.Join(utils.TempDir(), fmt.Sprintf("videotools-embedded-cover-%d.png", time.Now().UnixNano()))
|
coverPath := filepath.Join(os.TempDir(), fmt.Sprintf("videotools-embedded-cover-%d.png", time.Now().UnixNano()))
|
||||||
extractCmd := exec.CommandContext(ctx, FFmpegPath,
|
extractCmd := exec.CommandContext(ctx, FFmpegPath,
|
||||||
"-i", path,
|
"-i", path,
|
||||||
"-map", fmt.Sprintf("0:%d", coverArtStreamIndex),
|
"-map", fmt.Sprintf("0:%d", coverArtStreamIndex),
|
||||||
|
|
|
||||||
|
|
@ -44,12 +44,6 @@ func HandleAudio(files []string) {
|
||||||
fmt.Println("audio", files)
|
fmt.Println("audio", files)
|
||||||
}
|
}
|
||||||
|
|
||||||
// HandleDVDAuthor handles the DVD authoring module (placeholder)
|
|
||||||
func HandleDVDAuthor(files []string) {
|
|
||||||
logging.Debug(logging.CatModule, "dvd author handler invoked with %v", files)
|
|
||||||
fmt.Println("dvd author", files)
|
|
||||||
}
|
|
||||||
|
|
||||||
// HandleSubtitles handles the subtitles module (placeholder)
|
// HandleSubtitles handles the subtitles module (placeholder)
|
||||||
func HandleSubtitles(files []string) {
|
func HandleSubtitles(files []string) {
|
||||||
logging.Debug(logging.CatModule, "subtitles handler invoked with %v", files)
|
logging.Debug(logging.CatModule, "subtitles handler invoked with %v", files)
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync/atomic"
|
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
"fyne.io/fyne/v2"
|
"fyne.io/fyne/v2"
|
||||||
|
|
@ -272,25 +271,3 @@ func LoadAppIcon() fyne.Resource {
|
||||||
logging.Debug(logging.CatUI, "no app icon found in search paths")
|
logging.Debug(logging.CatUI, "no app icon found in search paths")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var tempDirOverride atomic.Value
|
|
||||||
|
|
||||||
// SetTempDir overrides the app temp directory (empty string resets to system temp).
|
|
||||||
func SetTempDir(path string) {
|
|
||||||
trimmed := strings.TrimSpace(path)
|
|
||||||
if trimmed == "" {
|
|
||||||
tempDirOverride.Store("")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
tempDirOverride.Store(trimmed)
|
|
||||||
}
|
|
||||||
|
|
||||||
// TempDir returns the app temp directory, falling back to the system temp dir.
|
|
||||||
func TempDir() string {
|
|
||||||
if v := tempDirOverride.Load(); v != nil {
|
|
||||||
if s, ok := v.(string); ok && s != "" {
|
|
||||||
return s
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return os.TempDir()
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue