Replaced all 46 bare 'except:' across the package with specific exception
types, and logged the cases that indicate a real problem:
- config load/save: FileNotFoundError is the silent first-run case; other
OSError/ValueError/UnicodeDecodeError are logged.
- ffprobe/avprobe: JSON parse failures are now logged (previously a media
file that ffprobe couldn't read just silently failed to import); decode
fallbacks -> UnicodeDecodeError; duration parse -> ValueError/TypeError/
KeyError; install check -> OSError/SubprocessError.
- executor: pre_/post_function and progress-polling hooks now use hasattr
checks, and a real exception inside a defined hook is logged instead of
swallowed; decode fallbacks and numeric parses narrowed.
- best-effort filesystem ops (makedirs/unlink) -> OSError.
- all backend check_is_installed probes -> OSError/SubprocessError.
- shutdown: also fixes a latent NameError ('failure' was only set in the
except branch, so a successful logind PowerOff would crash the handler).
No bare 'except:' remain. Full suite (51 tests) green; GUI starts clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
High profile is now fully automatic instead of relying on the manual
"adjust disc usage" button:
- compute_high_profile_bitrate() (pure, unit-tested) picks the fewest discs
that hold the content down to a quality floor, then fills each disc; a 2h
movie lands on one filled disc (~3750k), a 4h movie on two, a 30min clip
on one near the 9000k cap.
- apply_high_profile_bitrate() applies that rate to every title and forces
2-pass; it runs before split planning so the existing splitter reuses it.
Split discs now get a per-disc menu (listing that disc's titles) when the
project has a menu enabled, honoring the startup/play-all settings; they
still auto-play when menus are off.
Fix: _adjust_audio_bitrate capped its table at 384 (an MP2 limit) and
silently clamped the High profile's 448k AC3 down to 384; extend the table
to AC3 rates (448/512/640) in both the ffmpeg and avconv backends.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
When a DVD project does not fit one disc at the chosen quality, offer to
split it into several full-quality discs instead of only degrading the
bitrate:
- A pure, unit-tested planner distributes whole titles across discs and
time-splits a single over-long movie at the chapter boundary nearest each
disc's capacity (even-time fallback when it has no chapters).
- on_create_disc_clicked asks split / reduce-bitrate / cancel, then authors
each disc into its own subfolder and emits name-discN.iso per disc.
- dvdauthor_converter takes per-title segment lengths so a split segment's
chapter markers stay inside the segment.
Also adds the project-level encode-profile selector (with custom-bitrate
fields) next to the disc-size control.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
After the events happened recently in the management of the FSF,
I decided that it is safer to not rely on the good faith of other
people, so I decided to allow distribution of Devede only under
the current GPLv3 license, and not allow other, still unknown,
future versions of the license.
This patch uses the menu title as the volume name for the DVD image.
This way, when mounted in a computer, instead of "DVDVIDEO", the user
will see the menu title (unless there is no menu title; in that case,
"DVDVIDEO" will be used).