Commit Graph

12581 Commits

Author SHA1 Message Date
Moritz Bunkus
4d8e065187
translations: update list of translatable strings; update German translation 2019-03-06 19:38:11 +01:00
Timofey Lisunov
cfc2d9f94d
translations: update Russian 2019-03-06 19:37:02 +01:00
Roberto Boriotti
d099b6762a
translations: update Italian 2019-03-06 19:36:49 +01:00
TMTisFree
493ef12517
translations: update French 2019-03-06 19:36:42 +01:00
Israel Lucas Torrijos
f6efd90f80
translations: update Spanish 2019-03-06 19:36:36 +01:00
Israel Lucas Torrijos
a04be2511e
man page translations: update Spanish 2019-03-06 19:36:28 +01:00
Moritz Bunkus
8de336ae5f
GUI: info: add element data size as additional column 2019-03-06 19:31:25 +01:00
Moritz Bunkus
11067b213b
mkvinfo: show element's data size when --size is used 2019-03-06 19:31:20 +01:00
Moritz Bunkus
60bf14c88f
build system: don't use -Wdouble-promotion
Can't get rid of one particular warning on clang.
2019-02-23 21:11:19 +01:00
Moritz Bunkus
8e45394048
build system: add several more warning flags & fix results part 3 2019-02-23 21:11:19 +01:00
Moritz Bunkus
b6e79797bb
build system: add several more warning flags & fix results 2019-02-23 21:11:19 +01:00
Moritz Bunkus
9a084c268f
build system: add several warning flags & fix results 2019-02-23 21:11:19 +01:00
Moritz Bunkus
3cbd95b003
build system: move compiler flag determination to Rakefile
Logic's more straight forward to implement there instead of having to
check in `configure`, adding a variable to `build-local.in` and using
that variable later on. The logic's the same in both places anyway.
2019-02-23 21:11:19 +01:00
Moritz Bunkus
b372ad4e69
GUI: mux: add "Delay" column to track list
Implements #2506.
2019-02-15 15:17:15 +01:00
Moritz Bunkus
3a0bd44e90
mkvmerge: catch boost::filesystem errors when looking for Blu-ray base dir
mkvmerge tries to find the Blu-ray base directory when handling
certain files that can occur on a Blu-ray such as M2TS or MPLS play
list files. It tries to find additional files with as the streams
referenced in the play lists or clip information files from the CLPI
sub-directory.

That function simply crawls the path upwards to the root of the file
system. This works nicely with Unix paths (`/path/to/file.m2ts`) or
normal Windows paths (`C:\path\to\file.m2ts`). Things go wrong on
Windows with UNC paths, though (`\\servername\sharename\path\to\file.m2ts`).

mkvmerge looks for `\\servername\sharename\path\to\index.bdmv` and
then iterates back towards the server name. As soon as the path to
check removes the share name, the check for the resulting
`\\servername\index.bdmv` will throw a
`boost::filesystem::filesystem_error` with the message that the server
in question doesn't offer a share named `index.bdmv`. That exception
must not bubble; instead the algorithm must simply stop at that point
and return unsuccessfully.

Fixes #2507.
2019-02-15 14:54:41 +01:00
Moritz Bunkus
71865d9081
macOS build: don't use visibility compiler flags
According to issue #2508 a self-compiled version of `mkvextract`
misbehaves if the option `-fvisibility=hidden` is used. As building my
own DMG without the option works just fine, and as the resulting
programs work fine, too, I'll simply drop both flags from the build
process altogether.

Fixes #2508.
2019-02-13 13:35:49 +01:00
Moritz Bunkus
ac30bb5a04
macOS build: remove paths & checksums for Qt 5.11.0, 5.12.0 2019-02-13 13:35:29 +01:00
Moritz Bunkus
d688e2b6b7
macOS build: don't build Ruby
The Ruby version bundled with macOS Mojave suffices and is quite a bit
newer than what `build.sh` would have built.
2019-02-13 13:35:10 +01:00
Moritz Bunkus
2f5ba37322
GUI: Windows: make portable mode detection independent of current working directory
The "portable or installed" detection looks for a file called
`portable-app` located in the `data` sub-directory of the directory
the GUI's executable file is located in. For this to work the path to
the executable file must be determined.

Before the fix this was done in the constructor of the `App` class,
which is rather early, but not early enough as the earliest code
trying to access the settings file (and therefore the earliest code
requiring knowledge of the executable's path) is actually run directly
from `main` long before `App` is instantiated.

When that code is run before the executable's path is determined, the
path to the executable is left empty. Therefore the GUI looks in the
current working directory for the `data\portable-app` file. This works
if the current working directory is the same the executable is located
in, e.g. you open Windows Explorer, navigate to the GUI's installation
folder and double-click the executable. In that case determining if
the application is portable or installed works just fine.

However, the working directory might be set to something completely
different. For example, the "open with" functionality sets the working
directory to the directory the file that the user calls "open with" on
is located in. The GUI then looks for `data\portable-app` in the same
directory the clicked-on file resides in and will not find
it. Consequently the GUI thinks it's been installed and looks for the
settings file in the user's `AppData\local\bunkus.org\mkvtoolnix-gui`
directory.

The fix is to initialize the MKVToolNix common library and with it the
current executable's location first thing from `main`, before the
GUI looks for the settings file for the first time.

Fixes #2501.
2019-02-10 22:50:23 +01:00
Moritz Bunkus
e8b1532a86
GUI: system information: include installation type, INI file location 2019-02-10 20:22:40 +01:00
Moritz Bunkus
80189ddadc
news_to_releases_xml: Trollop gem was renamed to Optimist 2019-02-09 11:45:05 +01:00
Moritz Bunkus
29db3ff4bd
bump version number, set release codename 2019-02-09 11:32:31 +01:00
Moritz Bunkus
ba5d1fdb85
NEWS.md: reorder & reword for easier consumption 2019-02-09 11:29:17 +01:00
Dian Li
e9fe85ad80
translations: update Chinese Simplified 2019-02-08 20:34:34 +01:00
Antoni Bella Pérez
36426057a0
man page translations: update Catalan 2019-02-07 19:09:01 +01:00
Antoni Bella Pérez
3e66c18f09
translations: update Catalan 2019-02-07 19:08:47 +01:00
Jan Mazurczyk
17fea3fb0a
translations: update Polish 2019-02-07 19:07:34 +01:00
Moritz Bunkus
5a294ab24c
NEWS: fix spelling mistake 2019-02-07 19:06:27 +01:00
Andrei Stepanov
00c07544e7
translations: update Russian 2019-02-07 14:46:47 +01:00
Dian Li
9e98a4eae3
translations: update Chinese Simplified 2019-02-07 14:46:46 +01:00
Dian Li
697cc4cd24
man page translations: update Chinese Simplified 2019-02-07 14:46:46 +01:00
Moritz Bunkus
2d0207adb9
GUI: use virtual destructors to job private classes
The pimpl idiom (data members stored in a private class) requires that
the main base class stores a pointer to the private class
instance. This pointer's type must be the private base
class. Obviously the pointer may point to an instance of a derived
private class.

Deletion happens via the private base class. If the destructor of that
class hierarchy isn't virtual, only the private base class's
destructor is called, even if the pointer points to a derived private
class. Consequently the destructors of data member in derived classes
aren't called either.

This is a problem for data members that need to clean up after
themselves, such as temporary files that should be deleted whenever
the

Fixes #2499.
2019-02-07 14:39:47 +01:00
Moritz Bunkus
6158331c32
translations: update list of translatable strings; update German translation 2019-02-05 20:04:06 +01:00
Moritz Bunkus
01addee9c0
AVI reader: report DV type 1 AVIs as unsupported file types
avilib doesn't support DV type 1 AVIs at all. It used to print an
error message to standard error; additionally it didn't propagate the
error back to the caller resulting in invalid memory accesses and
subsequent crashes.

Fixes #2491.
2019-02-05 20:03:16 +01:00
Moritz Bunkus
f37fa08ff6
GUI: chapters: fix drag & drop handling with Qt ≥ 5.12.0
For details see 630be1cc07 which fixes
the same issue for the multiplexer.

Part of the fix of #2472.
2019-02-05 16:57:45 +01:00
Moritz Bunkus
bae2711c17
man page translations: update list of translatable strings; update German translation 2019-02-05 15:10:43 +01:00
Moritz Bunkus
f98173d93f
translations: update list of translatable strings; update German translation 2019-02-05 15:02:43 +01:00
Moritz Bunkus
0bf90820e9
all: add option for aborting on warnings
Implements #2493.
2019-02-05 14:50:37 +01:00
Moritz Bunkus
0830be34db
build sys: include globally-required modules from single place 2019-02-05 13:45:34 +01:00
Moritz Bunkus
630be1cc07
GUI: mux: fix drag & drop handling with Qt ≥ 5.12.0
Qt's drag & drop handling was refactored for 5.12.0. One effect is
that somewhat sloppy programming that worked before fails now. In this
particular case the multiplexer's `Tab` widget (which is the top-most
widget for each multiplexer tab) hat its `acceptDrops` property set to
`true` but didn't implement the corresponding functions.

The desired behavior was that the `Tool` class, which implements the
container for all the `Tab` instances, receives the D&D events. So the
solution is simple: if you don't reimplement the D&D functions, don't
have your `acceptDrops` property set.

Additional fixes were required for the two `BasicTreeView` elements:
those handle D&D already, but the `Tab` class didn't connect to their
"files were dropped" signal correctly.

Fixes #2472.
2019-02-04 16:50:53 +01:00
Jan Mazurczyk
774ea97f92
translations: update Polish 2019-02-03 13:31:50 +01:00
Moritz Bunkus
ba36af83f6
macOS: build against Qt 5.12.1 2019-02-03 12:51:46 +01:00
Moritz Bunkus
47058a6da2
HEVC: use height of full frame for dimensions for interlaced streams
Fixes #2446.
2019-01-26 13:48:52 +01:00
Moritz Bunkus
dfe23e5f52
AppImage build: fix building against self-compiled Boost 2019-01-26 13:31:27 +01:00
Moritz Bunkus
00468a549b
macOS build: move certain compiler & linker flags to build system
That way they don't have to be set manually before running `configure`.

Fixes #2485.
2019-01-26 12:02:55 +01:00
Moritz Bunkus
1f077f99cb
macOS build: don't use a cache file for configure 2019-01-25 22:47:46 +01:00
Moritz Bunkus
77b810a9d2
RPM spec file: use self-built, current Boost instead of system Boost 2019-01-25 22:37:42 +01:00
Moritz Bunkus
e249e396f4
fix wrong naming due to copy & paste 2019-01-25 15:06:53 +01:00
Moritz Bunkus
9e1a1f3de6
subtitles: allow duration = 0ms
Various places needed to differentiate better between "no duration is
known or set for this packet" and "this packet has a duration of
0ms". The former means that no duration element should be written to
the file, and the use of `SimpleBlock` instead of `BlockGroup` is
OK. The latter on the other hand means that a `BlockGroup` must be
used and a duration element must be added.

This core change uncovered a couple of subtle bugs in other places
where subtitles were handled:

• The Matroska reader passed 0 as the duration even if no duration
  element was present making it impossible for other code to
  differentiate between "no duration present" and "duration present
  but set to 0".
• The DVB subtitle packetizer always enforced writing the duration
  even if the duration wasn't known.
• The Kate packetizer used a wrong dummy value of 1us for the duration
  for the "end of stream" packet as the core would not write a
  duration of 0.
• The text subtitle packetizer was using the difference between the
  current packet and the following one for packets were the duration
  was 0 or unknown. The correct behavior is to do this only if the
  duration is unknown, not if it is 0.

Fixes #2490.
2019-01-24 16:01:22 +01:00
Moritz Bunkus
52420c6a51
mkvmerge: more debug output regarding durations 2019-01-23 19:51:03 +01:00