#ifndef MKVPARSER_MKVPARSER_H_
#define MKVPARSER_MKVPARSER_H_
#include <cstddef>
namespace mkvparser {
const int E_PARSE_FAILED = …;
const int E_FILE_FORMAT_INVALID = …;
const int E_BUFFER_NOT_FULL = …;
class IMkvReader { … };
template <typename Type>
Type* SafeArrayAlloc(unsigned long long num_elements,
unsigned long long element_size);
long long GetUIntLength(IMkvReader*, long long, long&);
long long ReadUInt(IMkvReader*, long long, long&);
long long ReadID(IMkvReader* pReader, long long pos, long& len);
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 long size,
long long& result);
long UnserializeString(IMkvReader*, long long pos, long long size, char*& str);
long ParseElementHeader(IMkvReader* pReader,
long long& pos,
long long stop,
long long& id, long long& size);
bool Match(IMkvReader*, long long&, unsigned long, long long&);
bool Match(IMkvReader*, long long&, unsigned long, unsigned char*&, size_t&);
void GetVersion(int& major, int& minor, int& build, int& revision);
struct EBMLHeader { … };
class Segment;
class Track;
class Cluster;
class Block { … };
class BlockEntry { … };
class SimpleBlock : public BlockEntry { … };
class BlockGroup : public BlockEntry { … };
class ContentEncoding { … };
class Track { … };
struct PrimaryChromaticity { … };
struct MasteringMetadata { … };
struct Colour { … };
struct Projection { … };
class VideoTrack : public Track { … };
class AudioTrack : public Track { … };
class Tracks { … };
class Chapters { … };
class Tags { … };
class SegmentInfo { … };
class SeekHead { … };
class Cues;
class CuePoint { … };
class Cues { … };
class Cluster { … };
class Segment { … };
}
inline long mkvparser::Segment::LoadCluster() { … }
#endif