Hide unused bitrate controls and improve VBR accuracy
Restructured bitrate controls to hide unused options based on mode, and improved VBR encoding to use 2-pass for accurate bitrate targeting. UI Improvements: - Wrapped CRF, bitrate, and target size controls in hideable containers - Only show relevant controls based on selected bitrate mode: * CRF mode: Show only CRF entry * CBR mode: Show only bitrate entry and presets * VBR mode: Show only bitrate entry and presets * Target Size mode: Show only target size controls - Added descriptive hints for each mode explaining behavior - Updated DVD mode to work with new container structure - Made command preview update when bitrate settings change Encoding Improvements: - VBR now uses maxrate at 1.5x target for quality peaks - VBR automatically enables 2-pass encoding for accuracy - CBR remains strict (minrate=maxrate=target) for guaranteed bitrate - Target Size mode continues to calculate exact bitrate from duration This addresses runaway bitrate issues by: 1. Making it clear which mode is active 2. Hiding confusing unused controls 3. Ensuring VBR hits target average bitrate with 2-pass 4. Keeping CBR strict for exact constant bitrate Pros of manual bitrate targeting: - Predictable file sizes - Meets strict size requirements - Good for streaming with bandwidth constraints Cons of manual bitrate targeting: - Variable quality (simple scenes waste bits, complex scenes starve) - Less efficient than CRF overall - Requires 2-pass for VBR accuracy (slower) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
a7505a3de7
commit
714395764e
15
main.go
15
main.go
|
|
@ -6227,19 +6227,20 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
|
|||
// Hide bitrate/target-size fields to declutter in locked DVD mode
|
||||
bitratePresetSelect.Hide()
|
||||
simpleBitrateSelect.Hide()
|
||||
targetFileSizeEntry.Hide()
|
||||
targetFileSizeSelect.Hide()
|
||||
crfEntry.Hide()
|
||||
crfContainer.Hide()
|
||||
targetSizeContainer.Hide()
|
||||
// Show bitrate controls since DVD uses CBR
|
||||
bitrateContainer.Show()
|
||||
|
||||
dvdInfoLabel.SetText(fmt.Sprintf("%s\nLocked: resolution, frame rate, aspect, codec, pixel format, bitrate, and GPU toggles for DVD compliance.", dvdNotes))
|
||||
} else {
|
||||
dvdAspectBox.Hide()
|
||||
// Re-show hidden controls
|
||||
// Re-enable normal visibility control through updateEncodingControls
|
||||
bitratePresetSelect.Show()
|
||||
simpleBitrateSelect.Show()
|
||||
targetFileSizeEntry.Show()
|
||||
targetFileSizeSelect.Show()
|
||||
crfEntry.Show()
|
||||
if updateEncodingControls != nil {
|
||||
updateEncodingControls()
|
||||
}
|
||||
}
|
||||
}
|
||||
updateDVDOptions()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user