| Index: source/libvpx/third_party/libwebm/mkvparser.hpp
|
| diff --git a/source/libvpx/third_party/libwebm/mkvparser.hpp b/source/libvpx/third_party/libwebm/mkvparser.hpp
|
| index 3e17d07cc2965c1cb8e560d052a13da5e5143dc6..aa0b43267d63b9f0e7a915ffd7a1164fa9d11e49 100644
|
| --- a/source/libvpx/third_party/libwebm/mkvparser.hpp
|
| +++ b/source/libvpx/third_party/libwebm/mkvparser.hpp
|
| @@ -32,7 +32,8 @@ long long ReadUInt(IMkvReader*, long long, long&);
|
| long long UnserializeUInt(IMkvReader*, long long pos, long long size);
|
|
|
| long UnserializeFloat(IMkvReader*, long long pos, long long size, double&);
|
| -long UnserializeInt(IMkvReader*, long long pos, long len, long long& result);
|
| +long UnserializeInt(IMkvReader*, long long pos, long long size,
|
| + long long& result);
|
|
|
| long UnserializeString(IMkvReader*, long long pos, long long size, char*& str);
|
|
|
| @@ -398,6 +399,10 @@ class VideoTrack : public Track {
|
|
|
| long long GetWidth() const;
|
| long long GetHeight() const;
|
| + long long GetDisplayWidth() const;
|
| + long long GetDisplayHeight() const;
|
| + long long GetDisplayUnit() const;
|
| + long long GetStereoMode() const;
|
| double GetFrameRate() const;
|
|
|
| bool VetEntry(const BlockEntry*) const;
|
| @@ -406,6 +411,11 @@ class VideoTrack : public Track {
|
| private:
|
| long long m_width;
|
| long long m_height;
|
| + long long m_display_width;
|
| + long long m_display_height;
|
| + long long m_display_unit;
|
| + long long m_stereo_mode;
|
| +
|
| double m_rate;
|
| };
|
|
|
| @@ -582,6 +592,85 @@ class Chapters {
|
| int m_editions_count;
|
| };
|
|
|
| +class Tags {
|
| + Tags(const Tags&);
|
| + Tags& operator=(const Tags&);
|
| +
|
| + public:
|
| + Segment* const m_pSegment;
|
| + const long long m_start;
|
| + const long long m_size;
|
| + const long long m_element_start;
|
| + const long long m_element_size;
|
| +
|
| + Tags(Segment*, long long payload_start, long long payload_size,
|
| + long long element_start, long long element_size);
|
| +
|
| + ~Tags();
|
| +
|
| + long Parse();
|
| +
|
| + class Tag;
|
| + class SimpleTag;
|
| +
|
| + class SimpleTag {
|
| + friend class Tag;
|
| + SimpleTag();
|
| + SimpleTag(const SimpleTag&);
|
| + ~SimpleTag();
|
| + SimpleTag& operator=(const SimpleTag&);
|
| +
|
| + public:
|
| + const char* GetTagName() const;
|
| + const char* GetTagString() const;
|
| +
|
| + private:
|
| + void Init();
|
| + void ShallowCopy(SimpleTag&) const;
|
| + void Clear();
|
| + long Parse(IMkvReader*, long long pos, long long size);
|
| +
|
| + char* m_tag_name;
|
| + char* m_tag_string;
|
| + };
|
| +
|
| + class Tag {
|
| + friend class Tags;
|
| + Tag();
|
| + Tag(const Tag&);
|
| + ~Tag();
|
| + Tag& operator=(const Tag&);
|
| +
|
| + public:
|
| + int GetSimpleTagCount() const;
|
| + const SimpleTag* GetSimpleTag(int index) const;
|
| +
|
| + private:
|
| + void Init();
|
| + void ShallowCopy(Tag&) const;
|
| + void Clear();
|
| + long Parse(IMkvReader*, long long pos, long long size);
|
| +
|
| + long ParseSimpleTag(IMkvReader*, long long pos, long long size);
|
| + bool ExpandSimpleTagsArray();
|
| +
|
| + SimpleTag* m_simple_tags;
|
| + int m_simple_tags_size;
|
| + int m_simple_tags_count;
|
| + };
|
| +
|
| + int GetTagCount() const;
|
| + const Tag* GetTag(int index) const;
|
| +
|
| + private:
|
| + long ParseTag(long long pos, long long size);
|
| + bool ExpandTagsArray();
|
| +
|
| + Tag* m_tags;
|
| + int m_tags_size;
|
| + int m_tags_count;
|
| +};
|
| +
|
| class SegmentInfo {
|
| SegmentInfo(const SegmentInfo&);
|
| SegmentInfo& operator=(const SegmentInfo&);
|
| @@ -684,7 +773,7 @@ class CuePoint {
|
| long long m_element_start;
|
| long long m_element_size;
|
|
|
| - void Load(IMkvReader*);
|
| + bool Load(IMkvReader*);
|
|
|
| long long GetTimeCode() const; // absolute but unscaled
|
| long long GetTime(const Segment*) const; // absolute and scaled (ns units)
|
| @@ -697,7 +786,7 @@ class CuePoint {
|
| // reference = clusters containing req'd referenced blocks
|
| // reftime = timecode of the referenced block
|
|
|
| - void Parse(IMkvReader*, long long, long long);
|
| + bool Parse(IMkvReader*, long long, long long);
|
| };
|
|
|
| const TrackPosition* Find(const Track*) const;
|
| @@ -730,14 +819,6 @@ class Cues {
|
| long long time_ns, const Track*, const CuePoint*&,
|
| const CuePoint::TrackPosition*&) const;
|
|
|
| -#if 0
|
| - bool FindNext( //upper_bound of time_ns
|
| - long long time_ns,
|
| - const Track*,
|
| - const CuePoint*&,
|
| - const CuePoint::TrackPosition*&) const;
|
| -#endif
|
| -
|
| const CuePoint* GetFirst() const;
|
| const CuePoint* GetLast() const;
|
| const CuePoint* GetNext(const CuePoint*) const;
|
| @@ -751,7 +832,7 @@ class Cues {
|
| bool DoneParsing() const;
|
|
|
| private:
|
| - void Init() const;
|
| + bool Init() const;
|
| void PreloadCuePoint(long&, long long) const;
|
|
|
| mutable CuePoint** m_cue_points;
|
| @@ -877,18 +958,12 @@ class Segment {
|
| long ParseNext(const Cluster* pCurr, const Cluster*& pNext, long long& pos,
|
| long& size);
|
|
|
| -#if 0
|
| - //This pair parses one cluster, but only changes the state of the
|
| - //segment object when the cluster is actually added to the index.
|
| - long ParseCluster(long long& cluster_pos, long long& new_pos) const;
|
| - bool AddCluster(long long cluster_pos, long long new_pos);
|
| -#endif
|
| -
|
| const SeekHead* GetSeekHead() const;
|
| const Tracks* GetTracks() const;
|
| const SegmentInfo* GetInfo() const;
|
| const Cues* GetCues() const;
|
| const Chapters* GetChapters() const;
|
| + const Tags* GetTags() const;
|
|
|
| long long GetDuration() const;
|
|
|
| @@ -914,6 +989,7 @@ class Segment {
|
| Tracks* m_pTracks;
|
| Cues* m_pCues;
|
| Chapters* m_pChapters;
|
| + Tags* m_pTags;
|
| Cluster** m_clusters;
|
| long m_clusterCount; // number of entries for which m_index >= 0
|
| long m_clusterPreloadCount; // number of entries for which m_index < 0
|
|
|