blob: 51e99dd1031e3adf3d8bcda57832a058223ef731 [file] [log] [blame] [edit]
// Copyright 2023 The Chromium Authors
// Copyright 2024 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "fake_buffer.h"
namespace {
size_t CalculateDataSize(unsigned int size_per_element,
unsigned int num_elements) {
// TODO(b/358445928): try to bring back safe math.
return static_cast<size_t>(size_per_element) *
static_cast<size_t>(num_elements);
}
} // namespace
namespace libvafake {
FakeBuffer::FakeBuffer(IdType id,
VAContextID context,
VABufferType type,
unsigned int size_per_element,
unsigned int num_elements,
const void* data)
: id_(id),
context_(context),
type_(type),
data_size_(CalculateDataSize(size_per_element, num_elements)),
data_(std::make_unique<uint8_t[]>(data_size_)) {
if (data) {
memcpy(data_.get(), data, data_size_);
}
}
FakeBuffer::~FakeBuffer() = default;
FakeBuffer::IdType FakeBuffer::GetID() const {
return id_;
}
VAContextID FakeBuffer::GetContextID() const {
return context_;
}
VABufferType FakeBuffer::GetType() const {
return type_;
}
size_t FakeBuffer::GetDataSize() const {
return data_size_;
}
void* FakeBuffer::GetData() const {
return data_.get();
}
} // namespace libvafake