MKVToolNix GUI Info tool not coping with unknown-length clusters
Hello,
it seems that the GUI's info tool has a problem with unknown-length clusters (that are allowed according to the spec). I have uploaded Unknown.length.cluster.mka to your server. Here is an extract from mkvinfo's output (mkvinfo, like the old standalone GUI, works fine, as does mkvmerge) for the file:
+ EBML head at 0
|+ EBML version: 1 at 5
|+ EBML read version: 1 at 9
|+ Maximum EBML ID length: 4 at 13
|+ Maximum EBML size length: 8 at 17
|+ Document type: matroska at 21
|+ Document type version: 4 at 32
|+ Document type read version: 2 at 36
+ Segment: size unknown at 40
|+ Seek head at 52
| + Seek entry at 57
| + Seek ID: 0x15 0x49 0xa9 0x66 (KaxInfo) at 60
| + Seek position: 4099 at 67
| + Seek entry at 72
| + Seek ID: 0x16 0x54 0xae 0x6b (KaxTracks) at 75
| + Seek position: 4240 at 82
| + Seek entry at 87
| + Seek ID: 0x1c 0x53 0xbb 0x6b (KaxCues) at 90
| + Seek position: 1224652 at 97
| + Seek entry at 103
| + Seek ID: 0x12 0x54 0xc3 0x67 (KaxTags) at 106
| + Seek position: 1224954 at 113
|+ EBML void: size 4029 at 119
|+ Segment information at 4151
| + Timestamp scale: 22674 at 4157
| + Multiplexing application: libebml v1.3.7 + libmatroska v1.5.0 at 4163
| + Writing application: mkvmerge v32.0.0 ('Astral Progressions') 64-bit at 4201
| + Duration: 00:00:30.000173466 at 4251
| + Date: Tue Apr 09 14:28:11 2019 UTC at 4262
| + Segment UID: 0x42 0x64 0xbb 0x8e 0x29 0xf4 0xd7 0x5b 0xf9 0xcf 0x35 0x3d 0xa4 0x30 0x21 0xf7 at 4273
|+ Tracks at 4292
| + Track at 4298
| + Track number: 1 (track ID for mkvmerge & mkvextract: 0) at 4301
| + Track UID: 32847403840939203 at 4304
| + Track type: audio at 4314
| + Codec ID: A_FLAC at 4317
| + Codec's private data: size 371 at 4325
| + Default duration: 00:00:00.092879818 (10.767 frames/fields per second for a video track) at 4700
| + Language: und at 4708
| + Audio track at 4715
| + Sampling frequency: 44100 at 4717
| + Channels: 2 at 4723
| + Bit depth: 16 at 4726
|+ EBML void: size 1060 at 4730
|+ Cluster at 5793
| + Cluster timestamp: 00:00:00.000000000 at 5800
| + Simple block: key, track number 1, 8 frame(s), timestamp 00:00:00.000000000 at 5803
| + Frame with size 3021 at 5825
| + Frame with size 3107 at 8846
| + Frame with size 3062 at 11953
| + Frame with size 3199 at 15015
| + Frame with size 3706 at 18214
| + Frame with size 3967 at 21920
| + Frame with size 3600 at 25887
| + Frame with size 3639 at 29487
|+ Cluster at 33126
| + Cluster timestamp: 00:00:00.743049654 at 33133
| + Simple block: key, track number 1, 8 frame(s), timestamp 00:00:00.743049654 at 33137
| + Frame with size 3841 at 33157
| + Frame with size 3826 at 36998
| + Frame with size 3745 at 40824
| + Frame with size 3618 at 44569
| + Frame with size 3564 at 48187
| + Frame with size 3729 at 51751
| + Frame with size 3759 at 55480
| + Frame with size 3743 at 59239
|+ Cluster at 62982
| + Cluster timestamp: 00:00:01.486076634 at 62989
| + Simple block: key, track number 1, 8 frame(s), timestamp 00:00:01.486076634 at 62994
| + Frame with size 3676 at 63013
| + Frame with size 3560 at 66689
| + Frame with size 3629 at 70249
| + Frame with size 3689 at 73878
| + Frame with size 3669 at 77567
| + Frame with size 3695 at 81236
| + Frame with size 3749 at 84931
| + Frame with size 3688 at 88680
|+ Cluster at 92368
| + Cluster timestamp: 00:00:02.229126288 at 92375
| + Simple block: key, track number 1, 8 frame(s), timestamp 00:00:02.229126288 at 92380
| + Frame with size 3633 at 92399
| + Frame with size 3719 at 96032
| + Frame with size 3720 at 99751
| + Frame with size 3733 at 103471
| + Frame with size 3745 at 107204
| + Frame with size 3708 at 110949
| + Frame with size 3624 at 114657
| + Frame with size 3765 at 118281
|+ Cluster at 122046
| + Cluster timestamp: 00:00:02.972153268 at 122053
| + Simple block: key, track number 1, 8 frame(s), timestamp 00:00:02.972153268 at 122058
| + Frame with size 3676 at 122079
| + Frame with size 3648 at 125755
| + Frame with size 3660 at 129403
| + Frame with size 3549 at 133063
| + Frame with size 3416 at 136612
| + Frame with size 3573 at 140028
| + Frame with size 3701 at 143601
| + Frame with size 3675 at 147302
|+ Cluster at 150977
| + Cluster timestamp: 00:00:03.715202922 at 150984
| + Simple block: key, track number 1, 8 frame(s), timestamp 00:00:03.715202922 at 150989
...
And here is what the GUI shows me:
(The first cluster has an ordinary length; the second cluster is unknown-length. Notice that the position of the unknown element in this list after the second cluster is actually the length field of the second cluster, i.e. parsing does not resume after the cluster ended, but instead at the position after the cluster EBML ID. This already sheds some light on why it did work for the old GUI, but no longer for the new one: The old GUI parsed the content of all the clusters, the new GUI tries to skip them, but this approach is not feasible when an element's length is unknown.)
This error has been present in all versions of the GUI's info tool since v. 22 (the first version that included a working GUI and did not simply stop after encountering the first cluster). The old not integrated GUI works fine.
Vielen Dank im voraus
Andreas