Commit Graph

156 Commits

Author SHA1 Message Date
Moritz Bunkus
44d2a7f5f7 GUI: headers: support for editing video colour track attributes
Implements the second half of #2038. Also adds the necessary changes
for implementing #2064 eventually.
2017-08-05 07:18:40 +02:00
Moritz Bunkus
07ed6bd656 propedit: add support for video colour attributes
This implements one half of #2038.

Note that this commit breaks the GUI's header editor until support for
editing sub-sub-sub-masters will be added to it (soon).
2017-08-03 21:06:55 +02:00
Moritz Bunkus
f212463f76 GUI: job queue: show "move up/down" buttons if enabled in preferences
Implements the second half of #2060.
2017-07-31 21:19:39 +02:00
Moritz Bunkus
40af013949 GUI: job queue: moving select jobs up/down with the keyboard
The shortcuts are the same used in all other views where moving with
keyboard shortcuts is possible: `Ctrl+Up` and `Ctrl+Down`.

Implements the first half of #2060.
2017-07-31 20:59:43 +02:00
Moritz Bunkus
d150fdc77b GUI: mux: option for ignoring non-video files for auto-setting destination file name
Added an option in the preferences on "Multiplexer" → "Output" labeled
"Only use the first source file that contains a video track". If
enabled, only source files containing video tracks will be used for
setting the destination file name. Other files that are added are
ignore.

Implements the rest of #2058.
2017-07-30 19:17:29 +02:00
Moritz Bunkus
b5a30e9533 GUI: mux: menu entry for setting destination file name from source file's
This is a new menu entry in the "source files" list box's context
menu.  Selecting it will force the GUI to consider the selected file
to be the reference for automatically setting the file name, no matter
which file was originally added as the first file.

It will also force setting the destination file name once if automatic
destination file name generation is turned off in the preferences.

Implements part of #2058.
2017-07-30 17:34:10 +02:00
Moritz Bunkus
2471e66d59 MKVToolNix GUI: removed keyboard shortcuts for switching between tools
This removes shortcuts such as `Ctrl+Alt+1` for switching to the
multiplexer. These shortcuts overlapped with basic functionality on
keyboards that use an `AltGr` key, e.g. German ones, where `AltGr+7`
emits `{`. As `AltGr+key` is implemented as `Ctrl+Alt+key` under the
hood, this means that `AltGr+7` is really `Ctrl+Alt+7` which the GUI
now took to mean "switch to the job queue" instead of "insert
`{`".

Fixes #2056.
2017-07-28 15:44:09 +02:00
Moritz Bunkus
d31fb3961a configure: add option for disabling the update check code 2017-07-23 17:25:13 +02:00
Moritz Bunkus
69788c4a95 NEWS.md: re-order/re-file entries to make them easier to digest 2017-07-23 10:22:41 +02:00
Moritz Bunkus
81e80883ee bump version number, set release codename 2017-07-23 10:11:32 +02:00
Moritz Bunkus
52700e5139 GUI: mux: don't allow sub charset changes if mkvmerge doesn't support changing
This commit implements two things for subtitle tracks:

1. There are several situations in which mkvmerge doesn't let the user
   change the subtitle character set, e.g. due to a byte order mark in
   the source file or the source file only supporting UTF-8
   anyway (e.g. Matroska). In such a case the GUI will now disable the
   "subtitle character set" drop-down box.

2. mkvmerge now outputs a track's encoding/character set as a track
   property during file identification if that encoding can be
   determined with confidence (same situations as in 1.). If that is
   the case, the GUI will auto-select that encoding in the "subtitle
   character set" drop-down box, even if that drop-down box is
   disabled.

Both changes together give the user the information that she doesn't
have to take care of the encoding herself, and which encoding it
actually is.

Implements the GUI's part of #2053.
2017-07-23 09:28:03 +02:00
Moritz Bunkus
95092247aa mkvmerge: identify track's "encoding" if known and fixed
This is preparation for making the GUI present the encoding detected
by e.g. a byte order mark to the user so that she doesn't have to (and
cannot) chose a subtitle character set herself. Implements mkvmerge's
part of #2053.
2017-07-23 09:22:31 +02:00
Moritz Bunkus
dd3c307335 NEWS: update 2017-07-22 20:34:49 +02:00
Moritz Bunkus
8b977f9c40 NEWS: update for Romanian translation 2017-07-22 17:51:40 +02:00
Moritz Bunkus
a6fbfa1e70 GUI: chapters: add support for chapters in WebM
Chapters and tags in WebM only allow a subset of elements. The
unsupported ones must be removed before chapters are written to a WebM
file.

Implements MKVToolNix GUI's chapter editor's part of #2002.
2017-07-22 14:59:53 +02:00
Moritz Bunkus
191384fe63 propedit: WebM & tags: remove unsupported elements
Inspired by #2002.
2017-07-22 14:59:53 +02:00
Moritz Bunkus
16db13aa23 propedit: add support for chapters in WebM
Chapters and tags in WebM only allow a subset of elements. The
unsupported ones must be removed before chapters are written to a WebM
file.

Implements mkvpropedit's part of #2002.
2017-07-22 14:59:53 +02:00
Moritz Bunkus
3b9b74e052 mkvmerge: add support for chapters in WebM files
Implements mkvmerge's part of #2002.
2017-07-22 13:30:32 +02:00
Moritz Bunkus
60f384f3a0 GUI: mux: ensure output name uniqueness before adding to queue
Otherwise the following steps would end up overwriting an existing
file:

* add a file
* start multiplexing
* re-use the same settings
* don't change anything regarding files & track selection (but modify
  e.g. a track language)
* start multiplexing again

Fixes #2052.
2017-07-22 10:56:04 +02:00
Moritz Bunkus
8e270adcef WAV reader: implement Wave64 support
Implements #2042.
2017-07-21 22:17:04 +02:00
Moritz Bunkus
7fb3003919 AAC: store GA specific config & handle 960 samples/frame
Implements #2031.
2017-07-20 21:57:53 +02:00
Moritz Bunkus
f8e425714e configure: look for nlohmann/json.hpp first, json.hpp second
The upstream project intends the include files to be installed in
`$includedir/nlohmann/json.hpp`,
e.g. `/usr/include/nlohmann/json.hpp`. Debian did not follow that
recommendation and installed them directly in `$includedir`. Therefore
`configure` was only looking for the latter, not the former.

However, Debian will soon follow suit. Therefore detection has been
extended to check for the intended location first.

Fixes #2048.
2017-07-17 20:58:19 +02:00
Moritz Bunkus
4e9351a2d3 merge: output packetizer's error message if appending fails
Fixes #2046.
2017-07-16 17:37:55 +02:00
Moritz Bunkus
541348d7da MPEG-1/-2: remove feature "remove stuffing bytes"
The feature was implemented by removing all 0 bytes in before the next
start code (and all 0 bytes at the end of the buffer). The problem is
that a slice structure may very well end in 0 bytes. The only way to
determine the end of the slice structure with confidence is
implementing a parser for the whole slice structure.

The result of removing bytes belonging to the slice structure may or
may not end in visual artifacts upon decoding. Other results include
error message by the decoder (e.g. ffmpeg which reports errors such as
"slice mismatch" or "motion vectors not available").

I lack the time and motivation to implement a proper slice parser. As
the current behavior is dangerous and just plain wrong, I'm removing
the feature again. It was introduced in release 5.8.0 response to
issue #734, which will now remain not implemented.

Fixes #2045.
2017-07-15 21:37:04 +02:00
Moritz Bunkus
e69efdb4d6 GUI: mux: en-/disable appended tracks when parent track is en-/disabled
Otherwise the GUI will generate instructions for mkvmerge for track
IDs that mkvmerge won't use, and mkvmerge in turn aborts with an
error.

Fixes #2039.
2017-07-14 17:46:22 +02:00
Moritz Bunkus
d7710cd66c GUI: chapters: add "calculate & set end timestamps" functionality
The function is available from the "additional modifications" dialog.

For most entries the smallest start timestamp of all chapters on the
same level higher than the current chapter's start timestamp will be
used as its end timestamp.  If there is no such chapter, the parent
chapter's end timestamp will be used instead.

If the chapters were loaded from a Matroska file, the end timestamp
for very last chapter on the top-most level will be derived from the
file's duration.

Implements #1887.
2017-07-14 10:57:51 +02:00
Moritz Bunkus
ed6586569a build system: require Boost 1.49.0 or newer
Earlier versions fail to build on both my development system as well
as my CentOS 7 BuildBot CI instance. Therefore I cannot properly
support that version anymore.

See #2037.
2017-07-11 19:44:27 +02:00
Moritz Bunkus
445b6277d6 MPEG PS reader: don't fall through to "program stream map" on "end code" 2017-07-09 21:01:30 +02:00
Moritz Bunkus
039ba1da35 GUI: Windows: derive default font by querying Windows instead of hardcoding
This might fix issues such as #2003 (unverified).
2017-07-06 21:03:35 +02:00
Moritz Bunkus
a557bd80f3 GUI: add "Window" menu with "next/previous tab" entries including shortcuts
Implements #1972, #2032.
2017-07-06 18:16:21 +02:00
Moritz Bunkus
53b92cf803 GUI: prevent progress reverting to 0% when all jobs have finished
This bug was introduced by the attempt at fixing the computation of
the value of total progress bar for multiple jobs
running.

Fixes #2005.
2017-07-05 18:42:09 +02:00
Moritz Bunkus
a2d726581e NEWS.md: fix spelling mistake 2017-07-05 18:37:08 +02:00
Moritz Bunkus
451d9a9e93 GUI: change tool selection shortcuts from Alt+num to Ctrl+Alt+num
This avoids clashing with Windows' input method for arbitrary
characters by pressing and holding `Alt` and typing the codepoint on
the number pad.

Implements #2034.
2017-07-05 17:13:21 +02:00
mkver
3a64e770bf Update NEWS.md
Fixing some typos.
2017-07-05 14:14:10 +02:00
Moritz Bunkus
2ddfa31deb HEVC/h.265 parser: flush queued frames on SPS/PPS changes
Whenever a sequence parameter set or picture parameter set
changes (meaning an SPS with the same ID as an earlier SPS but with
different content is found), all frames queued for order & timestamp
calculation must be flushed. Otherwise frame order calculation will be
based on wrong values for some frames and on correct values for other
frames.

This is the HEVC/h.265 equivalent of #2028.
2017-07-04 21:27:28 +02:00
Moritz Bunkus
def48b2606 AVC/h.264 parser: flush queued frames on SPS/PPS changes
Whenever a sequence parameter set or picture parameter set
changes (meaning an SPS with the same ID as an earlier SPS but with
different content is found), all frames queued for order & timestamp
calculation must be flushed. Otherwise frame order calculation will be
based on wrong values for some frames and on correct values for other
frames.

Fixes #2028.
2017-07-04 21:18:33 +02:00
Moritz Bunkus
c68ccd76d5 GUI: iterate over all QStandardItems after drag & drop
It seems that dragging & dropping sometimes leaves Qt's internal state
somewhat foobared if at least one of the columns is hidden at the time
the items are dropped. This causes subsequent drag attempts to
segfault in the "start drag" function trying to serialize the standard
items' states.

For some reason iterating over all rows, all columns, for all parents
in the model and requesting the corresponding QStandardItem fixes the
internal state to the point that dragging doesn't crash anymore.

Fixes #2009.
2017-06-26 22:08:56 +02:00
Moritz Bunkus
0e4fb2c753 MPEG TS: don't emit charset warning for ISO 6937
The iconv version on macOS doesn't support that encoding. At the
moment mkvmerge only requires that encoding when reading the station
names from MPEG transport streams, and those are only shown to the
user as a help for deciding which tracks to select. Therefore the
information isn't critical, and failure to decode it properly doesn't
warrant a warning.

Fixes #2023.
2017-06-25 17:24:34 +02:00
Moritz Bunkus
13274c468e bump version number, set release code name 2017-06-25 09:59:49 +02:00
Moritz Bunkus
85dc4d06a2 NEWS.md: re-order/re-file entries to make them easier to digest 2017-06-25 09:44:11 +02:00
Moritz Bunkus
59d7145001 GUI: mux: remember decision in add/append decision dialog
Implements #1997.
2017-06-24 13:23:48 +02:00
Moritz Bunkus
fcb9e89c2d CLPI: accept version number 0300
Second part of the fix for #2010.
2017-06-24 12:13:44 +02:00
Moritz Bunkus
1de987eff4 MPLS: accept version number 0300
Fixes #2010.
2017-06-24 12:04:12 +02:00
Moritz Bunkus
867ea96d04 mkvmerge: calculate NUMBER_OF_BYTES before content encoding is applied
Fixes #2022.
2017-06-24 10:56:47 +02:00
Moritz Bunkus
c7422daa4d mkvmerge: guard access to potentially unset counted_ptr properly 2017-06-24 09:49:10 +02:00
Moritz Bunkus
bc010d4c62 MPEG PS: probe for more (E-)AC-3 data if detection fails
Other track types such as DTS will already fetch more PS packets from
the stream if detection fails on the first packet. The same logic is
now applied to (E-)AC-3 tracks: as long as the track parameters cannot
be determined and the probe range hasn't been exceeded, fetch more
data from the stream and retry detection.

This enables track detection even if the first PS packets contain too
little (E-)AC-3 data.

Fixes #2016.
2017-06-24 09:25:21 +02:00
Moritz Bunkus
0bf1e14100 identification: output stream_id & sub_stream_id as integers; drop ts_pid 2017-06-22 20:04:40 +02:00
Moritz Bunkus
7915e67086 MPEG PS: ignore garbage at start during file type detection
Fixes #2008.
2017-06-19 18:59:19 +02:00
Moritz Bunkus
e6fcdfe093 MP4 reader: determine MPEG-1/2 version from ESDS if present
Fixes #1995.
2017-06-18 15:07:34 +02:00
Moritz Bunkus
d33deae215 GUI: mux: disregard disabled attached files in check for existing attachments
Fixes #2001.
2017-06-18 12:44:14 +02:00