Commit Graph

446 Commits

Author SHA1 Message Date
Moritz Bunkus
45322bc7dd
Matroska reader: keep "display unit" video track property if present
Fixes #2317.
2018-06-09 12:35:32 +02:00
Moritz Bunkus
dbee007f5f
mkvmerge: identification: report display unit video track property 2018-06-09 12:35:32 +02:00
Moritz Bunkus
0d7d5ca3dd
GUI: headers: fix removal status text for mandatory elements with default values
Fixes #2320.
2018-06-09 08:59:22 +02:00
Moritz Bunkus
471fc84ed2
nlohmann-json: update to v3.1.1 (git revision g183390c1) 2018-06-08 22:17:08 +02:00
Moritz Bunkus
c50c7125ef
pugixml: update to v1.9 (git revision e584ea3)
Fixes a warning with g++ 8.0.0 and newer regarding ignored function
attributes.
2018-06-08 22:17:08 +02:00
Moritz Bunkus
e8b6fecd39
GUI: headers: stop write attempts on errors
As soon as the first write failure happens, don't try any further
attempts including trying to update the EBML header.

Fixes #2319.
2018-06-08 15:40:28 +02:00
Moritz Bunkus
aa99dd50f5 MP4 reader: improve test for identical edit list entries
In #2306 a file was provided with an edit list consisting of two
identical entries that span the whole duration of the file as given by
the file headers. The difference to earlier provided files is that the
edits don't start at 0 but slightly later. Therefore a check for
"starting at 0" seems counterproductive.

Fixes #2306.
2018-05-17 11:47:58 +02:00
Moritz Bunkus
54e9f3b3de Matroska reader: don't buffer more than 128 MB for audio/video tracks
Fixes #2304.
2018-05-14 14:59:07 +02:00
Moritz Bunkus
0b9b1228a3 GUI: mux: language detection: remove empty parts from ISO 639-1 regex
Empty ISO 639-1 codes led to `<ISO_639_1_CODES>` looking like
e.g. `de|en||nl`. That would also match an empty string. Therefore the
whole regex would match where it wasn't supposed to. An example:

File name: `This... is strange.[eng].srt`

With the default regex, the first `..` is what would be matched, the
capturing parenthesis would be empty, and therefore no language would
be detected.

Fixes #2298.
2018-05-12 21:07:02 +02:00
Moritz Bunkus
32bae9debb GUI: mux: actually use the "minimum playlist duration" setting
Fixes #2299.
2018-05-12 20:49:53 +02:00
Moritz Bunkus
6bf5240cfb NEWS.md, AUTHORS: updates 2018-05-12 20:26:23 +02:00
Moritz Bunkus
f52f450b76 VobSub extractor: skip empty SPU packets
MP4Box doesn't like empty SPU packets and aborts with the message
"Corrupted data found in file…". As empty SPU packets serve no
purpose, just drop them during extraction.

Implements #2293.
2018-05-04 18:50:56 +02:00
Moritz Bunkus
e7d0e8c1b3 GUI: prefs: fix spelling error for "enable muxing tracks by type" setting
On Windows the setting names aren't case sensitive, but on other
systems they are. This means that writing something as `abcTheseTypes`
and reading it back as `abcThesetypes` won't work.

Fixes #2297.
2018-05-04 14:37:01 +02:00
Moritz Bunkus
2c2b513f2f NEWS.md: add note about AV1 bitstream format updates 2018-05-02 17:37:45 +02:00
Moritz Bunkus
4204b1ccd0 AV1: support reading OBU files 2018-05-02 17:16:31 +02:00
Moritz Bunkus
42b5f13c6b AV1: require manual activation via --engage enable_av1; fail otherwise
Reason: the AV1 bitstream specification hasn't been finalized yet.
2018-05-02 16:13:48 +02:00
Moritz Bunkus
8ea159dc5c bump version number, set release code name 2018-05-02 14:54:31 +02:00
Moritz Bunkus
605183383f NEWS.md: reorder & reword elements for easier consumption 2018-05-02 14:36:52 +02:00
Moritz Bunkus
2dd33027fd track statistics tags: don't write _STATISTICS_WRITING_DATE_UTC with --no-date
Fixes #2286.
2018-04-27 23:14:13 +02:00
Moritz Bunkus
8cc99f24d3 mkvextract: verify first element found is an EBML Head
`FindNextID` considers anything that looks like an ID to be valid. If
the resulting ID is neither a known global nor an element from the
passed context, a Dummy Element is returned instead.

Therefore mkvextract must verify that the element found is indeed an
EBM Head element in order to determine whether or not the source file
is actually a Matroska/WebM file.

Fixes #2281.
2018-04-26 12:51:57 +02:00
Moritz Bunkus
53da7a4268 NEWS.md: fix spelling 2018-04-26 09:51:34 +02:00
Moritz Bunkus
8d0d16855c NEWS.md: fix spelling 2018-04-24 18:42:01 +02:00
Ulrik Mikaelsson
c2d771e4cf mkvmerge: format-detection: probe by file-extension first
Due to irregular signatures of probe-function, not all formats are supported
 - No text-formats
 - Some audio-formats (mp3, aac, ac3)
2018-04-24 12:47:58 +02:00
Moritz Bunkus
6f46296c9b NEWS.md: mention new C++14 build requirements 2018-04-20 20:12:01 +02:00
Moritz Bunkus
b14349538a NEWS.md: only mention a summary of the various leak fixes 2018-04-17 17:56:53 +02:00
Moritz Bunkus
6bd1486abc EBML converter: clean up allocated but invalid element in error case 2018-04-16 22:59:49 +02:00
Moritz Bunkus
6742cb7c19 Ogg reader: no double allocation & single freeing when reading Vorbis comments 2018-04-16 21:37:15 +02:00
Moritz Bunkus
045fb9df48 avilib: free malloc'ed memory for super indexes 2018-04-16 21:33:06 +02:00
Moritz Bunkus
9867210534 chapters: use std::vector instead of manual memory management
Removes a memory leak when returning early.
2018-04-16 20:44:45 +02:00
Moritz Bunkus
b067013b34 propedit: fix memory leak when deleting properties 2018-04-16 20:39:18 +02:00
Moritz Bunkus
c1eeccec00 Vorbis packetizer: remove memory leak via safememdup in constructor 2018-04-16 20:36:00 +02:00
Moritz Bunkus
d6079e3dba MP3 packetizer: remove memory leak via safememdup in get_mp3_packet 2018-04-16 20:35:40 +02:00
Moritz Bunkus
dfbf879d11 GUI: mux: copy title to destination file name: overwrite all up to last period
Fixes #2276.
2018-04-15 11:10:53 +02:00
Moritz Bunkus
b6daad6330 NEWS.md: use full name for MKVToolNix GUI 2018-04-11 19:58:04 +02:00
Moritz Bunkus
88d6585b46 GUI: mux: option for enabling dialog normalization gain removal by default
Implements #2272.
2018-04-10 20:30:27 +02:00
Moritz Bunkus
8e172d87b4 GUI: mux: options for only enabling tracks of certain types by default
Implements #2271.
2018-04-09 23:14:58 +02:00
Moritz Bunkus
02bd23748a MP4 reader: ignore second edit list entry if identical to first
There are several files out there with the following constellation:

* The video track contains an edit list with two entries.
* Both entries are identical.
* Both entries span the whole file's duration (they start at timestamp
  0 and span the time given in the movie header atom).
* The audio track doesn't have an edit list.

The result was that the video track was copied twice, the audio track
only once.

This enhancement changes mkvmerge to ignore the second, bogus entry if
these conditions are met.

See #2196 and #2270.
2018-04-09 20:48:17 +02:00
Moritz Bunkus
f99bea1f4a Windwos build: support shared libraries 2018-04-08 12:26:03 +02:00
Moritz Bunkus
0df19bc0ed GUI: mux: derive track language: let user customize recognized languages
Part of the enhancements for #2267.
2018-04-07 11:54:41 +02:00
Moritz Bunkus
f2da9990e8 GUI: mux: derive track language: let user customize regex
Part of the enhancements for #2267.
2018-04-07 11:54:41 +02:00
Moritz Bunkus
22ee0dc8eb GUI: mux: derive language from file name: if season/episode pattern present, only use postfix
Part of the enhancements for #2267.
2018-04-07 11:45:51 +02:00
Moritz Bunkus
298ad0077d GUI: make main window scrollable
Fixes #2265.
2018-04-05 20:18:25 +02:00
Moritz Bunkus
421bea2a39 VobSub packetizer: set container-level duration from SPU-level if missing
Fixes #2260.
2018-04-01 19:30:27 +02:00
Moritz Bunkus
b8389e65b4 bump version number, set release code name 2018-04-01 17:25:46 +02:00
Moritz Bunkus
c16380ed4d NEWS.md: reorder & reword elements for easier consumption 2018-04-01 17:19:45 +02:00
Moritz Bunkus
9cffff40b0 mkvmerge: add support for reading AV1 from IVF, WebM, Matroska 2018-04-01 16:49:34 +02:00
Moritz Bunkus
3eb1d8d140 GUI: info: hex dump: in-depth highlighting for Block & SimpleBlock 2018-03-28 18:26:56 +02:00
Moritz Bunkus
fb86c6c45d info: calculate frame positions correctly in summary mode 2018-03-28 13:13:11 +02:00
Moritz Bunkus
46e2650154 info: show position & sizes for frames same way as for other elements 2018-03-28 11:30:42 +02:00
Moritz Bunkus
2d6e450fbb GUI: info: add colored hex dump functionality via a context menu 2018-03-27 21:15:54 +02:00
Moritz Bunkus
e58d9e2e59 avoid narrowing conversion in std::string constructor
Fixes compilation with clang++ on FreeBSD. Fixes #2255.
2018-03-24 09:30:26 +01:00
Moritz Bunkus
9fa02e75ad MP4 reader: AAC: treat 8 channels in track headers, 7 in codec-specific config as 8 2018-03-22 22:12:43 +01:00
Moritz Bunkus
e84c470e6f GUI: info: implement scanning and reading clusters
All elements starting with and after the first cluster are only loaded
partially (only their element head). Their child elements are loaded
on demand: when the user expands that element in the GUI. On
collapsing the element the children are deleted again in order to keep
memory usage down.

Implements the rest of #2104.
2018-03-13 22:06:10 +01:00
Moritz Bunkus
d6e37faeb6 GUI: mux: implement deriving track languages from file names
Implements #1808.
2018-03-12 23:27:08 +01:00
Moritz Bunkus
4150a7a82e FLAC: skip/ignore ID3 tags
The FLAC specs specifically state that the only tag/comment system is
the FLAC comment header. It also states that the reference FLAC
utility can skip ID3 tags in FLAC files — but only as a courtesy, that
they're not part of the spec and that other utilities will likely not
work with such files.

mkvmerge now works with such files, too.

Implements #2243.
2018-03-10 18:32:19 +01:00
Moritz Bunkus
387578f9c1 GUI: header editor: update 'doc type (read) version' header elements if necessary
Part of the fix for #2240.
2018-03-10 14:04:11 +01:00
Moritz Bunkus
75e797b772 propedit: update 'doc type (read) version' header elements if necessary
Part of the fix for #2240.
2018-03-10 13:56:27 +01:00
Moritz Bunkus
83a933ac23 mkvmerge: set 'document type version' correctly for all known elements
Part of the fix of #2240.
2018-03-10 13:28:48 +01:00
Moritz Bunkus
7eae1503a6 mkvmerge: set 'doc type (read) version' depending on elements written
Prior to this change both fields were often set according to the
features that were enabled. For example, the 'doc type read version'
was set to 2 no matter whether or not a `SimpleBlock` element was
actually used unless the `--engage no_simpleblocks` option was used.

Now the decision is based solely on which elements and which values
are written.

Part of the fix of #2240.
2018-03-10 13:18:26 +01:00
Moritz Bunkus
2a14dbf4d0 TrueHD: implement dialog normalization gain removal
Last part of the implementation of #1981.
2018-03-09 19:16:10 +01:00
Moritz Bunkus
665e73c91a propedit, GUI header editor: allow deletion of mandatory elements with default values
Fixes #2241.
2018-03-09 10:29:03 +01:00
Moritz Bunkus
dadd071f64 NEWS.md: update for #1981 2018-03-08 21:03:24 +01:00
Moritz Bunkus
635a357d33 AC-3: implement dialog normalization removal
Implements part of #1981.
2018-03-06 21:57:17 +01:00
Moritz Bunkus
c891c27138 MPEG TS: handle continuity counter correctly if payload signalled but absent
The expected counter must be increased if payload is signalled, even
if the whole TS packet is made up solely of the adaptation field
2018-03-04 22:09:36 +01:00
Moritz Bunkus
7399ad77ac GUI: chapters: add "remove end timestamps" option to "additional modifications"
Implements #2231.
2018-03-03 09:53:43 +01:00
Moritz Bunkus
9d2dd3b10c MP4 reader: parse esds atom inside wave atom inside stsd atom 2018-02-27 20:29:57 +01:00
Moritz Bunkus
e960dc86fa build system: support for creating a compilation database 2018-02-26 21:42:25 +01:00
Moritz Bunkus
3139cc489e bump version number, set release code name 2018-02-24 10:41:09 +01:00
Moritz Bunkus
b30572bb3c MP4 reader: create default AAC decoder config if not present in ESDS
Normally the ESDS contains the decoder-specific configuration for AAC
tracks. If it doesn't, then a default configuration will now be
generated based on the track's header data (sample rate, channels).

Fixes #2221.
2018-02-24 10:39:01 +01:00
Moritz Bunkus
7f07d0e6f8 NEWS.md: reorder & reword elements for easier consumption 2018-02-24 09:18:23 +01:00
Moritz Bunkus
e3ea1bbd5c NEWS.md: update
The info tool in the GUI implements most but not everything
of #2104. Therefore the issue won't be closed just yet.
2018-02-23 15:06:18 +01:00
Moritz Bunkus
71b13f12e4 GUI: chapters: allow opening Matroska files without chapters in them
Implements #2218.
2018-02-23 15:04:12 +01:00
Moritz Bunkus
264bd9d8eb FLV reader: normalize timestamps down to 0 for each file
Fixes #2220.
2018-02-22 16:09:31 +01:00
Moritz Bunkus
9c271c0a68 FLV reader: consume all bytes for codec init data tag 2018-02-22 15:27:00 +01:00
Moritz Bunkus
6b5e78640b all: fix name of Adler-32 checksum algorithm 2018-02-21 19:51:04 +01:00
Moritz Bunkus
6d90617ba9 info: output positions in hex in summary mode if --hex-positions is used 2018-02-20 20:14:26 +01:00
Moritz Bunkus
a4056817bf Ogg Opus reader: emit warning instead of aborting on TOC decode errors
Fixes #2217.
2018-02-10 16:45:05 +01:00
Moritz Bunkus
d07b02272e NEWS.md: update 2018-02-04 18:05:37 +01:00
Moritz Bunkus
dee85f5f63 MP4 reader: support HEVC/h.265 stored as Annex B byte streams
Fixes #2215.
2018-02-04 12:08:22 +01:00
Moritz Bunkus
709d7863c6 mkvmerge: handle appending files with additional parts correctly
The code path for handling appending was only triggered if there was
exactly one entry between the parenthesis (e.g. `… + '(' VTS_02_1.VOB
')'`), but not with two and more.

Additional parts are usually only used for content from DVDs, and
appending content from DVDs is not an often-used function, it
seems. Therefore this bug didn't affect the vast majority of users.
2018-02-03 22:05:04 +01:00
Moritz Bunkus
c72df58a91 GUI: mux: disable tracks by default when appending to disabled tracks
For example: you add a file, disable the second audio track. Then you
append another file (again having two audio tracks). The second audio
track from the appended file will end up appended to the second audio
track from the first file by default — and as that is disabled, the
appended second audio track should be disabled too.

This is even clearer when considering that the GUI doesn't allow the
user to enable an appended track that's appended to a disabled track.
2018-02-03 21:40:10 +01:00
Moritz Bunkus
c1e884d7b8 GUI: mux: allow changing subtitle character set for appended tracks, too
Unlike e.g. the track language, which only applies to the single
destination track, the subtitle character set is a property of the
source file/source container format. Therefore the user must be able
to set it for each source file/track, too. mkvmerge already follows
that model.

Fixes #2214.
2018-02-03 11:39:01 +01:00
Moritz Bunkus
bbb2f069eb MIME detection: use libmagic's default path on Windows, too
On Windows libmagic uses the ANSI file functions for opening
files. Therefore passing file names with non-ASCII/non-ANSI characters
won't work a lot of the time. Therefore letting libmagic's look for
and use its default location algorithm is safer. As a result
`magic.mgc` must be stored in `share/misc` instead of `data`.

Fixes #2212.
2018-02-03 11:39:01 +01:00
Moritz Bunkus
2fee6c2d52 JSON parser: allow and ignore C++-style line comments 2018-01-31 21:17:38 +01:00
Moritz Bunkus
b11d441811 kax_file_c: only report cluster timestamp after resync if cluster is found
If the first level 1 element after the resync is something
else (e.g. chapters, tags, cues etc.), then no element is returned,
and the result would be a segfault.

Fixes #2211.
2018-01-30 21:05:56 +01:00
Moritz Bunkus
a26be1f600 configure: verify presence of msgfmt instead of relying on it 2018-01-21 13:04:29 +01:00
Moritz Bunkus
de37cf3418 build system: output error if command to execute isn't found 2018-01-21 12:48:15 +01:00
Moritz Bunkus
6e89cbc05d kax_info_c: Windows: write line endings as \r\n 2018-01-19 22:02:29 +01:00
Moritz Bunkus
80b5be1fd5 propedit: track statistics: account number of uncompressed bytes
Fixes #2200.
2018-01-18 20:58:33 +01:00
Moritz Bunkus
d609e0364b merge: track statistics: don't write TagDefault=1 as it's the default anyway
Implements #2202.
2018-01-18 20:04:56 +01:00
Moritz Bunkus
ce191d097b configure: handle --disable-ubsan and --disable-addrsan correctly
Fixes #2199.
2018-01-16 09:09:25 +01:00
Moritz Bunkus
43b0ec1b20 bump version number, set release code name 2018-01-15 18:55:01 +01:00
Moritz Bunkus
8e2d70af64 NEWS.md: reorder & reword elements for easier consumption 2018-01-15 18:51:06 +01:00
Moritz Bunkus
7fd87981a6 MPEG TS reader: drop incomplete PES packets when errors are detected
Before this change the incomplete packet would be filled with data
from other PES packets from after the error location. This would lead
to invalid frame data.

So now both the currently incomplete PES packet as well as all
following TS packets that don't have the
`payload_unit_start_indicator` flag set will be dropped.

mkvmerge assumes an error is present either if the
`transport_error_indicator` flag is set in the transport stream packet
header, or if the `continuity_counter` header field's value doesn't
match the expected value based on the previous transport stream packet
for the same track.

Fixes #2181.
2018-01-14 16:56:37 +01:00
Moritz Bunkus
6b43072ed1 MPEG TS reader: only parse TS payload as PES if payload starts with PES start code
A transport stream packet doesn't have to contain a packetized
elementary stream packet. If a TS packet is treated as such and
doesn't actually contain a PES packet, then trying to extract
timestamps from it will only result in invalid timestamps.

Fixes #2193.
2018-01-13 21:29:09 +01:00
Moritz Bunkus
dd48bdb7e2 NEWS.md: update for fixing #2194. 2018-01-11 09:45:45 +01:00
Moritz Bunkus
b84d180d69 Opus packetizer: force block duration if discard padding is set
Fixes #2188.
2018-01-06 10:50:33 +01:00
Moritz Bunkus
b80dbfa26a SRT parser: make decimal places optional
The parser will now accept `00:01:15`, too, and not just `00:01:15.000`.
2018-01-02 19:17:17 +01:00
Moritz Bunkus
f700dfbd1e build system: require cmark when building the GUIs 2018-01-01 16:42:06 +01:00
Moritz Bunkus
49b945af42 NEWS.md: re-format certain notes 2018-01-01 11:26:20 +01:00
Moritz Bunkus
aa30a636f7 NEWS.md: update for changes in mkvinfo 2018-01-01 11:26:20 +01:00
Moritz Bunkus
db1d022950 mm_read_buffer_io_c: retrieve file position on object creation
When an `mm_read_buffer_io_c` instance was created, it assumed the
underlying I/O object's stream position was 0. This doesn't have to be
the case, though. As the read buffer I/O class caches the file
position, too, this lead to it returning data from the wrong portion
of the underlying I/O object on subsequent reads.

One observable issue was that trying to detect the file type of MPLS
files that refer to short M2TS files failed with segmentation
faults.
2017-12-22 16:52:41 +01:00
Moritz Bunkus
ffb32a657b all: remove deprecated features
The features removed are:

* mkvmerge: the options `--identify-verbose` (and its counterpart
  `-I`), `--identify-for-gui`, `--identify-for-mmg` and
  `--identification-format verbose-text`
* all command line tools: the old, proprietary format used for option
  files
* all command line tools: support for passing command line options via the
  environment variables `MKVTOOLNIX_OPTIONS`, `MKVEXTRACT_OPTIONS`,
  `MKVINFO_OPTIONS`, `MKVMERGE_OPTIONS`, and `MKVPROPEDIT_OPTIONS`
2017-12-22 16:02:58 +01:00
Moritz Bunkus
4da48e2a6d NEWS.md: use "AVC/h.264" instead of just "AVC" 2017-12-21 15:36:28 +01:00
Moritz Bunkus
df794a1e19 AVC/h.264 parser: don't assume SPS/PPS NALUs signal start of new frame
Fixes #2179.
2017-12-21 15:35:27 +01:00
Moritz Bunkus
f9542464fa NEWS.md: update 2017-12-21 11:56:25 +01:00
Moritz Bunkus
366a362e08 mkvmerge: prevent lacing after gaps
Lacing works with a base timestamp for all frames in the
lace. Individual frame timestamps are calculated by adding the default
duration times the frame number (starting at 0) to the base timestamp.

This means that a gap in the timestamps cannot be expressed between
frames within the same lace. Therefore the first frame after each gap
must start its own lace.

Fixes #1700.
2017-12-20 20:53:13 +01:00
Moritz Bunkus
3c2417fb49 merge: AVC/h.264 (framed): remove access unit NALUs
Implements #2173.
2017-12-19 22:25:28 +01:00
Moritz Bunkus
8a59bace8a extract: AVC/h.264: insert access unit delimiter between consecutive IDR with same picture ID
Fixes #1704.
2017-12-19 22:07:59 +01:00
Moritz Bunkus
89ee5e50f3 AVC packetizer (framed): fix bitstream timing info updates all SPS NALUs
When mkvmerge is told to `--fix-bitstream-timing-information`, it will
now update all SPS NALUs, not just the ones in the AVCC.

Part of the fix for #1673.
2017-12-18 20:38:59 +01:00
Moritz Bunkus
44cc64dff3 AVC parser: bitstream timing fix: try to use exact representations
The earlier algorithm tried to ensure that the values for
`num_units_in_tick` and `time_scale` fit into 32 bits. However, the
result was that the numbers were only approximation — e.g. 50 fields
per second were expressed as 5368709 / 268435456 instead of 1 / 50.
2017-12-18 20:38:02 +01:00
Moritz Bunkus
274b68c616 GUI: update check dialog: convert Markdown links to HTML links
Fixes #2176.
2017-12-17 20:03:30 +01:00
Moritz Bunkus
71fb5374d8 bump version number, set release code name 2017-12-17 17:36:29 +01:00
Moritz Bunkus
24f8aaa984 NEWS.md: fix spelling 2017-12-17 17:33:41 +01:00
Moritz Bunkus
3bac1b72a1 NEWS.md: reorder & reword elements for easier consumption 2017-12-17 17:20:46 +01:00
Moritz Bunkus
04082b28af mkvmerge: use buffered I/O when reading MPLS multi-files 2017-12-17 17:13:45 +01:00
Moritz Bunkus
2d7ef656da mkvmerge: accept key frame up to 1ms earlier when splitting by timestamps/durations 2017-12-16 20:01:54 +01:00
Moritz Bunkus
0b930f6e09 update GitHub URLs to GitLab URLs 2017-12-16 17:27:02 +01:00
Moritz Bunkus
fe2c915edf GUI: job queue: save jobs on status change, not just when exiting
Fixes #2168.
2017-12-16 11:23:52 +01:00
Moritz Bunkus
6184fb60fe NEWS.md: add note about fixing #2166 2017-12-13 00:01:25 +01:00
Moritz Bunkus
ee6188e949 GUI: headers: don't compare original/current value if element's not present
This mostly fails on timestamp elements as the original value is an
invalid date and the current value is the minimum that Qt's
`QDateTime` control allows at that moment. That's usually something
like 2000-01-01 00:00:00.

However, if the element isn't present in the file, then it doesn't
matter what the current value in the GUI is — it won't be written
anyway. Therefore it shouldn't be used in the decision whether or not
to ask the user to confirm discarding unsaved changes.

Fixes #2167.
2017-12-12 21:37:17 +01:00
Moritz Bunkus
1b6d8267bd GUI: headers: focus on first modified page when asking for confirmation 2017-12-12 21:27:57 +01:00
Moritz Bunkus
01b3c41231 NEWS.md: fix name for the GUI 2017-12-12 21:26:17 +01:00
Moritz Bunkus
6d62419157 GUI: headers: re-translate property element titles properly on language change
The property element tables are initialized only once. At that point
the stored strings should be the English ones as
`translatable_string_c` instances so that they can be translated later
to whatever language is active at that moment.

The old code wasn't initializing the `translatable_string_c` instances
with the English texts, though, but with already translated
ones (e.g. German). This means that any later attempt to translate
them to the current locale (e.g. French) would fail as there's no
translation from e.g. German to French, only from English to French.

Fixes #2159.
2017-12-06 21:50:13 +01:00
Moritz Bunkus
1b60592223 GUI: mux: allow setting subtitle/chapter charset back to empty entry 2017-12-06 21:10:15 +01:00
Moritz Bunkus
7e4e628bd4 GUI: mux: honor selected chapter character set for MP4, MPEG-TS, Ogg/OGM
Fixes #2165.
2017-12-06 21:10:15 +01:00
Moritz Bunkus
5934eddc75 mm_text_io_c: fix seeking in UTF-16/-32 encoded files
The `getline` function tries to handle different line ending
styles (carriage returns, new lines, a mix of both). For that it has
to probe one more character after having found one of them. If that
probed character is not one of them, then the previous position has to
be restored — and that was wrongfully assuming that each character is
only one byte long. Which it isn't.

Fixes #2160.
2017-12-01 14:37:16 +01:00
Moritz Bunkus
13440601af GUI: save & restore column widths in tree & list views
Implements #2057.
2017-11-28 23:11:22 +01:00
Moritz Bunkus
037f02fd80 NEWS.md: update 2017-11-26 23:17:33 +01:00
Daniel Løvbrøtte Olsen
dda56f6b91 Add changelog for #2153
Add a blank line

Fix changelog to what it actually does
2017-11-21 19:42:38 +01:00
Moritz Bunkus
23d04f7905 MP4 reader: fix handling of edit lists entries with segment_duration == 0
Those should only mean "copy the whole file" if they're the only edit
list entry. If there are more entries, then simply ignore them.
2017-11-19 23:51:39 +01:00
Moritz Bunkus
beaf157e03 add Code of Conduct 2017-11-18 15:52:20 +01:00
Moritz Bunkus
0edc7c86ba bump version number, set release code name 2017-11-18 11:16:10 +01:00
Moritz Bunkus
c6ec459d00 NEWS.md: reorder & reword elements for easier consumption 2017-11-18 11:14:54 +01:00
Moritz Bunkus
9de81581f2 configure: enable strong stack protection for clang >= 3.5.0 2017-11-18 10:46:36 +01:00
Moritz Bunkus
4d5a052472 configure: use -O3 with mingw 7.2.0
Older versions suffered from issues such as segmentation faults on
startup with optimization levels higher than `-O2` or with
`-fipa-icf`. v7.2.0 is OK, though.
2017-11-17 22:21:40 +01:00
Moritz Bunkus
989e5df1eb configure: use -O3 with clang++ 3.8.0 or newer
Older versions suffered from excessive memory usage with optimization
levels higher than `-O1`:

%https://bugs.llvm.org/show_bug.cgi?id=11962

v3.8.0 is known to be OK, though.
2017-11-17 21:57:32 +01:00
Moritz Bunkus
0ee2d21708 AAC ADTS: channel_configuration == 7 means 7.1 = 8 channels
See ISO/IEC 14496-3 table 1.17 — Channel Configuration.

Fixes #2151.
2017-11-17 19:31:53 +01:00
Moritz Bunkus
28926d1155 NEWS: update 2017-11-17 16:30:57 +01:00
Moritz Bunkus
e8857c36e4 propedit, header editor: don't force date element to be present
Fixes #2143.
2017-11-01 18:06:28 +01:00
Moritz Bunkus
c42124e11c identification: only output date_… attributes if file contains date header field 2017-11-01 17:58:27 +01:00
Moritz Bunkus
380a02ce33 WebVTT parser: hours are optional in timestamp lines
Fixes #2139.
2017-10-27 17:30:33 +02:00
Moritz Bunkus
1e74155bcb mkvmerge: tags: fix missing mandatory SimpleTag elements 2017-10-20 21:47:06 +02:00
Moritz Bunkus
c5fda0c4b6 GUI: mux: disable "AAC is SBR" if selected track cannot be affected by it 2017-10-15 16:43:05 +02:00
Moritz Bunkus
7fc648411a GUI: mux: disable "reduce to core" checkbox if selected track isn't DTS
The functionality is only applicable to DTS tracks at the moment. See #2134.
2017-10-15 15:45:27 +02:00
Moritz Bunkus
8f500f1881 bump version number, set release code name 2017-10-14 16:36:32 +02:00
Moritz Bunkus
41f9ca7932 NEWS.md: reorder & reword elements for easier consumption 2017-10-14 16:16:06 +02:00
Moritz Bunkus
89d46c3b9f NEWS: add missing genitive's s 2017-10-11 18:03:43 +02:00
Moritz Bunkus
dce1d35bd9 NEWS: update for the change to mkvextract's command line interface 2017-10-11 16:20:31 +02:00
Moritz Bunkus
c709cf94a9 merge: try reliable audio (AAC, AC-3, MP3) detection before MPEG TS/PS detection
Audio frames at the start of the file should have higher precedence,
especially over formats that don't always have start codes at the
beginning of the file.

Fixes certain AC-3 files being mis-detected as encrypted MPEG program streams.
2017-10-07 17:27:16 +02:00