Introduce three project-level DVD encode profiles (Compatibility 4500k /
High quality VBR / Custom) via new config keys, and burn a chosen
embedded subtitle track into the picture:
- file_movie carries the hardsub selection (index/kind), persists it, and
builds a subtitle-picker combobox in its properties page; set_final_rates
maps the profile to the final video/audio bitrate.
- ffmpeg burns text subs with the subtitles= filter after scaling and image
subs with an overlay filtergraph before scaling; NTSC DVD audio is now AC3
for all profiles. A start_offset (-ss) is threaded through for segmenting.
- avconv gets the text-sub path and start_offset for parity.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a subtitle branch to the ffprobe/avprobe stream loops that collects
each embedded subtitle track (index, codec, language, title, default/
forced flags) and classifies it as text or image by codec. This is the
basis for letting the user pick a track to burn into the picture.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
When opening an old devede project, if the background picture or
music files aren't there, an exception would happen. This can
happen even with the defaults, because in the last version, they
were migrated into a different folder.
Now, if the files aren't found, the new defaults will be used.
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).
In file_movie.on_button_accept_clicked() file_movie.store_file() and
restore_file() are called. These methods don't exist; it looks like the
intent was to call store_element() and restore_element().
Testing confirms this; properties are now applied to all the selected
files.
Fixes Issue #79
This patch stores the configuration data inside XDG_CONFIG_HOME instead
of doing it directly inside $HOME. Of course, it has backwards
compatibility, using the old file if the new doesn't exists.
There were two errors in the menu generation:
- if there were no page jumps, the number of pages was always "one"
- in each page, one entry was missing (except for the first page,
where two entries were missing).
This patch fixes both
In the old code, eval() and exec() were used to insert properties in
an object with an specific name. This is clearly an ugly solution,
when the right way is to use self.__setattr__ and self.__dict__.
This patch replaces that ugly code with new one that follows the
pythonic way of doing the things.