I know compilation fails in the multi-precision library with 1.60.0,
the previous requirement. The oldest OS I still support is CentOS 7,
which has 1.69 via EPEL. CentOS 8 is next which comes with 1.66.0, and
that compiles fine. So let's take that as the new baseline.
The old code assumed that there's at most one country element within
the same "chapter display" element. This doesn't have to be the case
as the specs lists the country as multiple.
Part of the fix of #3120.
The old code assumed that there's at most one IETF & one legacy
language element within the same "chapter display" element. This
doesn't have to be the case as the specs lists both language elements
as multiple.
Part of the fix of #3120.
There are elements in Matroska that are mandatory, have a default
value and may occur multiple times within the same master, mainly the
"chapter language" element. The semantics in such a case are that the
default value must only be used if NO OTHER element of the same type
is present within the same master element.
If a "chapter display" contains, let's say, a string for the languages
German & English, two "chapter language" elements must be
used. Checking with the specs reveals that English is the default
value for "chapter languages". Therefore one might think we can omit
writing the instance for "chapter language" with value "English". But
that would leave one "chapter language" element present with "German"
as the value, and semantically that would be the value a reader must
use.
This patch changes how default elements are removed before writing a
master element. It now iterates over all elements keeping track of how
many elements of each type there are within the same master. Mandatory
elements set to their default value will now only then be removed if
there is only that one instance of the mandatory element.
Part of the fix of #3120.
The logic was the wrong way around: starting with Qt 6, the High DPI
scaling mechanism cannot be turned off anymore. So only show the
checkbox for Qt < 6.
Part of #3115.
Views don't take ownership of models via `view->setModel()` as models
can be used by multiple views. Therefore assign the model a parent so
that it'll be deleted when the parent (the preferences dialog) is
deleted.
Prevents using the system qmake6 in cross-compilation situations.
Also cleans up the paths to `lconvert`, `moc`, `rcc` and `uic` from
the Qt 6 detection so that Qt 5 can detect their own version.
Part of the implementation of #3115.
Qt 6
`configure` will look for Qt 6 first and only continue looking for Qt
5 if Qt 6 isn't found or disabled via `--disable-qt6`.
Qt 6 detection works by first looking for the `qmake6` binary. Its location
can be specified with the `--with-qmake6=…` option.
All other Qt 6 related facts (such as compiler & linker flags or the
position of the other required tools such as `lconvert`, `moc`, `rcc` and
`uic`) will be derived from the output generated by `qmake6`.
Note that at this point Qt 6 is not yet supported for the cross-compilation
build to Windows, nor is a static Qt 6 build supported yet.
Note that the command line options `--enable-static-qt`,
`--with-qt-pkg-config-modules` and `--without-qt-pkg-config` only apply to
the Qt 5 and have no effect on Qt 6.
Qt 5
The options for specifying the position of the tools (`--with-moc=…`,
`--with-rcc=…` and `--with-uic=…`) have been removed. Their position
will now be derived from the output generated by `qmake`.
General
Completely disabling the GUI now requires passing both `--disable-qt6`
and `--disable-qt` options.
Part of the implementation of #3115.
Currently this still requires patching `build-config` after having run
`configure` and providing the correct values for `QT_CFLAGS`/`QT_LIBS`
manually.
Part of the implementation of #3115.
The Matroska specs have recently clarified regarding the intended
interpretation of the "default track" flag. If it is set, it is
supposed to signal to the player that this track is eligible for being
played by default, potentially taking other factors such as user
preferences regarding languages into account.
This implies that more than one track of each type can have this flag
set. For example, a Blu-ray disc with three audio tracks might have
the main audio in both English and Japanese, whereas the third audio
track contains the director's comments. In such a case the first two
tracks should have the "default track" flag set, the third one
shouldn't.
Earlier mkvmerge was enforcing that only one track of each type could
have the flag set. This restriction has been removed.
The GUI has been updated to allow setting the flag for multiple
tracks, too.
Part of the implementation of #3092.
The Matroska specs have recently clarified regarding the intended
interpretation of the "default track" flag. If it is set, it is
supposed to signal to the player that this track is eligible for being
played by default, potentially taking other factors such as user
preferences regarding languages into account.
This implies that more than one track of each type can have this flag
set. For example, a Blu-ray disc with three audio tracks might have
the main audio in both English and Japanese, whereas the third audio
track contains the director's comments. In such a case the first two
tracks should have the "default track" flag set, the third one
shouldn't.
Earlier mkvmerge was enforcing that only one track of each type could
have the flag set. This restriction has been removed.
Part of the implementation of #3092.