Home | History | Annotate | Download | only in base
      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(const base::Closure& callback) = 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_
     52