Sync bitrate preset between simple and advanced

This commit is contained in:
Stu Leak 2025-12-20 16:13:32 -05:00
parent 17900f2b0a
commit e002b586b1
3 changed files with 33 additions and 5 deletions

View File

@ -829,6 +829,7 @@ This file tracks completed features, fixes, and milestones.
- ✅ Added CRF preset dropdown with Manual option
- ✅ Added 0.5/1.0 Mbps bitrate presets and simplified preset names
- ✅ Default bitrate preset normalized to 2.5 Mbps to avoid "select one"
- ✅ Linked simple and advanced bitrate presets so they stay in sync
- ✅ Stabilized video seeking and embedded rendering
- ✅ Improved player window positioning
- ✅ Fixed clear video functionality

View File

@ -62,6 +62,7 @@ This file tracks upcoming features, improvements, and known issues.
- CRF preset dropdown added with Manual option
- Bitrate presets expanded to include 0.5/1.0 Mbps and renamed for clarity
- Default bitrate preset normalized to 2.5 Mbps to prevent empty select
- Simple/advanced bitrate presets synced
*Last Updated: 2025-12-20*

36
main.go
View File

@ -6117,10 +6117,15 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
}
var applyBitratePreset func(string)
var setBitratePreset func(string)
var syncingBitratePreset bool
bitratePresetSelect = widget.NewSelect(bitratePresetLabels, func(value string) {
if applyBitratePreset != nil {
applyBitratePreset(value)
if syncingBitratePreset {
return
}
if setBitratePreset != nil {
setBitratePreset(value)
}
})
state.convert.BitratePreset = normalizePresetLabel(state.convert.BitratePreset)
@ -6131,9 +6136,11 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
// Simple bitrate selector (shares presets)
simpleBitrateSelect = widget.NewSelect(bitratePresetLabels, func(value string) {
state.convert.BitratePreset = value
if applyBitratePreset != nil {
applyBitratePreset(value)
if syncingBitratePreset {
return
}
if setBitratePreset != nil {
setBitratePreset(value)
}
})
simpleBitrateSelect.SetSelected(state.convert.BitratePreset)
@ -6430,6 +6437,25 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
}
}
setBitratePreset = func(value string) {
if syncingBitratePreset {
return
}
syncingBitratePreset = true
state.convert.BitratePreset = value
if applyBitratePreset != nil {
applyBitratePreset(value)
}
if bitratePresetSelect != nil {
bitratePresetSelect.SetSelected(value)
}
if simpleBitrateSelect != nil {
simpleBitrateSelect.SetSelected(value)
}
syncingBitratePreset = false
}
setBitratePreset(state.convert.BitratePreset)
updateEncodingControls = func() {
mode := state.convert.BitrateMode
isLossless := state.convert.Quality == "Lossless"