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.
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.
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.
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.
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);
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.
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.
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.
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.
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.
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.