Commit Graph

13355 Commits

Author SHA1 Message Date
Симеон Цветков
ada7447725
translations: update Bulgarian 2020-06-27 10:52:23 +02:00
Kai Mao
dd94848292
man page translations: update Chinese Traditional 2020-06-27 10:52:16 +02:00
Симеон Цветков
f892e51b1a
man page translations: update Bulgarian 2020-06-27 10:52:04 +02:00
Симеон Цветков
37ca1909f8
Replace view-task.png 2020-06-27 10:47:04 +02:00
Симеон Цветков
7b7abcd482
Replace system-run.png 2020-06-27 10:47:04 +02:00
Симеон Цветков
4c7a90db69
Replace story-editor.png 2020-06-27 10:47:04 +02:00
Симеон Цветков
99efece62c
Replace split.png 2020-06-27 10:47:04 +02:00
Симеон Цветков
94929c52b4
Replace merge.png 2020-06-27 10:47:04 +02:00
Симеон Цветков
58680c0ce4
Replace document-preview-archive.png 2020-06-27 10:47:04 +02:00
Симеон Цветков
1180438e74
Replace document-edit.png 2020-06-27 10:47:04 +02:00
Симеон Цветков
def99d8c95
Replace document-edit-sign-encrypt.png 2020-06-27 10:47:03 +02:00
Симеон Цветков
7191e21d3b
Replace view-task.png 2020-06-27 10:47:01 +02:00
Moritz Bunkus
0342cd638e
AC-3: identify AC-3 encoded in Dolby Surround EX as codec "AC-3 Dolby Surround EX"
Implements #2740.
2020-06-22 17:41:34 +02:00
Moritz Bunkus
e01a644575
DTS: fix channel count when XCh extension is present
Fixes #2715.
2020-06-22 16:10:00 +02:00
Moritz Bunkus
28608963d3
require libEBML 1.4.0, libMatroska 1.6.0 2020-06-22 12:47:37 +02:00
Moritz Bunkus
0a1da6ad1e
update libEBML & libMatroska 2020-06-22 12:46:31 +02:00
Moritz Bunkus
d34d87804c
build system: fix dependencies of QRC files wrt. icons 2020-06-21 20:23:11 +02:00
Moritz Bunkus
cc3713db7b
DTS: use std::size_t instead of just size_t 2020-06-21 20:01:38 +02:00
Moritz Bunkus
c51c1861c9
add developer tool for converting MPEG TS timestamps 2020-06-21 16:13:24 +02:00
Moritz Bunkus
836ce42b73
add developer tool for finding jumps in timestamps in output of mkvinfo -s… 2020-06-21 16:12:42 +02:00
Moritz Bunkus
3607e98e9a
Merge branch 'undefined' of gitlab.com:moni33/mkvtoolnix into main 2020-06-21 16:08:35 +02:00
Moritz Bunkus
525387ae42
MPEG TS reader: MPLS: seek to start position & stop after encountering end timestamp
Associated clip information (CLPI) files contain an index that map
timestamps to file positions (roughly one index entry per
second). When reading an MPLS playlist mkvmerge will now look up each
play item's start timestamp in said index and seek to the nearest file
position and start processing from there — instead of always reading
an M2TS file from the start.

Additionally mkvmerge will now simply stop reading from an M2TS file
once the first packet is encountered whose timestamp is equal to or
larger than the play item's end timestamp. Before the change mkvmerge
would continue reading the rest of the file, potentially accepting
packets whose timestamps are again smaller than the play item's end
timestamp. Not only was that behavior wrong (processing of a play item
must stop once the first timestamp higher than the play item's end
timestamp is encountered), it was also wasting a lot of time.

For file reported in #2824 this reduced overall remuxing time from
more than one hour down to five minutes.

Part of the fix of #2824.
2020-06-21 10:29:24 +02:00
Moritz Bunkus
34365d3abf
MPEG TS reader: MPLS: accept all packets once play item's minimum timestamp was encountered
An MPLS playlist consists of one or more play items. Each play item
has a start and end timestamp. The intended use of the start
timestamp: locate the first packet whose timestamp is equal to or
larger than the play item's start timestamp. Demux that and all
following packets.

Unfortunately mkvmerge interpreted the timestamp differently. It would
compare the timestamps of all packets to the play item's start
timestamp. This is problematic when the timestamps aren't strictly
monotonic, which they often aren't.

For example, on a certain Blu-ray the timestamps for a PGS subtitle
track would look like this:

1. PTS 00:02:46.054911111 PGS type 22 (Presentation Composition)
2. PTS 00:02:46.050422222 PGS type 23 (Window Definition)
3. PTS 00:02:46.041455555 PGS type 20 (Palette Definition)
4. PTS 00:02:46.050422222 PGS type 21 (Object Definition)
5. PTS 00:02:46.050422222 PGS type 128 (End Of Display)

With the play item's start timestamp at 00:02:46.054911111 mkvmerge
would drop packets 2–5 and only keep 1 — destroying the PGS entry in
the process.

Additionally this resulted in the timestamps of the following PGS
subtitle being wrong: it would use the timestamp of the garbled first
entry instead.

Part of the fix of #2824.
2020-06-21 10:29:24 +02:00
Moritz Bunkus
b296fee04e
MPEG TS reader: improve debug messages 2020-06-21 10:29:24 +02:00
Moritz Bunkus
b850c59b95
MPEG TS reader: don't use "bogus subtitle timestamp" heuristic on PGS subtitles
Said heuristic is supposed to recognize faulty files where the
timestamps of teletext subtitles suddenly differ hugely from the
timestamps of surrounding audio/video packets. They often jump back
just as quickly.

Unfortunately regular PGS subtitles as found on regular Blu-rays show
similar behavior. For example:

audio @ 00:00:56.170
subtitles @ 00:00:56.181 (contains content to display)
audio @ 00:00:56.202
audio @ 00:00:56.234
subtitles @ 00:01:05.649 (this is the "stop displaying" packet)
audio @ 00:00:56.266

Here the subtitle packets aren't interleaved by their timestamps with
audio/video properly, triggering the heuristic, which in turn will
reset the timestamp of the second subtitle packet (stop displaying),
often to be smaller than the timestamp of the first subtitle
packet (display something). In such a case the player sees the "stop
displaying" packet before the "display something" packet, and the
result is that something is displayed indefinitely (or until the next
"display something" subtitle comes along).

As such interleaving seems to be normal on Blu-rays, turning off the
heuristic for PGS subtitle tracks is the way to go — especially since
I've never seen huge jumps in PGS subtitle timestamps such as the ones
the heuristic was initially meant for.

Fixes #2736 and partially fixes #2824.
2020-06-21 10:29:22 +02:00
Симеон Цветков
7a376fbb6e Replace subtitles.png
In dark mode this icon doesn't contrast well with the dark background. I've added a tint of white shadow, so now it looks kind of okay on dark background.
2020-06-20 12:25:35 +00:00
Moritz Bunkus
4ffc01007a
GUI: mux: position cursor correctly after removing invalid chars from destination file
Fixes #2855.
2020-06-20 11:12:18 +02:00
Moritz Bunkus
7eee617e7b
Qt: use functor-based QTimer::singleShot() instead of name-based ones 2020-06-20 10:49:06 +02:00
Moritz Bunkus
6401fad9fc
CLPI parser: parse the characteristic point info
That information contains an index mapping timestamps to file
positions. It'll be used by the MPEG transport stream reader to
quickly seek to the start position when handling MPLS playlists.
2020-06-19 19:47:20 +02:00
Moritz Bunkus
a978a569a6
cosmetics: no alignment inside namespace 2020-06-18 13:46:20 +02:00
Moritz Bunkus
e6ad6c2201
GUI: preferences remember selected page on closing & restore on opening
Will not remember & restore over restarts of the program.

Implements #2852.
2020-06-17 20:26:30 +02:00
Moritz Bunkus
c6b4e27088
update AUTHORS & NEWS.md for David Byrant's WavPack fixes 2020-06-17 15:27:01 +02:00
Moritz Bunkus
14e89ada45
cosmetics: alignment, style adjustments 2020-06-17 15:18:53 +02:00
Moritz Bunkus
c4a85e3c2a
tests: add case for WavPack file created by v5 of the program 2020-06-17 15:10:21 +02:00
Moritz Bunkus
3475ecaa66
Merge remote-tracking branch 'dvbryant/wavpack5-fixes' into main 2020-06-17 14:37:35 +02:00
Moritz Bunkus
9190810c88
tests: add case for MPEG TS h.264/AVC with single frame & unbounded PES size
Test case for #2849.
2020-06-17 13:33:24 +02:00
Moritz Bunkus
8e3f2cf52d
MPEG TS reader: flush PES content with unbounded size at end-of-detection
PES packets with an unbounded size only end at the start of the
following PES packet for the same track (a TS packet with the "payload
unit start" flag set for the same PID). For tracks that consist only
of a single PES packet there is no "following PES packet for the same
track", obviously. Therefore the end of the file counts as its end,
too.

Part 2/2 of the fix for #2849.
2020-06-17 13:30:35 +02:00
Moritz Bunkus
7ccd98e740
MPEG TS reader: flush h.264 & h.265 parsers on end-of-detection
Otherwise tracks consisting of a single key frame won't be detected as
those key frames are buffered by the parsers in order to determine
frame order.

Part 1/2 of the fix for #2849.
2020-06-17 13:27:40 +02:00
Moritz Bunkus
0947a950fd
mkvmerge: free memory properly after write errors
Fixes #2843.
2020-06-07 11:02:03 +02:00
Moritz Bunkus
6a91cc4192
GUI: replace functions & enums deprecated in Qt 5.15 2020-06-05 15:53:38 +02:00
Симеон Цветков
d9d34c4e5d Update org.bunkus.mkvtoolnix-gui.appdata.xml (+ Bulgarian translation) 2020-06-04 15:55:32 +00:00
Moritz Bunkus
b324ce18f2
GUI: header editor: add "remove all attachments" context menu option
Implements #2835.
2020-06-03 18:54:57 +02:00
Moritz Bunkus
80590e6c5b
GUI: languages: only show "und" at top if not part of "often used language" 2020-06-03 15:51:05 +02:00
Moritz Bunkus
7e601565f1
ISO 639: remove now-unused default list of "popular languages" 2020-06-03 15:51:04 +02:00
Moritz Bunkus
018b7156f4
GUI: change default list of "often used languages"
The previous default list was derived from the list of spoken
languages sorted by native speakers. This list was so long that in
addition the option "only show often used languages" was enabled so as
not to confuse users with very long drop-down boxes where the top list
was very long.

Unfortunately this resulted in users being confused because their
particular language wasn't present in the drop-down boxes, and they
didn't know that this is a feature that can be customized.

The default settings matter a lot for user experience; most users
rather assume the program's buggy than they can configure a specific
feature to work as they expect.

The new default is to only include the following entries at the
top and all the other available languages below (meaning "only show
often used languages" is off by default again):

- mul: multiple languages
- zxx: no linguistic content
- qaa: reserved for local use
- mis: uncoded languages
- eng: English

Additionally the system's default user interface language will be
included, too.

Implements #2716.
2020-06-03 15:51:04 +02:00
Moritz Bunkus
5e6331645d
GUI: mux: default list of languages to recognize in file names: all languages
The previous default list was derived from the list of spoken
languages sorted by native speakers.

Unfortunately this resulted in users being confused because their
particular language wasn't recognized in file names, and they didn't
know that this is a feature that can be customized.

The default settings matter a lot for user experience; most users
rather assume the program's buggy than they can configure a specific
feature to work as they expect.

The new default is to include all languages by default. Advanced users
can still remove languages if they encounter too many false positives.
2020-06-03 15:51:04 +02:00
Moritz Bunkus
a3589da3d1
translation: determine default UI language as ISO 639-2 language code
Required for #2716.
2020-06-03 15:51:04 +02:00
Moritz Bunkus
e32e665c2a
update list of ISO 639 languages 2020-06-02 20:03:59 +02:00
Moritz Bunkus
3e4f59d3ab
build system: add dev target for updating ISO 639 language list 2020-06-02 19:33:10 +02:00
Moritz Bunkus
673f06ec32
move ISO 639 language codes to separate file for auto-generation 2020-06-02 17:27:52 +02:00