|  | // Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 
|  | // | 
|  | // Use of this source code is governed by a BSD-style license | 
|  | // that can be found in the LICENSE file in the root of the source | 
|  | // tree. An additional intellectual property rights grant can be found | 
|  | // in the file PATENTS.  All contributing project authors may | 
|  | // be found in the AUTHORS file in the root of the source tree. | 
|  | #ifndef MKVPARSER_MKVREADER_H_ | 
|  | #define MKVPARSER_MKVREADER_H_ | 
|  |  | 
|  | #include <cstdio> | 
|  |  | 
|  | #include "mkvparser/mkvparser.h" | 
|  |  | 
|  | namespace mkvparser { | 
|  |  | 
|  | class MkvReader : public IMkvReader { | 
|  | public: | 
|  | MkvReader(); | 
|  | explicit MkvReader(FILE* fp); | 
|  | virtual ~MkvReader(); | 
|  |  | 
|  | int Open(const char*); | 
|  | void Close(); | 
|  |  | 
|  | virtual int Read(long long position, long length, unsigned char* buffer); | 
|  | virtual int Length(long long* total, long long* available); | 
|  |  | 
|  | private: | 
|  | MkvReader(const MkvReader&); | 
|  | MkvReader& operator=(const MkvReader&); | 
|  |  | 
|  | // Determines the size of the file. This is called either by the constructor | 
|  | // or by the Open function depending on file ownership. Returns true on | 
|  | // success. | 
|  | bool GetFileSize(); | 
|  |  | 
|  | long long m_length; | 
|  | FILE* m_file; | 
|  | bool reader_owns_file_; | 
|  | }; | 
|  |  | 
|  | }  // namespace mkvparser | 
|  |  | 
|  | #endif  // MKVPARSER_MKVREADER_H_ |