From 70f9644a8dec2fb6100850859be2ec0eb991ecc3 Mon Sep 17 00:00:00 2001 From: matthewjheaney Date: Sat, 19 Mar 2011 10:34:12 -0400 Subject: [PATCH] libwebm: restored Cluster::GetLast Change-Id: I73564fb508e23004392b5aaab1f1ad7cdedc8bb1 --- mkvparser.cpp | 23 +++++++++++++++++++---- mkvparser.hpp | 4 ++-- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/mkvparser.cpp b/mkvparser.cpp index 0c7ef30..ec625c3 100644 --- a/mkvparser.cpp +++ b/mkvparser.cpp @@ -7399,7 +7399,6 @@ long long Cluster::GetFirstTime() const } -#if 0 long long Cluster::GetLastTime() const { const BlockEntry* const pEntry = GetLast(); @@ -7412,7 +7411,6 @@ long long Cluster::GetLastTime() const return pBlock->GetTime(this); } -#endif void Cluster::CreateBlock( @@ -7545,13 +7543,31 @@ const BlockEntry* Cluster::GetFirst() const } -#if 0 const BlockEntry* Cluster::GetLast() const { +#if 0 LoadBlockEntries(); if ((m_entries == NULL) || (m_entries_count <= 0)) return NULL; +#else + for (;;) + { + long long pos; + long len; + + const long status = Parse(pos, len); + assert(status >= 0); + + if (status != 0) //no new block + break; + } + + if (m_entries_count <= 0) + return NULL; + + assert(m_entries); +#endif const long idx = m_entries_count - 1; @@ -7560,7 +7576,6 @@ const BlockEntry* Cluster::GetLast() const return pLast; } -#endif const BlockEntry* Cluster::GetNext(const BlockEntry* pEntry) const diff --git a/mkvparser.hpp b/mkvparser.hpp index 430aa99..bfb7acd 100644 --- a/mkvparser.hpp +++ b/mkvparser.hpp @@ -560,10 +560,10 @@ public: long long GetTimeCode() const; //absolute, but not scaled long long GetTime() const; //absolute, and scaled (nanosecond units) long long GetFirstTime() const; //time (ns) of first (earliest) block - //long long GetLastTime() const; //time (ns) of last (latest) block + long long GetLastTime() const; //time (ns) of last (latest) block const BlockEntry* GetFirst() const; - //const BlockEntry* GetLast() const; + const BlockEntry* GetLast() const; const BlockEntry* GetNext(const BlockEntry*) const; const BlockEntry* GetEntry(const Track*, long long ns = -1) const; const BlockEntry* GetEntry(