roll skia to 4057
[chromium-blink-merge.git] / media / base / demuxer_stream.h
blob457818c795ac257c25d0b2e1e1824fd85c1f8463
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_DEMUXER_STREAM_H_
6 #define MEDIA_BASE_DEMUXER_STREAM_H_
8 #include "base/callback.h"
9 #include "base/memory/ref_counted.h"
10 #include "media/base/media_export.h"
12 namespace media {
14 class AudioDecoderConfig;
15 class Buffer;
16 class VideoDecoderConfig;
18 class MEDIA_EXPORT DemuxerStream
19 : public base::RefCountedThreadSafe<DemuxerStream> {
20 public:
21 enum Type {
22 UNKNOWN,
23 AUDIO,
24 VIDEO,
25 NUM_TYPES, // Always keep this entry as the last one!
28 // Request a buffer to returned via the provided callback.
30 // Non-NULL buffer pointers will contain media data or signal the end of the
31 // stream. A NULL pointer indicates an aborted Read(). This can happen if the
32 // DemuxerStream gets flushed and doesn't have any more data to return.
33 typedef base::Callback<void(const scoped_refptr<Buffer>&)> ReadCB;
34 virtual void Read(const ReadCB& read_cb) = 0;
36 // Returns the audio decoder configuration. It is an error to call this method
37 // if type() != AUDIO.
38 virtual const AudioDecoderConfig& audio_decoder_config() = 0;
40 // Returns the video decoder configuration. It is an error to call this method
41 // if type() != VIDEO.
42 virtual const VideoDecoderConfig& video_decoder_config() = 0;
44 // Returns the type of stream.
45 virtual Type type() = 0;
47 virtual void EnableBitstreamConverter() = 0;
49 protected:
50 friend class base::RefCountedThreadSafe<DemuxerStream>;
51 virtual ~DemuxerStream();
54 } // namespace media
56 #endif // MEDIA_BASE_DEMUXER_STREAM_H_