Commit Graph

9093 Commits

Author SHA1 Message Date
Moritz Bunkus
72527c3998 MP4 reader: handle display dimensions from track header atom 'tkhd'
The width & height given in tkhd are pretty much the same as Matroska's
display width/height fields.

See #1547.
2015-12-30 16:56:43 +01:00
Moritz Bunkus
6fb6e16aa7 MP4 reader: fix constant offset edit list type detection
An edit list with two entries where the first entry's media time is -1
means that a fixed offset must be applied to the timestamps. This is
independent of the segment_duration value of the second edit list entry.

Fixes #1547.
2015-12-30 10:29:17 +01:00
Moritz Bunkus
cb0e958eb6 GUI: watch jobs: re-add "clear output" in "more actions" menu
This regression was introduced in aeb0add.

The new menu is created during the tab's constructor. At that point it
called "isCurrentJobTab()" do determine whether or not to add the "clear
outputs" action. However, "isCurrentJobTab()" relied on the MainWindow's
currentJobTab variable being set, which at that point isn't yet as the
tab is still being constructed.

Solve this by passing a static parameter to the tabs that indicate
whether or not they're the "current job" tab.
2015-12-29 21:43:15 +01:00
Moritz Bunkus
bb86d274ae GUI: merge: add menu to "add source files" button
This optional menu contains the same "add files", "append files", "add
files as additional parts" actions that are also present in the
right-click context menu. However, due to an arrow being painted on the
button this should be easier to discover for new or inexperienced users.
2015-12-29 20:12:36 +01:00
Moritz Bunkus
aeb0add9b5 GUI: watch jobs: use Qt's menu function of QPushButton
This makes it clearer visually that a menu will open when hte user
pushes the button.
2015-12-29 19:52:59 +01:00
Moritz Bunkus
2aeddd12f3 NALU↔RBSP conversion functions: don't leak memory
mm_mem_io_c allocates a buffer. Calling get_and_lock_buffer() on it will
return the buffer and disassociate it from mm_mem_io_c, meaning the
mm_mem_io_c instance won't free it itself. Then cloning from this
already disassociated buffer is a superfluous memory copy for one and it
fails to free the buffer causing a massive memory leak.
2015-12-29 19:24:18 +01:00
René Maassen
1d419d5655 translations: update Dutch 2015-12-29 17:50:48 +01:00
Moritz Bunkus
59d8f2ca7d translations: update list of translatable strings 2015-12-29 17:45:58 +01:00
Moritz Bunkus
498c097bb8 truehd_parser_c: implement identification of Dolby Atmos
Implements #1519.
2015-12-29 16:35:15 +01:00
Moritz Bunkus
ba7f2560fd truehd_parser_c: re-factor header parsing to use bit_reader_c
This is laying the groundwork for easier support for detecting Atmos.
2015-12-29 16:34:50 +01:00
Moritz Bunkus
488b23f4a6 tests: add cases for muxing MLP & TrueHD from elementary streams & Matroska 2015-12-29 14:18:46 +01:00
Moritz Bunkus
c967c6771a SimpleTest: fix hashing the wrong file in test_merge if output: is given 2015-12-29 14:09:05 +01:00
Moritz Bunkus
ac0ea76a6f bit_reader_c: skip_get_bits() for clearer, shorter code (calls skip_bits, get_bits)
Often one has to skip bits in between reading several header
fields. This can make code tedious to read. For example:

  auto field1 = reader.get_bits(4);
  reader.skip_bits(2);
  auto field2 = reader.get_bits(3);
  if (field2 == 7)
    reader.skip_bits(16);
  auto field3 = reader.get_bits(8);

With this combined function it becomes clearer:

  auto field1 = reader.skip_get_bits(0,                    4);
  auto field2 = reader.skip_get_bits(2,                    3);
  auto field3 = reader.skip_get_bits(field2 == 7 ? 16 : 0, 8);
2015-12-29 14:09:05 +01:00
Moritz Bunkus
493440ffb3 Matroska reader: use TrueHD packetizer instead of generic one
This allows the TrueHD packetizer to properly set frame type flags as
decoding can only start from major sync frames for TrueHD.
2015-12-29 14:09:05 +01:00
Moritz Bunkus
6a51492919 truehd_frame_t: add codec() for determining actual codec; use it in readers 2015-12-29 14:09:05 +01:00
Moritz Bunkus
d03a0de9c4 truehd_frame_t: re-factor to use more C++11isms, make functions const 2015-12-29 09:51:21 +01:00
Moritz Bunkus
e3df2184d4 codec_c: add specializations for DTS:X and Atmos-in-TrueHD 2015-12-29 09:46:40 +01:00
René Maassen
93f74e8f3c translations: update Dutch 2015-12-29 09:25:16 +01:00
Moritz Bunkus
1ad936eced translations: update list of translatable strings 2015-12-29 09:23:14 +01:00
Moritz Bunkus
a3d77abda5 MP4 reader: rename qt_editlist_t members to equal field names in the specs 2015-12-28 18:30:40 +01:00
Moritz Bunkus
8a1e641762 MPEG-H: don't include SEI NALUs twice
The SEI user data is stored in m_user_data, and from there it's
re-created during HEVCC creation. Therefore keeping SEI NALUs in
m_extra_data, too, only duplicates them.

Idea/patch by Vladimír Pilný.

See also #1076 where this had been mentioned in the past, too.
2015-12-28 17:37:58 +01:00
Moritz Bunkus
83ab4ba521 MPEG-H: cosmetics 2015-12-28 17:37:38 +01:00
Jan Mazurczyk
674f9bc652 translations: update Polish 2015-12-28 16:12:36 +01:00
Moritz Bunkus
49b0b46ae8 ChangeLog: clarification/realignment 2015-12-28 16:08:50 +01:00
Moritz Bunkus
b7d6b698cb MPEG-H: convert slice NALUs to RBSP before parsing
All NALUs must be converted to RBSP before they're parsed. Otherwise the
wrong values will be used resulting in e.g. wrong picture order and
therefore in wrong timestamps.

Similar to the h.264 problems reported in #918 and #1548.
2015-12-28 16:08:35 +01:00
Moritz Bunkus
a56ed07cd5 MPEG-H: re-factor methods not to modify argument but to return modified memory 2015-12-28 15:35:10 +01:00
Moritz Bunkus
b3876a9f74 MPEG 4p10/MPEG-H: re-factor NALU↔RBSP functions to common file 2015-12-28 14:44:15 +01:00
Moritz Bunkus
39c878f59b common: remove outdated comments about function removed since 2015-12-28 14:00:56 +01:00
Moritz Bunkus
dee0280200 MPEG 4p10: convert slice NALUs to RBSP before parsing
All NALUs must be converted to RBSP before they're parsed. Otherwise the
wrong values will be used resulting in e.g. wrong picture order and
therefore in wrong timestamps.

Fixes #918 and #1548.
2015-12-28 13:49:04 +01:00
Moritz Bunkus
c5cba6f9e3 MPEG 4p10: refactor parse_sps() not to modify argument but return modified memory
Again making it easier to call.
2015-12-28 13:39:03 +01:00
Moritz Bunkus
ec605c0eaf MPEG 4p10: refactor nalu↔rbsp functions not to modify argument but return new memory
This makes them easier to use.
2015-12-28 13:24:28 +01:00
Moritz Bunkus
571343f2af MP4 reader: support random access point sample grouping
The current MP4 specs (ISO/IEC 14496-15:2015) say that open GOP random
access points aren't normal sync entries anymore. Therefore such frames
aren't present in the normal key frame table anymore. Instead sample
grouping information of type "rap " (random access point) is used for
signalling that decoding can start from those frames, too.

Fixes #1543.
2015-12-28 12:55:09 +01:00
Moritz Bunkus
16c4d86eb4 translations: update list of translatable strings; update German translation 2015-12-27 22:28:12 +01:00
Moritz Bunkus
3461c0c9cd GUI: merge: rename "Files:" label to "Source files:"
The button is named "Add source files", too. It might therefore be
easier to understand for the user.
2015-12-27 22:24:03 +01:00
Moritz Bunkus
e0e7eae1a0 translations: update list of translatable strings; update German translation 2015-12-27 22:10:48 +01:00
Moritz Bunkus
51ff345f68 Revert "GUI: merge: remove the "mux this" column from the track list"
This reverts commit 20188b5eea.
2015-12-27 22:04:26 +01:00
Moritz Bunkus
c4012c7c89 mkvmerge: fix block group type decision for last frame of a track
The last frame of a track doesn't need a duration if its rounded
duration equals the rounded default duration. On the other hand the last
frame must not be put into an existing lace if those durations are
different.

Fixes #1545.
2015-12-27 22:02:11 +01:00
Moritz Bunkus
acd59655d1 mkvmerge: cosmetics 2015-12-27 20:25:26 +01:00
Moritz Bunkus
48104d1261 GUI: merge: copying first source file's/destination file's name to title 2015-12-27 16:08:33 +01:00
Moritz Bunkus
5fd106d7e9 GUI: header editor: allow columns to be resized 2015-12-24 11:36:38 +01:00
Moritz Bunkus
260e1fb93a GUI: escape tool tip strings properly
The function Util::setToolTip() HTML-escapes the tool tip if it doesn't
start with a <. Otherwise it assumes the caller has taken care of
escaping. So far not all callers did, though; some were inserting
non-escaped translated strings into formatting strings like
"<p>%1</p><p>%2</p>" resulting in invalid HTML and cut-off tool tips
during display.
2015-12-24 10:11:10 +01:00
Moritz Bunkus
20188b5eea GUI: merge: remove the "mux this" column from the track list
The "codec" column contains a checklist that shows the same information
by now. Therefore "mux this" is superfluous.
2015-12-23 19:09:51 +01:00
Antoni Bella Pérez
cd3acf5b26 translations: update Catalan 2015-12-23 18:17:24 +01:00
Moritz Bunkus
f09b8a3759 kax_file_c: fix compilation on older gcc 2015-12-22 20:49:45 +01:00
Moritz Bunkus
b60c62c863 kax_file_c: fix compilation with mingw 2015-12-22 20:30:01 +01:00
Moritz Bunkus
58c8d57e71 translations: update list of translatable strings; update German translation 2015-12-22 19:46:25 +01:00
Moritz Bunkus
894fc3f8fc man page translations: update list of translatable strings; update German translation 2015-12-22 19:44:19 +01:00
Moritz Bunkus
2ec29ac325 docs: update man pages for mkvpropedit's new --add-track-statistics-tags
See #1507.
2015-12-22 19:41:50 +01:00
Moritz Bunkus
092b7e82d1 mkvpropedit: option for calculating & adding track statistics tags
Second half of #1507.
2015-12-22 19:30:40 +01:00
Moritz Bunkus
2c032a6e9a tools: script for outputting SimpleTags as JSON 2015-12-22 19:30:40 +01:00