Chromium Code Reviews| Index: media/base/audio_decoder.h |
| diff --git a/media/base/audio_decoder.h b/media/base/audio_decoder.h |
| index 5aefb84aa67e486971f5836cbdccb3e338abdb08..3795b37c7000eefa226fb5302226ed71f66d3c8e 100644 |
| --- a/media/base/audio_decoder.h |
| +++ b/media/base/audio_decoder.h |
| @@ -7,9 +7,11 @@ |
| #include "base/callback.h" |
| #include "base/memory/ref_counted.h" |
| +#include "media/base/audio_decoder_config.h" |
| #include "media/base/channel_layout.h" |
| -#include "media/base/pipeline_status.h" |
| +#include "media/base/decoder_buffer.h" |
| #include "media/base/media_export.h" |
| +#include "media/base/pipeline_status.h" |
| namespace media { |
| @@ -18,11 +20,15 @@ class DemuxerStream; |
| class MEDIA_EXPORT AudioDecoder { |
| public: |
| - // Status codes for read operations. |
| + // Status codes for decode operations. |
| + // TODO(rileya): Now that both AudioDecoder and VideoDecoder Status enums |
| + // match, break them into a decoder_status.h. |
| enum Status { |
| - kOk, |
| - kAborted, |
| - kDecodeError, |
| + kOk, // We're all good. |
| + kAborted, // We aborted as a result of Stop() or Reset(). |
| + kNotEnoughData, // Not enough data to produce a video frame. |
| + kDecodeError, // A decoding error occurred. |
| + kDecryptError // Decrypting error happened. |
| }; |
| AudioDecoder(); |
| @@ -31,9 +37,8 @@ class MEDIA_EXPORT AudioDecoder { |
| // Initializes an AudioDecoder with the given DemuxerStream, executing the |
| // callback upon completion. |
| // statistics_cb is used to update global pipeline statistics. |
| - virtual void Initialize(DemuxerStream* stream, |
| - const PipelineStatusCB& status_cb, |
| - const StatisticsCB& statistics_cb) = 0; |
| + virtual void Initialize(const AudioDecoderConfig& config, |
| + const PipelineStatusCB& status_cb) = 0; |
| // Requests samples to be decoded and returned via the provided callback. |
| // Only one read may be in flight at any given time. |
| @@ -46,8 +51,14 @@ class MEDIA_EXPORT AudioDecoder { |
| // Read(). This can happen if the DemuxerStream gets flushed and doesn't have |
| // any more data to return. |
| typedef base::Callback<void(Status, const scoped_refptr<AudioBuffer>&)> |
| - ReadCB; |
| - virtual void Read(const ReadCB& read_cb) = 0; |
| + DecodeCB; |
| + virtual void Decode(const scoped_refptr<DecoderBuffer>& buffer, |
| + const DecodeCB& decode_cb) = 0; |
| + |
| + // Some AudioDecoders will queue up multiple AudioBuffers from a single |
| + // DecoderBuffer, if we have any such queued buffers this will return the next |
| + // one. Otherwise we return a NULL AudioBuffer. |
| + virtual scoped_refptr<AudioBuffer> GetAudioBuffer(Status* status); |
|
xhwang
2014/02/27 19:52:28
I wonder shouldn't this |status| always be kOk? We
|
| // Resets decoder state, dropping any queued encoded data. |
| virtual void Reset(const base::Closure& closure) = 0; |