Commit Graph

10910 Commits

Author SHA1 Message Date
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
Roberto Boriotti
e51af9f656 translations: update Italian 2017-07-10 14:26:16 +02:00
Moritz Bunkus
5e6d91ccc3 XML: replace XML declaration's encoding attribute with UTF-8
Old pugixml versions didn't recode to UTF-8 themselves. Therefore
mkvmerge contains code to determine the encoding from the XML
declaration's `encoding` attribute and recoding the content to UTF-8
before passing it to pugixml. The old `encoding` attribute was left
untouched.

Newer pugixml versions do recode to UTF-8. In order to prevent
that (and therefore recoding twice), the XML declaration's `encoding`
attribute must be set to `UTF-8`.
2017-07-09 21:38:55 +02:00
Moritz Bunkus
c16224cc6c XML: use pugixml's select_node instead of deprecated select_single_node 2017-07-09 21:38:44 +02:00
Moritz Bunkus
6997205b8e pugixml: update to git revision ed86ef32b314f6eccde5a265ce90b1600edeb760
This fixes several warnings with gcc 7's "warn on implicit
fallthrough" feature.
2017-07-09 21:11:28 +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
948c6f308e MPEG 1/2: remove unused function
This also takes care of a warning about conversion from integer
constants to `bool`. The return type should have been `int`.
2017-07-09 20:58:12 +02:00
Jan Mazurczyk
1ee4161d86 translations: update Polish 2017-07-09 14:27:29 +02:00
Moritz Bunkus
f86248b676 mingw setup script: make ARCHITECTURE overridable 2017-07-09 10:04:35 +02:00
Antoni Bella Pérez
2b8301e9f2 translations: update Catalan 2017-07-08 20:10:53 +02:00
Israel Lucas Torrijos
339e604f04 translations: update Spanish 2017-07-08 20:10:47 +02:00
Dean Lee
4baadd4395 translations: update Chinese Simplified 2017-07-07 16:43:26 +02:00
Burak Yavuz
56c5fa7e79 translations: update Turkish 2017-07-07 16:43:20 +02:00
Potato
6e6aee9e48 translations: update Korean 2017-07-07 16:43:13 +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
65a3d6260e build sysytem: up minimum Windows version to 0x0601 = Windows 7 2017-07-06 20:18:38 +02:00
Moritz Bunkus
95dbdac5c3 translations: update list of translatable strings; update German translation 2017-07-06 18:24:45 +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