Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / media / base / data_source.h
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef MEDIA_BASE_DATA_SOURCE_H_
6 #define MEDIA_BASE_DATA_SOURCE_H_
7
8 #include "base/callback.h"
9 #include "base/time/time.h"
10 #include "media/base/media_export.h"
11
12 namespace media {
13
14 class MEDIA_EXPORT DataSource {
15  public:
16   typedef base::Callback<void(int64, int64)> StatusCallback;
17   typedef base::Callback<void(int)> ReadCB;
18   static const int kReadError;
19
20   DataSource();
21   virtual ~DataSource();
22
23   // Reads |size| bytes from |position| into |data|. And when the read is done
24   // or failed, |read_cb| is called with the number of bytes read or
25   // kReadError in case of error.
26   virtual void Read(int64 position, int size, uint8* data,
27                     const DataSource::ReadCB& read_cb) = 0;
28
29   // Stops the DataSource. Once this is called all future Read() calls will
30   // return an error.
31   virtual void Stop() = 0;
32
33   // Returns true and the file size, false if the file size could not be
34   // retrieved.
35   virtual bool GetSize(int64* size_out) = 0;
36
37   // Returns true if we are performing streaming. In this case seeking is
38   // not possible.
39   virtual bool IsStreaming() = 0;
40
41   // Notify the DataSource of the bitrate of the media.
42   // Values of |bitrate| <= 0 are invalid and should be ignored.
43   virtual void SetBitrate(int bitrate) = 0;
44
45  private:
46   DISALLOW_COPY_AND_ASSIGN(DataSource);
47 };
48
49 }  // namespace media
50
51 #endif  // MEDIA_BASE_DATA_SOURCE_H_