This implements one half of #2038.
Note that this commit breaks the GUI's header editor until support for
editing sub-sub-sub-masters will be added to it (soon).
The shortcuts are the same used in all other views where moving with
keyboard shortcuts is possible: `Ctrl+Up` and `Ctrl+Down`.
Implements the first half of #2060.
Added an option in the preferences on "Multiplexer" → "Output" labeled
"Only use the first source file that contains a video track". If
enabled, only source files containing video tracks will be used for
setting the destination file name. Other files that are added are
ignore.
Implements the rest of #2058.
This is a new menu entry in the "source files" list box's context
menu. Selecting it will force the GUI to consider the selected file
to be the reference for automatically setting the file name, no matter
which file was originally added as the first file.
It will also force setting the destination file name once if automatic
destination file name generation is turned off in the preferences.
Implements part of #2058.
This removes shortcuts such as `Ctrl+Alt+1` for switching to the
multiplexer. These shortcuts overlapped with basic functionality on
keyboards that use an `AltGr` key, e.g. German ones, where `AltGr+7`
emits `{`. As `AltGr+key` is implemented as `Ctrl+Alt+key` under the
hood, this means that `AltGr+7` is really `Ctrl+Alt+7` which the GUI
now took to mean "switch to the job queue" instead of "insert
`{`".
Fixes#2056.
This commit implements two things for subtitle tracks:
1. There are several situations in which mkvmerge doesn't let the user
change the subtitle character set, e.g. due to a byte order mark in
the source file or the source file only supporting UTF-8
anyway (e.g. Matroska). In such a case the GUI will now disable the
"subtitle character set" drop-down box.
2. mkvmerge now outputs a track's encoding/character set as a track
property during file identification if that encoding can be
determined with confidence (same situations as in 1.). If that is
the case, the GUI will auto-select that encoding in the "subtitle
character set" drop-down box, even if that drop-down box is
disabled.
Both changes together give the user the information that she doesn't
have to take care of the encoding herself, and which encoding it
actually is.
Implements the GUI's part of #2053.
This is preparation for making the GUI present the encoding detected
by e.g. a byte order mark to the user so that she doesn't have to (and
cannot) chose a subtitle character set herself. Implements mkvmerge's
part of #2053.
Chapters and tags in WebM only allow a subset of elements. The
unsupported ones must be removed before chapters are written to a WebM
file.
Implements MKVToolNix GUI's chapter editor's part of #2002.
Chapters and tags in WebM only allow a subset of elements. The
unsupported ones must be removed before chapters are written to a WebM
file.
Implements mkvpropedit's part of #2002.
Otherwise the following steps would end up overwriting an existing
file:
* add a file
* start multiplexing
* re-use the same settings
* don't change anything regarding files & track selection (but modify
e.g. a track language)
* start multiplexing again
Fixes#2052.
The upstream project intends the include files to be installed in
`$includedir/nlohmann/json.hpp`,
e.g. `/usr/include/nlohmann/json.hpp`. Debian did not follow that
recommendation and installed them directly in `$includedir`. Therefore
`configure` was only looking for the latter, not the former.
However, Debian will soon follow suit. Therefore detection has been
extended to check for the intended location first.
Fixes#2048.
The feature was implemented by removing all 0 bytes in before the next
start code (and all 0 bytes at the end of the buffer). The problem is
that a slice structure may very well end in 0 bytes. The only way to
determine the end of the slice structure with confidence is
implementing a parser for the whole slice structure.
The result of removing bytes belonging to the slice structure may or
may not end in visual artifacts upon decoding. Other results include
error message by the decoder (e.g. ffmpeg which reports errors such as
"slice mismatch" or "motion vectors not available").
I lack the time and motivation to implement a proper slice parser. As
the current behavior is dangerous and just plain wrong, I'm removing
the feature again. It was introduced in release 5.8.0 response to
issue #734, which will now remain not implemented.
Fixes#2045.
Otherwise the GUI will generate instructions for mkvmerge for track
IDs that mkvmerge won't use, and mkvmerge in turn aborts with an
error.
Fixes#2039.
The function is available from the "additional modifications" dialog.
For most entries the smallest start timestamp of all chapters on the
same level higher than the current chapter's start timestamp will be
used as its end timestamp. If there is no such chapter, the parent
chapter's end timestamp will be used instead.
If the chapters were loaded from a Matroska file, the end timestamp
for very last chapter on the top-most level will be derived from the
file's duration.
Implements #1887.
Earlier versions fail to build on both my development system as well
as my CentOS 7 BuildBot CI instance. Therefore I cannot properly
support that version anymore.
See #2037.
This avoids clashing with Windows' input method for arbitrary
characters by pressing and holding `Alt` and typing the codepoint on
the number pad.
Implements #2034.
Whenever a sequence parameter set or picture parameter set
changes (meaning an SPS with the same ID as an earlier SPS but with
different content is found), all frames queued for order & timestamp
calculation must be flushed. Otherwise frame order calculation will be
based on wrong values for some frames and on correct values for other
frames.
This is the HEVC/h.265 equivalent of #2028.
Whenever a sequence parameter set or picture parameter set
changes (meaning an SPS with the same ID as an earlier SPS but with
different content is found), all frames queued for order & timestamp
calculation must be flushed. Otherwise frame order calculation will be
based on wrong values for some frames and on correct values for other
frames.
Fixes#2028.
It seems that dragging & dropping sometimes leaves Qt's internal state
somewhat foobared if at least one of the columns is hidden at the time
the items are dropped. This causes subsequent drag attempts to
segfault in the "start drag" function trying to serialize the standard
items' states.
For some reason iterating over all rows, all columns, for all parents
in the model and requesting the corresponding QStandardItem fixes the
internal state to the point that dragging doesn't crash anymore.
Fixes#2009.
The iconv version on macOS doesn't support that encoding. At the
moment mkvmerge only requires that encoding when reading the station
names from MPEG transport streams, and those are only shown to the
user as a help for deciding which tracks to select. Therefore the
information isn't critical, and failure to decode it properly doesn't
warrant a warning.
Fixes#2023.
Other track types such as DTS will already fetch more PS packets from
the stream if detection fails on the first packet. The same logic is
now applied to (E-)AC-3 tracks: as long as the track parameters cannot
be determined and the probe range hasn't been exceeded, fetch more
data from the stream and retry detection.
This enables track detection even if the first PS packets contain too
little (E-)AC-3 data.
Fixes#2016.