Commit Graph

513 Commits

Author SHA1 Message Date
Moritz Bunkus
eaed3ca555
GUI: add Hebrew to default list of often used languages
Fixes #2610.
2019-08-27 20:10:08 +02:00
Moritz Bunkus
c8f74c82f1
bump version number, set release code name 2019-08-24 10:02:59 +02:00
Moritz Bunkus
f643aabfed
NEWS: add entry about Qt version downgrade for Windows builds
Addresses #2605.
2019-08-24 09:56:02 +02:00
Moritz Bunkus
07b412ae6b
GUI: mux: unique file names: only remove trailing number on directory changes
The caller of the function `generateUniqueOutputFileName` knows
whether or not the base name given to the function is the base name of
the first added file or the current content of the destination file
name control. Only in the latter case is the suffix added for
uniqueness present and has to be removed.
2019-08-19 13:47:26 +02:00
Moritz Bunkus
a6fd6a05e9
GUI: default for often used languages from Wikipedia's languages by native speakers
The prior selection was pretty Western-centric with a couple of
additions from Asia. However, there are so many more languages, and
for a lot of them there are many more native speakers than for those
which were on the list before this change.

The new list simply mirrors Wikipedia's "List of languages by number
of native speakers" found at
https://en.wikipedia.org/wiki/List_of_languages_by_number_of_native_speakers

Additionally the GUI will only show the often used languages in
drop-down boxes by default.

Both can still be changed in the preferences.
2019-08-12 18:32:06 +02:00
Moritz Bunkus
41e3e941df
bump version number, set release code name 2019-08-10 16:18:29 +02:00
Moritz Bunkus
48bdd0dbce
NEWS: reorder for easier consumption 2019-08-10 16:15:21 +02:00
Moritz Bunkus
190827ee5a
text I/O: always treat newlines as EOL regardless of detected EOL style
Problematic were files for which DOS-style EOLs were
detected (carriage return followed by newline, \r\n) but which had
some lines terminated solely by a newline (\n). In such a case the
EOL was only detected upon seeing the next \r\n, and the value
returned from the `getline()` function would return something that
everyone would judge to be multiple lines of text.

Fixes #2594.
2019-08-10 16:05:57 +02:00
Moritz Bunkus
2b46d4adc1
all: use current spelling of macOS instead of old Mac OS 2019-08-10 14:47:04 +02:00
Moritz Bunkus
182190c2da
update NEWS for fixing #2600 2019-08-10 14:35:35 +02:00
Moritz Bunkus
f383f8c78c
all: use H.265 instead of h.265
Second part of the fix of #2600.
2019-08-10 14:34:54 +02:00
Moritz Bunkus
b56918d388
all: use H.264 instead of h.264
Part of the fix of #2600.
2019-08-10 14:29:54 +02:00
Moritz Bunkus
e786ec8634
MPLS: look for .m2ts if no file with extension from clip_codec_id is found
In this particular case the `clip_codec_information` field contained
the value `FMTS`. The file in the `STREAM` sub-directory still has the
extension `.m2ts`, though.

Fixes #2601.
2019-08-10 13:59:08 +02:00
Moritz Bunkus
02a074b61f
source: fix compilation with Boost 1.71.0 beta 1
Due to argument-dependent lookup rules the `boost::algorithm::split`
function has always been considered by the compiler when resolving an
unqualified call to `split`.

Before Boost 1.71.0 the `boost::algorithm::split` function took an
lvalue reference as its `Input` argument. Therefore a temporary
instance of `std::string` would cause `boost::algorithm::split` not to
be considered due to SFINAE, and the compiler would keep looking,
finally finding the top-level `split` function.

In Boost 1.71.0 the first argument was changed to an rvalue
reference. Therefore the temporary `std::string` instance is now a
valid argument to the function, and the compiler considers
`boost::algorithm::split` to be a possible call. Other functions
aren't looked up.

The fix is easy: just be explicit which namespace to take the symbol
from. That way argument-dependent lookup will not be done.

Fixes #2599.
2019-08-08 17:49:50 +02:00
Moritz Bunkus
2548a7f349
mkvmerge: allow appending video tracks with differing pixel dimensions
Implements #2582.
2019-07-08 18:08:39 +02:00
Moritz Bunkus
2054835cd7
bump version number, set release code name 2019-06-22 12:05:29 +02:00
Moritz Bunkus
578c291281
NEWS.md: escape < and > properly 2019-06-19 17:16:08 +02:00
Moritz Bunkus
559bead9ef
GUI: mux: re-translate file type names on UI language changes
Fixes #2572.
2019-06-18 17:50:58 +02:00
Moritz Bunkus
1838369723
GUI: jobs: add action to execute type "delete source files"
This is a destructive action; no user confirmation is requested. The
action only works for multiplexer jobs, not for info jobs.

The action is disabled by default. It has to be enabled to be usable
at all, and if it should always be executed, one of the two options
"After a job completes successfully or with warnings" or "After a job
exits with an error or the user aborts the job" must be enabled, too.

Implements #869 and #2570.
2019-06-17 22:16:33 +02:00
Moritz Bunkus
8d1d365bf7
GUI: mux: reset tab name when destination file name is cleared
Only the Windows version was affected. Fixes #2571.
2019-06-17 20:38:56 +02:00
Moritz Bunkus
39557e80a0
Matroska reader: add "codec_name" track property in JSON identification 2019-06-17 19:53:27 +02:00
Moritz Bunkus
5d72ab271a
Matroska reader: copy "codec name" track property if set
Fixes #2566.
2019-06-17 19:32:06 +02:00
Moritz Bunkus
61e272dd36
bump version number, set release code name 2019-05-18 13:19:23 +02:00
Moritz Bunkus
92f9ec9847
Matroska reader: don't buffer if reading next frame is forced
With very large video frames (one test file has h.264 from Blu-rays
with ten seconds between key frames and an average frame size of ~350
KB) buffering due to external timestamps being applied could easily
lead to the packetizer holding more than 128 MB of data in memory
while waiting for the next key frame before it can apply the
timestamps. The reader must not refuse to deliver frames in such a
case, otherwise the next I frame will never appear, the packetizer
will never write out those buffered frames and the whole process ends
up in an endless loop.

Fixes #2550.
2019-05-18 12:37:43 +02:00
Moritz Bunkus
dc163cc4d5
AV1: use container timing info if no bitstream timing info present
Fixes #2553.
2019-05-18 10:40:35 +02:00
Moritz Bunkus
d9c9b2498f
subtitles: treat all frames as key frames
Fixes #2541.
2019-04-17 15:54:46 +02:00
Moritz Bunkus
2556a08165
bump version number, set release code name 2019-04-15 00:03:55 +02:00
Moritz Bunkus
d1699b711b
NEWS.md: mention the stack protection bug fix 2019-04-14 23:42:16 +02:00
Moritz Bunkus
725f0bd983
NEWS.md: update due to it fixing #2534, too 2019-04-14 23:38:19 +02:00
Moritz Bunkus
1849ec8199
GUI: mux: use native separators for auto-generated file unique file names
This mostly affects UNC paths (e.g. `\\server\Videos\…`) which would
be turned into forward slashes (`//server/Videos/…`) which mkvmerge
doesn't support.

Fixes #2533.
2019-04-14 14:51:12 +02:00
Moritz Bunkus
c3b611d6ee
bump version number, set release code name 2019-04-12 15:26:42 +02:00
Moritz Bunkus
ba2c4422b8
NEWS.md: reorder for easier consumption 2019-04-12 15:22:31 +02:00
Moritz Bunkus
414e9ce99c
GUI: info: determine end of elements with unknown size correctly
Fixes #2530.
2019-04-10 21:22:01 +02:00
Moritz Bunkus
a2e7d242c8
mkvinfo: report size of elements with unknown size correctly
Part of the fix of #2530.
2019-04-10 21:21:30 +02:00
Moritz Bunkus
4db66e2574
GUI: mux: temporarily ignore invalid destination file names
Before the GUI tried to make the destination file name valid after
each change. This worked badly with the user trying to change the
drive letter by adding the new one and removing the old one in two
steps.

Now the GUI will simply ignore an invalid destination file name for
the time being. The file name will still be verified when the job is
started or added to the queue.

Fixes #2527.
2019-04-09 21:35:04 +02:00
Moritz Bunkus
765f23e1c0
GUI: mux: only remove auto-added uniqueness suffixes from destination file name
Removing all suffixes of the form "a space character followed by (
followed by a number followed by )" would also remove things such as
years (e.g. "Amélie (2001)" was truncated to "Amélie" before trying to
make the file name unique).

Now the GUI remembers which suffix it hat to add the last time it
tried to make the name unique, and only that suffix will be removed on
the next attempt.

Fixes #2521.
2019-04-09 21:00:09 +02:00
Moritz Bunkus
2db0796bad
Blu-ray utils: don't try to canonicalize the path
On Windows symbolic links are used when mounting a drive as a
sub-folder somewhere. Unfortunately Boost::Filesystem's `canonical`
function tries to read those symlinks and throws an exception that the
operation isn't supported.

Fixes #2522.
2019-03-14 16:33:54 +01:00
Moritz Bunkus
f79d7ce156
NEWS.md: fix position of line forgotten during reordering 2019-03-12 22:11:21 +01:00
Moritz Bunkus
c2b2181abe
bump version number, set release code name 2019-03-12 21:35:12 +01:00
Moritz Bunkus
376a0627ce
NEWS.md: reorder & reword for easier consumption 2019-03-12 21:28:20 +01:00
Moritz Bunkus
bb0ad9eb00
GUI: mux: only change file name on "set dest name from selected file"
Part of the fix of #2519.
2019-03-12 21:17:14 +01:00
Moritz Bunkus
8b8382524f
GUI: mux: check file name uniqueness policy after destination dir change
Part of the fix of #2519.
2019-03-12 21:17:14 +01:00
Moritz Bunkus
218a6d71b4
build system: require libMatroska 1.5.0 2019-03-12 21:02:44 +01:00
Moritz Bunkus
d8803346e8
std::string/wstring conversion: use correct functions wrt. wchar_t size
On Windows `wchar_t` is only two bytes long, not four; meaning
`std::wstring` are actually UTF-16 encoded.

Part of the fix of #2516.
2019-03-06 22:42:13 +01:00
Moritz Bunkus
82b8b1ba86
build system: require libEBML v1.3.7
This pulls the fixes for handling Unicode code points >
U+FFFF.

Part of the fix of #2516.
2019-03-06 22:41:03 +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
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
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