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"
14 class AudioDecoderConfig
;
16 class VideoDecoderConfig
;
18 class MEDIA_EXPORT DemuxerStream
19 : public base::RefCountedThreadSafe
<DemuxerStream
> {
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;
50 friend class base::RefCountedThreadSafe
<DemuxerStream
>;
51 virtual ~DemuxerStream();
56 #endif // MEDIA_BASE_DEMUXER_STREAM_H_