• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #include "media/base/data_buffer.h"
6 
7 #include "base/logging.h"
8 
9 namespace media {
10 
DataBuffer(int buffer_size)11 DataBuffer::DataBuffer(int buffer_size)
12     : buffer_size_(buffer_size),
13       data_size_(0) {
14   CHECK_GE(buffer_size, 0);
15   data_.reset(new uint8[buffer_size_]);
16 }
17 
DataBuffer(scoped_ptr<uint8[]> buffer,int buffer_size)18 DataBuffer::DataBuffer(scoped_ptr<uint8[]> buffer, int buffer_size)
19     : data_(buffer.Pass()),
20       buffer_size_(buffer_size),
21       data_size_(buffer_size) {
22   CHECK(data_.get());
23   CHECK_GE(buffer_size, 0);
24 }
25 
DataBuffer(const uint8 * data,int data_size)26 DataBuffer::DataBuffer(const uint8* data, int data_size)
27     : buffer_size_(data_size),
28       data_size_(data_size) {
29   if (!data) {
30     CHECK_EQ(data_size, 0);
31     return;
32   }
33 
34   CHECK_GE(data_size, 0);
35   data_.reset(new uint8[buffer_size_]);
36   memcpy(data_.get(), data, data_size_);
37 }
38 
~DataBuffer()39 DataBuffer::~DataBuffer() {}
40 
41 // static
CopyFrom(const uint8 * data,int size)42 scoped_refptr<DataBuffer> DataBuffer::CopyFrom(const uint8* data, int size) {
43   // If you hit this CHECK you likely have a bug in a demuxer. Go fix it.
44   CHECK(data);
45   return make_scoped_refptr(new DataBuffer(data, size));
46 }
47 
48 // static
CreateEOSBuffer()49 scoped_refptr<DataBuffer> DataBuffer::CreateEOSBuffer() {
50   return make_scoped_refptr(new DataBuffer(NULL, 0));
51 }
52 }  // namespace media
53