libwebm: removed old LoadBlockEntries
Change-Id: I340f444f719fa9c5d9da986f1527522d8a5f9812
This commit is contained in:
parent
7b07758854
commit
bd833a82e4
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
|
||||
{
|
||||
|
@ -578,8 +578,6 @@ public:
|
||||
//void Load() const;
|
||||
long Load(long long& pos, long& size) const;
|
||||
|
||||
//void LoadBlockEntries() const;
|
||||
|
||||
long Parse(long long& pos, long& size) const;
|
||||
long GetEntry(long index, const mkvparser::BlockEntry*&) const;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user