mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2024-12-23 19:31:44 +00:00
Added support for the new SimpleBlock in mkvinfo.
This commit is contained in:
parent
a0cfe383b5
commit
29ae58b2ac
@ -1,5 +1,7 @@
|
||||
2005-10-21 Moritz Bunkus <moritz@bunkus.org>
|
||||
|
||||
* mkvinfo: new feature: Added support for the new SimpleBlock.
|
||||
|
||||
* mkvextract: new feature: Added support for the new SimpleBlock.
|
||||
|
||||
* mkvmerge, mmg: new feature: Added support for the new
|
||||
|
@ -1679,6 +1679,54 @@ def_handle2(block_group,
|
||||
lf_tnum, lf_timecode);
|
||||
}
|
||||
|
||||
void
|
||||
def_handle2(simple_block,
|
||||
KaxCluster *&cluster) {
|
||||
int i;
|
||||
vector<int> frame_sizes;
|
||||
vector<uint32_t> frame_adlers;
|
||||
char adler[100];
|
||||
uint64_t timecode;
|
||||
float bduration;
|
||||
KaxSimpleBlock &block = *static_cast<KaxSimpleBlock *>(l2);
|
||||
|
||||
block.SetParent(*cluster);
|
||||
timecode = block.GlobalTimecode() / 1000000;
|
||||
show_element(l2, 2, "SimpleBlock (track number %u, %d frame(s), "
|
||||
"timecode %.3fs = " FMT_TIMECODEN ")",
|
||||
block.TrackNum(), block.NumberFrames(),
|
||||
(float)timecode / 1000.0,
|
||||
ARG_TIMECODEN(block.GlobalTimecode()));
|
||||
bduration = -1.0;
|
||||
for (i = 0; i < (int)block.NumberFrames(); i++) {
|
||||
DataBuffer &data = block.GetBuffer(i);
|
||||
if (calc_checksums)
|
||||
mxprints(adler, " (adler: 0x%08x)",
|
||||
calc_adler32(data.Buffer(), data.Size()));
|
||||
else
|
||||
adler[0] = 0;
|
||||
show_element(NULL, 4, "Frame with size %u%s", data.Size(), adler);
|
||||
frame_sizes.push_back(data.Size());
|
||||
frame_adlers.push_back(calc_adler32(data.Buffer(),
|
||||
data.Size()));
|
||||
}
|
||||
|
||||
if (show_summary) {
|
||||
int fidx;
|
||||
|
||||
for (fidx = 0; fidx < frame_sizes.size(); fidx++)
|
||||
mxinfo(Y("%c frame, track %d, timecode " LLD " (" FMT_TIMECODE
|
||||
"), size %d, adler 0x%08x\n"),
|
||||
block.IsKeyframe() ? 'I' : block.IsDiscardable() ? 'B' : 'P',
|
||||
block.TrackNum(), timecode, ARG_TIMECODE(timecode),
|
||||
frame_sizes[fidx], frame_adlers[fidx]);
|
||||
|
||||
} else if (verbose > 2)
|
||||
show_element(NULL, 2, Y("[%c frame for track %d, timecode " LLD "]"),
|
||||
block.IsKeyframe() ? 'I' : block.IsDiscardable() ? 'B' : 'P',
|
||||
block.TrackNum(), timecode);
|
||||
}
|
||||
|
||||
void
|
||||
def_handle2(cluster,
|
||||
KaxCluster *&cluster,
|
||||
@ -1726,6 +1774,9 @@ def_handle2(cluster,
|
||||
else if (is_id(l2, KaxBlockGroup))
|
||||
handle2(block_group, cluster);
|
||||
|
||||
else if (is_id(l2, KaxSimpleBlock))
|
||||
handle2(simple_block, cluster);
|
||||
|
||||
else if (!is_global(es, l2, 2))
|
||||
show_unknown_element(l2, 2);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user