Commit Graph

284 Commits

Author SHA1 Message Date
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