1a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian// Copyright (c) 2010 The WebM project authors. All Rights Reserved. 2a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian// 3a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian// Use of this source code is governed by a BSD-style license 4a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian// that can be found in the LICENSE file in the root of the source 5a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian// tree. An additional intellectual property rights grant can be found 6a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian// in the file PATENTS. All contributing project authors may 7a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian// be found in the AUTHORS file in the root of the source tree. 8a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian 9a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian#ifndef MKVREADER_HPP 10a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian#define MKVREADER_HPP 11a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian 12a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian#include "mkvparser.hpp" 13a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian#include <cstdio> 14a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian 15a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramaniannamespace mkvparser 16a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian{ 17a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian 18a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanianclass MkvReader : public IMkvReader 19a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian{ 20a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian MkvReader(const MkvReader&); 21a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian MkvReader& operator=(const MkvReader&); 22a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanianpublic: 23a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian MkvReader(); 246ac915abcdb404a00d927fe6308a47fcf09d9519hkuang MkvReader(FILE* fp); 25a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian virtual ~MkvReader(); 26a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian 27a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian int Open(const char*); 28a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian void Close(); 29a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian 30a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian virtual int Read(long long position, long length, unsigned char* buffer); 31a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian virtual int Length(long long* total, long long* available); 32a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanianprivate: 336ac915abcdb404a00d927fe6308a47fcf09d9519hkuang 346ac915abcdb404a00d927fe6308a47fcf09d9519hkuang // Determines the size of the file. This is called either by the constructor 356ac915abcdb404a00d927fe6308a47fcf09d9519hkuang // or by the Open function depending on file ownership. Returns true on 366ac915abcdb404a00d927fe6308a47fcf09d9519hkuang // success. 376ac915abcdb404a00d927fe6308a47fcf09d9519hkuang bool GetFileSize(); 386ac915abcdb404a00d927fe6308a47fcf09d9519hkuang 39a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian long long m_length; 40a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian FILE* m_file; 416ac915abcdb404a00d927fe6308a47fcf09d9519hkuang bool reader_owns_file_; 42a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian}; 43a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian 44a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian} //end namespace mkvparser 45a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian 46a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian#endif //MKVREADER_HPP 47