libwebm: removed old LoadBlockEntries
Change-Id: I340f444f719fa9c5d9da986f1527522d8a5f9812
This commit is contained in:
194
mkvparser.cpp
194
mkvparser.cpp
@@ -7132,200 +7132,6 @@ long Cluster::HasBlockEntries(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
void Cluster::LoadBlockEntries() const
|
|
||||||
{
|
|
||||||
//LoadBlockEntries loads all of the entries on the cluster.
|
|
||||||
|
|
||||||
//if (m_entries)
|
|
||||||
// return;
|
|
||||||
|
|
||||||
//if (m_entries_count == 0) //already parsed, and no entries found
|
|
||||||
// return;
|
|
||||||
|
|
||||||
if (m_pSegment == 0) //EOS cluster
|
|
||||||
return;
|
|
||||||
|
|
||||||
assert(m_pos >= m_element_start);
|
|
||||||
//assert(m_size); //preloaded only, or (partially) loaded
|
|
||||||
//assert(m_entries_count < 0);
|
|
||||||
|
|
||||||
IMkvReader* const pReader = m_pSegment->m_pReader;
|
|
||||||
|
|
||||||
//if (m_pos < 0)
|
|
||||||
// m_pos *= -1; //relative to segment
|
|
||||||
//long long pos = m_pSegment->m_start + m_pos; //absolute
|
|
||||||
|
|
||||||
if (m_element_size < 0)
|
|
||||||
{
|
|
||||||
assert(m_pos == m_element_start);
|
|
||||||
|
|
||||||
long len;
|
|
||||||
|
|
||||||
const long long id = ReadUInt(pReader, m_pos, len);
|
|
||||||
id;
|
|
||||||
assert(id >= 0);
|
|
||||||
assert(id == 0x0F43B675); //Cluster ID
|
|
||||||
|
|
||||||
m_pos += len; //consume id
|
|
||||||
|
|
||||||
const long long cluster_size = ReadUInt(pReader, m_pos, len);
|
|
||||||
assert(cluster_size > 0);
|
|
||||||
|
|
||||||
const long long unknown_size = (1LL << (7 * len)) - 1;
|
|
||||||
unknown_size;
|
|
||||||
assert(cluster_size != unknown_size);
|
|
||||||
|
|
||||||
m_pos += len; //consume size field
|
|
||||||
|
|
||||||
//m_pos now points to start of cluster payload
|
|
||||||
|
|
||||||
const long long cluster_stop = m_pos + cluster_size;
|
|
||||||
const long long element_size = cluster_stop - m_element_start;
|
|
||||||
assert((m_element_size <= 0) || (m_element_size == element_size));
|
|
||||||
|
|
||||||
if (m_element_size <= 0)
|
|
||||||
m_element_size = element_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
//assert(m_size > 0);
|
|
||||||
//assert(m_element_size > m_size);
|
|
||||||
|
|
||||||
const long long cluster_stop = m_element_start + m_element_size;
|
|
||||||
|
|
||||||
if (m_pos >= cluster_stop)
|
|
||||||
return;
|
|
||||||
|
|
||||||
long long timecode = -1; //of cluster itself
|
|
||||||
|
|
||||||
//First count the number of entries (that remain)
|
|
||||||
|
|
||||||
long long pos = m_pos;
|
|
||||||
int entries_count = 0; //that remain
|
|
||||||
|
|
||||||
while (pos < cluster_stop)
|
|
||||||
{
|
|
||||||
if (Match(pReader, pos, 0x67, timecode))
|
|
||||||
{
|
|
||||||
if (m_timecode >= 0)
|
|
||||||
assert(timecode == m_timecode);
|
|
||||||
else
|
|
||||||
m_timecode = timecode;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
long len;
|
|
||||||
|
|
||||||
const long long id = ReadUInt(pReader, pos, len);
|
|
||||||
assert(id >= 0); //TODO
|
|
||||||
assert((pos + len) <= cluster_stop);
|
|
||||||
|
|
||||||
pos += len; //consume id
|
|
||||||
|
|
||||||
const long long size = ReadUInt(pReader, pos, len);
|
|
||||||
assert(size >= 0); //TODO
|
|
||||||
assert((pos + len) <= cluster_stop);
|
|
||||||
|
|
||||||
pos += len; //consume size
|
|
||||||
|
|
||||||
if (id == 0x20) //BlockGroup ID
|
|
||||||
++entries_count;
|
|
||||||
else if (id == 0x23) //SimpleBlock ID
|
|
||||||
++entries_count;
|
|
||||||
|
|
||||||
pos += size; //consume payload
|
|
||||||
assert(pos <= cluster_stop);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
assert(pos == cluster_stop);
|
|
||||||
assert(m_timecode >= 0);
|
|
||||||
|
|
||||||
if (entries_count == 0) //nothing remains to be done
|
|
||||||
{
|
|
||||||
m_pos = pos;
|
|
||||||
|
|
||||||
if (m_entries_count < 0)
|
|
||||||
m_entries_count = 0;
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
BlockEntry** ppEntry;
|
|
||||||
|
|
||||||
if (m_entries_count < 0) //haven't parsed anything yet
|
|
||||||
{
|
|
||||||
assert(m_entries == NULL);
|
|
||||||
assert(m_entries_size == 0);
|
|
||||||
|
|
||||||
m_entries_size = entries_count;
|
|
||||||
m_entries = new BlockEntry*[m_entries_size];
|
|
||||||
|
|
||||||
ppEntry = m_entries;
|
|
||||||
m_entries_count = entries_count;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
assert(m_entries);
|
|
||||||
assert(m_entries_size > 0);
|
|
||||||
assert(m_entries_count > 0);
|
|
||||||
assert(m_entries_count <= m_entries_size);
|
|
||||||
|
|
||||||
const long entries_size = m_entries_count + entries_count;
|
|
||||||
|
|
||||||
if (m_entries_size < entries_size)
|
|
||||||
{
|
|
||||||
BlockEntry** const entries = new BlockEntry*[entries_size];
|
|
||||||
assert(entries);
|
|
||||||
|
|
||||||
BlockEntry** src = m_entries;
|
|
||||||
BlockEntry** const src_end = src + m_entries_count;
|
|
||||||
|
|
||||||
BlockEntry** dst = entries;
|
|
||||||
|
|
||||||
while (src != src_end)
|
|
||||||
*dst++ = *src++;
|
|
||||||
|
|
||||||
delete[] m_entries;
|
|
||||||
|
|
||||||
m_entries = entries;
|
|
||||||
m_entries_size = entries_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
ppEntry = m_entries + m_entries_count;
|
|
||||||
m_entries_count = entries_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (m_pos < cluster_stop)
|
|
||||||
{
|
|
||||||
long len;
|
|
||||||
const long long id = ReadUInt(pReader, m_pos, len);
|
|
||||||
assert(id >= 0); //TODO
|
|
||||||
assert((m_pos + len) <= cluster_stop);
|
|
||||||
|
|
||||||
m_pos += len; //consume id
|
|
||||||
|
|
||||||
const long long size = ReadUInt(pReader, m_pos, len);
|
|
||||||
assert(size >= 0); //TODO
|
|
||||||
assert((m_pos + len) <= cluster_stop);
|
|
||||||
|
|
||||||
m_pos += len; //consume size
|
|
||||||
|
|
||||||
if (id == 0x20) //BlockGroup ID
|
|
||||||
CreateBlockGroup(m_pos, size, ppEntry);
|
|
||||||
else if (id == 0x23) //SimpleBlock ID
|
|
||||||
CreateSimpleBlock(m_pos, size, ppEntry);
|
|
||||||
|
|
||||||
m_pos += size; //consume payload
|
|
||||||
assert(m_pos <= cluster_stop);
|
|
||||||
}
|
|
||||||
|
|
||||||
assert(m_pos == cluster_stop);
|
|
||||||
assert((ppEntry - m_entries) == m_entries_count);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
long long Cluster::GetTimeCode() const
|
long long Cluster::GetTimeCode() const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -578,8 +578,6 @@ public:
|
|||||||
//void Load() const;
|
//void Load() const;
|
||||||
long Load(long long& pos, long& size) const;
|
long Load(long long& pos, long& size) const;
|
||||||
|
|
||||||
//void LoadBlockEntries() const;
|
|
||||||
|
|
||||||
long Parse(long long& pos, long& size) const;
|
long Parse(long long& pos, long& size) const;
|
||||||
long GetEntry(long index, const mkvparser::BlockEntry*&) const;
|
long GetEntry(long index, const mkvparser::BlockEntry*&) const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user