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 // A simple implementation of Buffer that takes ownership of the given data
8 // DataBuffer assumes that memory was allocated with new uint8[].
10 #ifndef MEDIA_BASE_DATA_BUFFER_H_
11 #define MEDIA_BASE_DATA_BUFFER_H_
13 #include "base/memory/scoped_ptr.h"
14 #include "media/base/buffers.h"
18 class MEDIA_EXPORT DataBuffer
: public Buffer
{
20 // Assumes valid data of size |buffer_size|.
21 DataBuffer(scoped_array
<uint8
> buffer
, int buffer_size
);
23 // Allocates buffer of size |buffer_size|. If |buffer_size| is 0, |data_| is
25 explicit DataBuffer(int buffer_size
);
27 // Allocates buffer of size |data_size|, copies [data,data+data_size) to
28 // the allocated buffer and sets data size to |data_size|.
29 DataBuffer(const uint8
* data
, int data_size
);
31 // Buffer implementation.
32 virtual const uint8
* GetData() const OVERRIDE
;
33 virtual int GetDataSize() const OVERRIDE
;
35 // Returns a read-write pointer to the buffer data.
36 virtual uint8
* GetWritableData();
38 // Updates the size of valid data in bytes, which must be less than or equal
39 // to GetBufferSize().
40 virtual void SetDataSize(int data_size
);
42 // Returns the size of the underlying buffer.
43 virtual int GetBufferSize() const;
46 virtual ~DataBuffer();
49 // Constructor helper method for memory allocations.
52 scoped_array
<uint8
> data_
;
56 DISALLOW_COPY_AND_ASSIGN(DataBuffer
);
61 #endif // MEDIA_BASE_DATA_BUFFER_H_