blob: 5cd1bfbf29c3b74ad92d664fbf14716f4ada0140 [file] [log] [blame]
[email protected]f1ca6df2012-01-10 04:47:311// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]d8a447c52008-12-16 21:46:102// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]d8a447c52008-12-16 21:46:105#include "media/base/data_buffer.h"
6
dcheng652f5ff2015-12-27 08:54:007#include <utility>
8
[email protected]d8a447c52008-12-16 21:46:109namespace media {
10
[email protected]5095fbf2013-01-17 23:20:1411DataBuffer::DataBuffer(int buffer_size)
12 : buffer_size_(buffer_size),
13 data_size_(0) {
14 CHECK_GE(buffer_size, 0);
Avi Drissman97785ea2015-12-19 01:11:3115 data_.reset(new uint8_t[buffer_size_]);
[email protected]5095fbf2013-01-17 23:20:1416}
17
danakj6aaed6a2016-04-26 01:25:4418DataBuffer::DataBuffer(std::unique_ptr<uint8_t[]> buffer, int buffer_size)
dcheng652f5ff2015-12-27 08:54:0019 : data_(std::move(buffer)),
20 buffer_size_(buffer_size),
21 data_size_(buffer_size) {
[email protected]5095fbf2013-01-17 23:20:1422 CHECK(data_.get());
23 CHECK_GE(buffer_size, 0);
[email protected]d8a447c52008-12-16 21:46:1024}
25
Avi Drissman97785ea2015-12-19 01:11:3126DataBuffer::DataBuffer(const uint8_t* data, int data_size)
27 : buffer_size_(data_size), data_size_(data_size) {
[email protected]5095fbf2013-01-17 23:20:1428 if (!data) {
29 CHECK_EQ(data_size, 0);
30 return;
31 }
32
33 CHECK_GE(data_size, 0);
Avi Drissman97785ea2015-12-19 01:11:3134 data_.reset(new uint8_t[buffer_size_]);
[email protected]f42d6a102012-05-31 20:35:2535 memcpy(data_.get(), data, data_size_);
[email protected]ec575862012-05-02 20:18:0736}
37
Chris Watkins2de69292017-12-01 03:08:0138DataBuffer::~DataBuffer() = default;
[email protected]d8a447c52008-12-16 21:46:1039
[email protected]5095fbf2013-01-17 23:20:1440// static
Avi Drissman97785ea2015-12-19 01:11:3141scoped_refptr<DataBuffer> DataBuffer::CopyFrom(const uint8_t* data, int size) {
[email protected]5095fbf2013-01-17 23:20:1442 // If you hit this CHECK you likely have a bug in a demuxer. Go fix it.
43 CHECK(data);
kylecharda69d882017-10-04 05:49:5244 return base::WrapRefCounted(new DataBuffer(data, size));
[email protected]5095fbf2013-01-17 23:20:1445}
[email protected]f42d6a102012-05-31 20:35:2546
[email protected]5095fbf2013-01-17 23:20:1447// static
48scoped_refptr<DataBuffer> DataBuffer::CreateEOSBuffer() {
kylecharda69d882017-10-04 05:49:5249 return base::WrapRefCounted(new DataBuffer(NULL, 0));
[email protected]f42d6a102012-05-31 20:35:2550}
[email protected]d8a447c52008-12-16 21:46:1051} // namespace media