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