Commit Graph

9929 Commits

Author SHA1 Message Date
Moritz Bunkus
9674191136 tests: only record exit code for certain tests
Some of the test cases of #1780 cause uninitialized memory to be written
to the output file due to incomplete reads. This causes subsequent tests
to fail their checksums. Therefore only record the fact that they've
completed successfully.
2016-09-07 16:45:40 +02:00
Moritz Bunkus
953549b46f AUTHORS: add some more translators 2016-09-07 16:19:55 +02:00
Moritz Bunkus
0b5ae21900 man pages: rebuild after translation update 2016-09-06 23:15:38 +02:00
Robert Antoni Buj Gelonch
9b0c0ffb95 translations: update Catalan 2016-09-06 23:15:37 +02:00
Robert Antoni Buj Gelonch
fa205ab716 translations: update Catalan 2016-09-06 23:15:26 +02:00
TMTisFree
800388886e translations: update French 2016-09-06 23:14:31 +02:00
pp Carvalho
b37eddd83d translations: update Brazilian Portuguese 2016-09-06 23:13:50 +02:00
Moritz Bunkus
21b5bd3f6b HEVC parser: prevent access to beyond the end of fixed-size arrays
The three arrays delta_poc[], user[] and ref_id[] all have 17
entries. Therefore the loop limits determined by num_pics,
num_positive_pics and num_negative_pics must be checked for validity
before iterating over the arrays.

Fixes the following test cases of #1780:

explorer🆔000110,sig:11,src:000003,op:flip1,pos:0
explorer🆔000699,sig:11,src:002364,op:flip1,pos:138
2016-09-06 23:06:37 +02:00
Moritz Bunkus
27640ac464 MP4 reader: properly catch invalid chunk size exception
Fixes the following test case of #1780:

explorer🆔000081,sig:06,src:000001,op:havoc,rep:128
2016-09-06 23:06:28 +02:00
Moritz Bunkus
27ce4e219c AAC reader: keep reading until frame with sample rate > 0 is found
Prevents an uncaught exception in the AAC packetizer as it requires the
sample rate to be set properly. Fixes the following test case of #1780:

explorer🆔000019,sig:06,src:000000,op:flip2,pos:2
2016-09-06 23:01:37 +02:00
Moritz Bunkus
1e5f31b3f6 MP4 reader: fix access beyond end of vector
No one guarantees us that the duration map size & number values really
sum to no more than the number of sample table entries in the
file. Therefore check the current sample table index against the sample
table's size before accessing the table.

Fixes the following test cases of #1780:

explorer🆔000011,sig:11,src:000001,op:flip1,pos:42
explorer🆔000012,sig:11,src:000001,op:flip1,pos:13438
explorer🆔000014,sig:11,src:000001,op:flip1,pos:13457
explorer🆔000030,sig:11,src:000001,op:flip1,pos:13798
explorer🆔000031,sig:11,src:000001,op:flip1,pos:13798
explorer🆔000032,sig:11,src:000001,op:flip1,pos:13798
explorer🆔000063,sig:06,src:000001,op:arith8,pos:13794,val:-13
explorer🆔000083,sig:06,src:000005,op:flip1,pos:3
explorer🆔000097,sig:06,src:000005,op:flip1,pos:13730
explorer🆔000129,sig:06,src:000005,op:flip1,pos:13801
explorer🆔000144,sig:11,src:000005,op:flip2,pos:13866
explorer🆔000231,sig:11,src:000005,op:havoc,rep:16
explorer🆔000261,sig:11,src:000013,op:arith8,pos:13647,val:+7
explorer🆔000318,sig:11,src:000287,op:flip2,pos:13797
explorer🆔000323,sig:06,src:000314,op:flip1,pos:13731
explorer🆔000324,sig:06,src:000314,op:havoc,rep:64
explorer🆔000347,sig:06,src:000426,op:flip1,pos:13797
explorer🆔000353,sig:11,src:000426,op:flip1,pos:13823
explorer🆔000354,sig:11,src:000426,op:flip1,pos:13825
explorer🆔000357,sig:11,src:000426,op:flip2,pos:13825
explorer🆔000358,sig:06,src:000426,op:flip2,pos:13826
2016-09-06 23:01:37 +02:00
Moritz Bunkus
8a3c7197a2 HEVC parser: fix invalid memory access beyond the end of allocated space
The sps_t structure contains an array of 64 short_term_ref_pic_sets_t
elements. Therefore at most 63 may be added to the base pointer
short_term_ref_pic_sets for accessing one of those elements.

Fixes the following test cases of #1780:

explorer🆔000494,sig:11,src:001249,op:flip1,pos:63
explorer🆔000496,sig:06,src:001249,op:flip1,pos:92
explorer🆔000502,sig:06,src:001249,op:int8,pos:100,val:+32
explorer🆔000605,sig:11,src:001741,op:int32,pos:29,val:+0
explorer🆔000676,sig:06,src:002253,op:ext_AO,pos:101
explorer🆔000784,sig:11,src:002818,op:ext_AO,pos:103
explorer🆔000830,sig:11,src:003020,op:flip1,pos:103
explorer🆔000831,sig:11,src:003020,op:flip1,pos:104
explorer🆔000834,sig:11,src:003020,op:havoc,rep:2
explorer🆔000882,sig:11,src:003246,op:flip1,pos:123
explorer🆔000884,sig:11,src:003246,op:int8,pos:121,val:-128
explorer🆔000886,sig:06,src:003248,op:flip1,pos:106
explorer🆔000935,sig:11,src:003528,op:flip4,pos:130
explorer🆔000936,sig:11,src:003528,op:flip32,pos:127
explorer🆔000937,sig:11,src:003528,op:arith8,pos:130,val:+5
explorer🆔000938,sig:11,src:003528,op:int32,pos:127,val:+100
explorer🆔000939,sig:11,src:003528,op:int32,pos:128,val:+1
explorer🆔000974,sig:11,src:003742,op:flip1,pos:123
explorer🆔000975,sig:11,src:003746,op:flip1,pos:130
explorer🆔000976,sig:11,src:003746,op:flip1,pos:130
explorer🆔000977,sig:11,src:003746,op:flip1,pos:133
explorer🆔000978,sig:11,src:003746,op:flip1,pos:133
explorer🆔000979,sig:11,src:003746,op:flip2,pos:134
explorer🆔000980,sig:11,src:003746,op:arith8,pos:133,val:-3
explorer🆔001003,sig:11,src:003976,op:flip1,pos:127
explorer🆔001019,sig:11,src:004180,op:flip1,pos:9
explorer🆔001020,sig:11,src:004180,op:int32,pos:143,val:be:+1
explorer🆔001021,sig:11,src:004180,op:havoc,rep:2
2016-09-06 23:01:36 +02:00
Moritz Bunkus
7b7c7423d2 GUI: fix assertion check for fixMappings() 2016-09-06 23:01:25 +02:00
Moritz Bunkus
3055738c02 mkvmerge: make global destruction phase more deterministic
Several classes rely on other classes' and variables' presence during
their destruction. The most prominent case is various sub-classes of
mm_io_c using the debugging facilities, e.g. debugging_c. Therefore
debugging_c must still work when mm_io_c instances are closed.

Otherwise access to invalid memory will occur (a use after free),
e.g. by the destructor of mm_io_c calling debugging_c::operator()
accessing a std::vector or std::unordered_map that's already been
destructed.

For mkvmerge this means that ::exit() must not be called before all
instances of mm_io_c have been closed. This commit moves in that
direction by explicitly closing several resources stored in global
variables in the proper order before calling ::exit().

Fixes the following cases of #1780:

explorer🆔000000,sig:11,src:000000,op:flip1,pos:1
explorer🆔000001,sig:11,src:000000,op:flip1,pos:2
explorer🆔000608,sig:06,src:001761,op:int8,pos:135,val:-128
explorer🆔000738,sig:11,src:002531,op:int32,pos:126,val:be:+1
explorer🆔000740,sig:06,src:002531,op:ext_AO,pos:99
2016-09-06 23:01:23 +02:00
Moritz Bunkus
e06d80f70b merge: force-pull all packetizers from a fully-held file
In its core mkvmerge uses a pull model: it iterates over each packetizer
and asks it to produce a packet. The packetizer passes that request on
to the reader it belongs to. The reader will then read the next frame
for the track corresponding to the packetizer and pass that data back to
the packetizer.

However, several container formats (e.g. MPEG PS, Matroska, Ogg and
others) do not allow arbitrary access to the frames for each
track. Instead mkvmerge has to read them from front to back. In such a
case the reader ignores the packetizer and simply reads the next frame,
whichever packetizer that might belong to.

This is problematic with sparse tracks. For those the packetizer will
repeatedly call the reader's read() method, but the read() method will
only produce data for the other tracks in that file. That data is then
buffered in those tracks' packetizers.

In order to limit that memory usage the readers/packetizers know a state
known as "holding" — meaning a lot of data has been buffered and no data
for this packetizer has been found yet.

The actual problem occurred when all packetizers for a file were holding
and no packets were present for any of those packetizers:

- The packetizers run empty on data.
- The reader sees too much data had been buffered and enters "holding"
  state.
- The core only saw packetizers that don't have any data anymore and
  concluded that it was done.

This commit changes the behavior to force a pull in such a
situation (which the readers already provided for — it was just that the
code never opted to force the pull). This will allow the reader to
exceed its allotted memory usage and deliver more data.
2016-09-02 21:00:15 +02:00
Hiroki Taniura
ba379ffd57 translations: update Japanese 2016-08-29 13:36:52 +02:00
Moritz Bunkus
ae95143fde Bump version number, set release code name, add release message 2016-08-22 16:49:10 +02:00
Moritz Bunkus
6cc03db94c GUI: merge: enable menu actions only if current tab is enabled, too 2016-08-21 20:06:37 +02:00
Moritz Bunkus
0017768f77 GUI: don't display errors in the FileIdentifier class
This is to allow the class to be used from other threads.
2016-08-21 14:49:19 +02:00
Timofey Lisunov
a74310934a translations: update Russian 2016-08-20 10:23:59 +02:00
Moritz Bunkus
507992b3ec propedit: fix check if content has been modified for attachments 2016-08-16 20:58:45 +02:00
Moritz Bunkus
ff7dddd611 propedit: use "override" keyword 2016-08-16 20:35:06 +02:00
Moritz Bunkus
e07614f4c2 man pages: rebuild after translation updates 2016-08-15 19:37:54 +02:00
Potato
17543fa5be man page translations: update Korean 2016-08-15 19:37:49 +02:00
Potato
89c17c43a2 translations: update Korean 2016-08-15 19:36:52 +02:00
Burak Yavuz
89445cb40b translations: update Turkish 2016-08-15 19:36:44 +02:00
Timofey Lisunov
147e69f349 translations: update Russian 2016-08-15 19:36:39 +02:00
TMTisFree
e46f0577ff translations: update French 2016-08-15 19:36:31 +02:00
Israel Lucas Torrijos
1975c7d79b man page translations: update Spanish 2016-08-15 19:36:23 +02:00
Israel Lucas Torrijos
dbb80c8ec4 translations: update Spanish 2016-08-15 19:35:51 +02:00
Antoni Bella Pérez
fc39a9314d translations: update Catalan 2016-08-15 19:35:45 +02:00
Moritz Bunkus
90401c8dbb GUI: chapters: use eliding text label for heading showing chapter name
A fixed, non-eliding label will have a minimum width of the text it's
displaying. When such a label is used for displaying a chapter's name
then the window will in turn become very wide.

Fixes #1760.
2016-08-11 15:50:35 +02:00
Moritz Bunkus
bae32648e6 DTS: use XLL extension's sample rate for track headers if present
Fixes #1762.
2016-08-10 20:33:35 +02:00
Moritz Bunkus
ef6d4a8315 build system: unify usage of "applications" vs "programs" in targets 2016-08-07 11:09:40 +02:00
Moritz Bunkus
3e857e0aad translations: update list of translatable strings; update German translation 2016-08-07 11:01:49 +02:00
Timofey Lisunov
4304bb296b translations: update Russian 2016-08-07 11:01:01 +02:00
Moritz Bunkus
e747d7cdea fix compilation after video_packetizer_c refactoring 2016-08-06 21:01:03 +02:00
Moritz Bunkus
092ff5e848 tests: add case for Apple ProRes video 2016-08-06 20:17:45 +02:00
Moritz Bunkus
adfdfc1d65 split Video for Windows packetizer into generic base and VfW-specific part 2016-08-06 18:59:41 +02:00
Moritz Bunkus
5436a680b8 video packetizer: rename to video_for_windows_packetizer_c 2016-08-06 18:19:57 +02:00
Moritz Bunkus
d1057a2af8 ChangeLog, AUTHORS: add info about ProRes 2016-08-06 15:01:00 +02:00
Moritz Bunkus
f5c7513416 MP4: prevent integer underflow when handling ProRes frames 2016-08-06 13:52:13 +02:00
Moritz Bunkus
9f940d08c0 codec: cosmetics: sort lines 2016-08-06 13:44:51 +02:00
Moritz Bunkus
f2df2b3098 codec: add V_PRORES CodecID to string recognition regex 2016-08-06 13:42:39 +02:00
Moritz Bunkus
9449234ba5 codecs: correct name of ProRes video codec 2016-08-06 13:42:15 +02:00
chenchao1983
ec3bbcedc4 add support for prores videos muxed in quicktime video containers 2016-08-06 13:39:29 +02:00
Roberto Boriotti
1aa2a2f6b6 translations: update Italian 2016-08-04 22:28:12 +02:00
Jan Mazurczyk
9439e003b0 translations: update Polish 2016-08-04 22:27:45 +02:00
Moritz Bunkus
a94d8be737 man pages: rebuild after translation update 2016-08-04 22:27:45 +02:00
Antoni Bella Pérez
1e25ed08a3 man page translations: update Catalan 2016-08-04 22:27:42 +02:00