diff --git a/mkvparser.cpp b/mkvparser.cpp index 0a5a362..dc53c0c 100644 --- a/mkvparser.cpp +++ b/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 { diff --git a/mkvparser.hpp b/mkvparser.hpp index 7342461..188972e 100644 --- a/mkvparser.hpp +++ b/mkvparser.hpp @@ -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;