xref: /aosp_15_r20/external/libwebm/mkvparser/mkvreader.h (revision 103e46e4cd4b6efcf6001f23fa8665fb110abf8d)
1*103e46e4SHarish Mahendrakar // Copyright (c) 2010 The WebM project authors. All Rights Reserved.
2*103e46e4SHarish Mahendrakar //
3*103e46e4SHarish Mahendrakar // Use of this source code is governed by a BSD-style license
4*103e46e4SHarish Mahendrakar // that can be found in the LICENSE file in the root of the source
5*103e46e4SHarish Mahendrakar // tree. An additional intellectual property rights grant can be found
6*103e46e4SHarish Mahendrakar // in the file PATENTS.  All contributing project authors may
7*103e46e4SHarish Mahendrakar // be found in the AUTHORS file in the root of the source tree.
8*103e46e4SHarish Mahendrakar #ifndef MKVPARSER_MKVREADER_H_
9*103e46e4SHarish Mahendrakar #define MKVPARSER_MKVREADER_H_
10*103e46e4SHarish Mahendrakar 
11*103e46e4SHarish Mahendrakar #include <cstdio>
12*103e46e4SHarish Mahendrakar 
13*103e46e4SHarish Mahendrakar #include "mkvparser/mkvparser.h"
14*103e46e4SHarish Mahendrakar 
15*103e46e4SHarish Mahendrakar namespace mkvparser {
16*103e46e4SHarish Mahendrakar 
17*103e46e4SHarish Mahendrakar class MkvReader : public IMkvReader {
18*103e46e4SHarish Mahendrakar  public:
19*103e46e4SHarish Mahendrakar   MkvReader();
20*103e46e4SHarish Mahendrakar   explicit MkvReader(FILE* fp);
21*103e46e4SHarish Mahendrakar   virtual ~MkvReader();
22*103e46e4SHarish Mahendrakar 
23*103e46e4SHarish Mahendrakar   int Open(const char*);
24*103e46e4SHarish Mahendrakar   void Close();
25*103e46e4SHarish Mahendrakar 
26*103e46e4SHarish Mahendrakar   virtual int Read(long long position, long length, unsigned char* buffer);
27*103e46e4SHarish Mahendrakar   virtual int Length(long long* total, long long* available);
28*103e46e4SHarish Mahendrakar 
29*103e46e4SHarish Mahendrakar  private:
30*103e46e4SHarish Mahendrakar   MkvReader(const MkvReader&);
31*103e46e4SHarish Mahendrakar   MkvReader& operator=(const MkvReader&);
32*103e46e4SHarish Mahendrakar 
33*103e46e4SHarish Mahendrakar   // Determines the size of the file. This is called either by the constructor
34*103e46e4SHarish Mahendrakar   // or by the Open function depending on file ownership. Returns true on
35*103e46e4SHarish Mahendrakar   // success.
36*103e46e4SHarish Mahendrakar   bool GetFileSize();
37*103e46e4SHarish Mahendrakar 
38*103e46e4SHarish Mahendrakar   long long m_length;
39*103e46e4SHarish Mahendrakar   FILE* m_file;
40*103e46e4SHarish Mahendrakar   bool reader_owns_file_;
41*103e46e4SHarish Mahendrakar };
42*103e46e4SHarish Mahendrakar 
43*103e46e4SHarish Mahendrakar }  // namespace mkvparser
44*103e46e4SHarish Mahendrakar 
45*103e46e4SHarish Mahendrakar #endif  // MKVPARSER_MKVREADER_H_
46