Commit Graph

10933 Commits

Author SHA1 Message Date
Moritz Bunkus
4ea7659e7d kax_analyzer_c: store EBML head; let callers retrieve it
Callers can use the EBML head in order to determine whether a file is
a WebM or a Matroska file (via the "doc type" child).
2017-07-22 14:59:53 +02:00
Moritz Bunkus
480bbb8766 docs: correctly describe mkvmerge's handling of chapters & tags in WebM mode
Implements the documentation part of #2002.
2017-07-22 14:59:52 +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
5594270cd9 WAV reader: split demuxer modules into their own files 2017-07-21 19:57:23 +02:00
Moritz Bunkus
b643c205d8 memory_c: remove implicit char*/void* operators 2017-07-21 17:33:22 +02:00
Moritz Bunkus
3b2ff9b6ae memory_c: add comparison operators with strings constants 2017-07-21 17:16:18 +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
a294563922 ac3parser tool: fix includes for mm_io_c exceptions 2017-07-20 20:18:19 +02:00
Moritz Bunkus
12b5788873 man pages: fix link to JSON schema for mkvmerge's identification output
Fixes #2050.
2017-07-20 19:39:10 +02:00
Dean Lee
c47ea4d580 translations: update Chinese Simplified 2017-07-20 19:27:22 +02:00
Burak Yavuz
fa71c4efac translations: update Turkish 2017-07-20 19:27:15 +02:00
Timofey Lisunov
03b9157619 translations: update Russian 2017-07-20 19:27:06 +02:00
Potato
86255f1521 translations: update Korean 2017-07-20 19:27:00 +02:00
TMTisFree
a0909aeafc translations: update French 2017-07-20 19:26:56 +02:00
Xabier Aramendi
c04662585c translations: update Basque 2017-07-20 19:25:35 +02:00
Antoni Bella Pérez
deb3cba871 translations: update Catalan 2017-07-20 19:24:57 +02:00
Roberto Boriotti
627926cbc6 translations: update Italian 2017-07-20 19:23:26 +02:00
Moritz Bunkus
9baa010848 bit_writer_c: let writer manage memory on its own 2017-07-19 23:07:27 +02:00
Moritz Bunkus
319c8009e0 bit_writer_c: tests, eof(), get_remaining_bits() 2017-07-19 16:45:27 +02:00
Moritz Bunkus
f01afa73fb bit_cursor.h: split into bit_reader.h and bit_writer.h 2017-07-19 15:49:06 +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
35b6f3ba15 AAC: calculate & store samples/frame from GASpecificConfig
It's not used yet.
2017-07-16 20:16:51 +02:00
Moritz Bunkus
9f028db1d4 AAC packetizer: fix compilation with gcc 4.9.x
Initializing the structure with {…} yields the following error
message:

src/output/p_aac.cpp: In constructor
  ‘aac_packetizer_c::aac_packetizer_c(generic_reader_c*, track_info_c&,
     const aac::audio_config_t&, aac_packetizer_c::mode_e)’:
src/output/p_aac.cpp:31:89: error: cannot convert
  ‘const aac::audio_config_t’ to ‘unsigned int’ in initialization
   , m_packet_duration{m_timestamp_calculator.get_duration(ms_samples_per_packet).to_ns()}
2017-07-16 18:41:52 +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
b6276208b0 AAC: refactor packetizer to take audio_config_t
Also refactors SBR detection & handling. There were cases in which
reading AAC from MPEG TS resulted in 2-byte `CodecPrivate` with no
`OutputSamplingFrequency` set, even though the sampling frequency was
24.000 Hz and therefore an indicator for SBR.
2017-07-16 17:26:44 +02:00
Moritz Bunkus
a76d8764ba AAC: refactor header_c to use audio_config_t instead of extra member vars 2017-07-16 14:43:39 +02:00
Moritz Bunkus
dffd611282 AAC: refactor config creation to take audio_config_t instead of multiple parameters
Makes extending the config parser & creation routines easier.
2017-07-16 12:26:06 +02:00
Moritz Bunkus
5351877515 AAC: refactor config creation to return memory_cptr
Makes memory management clearer and easier.
2017-07-16 12:17:56 +02:00
Moritz Bunkus
6f2e69149d AAC: refactor config parser to return a struct instead of out parameters 2017-07-16 12:08:33 +02:00
Moritz Bunkus
a7cfa3ac26 GUI: App: only declare d pointer where needed
Avoids a compiler warning when building without libintl (translations).
2017-07-15 22:20:02 +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
7729911f43 debugging: allow forcing a debugging option's state programmatically 2017-07-15 21:19:25 +02:00
Moritz Bunkus
504209ce71 configure: options for enabling address/undefined behavior sanitizers
The `Rakefile` has supported both for a while now, but the values had
to be set manually in `build-config`.
2017-07-15 16:59:58 +02:00
Moritz Bunkus
6710d27554 build: add tests for header/include guard syntax 2017-07-15 11:57:45 +02:00
Moritz Bunkus
786b3808d7 AAC packetizer: refactor constructor argument to take enum 2017-07-15 11:16:09 +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
19fcb45d87 translations: update list of translatable strings; update German translation 2017-07-14 11:44:40 +02:00
Moritz Bunkus
12c520c590 GUI: chapters: remove erroneous d-> in UI text from pimpl usage 2017-07-14 11:44:40 +02:00
Moritz Bunkus
85a68b819e GUI: chapters: rename timecodetimestamp
Part of an ongoing effort to replace the use of the term `timecode`
with `timestamp`. Timecodes have a very specific meaning in the
audio/video world, and it's not what MKVToolNix has been using the
term for.
2017-07-14 11:44:40 +02:00
Moritz Bunkus
4047a54a35 all: rename parse_timecode functions to parse_timestamp
Part of an ongoing effort to replace the use of the term `timecode`
with `timestamp`. Timecodes have a very specific meaning in the
audio/video world, and it's not what MKVToolNix has been using the
term for.
2017-07-14 11:44:40 +02:00
TMTisFree
82ee16a02b translations: update French 2017-07-14 11:19:33 +02:00
Timofey Lisunov
ce724d698e translations: update Russian 2017-07-14 11:19:33 +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
a4944e3561 GUI: chapters: convert Tab class to using pimpl idiom 2017-07-14 10:56:38 +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
123812e4f0 README.md: remove superfluous trailing space 2017-07-11 19:39:15 +02:00
Moritz Bunkus
85707eaee1 XML: fix compilation with Boost 1.48.0
Hopefully fixes #2037, though I couldn't actually test it as Boost
1.48.0 failed to compile with my gcc 5.3.1.
2017-07-11 14:17:01 +02:00
Moritz Bunkus
76c0fee77a mingw setup script: update tree via "fetch" & "reset --hard" instead of "pull" 2017-07-10 18:37:11 +02:00