Web Speech API: cancel outstanding infobar requests when aborting.
[chromium-blink-merge.git] / media / base / data_source.h
blobdef1d01f314785ae2f885bc24eecceb0dbdcc85f
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.
5 #ifndef MEDIA_BASE_DATA_SOURCE_H_
6 #define MEDIA_BASE_DATA_SOURCE_H_
8 #include "base/callback.h"
9 #include "base/time/time.h"
10 #include "media/base/media_export.h"
12 namespace media {
14 class MEDIA_EXPORT DataSourceHost {
15 public:
16 // Set the total size of the media file.
17 virtual void SetTotalBytes(int64 total_bytes) = 0;
19 // Notify the host that byte range [start,end] has been buffered.
20 // TODO(fischman): remove this method when demuxing is push-based instead of
21 // pull-based. http://crbug.com/131444
22 virtual void AddBufferedByteRange(int64 start, int64 end) = 0;
24 // Notify the host that time range [start,end] has been buffered.
25 virtual void AddBufferedTimeRange(base::TimeDelta start,
26 base::TimeDelta end) = 0;
28 protected:
29 virtual ~DataSourceHost();
32 class MEDIA_EXPORT DataSource {
33 public:
34 typedef base::Callback<void(int64, int64)> StatusCallback;
35 typedef base::Callback<void(int)> ReadCB;
36 static const int kReadError;
38 DataSource();
39 virtual ~DataSource();
41 virtual void set_host(DataSourceHost* host);
43 // Reads |size| bytes from |position| into |data|. And when the read is done
44 // or failed, |read_cb| is called with the number of bytes read or
45 // kReadError in case of error.
46 virtual void Read(int64 position, int size, uint8* data,
47 const DataSource::ReadCB& read_cb) = 0;
49 // Notifies the DataSource of a change in the current playback rate.
50 virtual void SetPlaybackRate(float playback_rate);
52 // Stops the DataSource. Once this is called all future Read() calls will
53 // return an error.
54 virtual void Stop(const base::Closure& callback) = 0;
56 // Returns true and the file size, false if the file size could not be
57 // retrieved.
58 virtual bool GetSize(int64* size_out) = 0;
60 // Returns true if we are performing streaming. In this case seeking is
61 // not possible.
62 virtual bool IsStreaming() = 0;
64 // Notify the DataSource of the bitrate of the media.
65 // Values of |bitrate| <= 0 are invalid and should be ignored.
66 virtual void SetBitrate(int bitrate) = 0;
68 protected:
69 DataSourceHost* host();
71 private:
72 DataSourceHost* host_;
74 DISALLOW_COPY_AND_ASSIGN(DataSource);
77 } // namespace media
79 #endif // MEDIA_BASE_DATA_SOURCE_H_