libwebm: added support for incremental cluster parsing
Change-Id: Idb1bd292a01b7c9971967760ad016691ac628c29
This commit is contained in:
parent
f971a94349
commit
a1aa16692a
796
mkvparser.cpp
796
mkvparser.cpp
File diff suppressed because it is too large
Load Diff
@ -534,6 +534,8 @@ private:
|
||||
|
||||
class Cluster
|
||||
{
|
||||
friend class Segment;
|
||||
|
||||
Cluster(const Cluster&);
|
||||
Cluster& operator=(const Cluster&);
|
||||
|
||||
@ -541,11 +543,10 @@ public:
|
||||
Segment* const m_pSegment;
|
||||
|
||||
public:
|
||||
static Cluster* Parse(
|
||||
static Cluster* Create(
|
||||
Segment*,
|
||||
long,
|
||||
long long off,
|
||||
//long long element_start,
|
||||
long index, //index in segment
|
||||
long long off, //offset relative to segment
|
||||
long long element_size);
|
||||
|
||||
Cluster(); //EndOfStream
|
||||
@ -582,29 +583,40 @@ public:
|
||||
|
||||
void LoadBlockEntries() const;
|
||||
|
||||
long Parse(long long& pos, long& size) const;
|
||||
long GetEntry(long index, const mkvparser::BlockEntry*&) const;
|
||||
|
||||
protected:
|
||||
Cluster(
|
||||
Segment*,
|
||||
long,
|
||||
long long off,
|
||||
long index,
|
||||
//long long off,
|
||||
long long element_start,
|
||||
long long element_size);
|
||||
|
||||
public:
|
||||
//TODO: these should all be private, with public selector functions
|
||||
const long long m_element_start;
|
||||
long long GetPosition() const; //offset relative to segment
|
||||
|
||||
long GetIndex() const;
|
||||
long long GetElementSize() const;
|
||||
//long long GetPayloadSize() const;
|
||||
|
||||
long long Unparsed() const;
|
||||
|
||||
private:
|
||||
long m_index;
|
||||
mutable long long m_pos;
|
||||
mutable long long m_size;
|
||||
const long long m_element_start;
|
||||
mutable long long m_element_size;
|
||||
|
||||
private:
|
||||
mutable long long m_timecode;
|
||||
mutable BlockEntry** m_entries;
|
||||
mutable long m_entries_size;
|
||||
mutable long m_entries_count;
|
||||
|
||||
void ParseBlockGroup(long long, long long, size_t) const;
|
||||
void ParseSimpleBlock(long long, long long, size_t) const;
|
||||
void ParseBlock(long long id, long long pos, long long size) const;
|
||||
void ParseBlockGroup(long long, long long, BlockEntry**&) const;
|
||||
void ParseSimpleBlock(long long, long long, BlockEntry**&) const;
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user