Commit Graph

9109 Commits

Author SHA1 Message Date
Moritz Bunkus
b60dfb9eaf GUI: add icons to various menu entries and buttons 2016-01-01 21:56:12 +01:00
Moritz Bunkus
1ac25bc3c5 GUI: edit attachments inside the header editor
Implements #1533.
2016-01-01 21:56:12 +01:00
Moritz Bunkus
8badffee79 construct: change return type of cons() from EbmlMaster* to T*
There's really no need to use the generic parent type. Using the
template argument's type instead allows one to wrap the result into
shared pointers as in e.g.

KaxAttachedPtr
createAttachment() {
  // …
  return {
    mtx::construct::cons<KaxAttached>(new KaxFile, …)
  };
}
2015-12-31 21:56:33 +01:00
Moritz Bunkus
970afbe517 Bump version number, set release code name, add release message 2015-12-31 13:23:20 +01:00
Moritz Bunkus
1cdbe9215e tests: fix output of end timestamp 2015-12-31 13:17:49 +01:00
Moritz Bunkus
4d81aa099c tests: show start & end date of the whole run 2015-12-31 13:16:24 +01:00
Moritz Bunkus
72c30cc4f8 Merge branch 'master' of https://github.com/basicmaster/mkvtoolnix 2015-12-31 13:07:28 +01:00
Stefan Pöschel
f36b3e847b MPEG TS: small improvements
Also removes one useless IF, as after ts_payload_size is set above, it can only
get smaller.
2015-12-31 12:37:39 +01:00
Stefan Pöschel
fc10f8f84f MPEG VideoBuffer: fix search range 2015-12-31 12:30:11 +01:00
Moritz Bunkus
69d7567ed9 common: use boost::join() instead of my own implementation 2015-12-31 11:13:41 +01:00
Moritz Bunkus
f4fbf0c591 MPEG TS: simplify "send to packetizer" logic; drop incomplete packets; handle unknown-sized packets
The old logic was so complex (even within parse_start_unit_packet()
there were two or three places were data was sent to the packetizer)
that it had to be simplified a lot. The new logic knows only three
cases:

1. When parsing a normal packet then data is sent to the packetizer if
   and only if the expected PES size is known (!= 0) and the accumulated
   PES data's size equals the expected PES size.

2. When parsing a "start unit" packet then there are two cases:

2.a. If the previous unit's expected PES size is unknown ( == 0) then
     all data gathered so far is sent to the packetizer.

2.b. Otherwise (the expected PES size is known) the packet must be too
     short or too large. Otherwise it would have been sent to the
     packetizer in case 1. already.

On top the packet's data is cleared in both "send_to_packetizer()" and
in "probe_packet_complete()", the two functions that handle complete
packets in the muxing phase ("send_to_packetizer()") respectively
probing phase ("probe_packet_complete()").

Fixes #1553.
2015-12-30 22:23:53 +01:00
Moritz Bunkus
2251fff1db MPEG TS: re-factor to simplify control flow & "send to packetizer" logic 2015-12-30 21:41:05 +01:00
Moritz Bunkus
6f38c01263 MPEG ES reader: don't require start code at beginning of file
Instead make determination based on number of slice start codes
found. Also move the MPEG ES probing further down to the other ES video
types (AVC, HEVC) as all of those tend to produce a lot of false
positives.

Fixes #1462.
2015-12-30 18:28:01 +01:00
Moritz Bunkus
7e95187463 Merge pull request #1552 from remuxer32/patch-13
Update pl.po
2015-12-30 18:01:19 +01:00
Moritz Bunkus
4ef49467e0 mkvpropedit: verify given track language to be a ISO 639-2 code
Fixes #1550.
2015-12-30 17:53:16 +01:00
remuxer32
ddebbd14c0 Update pl.po
I've translated one string in the preferences dialog, and also fixed another string as well.
2015-12-30 17:51:58 +01:00
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