// 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.
#include "media/base/data_buffer.h"
#include "base/logging.h"
namespace media {
DataBuffer::DataBuffer(int buffer_size)
: buffer_size_(buffer_size),
data_size_(0) {
CHECK_GE(buffer_size, 0);
data_.reset(new uint8[buffer_size_]);
}
DataBuffer::DataBuffer(scoped_ptr<uint8[]> buffer, int buffer_size)
: data_(buffer.Pass()),
buffer_size_(buffer_size),
data_size_(buffer_size) {
CHECK(data_.get());
CHECK_GE(buffer_size, 0);
}
DataBuffer::DataBuffer(const uint8* data, int data_size)
: buffer_size_(data_size),
data_size_(data_size) {
if (!data) {
CHECK_EQ(data_size, 0);
return;
}
CHECK_GE(data_size, 0);
data_.reset(new uint8[buffer_size_]);
memcpy(data_.get(), data, data_size_);
}
DataBuffer::~DataBuffer() {}
// static
scoped_refptr<DataBuffer> DataBuffer::CopyFrom(const uint8* data, int size) {
// If you hit this CHECK you likely have a bug in a demuxer. Go fix it.
CHECK(data);
return make_scoped_refptr(new DataBuffer(data, size));
}
// static
scoped_refptr<DataBuffer> DataBuffer::CreateEOSBuffer() {
return make_scoped_refptr(new DataBuffer(NULL, 0));
}
} // namespace media