Chromium Code Reviews| Index: media/base/decoder_buffer.h |
| diff --git a/media/base/decoder_buffer.h b/media/base/decoder_buffer.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..328e862c79172c0537ed4a717adfea80f4eee7ea |
| --- /dev/null |
| +++ b/media/base/decoder_buffer.h |
| @@ -0,0 +1,62 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// A specialized buffer for interfacing with audio / video decoders. |
| +// |
| +// Specifically ensures that data is aligned and padded as necessary by the |
| +// underlying decoding framework. On desktop platforms this means memory is |
| +// allocated using FFmpeg with particular alignment and padding requirements. |
| +// |
| +// Also includes decoder specific functionality for decryption. |
| + |
| +#ifndef MEDIA_BASE_DECODER_BUFFER_H_ |
| +#define MEDIA_BASE_DECODER_BUFFER_H_ |
| + |
| +#include "base/memory/scoped_ptr.h" |
| +#include "media/base/buffers.h" |
| +#include "media/base/decrypt_config.h" |
| + |
| +namespace media { |
| + |
| +class MEDIA_EXPORT DecoderBuffer : public Buffer { |
| + public: |
| + // Allocates buffer of size |buffer_size|. If |buffer_size| is < 0, |data_| |
| + // is set to a NULL ptr. Buffer will be padded and aligned as necessary. |
|
scherkus (not reviewing)
2012/05/30 00:45:19
I made a comment about this elsewhere
"data_ is s
DaleCurtis
2012/05/30 02:28:25
Done. Public interfaces DCHECK() this behavior.
|
| + explicit DecoderBuffer(int buffer_size); |
| + |
| + // Create a DecoderBuffer whose |data_| is copied from |data|. Buffer will be |
| + // padded and aligned as necessary. |
| + static scoped_refptr<DecoderBuffer> CopyFrom(const uint8* data, int size); |
| + |
| + // Create a DecoderBuffer indicating we've reached End Of Stream. |
|
scherkus (not reviewing)
2012/05/30 00:45:19
s/we've reached End Of Stream/end of stream/
also
DaleCurtis
2012/05/30 02:28:25
Done.
|
| + static scoped_refptr<DecoderBuffer> CreateEOSBuffer(); |
| + |
| + // Buffer implementation. |
| + virtual const uint8* GetData() const OVERRIDE; |
| + virtual int GetDataSize() const OVERRIDE; |
| + |
| + // Returns a read-write pointer to the buffer data. |
| + virtual uint8* GetWritableData(); |
| + |
| + virtual const DecryptConfig* GetDecryptConfig() const; |
| + virtual void SetDecryptConfig(scoped_ptr<DecryptConfig> decrypt_config); |
| + |
| + protected: |
| + DecoderBuffer(const uint8* data, int size); |
| + virtual ~DecoderBuffer(); |
| + |
| + private: |
| + int buffer_size_; |
| + uint8* data_; |
| + scoped_ptr<DecryptConfig> decrypt_config_; |
| + |
| + // Constructor helper method for memory allocations. |
| + void Initialize(); |
| + |
| + DISALLOW_COPY_AND_ASSIGN(DecoderBuffer); |
| +}; |
| + |
| +} // namespace media |
| + |
| +#endif // MEDIA_BASE_DECODER_BUFFER_H_ |