/*
* Copyright (C) 2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "avbuffer_unit_test.h"
#include "av_hardware_allocator.h"
#include "av_hardware_memory.h"
#include "av_shared_allocator.h"
#include "av_shared_memory_ext.h"
#include "av_surface_allocator.h"
#include "av_surface_memory.h"
#include "avbuffer_mock.h"
#include "avbuffer_utils.h"
#include "unittest_log.h"
using namespace std;
using namespace testing::ext;
namespace OHOS {
namespace Media {
namespace AVBufferUT {
void AVBufferInnerUnitTest::SetUpTestCase(void)
{
std::cout << "[SetUpTestCase]: SetUp!!!" << std::endl;
}
void AVBufferInnerUnitTest::TearDownTestCase(void)
{
std::cout << "[TearDownTestCase]: over!!!" << std::endl;
}
void AVBufferInnerUnitTest::SetUp(void)
{
std::cout << "[SetUp]: SetUp!!!";
meta_ = std::make_shared();
const ::testing::TestInfo *testInfo_ = ::testing::UnitTest::GetInstance()->current_test_info();
std::string testName = testInfo_->name();
std::cout << testName << std::endl;
parcel_ = nullptr;
if (inputBuffer_.size() < TEST_BUFFER_SIZE) {
inputBuffer_.resize(TEST_BUFFER_SIZE);
for (int32_t i = 0; i < TEST_BUFFER_SIZE; ++i) {
inputBuffer_[i] = i % 256; // 256: uint8_t range
}
}
vector temp(TEST_BUFFER_SIZE, 0);
swap(temp, outputBuffer_);
}
void AVBufferInnerUnitTest::TearDown(void)
{
allocator_ = nullptr;
buffer_ = nullptr;
meta_ = nullptr;
parcel_ = nullptr;
for (auto &buffer : dmaBufferLst_) {
DmabufHeapBufferFree(&buffer);
}
std::vector tmp;
swap(tmp, dmaBufferLst_);
std::cout << "[TearDown]: over!!!" << std::endl;
}
void AVBufferInnerUnitTest::CreateLocalHardwareMem()
{
// create loacal
DmabufHeapBuffer dmaBuffer = {.size = capacity_, .heapFlags = 0};
int32_t dmaHeapFd = HardwareHeapFactory::GetInstance().GetHardwareHeapFd();
DmabufHeapBufferAlloc(dmaHeapFd, &dmaBuffer);
dmaBufferLst_.push_back(dmaBuffer);
allocator_ = AVAllocatorFactory::CreateHardwareAllocator(dmaBuffer.fd, capacity_, memFlag_);
ASSERT_NE(nullptr, allocator_);
remoteBuffer_ = buffer_ = AVBuffer::CreateAVBuffer(allocator_, capacity_, align_);
ASSERT_NE(nullptr, buffer_);
ASSERT_NE(nullptr, buffer_->memory_->GetAddr());
}
void AVBufferInnerUnitTest::CreateLocalHardwareMemSecure()
{
// create loacal
DmabufHeapBuffer dmaBuffer = {.size = capacity_, .heapFlags = 0};
int32_t dmaHeapFd = HardwareHeapFactory::GetInstance().GetHardwareHeapFd();
DmabufHeapBufferAlloc(dmaHeapFd, &dmaBuffer);
dmaBufferLst_.push_back(dmaBuffer);
allocator_ = AVAllocatorFactory::CreateHardwareAllocator(dmaBuffer.fd, capacity_, memFlag_, true);
ASSERT_NE(nullptr, allocator_);
remoteBuffer_ = buffer_ = AVBuffer::CreateAVBuffer(allocator_, capacity_, align_);
ASSERT_NE(nullptr, buffer_);
ASSERT_EQ(nullptr, buffer_->memory_->GetAddr());
}
void AVBufferInnerUnitTest::CreateLocalHardwareMemByConfig()
{
// create loacal
DmabufHeapBuffer dmaBuffer = {.size = capacity_, .heapFlags = 0};
int32_t dmaHeapFd = HardwareHeapFactory::GetInstance().GetHardwareHeapFd();
DmabufHeapBufferAlloc(dmaHeapFd, &dmaBuffer);
dmaBufferLst_.push_back(dmaBuffer);
config_.dmaFd = dmaBuffer.fd;
config_.size = capacity_;
config_.memoryFlag = memFlag_;
config_.memoryType = MemoryType::HARDWARE_MEMORY;
remoteBuffer_ = buffer_ = AVBuffer::CreateAVBuffer(config_);
ASSERT_NE(nullptr, buffer_);
ASSERT_NE(nullptr, buffer_->memory_->GetAddr());
}
void AVBufferInnerUnitTest::CreateRemoteHardwareMem()
{
parcel_ = std::make_shared();
// create remote
CreateLocalHardwareMem();
buffer_ = nullptr;
ASSERT_FALSE((allocator_ == nullptr) || (remoteBuffer_ == nullptr) || (remoteBuffer_->memory_ == nullptr));
std::cout << "remote fd: " << remoteBuffer_->memory_->GetFileDescriptor() << "\n";
}
void AVBufferInnerUnitTest::CreateLocalSharedMem()
{
// create loacal
allocator_ = AVAllocatorFactory::CreateSharedAllocator(memFlag_);
ASSERT_NE(nullptr, allocator_);
remoteBuffer_ = buffer_ = AVBuffer::CreateAVBuffer(allocator_, capacity_, align_);
ASSERT_NE(nullptr, buffer_);
ASSERT_NE(nullptr, buffer_->memory_->GetAddr());
}
void AVBufferInnerUnitTest::CreateLocalSharedMemByConfig()
{
// create loacal
config_.align = align_;
config_.size = capacity_;
config_.memoryFlag = memFlag_;
config_.memoryType = MemoryType::SHARED_MEMORY;
remoteBuffer_ = buffer_ = AVBuffer::CreateAVBuffer(config_);
ASSERT_NE(nullptr, buffer_);
ASSERT_NE(nullptr, buffer_->memory_->GetAddr());
}
void AVBufferInnerUnitTest::CreateRemoteSharedMem()
{
parcel_ = std::make_shared();
// create remote
CreateLocalSharedMem();
buffer_ = nullptr;
ASSERT_FALSE((allocator_ == nullptr) || (remoteBuffer_ == nullptr) || (remoteBuffer_->memory_ == nullptr));
std::cout << "remote fd: " << remoteBuffer_->memory_->GetFileDescriptor() << "\n";
}
void AVBufferInnerUnitTest::CreateLocalSurfaceMem()
{
// create loacal
allocator_ = AVAllocatorFactory::CreateSurfaceAllocator(DEFAULT_CONFIG);
ASSERT_NE(nullptr, allocator_);
remoteBuffer_ = buffer_ = AVBuffer::CreateAVBuffer(allocator_, capacity_, align_);
ASSERT_NE(nullptr, buffer_);
ASSERT_NE(nullptr, buffer_->memory_->GetAddr());
}
void AVBufferInnerUnitTest::CreateLocalSurfaceMemByConfig()
{
// create loacal
*(config_.surfaceBufferConfig) = DEFAULT_CONFIG;
config_.memoryType = MemoryType::SURFACE_MEMORY;
remoteBuffer_ = buffer_ = AVBuffer::CreateAVBuffer(config_);
ASSERT_NE(nullptr, buffer_);
ASSERT_NE(nullptr, buffer_->memory_->GetAddr());
}
void AVBufferInnerUnitTest::CreateRemoteSurfaceMem()
{
parcel_ = std::make_shared();
// create remote
CreateLocalSurfaceMem();
buffer_ = nullptr;
ASSERT_FALSE((allocator_ == nullptr) || (remoteBuffer_ == nullptr) || (remoteBuffer_->memory_ == nullptr));
std::cout << "remote fd: " << remoteBuffer_->memory_->GetFileDescriptor() << "\n";
}
void AVBufferInnerUnitTest::CreateLocalSurfaceMemByParcel()
{
MessageParcel parcel;
sptr surfaceBuffer = SurfaceBuffer::Create();
(void)surfaceBuffer->Alloc(DEFAULT_CONFIG);
(void)surfaceBuffer->WriteToMessageParcel(parcel);
// create local
remoteBuffer_ = buffer_ = AVBuffer::CreateAVBuffer();
ASSERT_NE(nullptr, buffer_);
ASSERT_TRUE(buffer_->ReadFromMessageParcel(parcel, true));
ASSERT_NE(nullptr, buffer_->memory_->GetAddr());
}
void AVBufferInnerUnitTest::CreateLocalSurfaceMemBySptr()
{
sptr surfaceBuffer = SurfaceBuffer::Create();
(void)surfaceBuffer->Alloc(DEFAULT_CONFIG);
// create local
remoteBuffer_ = buffer_ = AVBuffer::CreateAVBuffer(surfaceBuffer);
ASSERT_NE(nullptr, buffer_);
ASSERT_NE(nullptr, buffer_->memory_);
ASSERT_NE(nullptr, buffer_->memory_->GetAddr());
}
void AVBufferInnerUnitTest::CreateRemoteSurfaceMemByParcel()
{
parcel_ = std::make_shared();
// create remote
CreateLocalSurfaceMemByParcel();
buffer_ = nullptr;
ASSERT_FALSE((remoteBuffer_ == nullptr) || (remoteBuffer_->memory_ == nullptr));
std::cout << "remote fd: " << remoteBuffer_->memory_->GetFileDescriptor() << "\n";
}
void AVBufferInnerUnitTest::CreateRemoteSurfaceMemBySptr()
{
parcel_ = std::make_shared();
// create remote
CreateLocalSurfaceMemBySptr();
buffer_ = nullptr;
ASSERT_FALSE((remoteBuffer_ == nullptr) || (remoteBuffer_->memory_ == nullptr));
std::cout << "remote fd: " << remoteBuffer_->memory_->GetFileDescriptor() << "\n";
}
void AVBufferInnerUnitTest::CreateLocalVirtualMem()
{
// create loacal
allocator_ = AVAllocatorFactory::CreateVirtualAllocator();
remoteBuffer_ = buffer_ = AVBuffer::CreateAVBuffer(allocator_, capacity_, align_);
ASSERT_NE(nullptr, buffer_);
ASSERT_NE(nullptr, buffer_->memory_->GetAddr());
}
void AVBufferInnerUnitTest::CreateLocalVirtualMemByConfig()
{
// create loacal
config_.align = align_;
config_.size = capacity_;
config_.memoryType = MemoryType::VIRTUAL_MEMORY;
remoteBuffer_ = buffer_ = AVBuffer::CreateAVBuffer(config_);
ASSERT_NE(nullptr, buffer_);
ASSERT_NE(nullptr, buffer_->memory_->GetAddr());
}
void AVBufferInnerUnitTest::CreateLocalNullMem()
{
parcel_ = std::make_shared();
// create remote
remoteBuffer_ = AVBuffer::CreateAVBuffer();
ASSERT_NE(nullptr, remoteBuffer_);
}
void AVBufferInnerUnitTest::GetRemoteBuffer()
{
bool ret = remoteBuffer_->WriteToMessageParcel(*parcel_);
ASSERT_TRUE(ret);
// create loacal
buffer_ = AVBuffer::CreateAVBuffer();
ASSERT_NE(nullptr, buffer_);
ret = buffer_->ReadFromMessageParcel(*parcel_);
ASSERT_TRUE(ret);
if (buffer_->memory_ != nullptr) {
ASSERT_NE(nullptr, buffer_->memory_->GetAddr());
std::cout << "local fd: " << buffer_->memory_->GetFileDescriptor() << "\n";
}
}
void AVBufferInnerUnitTest::CheckMetaTransParcel()
{
int32_t getIntValue = 0;
int64_t getLongValue = 0;
double getDoubleValue = 0.0;
std::string getStringValue = "";
MessageParcel parcel;
for (int32_t toIndex = 0; toIndex < TEST_LOOP_DEPTH; ++toIndex) {
ASSERT_TRUE(meta_->ToParcel(parcel));
}
for (int32_t fromIndex = 0; fromIndex < TEST_LOOP_DEPTH; ++fromIndex) {
ASSERT_TRUE(meta_->FromParcel(parcel));
meta_->GetData(INT_TESTKEY, getIntValue);
meta_->GetData(LONG_TESTKEY, getLongValue);
meta_->GetData(DOUBLE_TESTKEY, getDoubleValue);
meta_->GetData(STRING_TESTKEY, getStringValue);
EXPECT_EQ(getIntValue, INTVALUE);
EXPECT_EQ(getLongValue, LONGVALUE);
EXPECT_EQ(getDoubleValue, DOUBLEVALUE);
EXPECT_EQ(getStringValue, STRINGVALUE);
}
}
void AVBufferInnerUnitTest::CheckMetaSetAndGet()
{
int32_t getIntValue = 0;
int64_t getLongValue = 0;
double getDoubleValue = 0.0;
std::string getStringValue = "";
remoteBuffer_->pts_ = DEFAULT_PTS;
remoteBuffer_->dts_ = DEFAULT_DTS;
remoteBuffer_->duration_ = DEFAULT_DURATION;
remoteBuffer_->flag_ = DEFAULT_FLAG;
meta_->SetData(INT_TESTKEY, INTVALUE);
meta_->SetData(LONG_TESTKEY, LONGVALUE);
meta_->SetData(DOUBLE_TESTKEY, DOUBLEVALUE);
meta_->SetData(STRING_TESTKEY, STRINGVALUE);
CheckMetaTransParcel();
remoteBuffer_->meta_ = meta_;
if (parcel_ != nullptr) {
GetRemoteBuffer();
ASSERT_EQ(remoteBuffer_->GetUniqueId(), buffer_->GetUniqueId());
ASSERT_FALSE((buffer_ == nullptr) || (buffer_->memory_ == nullptr));
}
ASSERT_NE(nullptr, buffer_->meta_);
EXPECT_EQ(buffer_->pts_, DEFAULT_PTS);
EXPECT_EQ(buffer_->dts_, DEFAULT_DTS);
EXPECT_EQ(buffer_->duration_, DEFAULT_DURATION);
EXPECT_EQ(buffer_->flag_, DEFAULT_FLAG);
buffer_->meta_->GetData(INT_TESTKEY, getIntValue);
buffer_->meta_->GetData(LONG_TESTKEY, getLongValue);
buffer_->meta_->GetData(DOUBLE_TESTKEY, getDoubleValue);
buffer_->meta_->GetData(STRING_TESTKEY, getStringValue);
EXPECT_EQ(getIntValue, INTVALUE);
EXPECT_EQ(getLongValue, LONGVALUE);
EXPECT_EQ(getDoubleValue, DOUBLEVALUE);
EXPECT_EQ(getStringValue, STRINGVALUE);
}
void AVBufferInnerUnitTest::CheckAttrTrans()
{
remoteBuffer_->pts_ = DEFAULT_PTS;
remoteBuffer_->dts_ = DEFAULT_DTS;
remoteBuffer_->duration_ = DEFAULT_DURATION;
remoteBuffer_->flag_ = DEFAULT_FLAG;
GetRemoteBuffer();
ASSERT_EQ(remoteBuffer_->GetUniqueId(), buffer_->GetUniqueId());
ASSERT_FALSE(buffer_ == nullptr);
EXPECT_EQ(buffer_->pts_, DEFAULT_PTS);
EXPECT_EQ(buffer_->dts_, DEFAULT_DTS);
EXPECT_EQ(buffer_->duration_, DEFAULT_DURATION);
EXPECT_EQ(buffer_->flag_, DEFAULT_FLAG);
for (int32_t i = 0; i < TEST_LOOP_DEPTH; i++) {
remoteBuffer_->pts_++;
remoteBuffer_->dts_++;
remoteBuffer_->duration_++;
remoteBuffer_->flag_++;
ASSERT_TRUE(remoteBuffer_->WriteToMessageParcel(*parcel_));
ASSERT_TRUE(remoteBuffer_->WriteToMessageParcel(*parcel_));
ASSERT_TRUE(buffer_->ReadFromMessageParcel(*parcel_));
ASSERT_TRUE(buffer_->ReadFromMessageParcel(*parcel_));
EXPECT_EQ(buffer_->pts_, remoteBuffer_->pts_);
EXPECT_EQ(buffer_->dts_, remoteBuffer_->dts_);
EXPECT_EQ(buffer_->duration_, remoteBuffer_->duration_);
EXPECT_EQ(buffer_->flag_, remoteBuffer_->flag_);
}
}
void AVBufferInnerUnitTest::CheckMemTrans()
{
outputBuffer_.resize(TEST_BUFFER_SIZE, 0);
int32_t pos = capacity_ / 2;
int32_t length = capacity_ - pos;
auto error = memcpy_s(remoteBuffer_->memory_->GetAddr(), pos, inputBuffer_.data(), pos);
EXPECT_EQ(error, EOK);
remoteBuffer_->memory_->SetSize(pos);
EXPECT_EQ(remoteBuffer_->memory_->Write(inputBuffer_.data() + pos, length, -1), length);
EXPECT_EQ(remoteBuffer_->memory_->Read(outputBuffer_.data(), capacity_, 0), capacity_);
uint8_t *addr = remoteBuffer_->memory_->GetAddr();
ASSERT_NE(addr, nullptr);
EXPECT_EQ(remoteBuffer_->memory_->GetSize(), capacity_);
EXPECT_EQ(memcmp(inputBuffer_.data(), outputBuffer_.data(), capacity_), 0);
EXPECT_EQ(memcmp(static_cast(addr), inputBuffer_.data(), capacity_), 0);
EXPECT_EQ(memcmp(static_cast(addr), outputBuffer_.data(), capacity_), 0);
if (parcel_ != nullptr) {
GetRemoteBuffer();
ASSERT_EQ(remoteBuffer_->GetUniqueId(), buffer_->GetUniqueId());
ASSERT_FALSE((buffer_ == nullptr) || (buffer_->memory_ == nullptr));
}
ASSERT_EQ(buffer_->memory_->GetSize(), capacity_);
addr = buffer_->memory_->GetAddr();
EXPECT_EQ(buffer_->memory_->Read(outputBuffer_.data(), capacity_, 0), capacity_);
EXPECT_EQ(memcmp(inputBuffer_.data(), outputBuffer_.data(), capacity_), 0);
EXPECT_EQ(memcmp(static_cast(addr), inputBuffer_.data(), capacity_), 0);
EXPECT_EQ(memcmp(static_cast(addr), outputBuffer_.data(), capacity_), 0);
}
void AVBufferInnerUnitTest::CheckMemTransPos(int32_t pos)
{
outputBuffer_.resize(TEST_BUFFER_SIZE, 0);
capacity_ = remoteBuffer_->memory_->GetCapacity();
int32_t length = capacity_ - pos;
EXPECT_EQ(remoteBuffer_->memory_->Write(inputBuffer_.data() + pos, length, pos), length);
EXPECT_EQ(remoteBuffer_->memory_->Read(outputBuffer_.data() + pos, length, pos), length);
uint8_t *addr = remoteBuffer_->memory_->GetAddr();
ASSERT_NE(addr, nullptr);
EXPECT_EQ(remoteBuffer_->memory_->GetSize(), capacity_);
EXPECT_EQ(memcmp(inputBuffer_.data() + pos, outputBuffer_.data() + pos, length), 0);
EXPECT_EQ(memcmp(static_cast(addr + pos), inputBuffer_.data() + pos, length), 0);
EXPECT_EQ(memcmp(static_cast(addr + pos), outputBuffer_.data() + pos, length), 0);
if (parcel_ != nullptr) {
GetRemoteBuffer();
ASSERT_EQ(remoteBuffer_->GetUniqueId(), buffer_->GetUniqueId());
ASSERT_FALSE((buffer_ == nullptr) || (buffer_->memory_ == nullptr));
}
ASSERT_EQ(buffer_->memory_->GetSize(), capacity_);
addr = buffer_->memory_->GetAddr();
EXPECT_EQ(buffer_->memory_->Read(outputBuffer_.data() + pos, length, pos), length);
EXPECT_EQ(memcmp(inputBuffer_.data() + pos, outputBuffer_.data() + pos, length), 0);
EXPECT_EQ(memcmp(static_cast(addr + pos), inputBuffer_.data() + pos, length), 0);
EXPECT_EQ(memcmp(static_cast(addr + pos), outputBuffer_.data() + pos, length), 0);
}
void AVBufferInnerUnitTest::CheckMemTransOutOfRange(int32_t pos)
{
outputBuffer_.resize(TEST_BUFFER_SIZE, 0);
capacity_ = remoteBuffer_->memory_->GetCapacity();
int32_t length = capacity_ - pos;
EXPECT_EQ(remoteBuffer_->memory_->Write(inputBuffer_.data() + pos, length + 1, pos), length);
EXPECT_EQ(remoteBuffer_->memory_->Read(outputBuffer_.data() + pos, length + 1, pos), length);
uint8_t *addr = remoteBuffer_->memory_->GetAddr();
ASSERT_NE(addr, nullptr);
EXPECT_EQ(remoteBuffer_->memory_->GetSize(), capacity_);
EXPECT_EQ(memcmp(inputBuffer_.data() + pos, outputBuffer_.data() + pos, length), 0);
EXPECT_EQ(memcmp(static_cast(addr + pos), inputBuffer_.data() + pos, length), 0);
EXPECT_EQ(memcmp(static_cast(addr + pos), outputBuffer_.data() + pos, length), 0);
if (parcel_ != nullptr) {
GetRemoteBuffer();
ASSERT_EQ(remoteBuffer_->GetUniqueId(), buffer_->GetUniqueId());
ASSERT_FALSE((buffer_ == nullptr) || (buffer_->memory_ == nullptr));
}
ASSERT_EQ(buffer_->memory_->GetSize(), capacity_);
addr = buffer_->memory_->GetAddr();
EXPECT_EQ(buffer_->memory_->Read(outputBuffer_.data() + pos, length + 1, pos), length);
EXPECT_EQ(memcmp(inputBuffer_.data() + pos, outputBuffer_.data() + pos, length), 0);
EXPECT_EQ(memcmp(static_cast(addr + pos), inputBuffer_.data() + pos, length), 0);
EXPECT_EQ(memcmp(static_cast(addr + pos), outputBuffer_.data() + pos, length), 0);
}
void AVBufferInnerUnitTest::CheckDataSize()
{
capacity_ = remoteBuffer_->memory_->GetCapacity();
EXPECT_EQ(Status::OK, remoteBuffer_->memory_->SetSize(capacity_ - 1));
EXPECT_EQ(remoteBuffer_->memory_->GetSize(), capacity_ - 1);
EXPECT_EQ(Status::OK, remoteBuffer_->memory_->SetSize(0));
EXPECT_EQ(remoteBuffer_->memory_->GetSize(), 0);
EXPECT_EQ(Status::OK, remoteBuffer_->memory_->SetSize(1));
EXPECT_EQ(remoteBuffer_->memory_->GetSize(), 1);
EXPECT_EQ(Status::ERROR_INVALID_PARAMETER, remoteBuffer_->memory_->SetSize(-1));
EXPECT_EQ(remoteBuffer_->memory_->GetSize(), 1);
EXPECT_EQ(Status::ERROR_INVALID_PARAMETER, remoteBuffer_->memory_->SetSize(capacity_ + 1));
EXPECT_EQ(remoteBuffer_->memory_->GetSize(), 1);
EXPECT_EQ(Status::OK, remoteBuffer_->memory_->SetSize(capacity_));
EXPECT_EQ(remoteBuffer_->memory_->GetSize(), capacity_);
if (parcel_ != nullptr) {
GetRemoteBuffer();
ASSERT_EQ(remoteBuffer_->GetUniqueId(), buffer_->GetUniqueId());
ASSERT_FALSE((buffer_ == nullptr) || (buffer_->memory_ == nullptr));
}
EXPECT_EQ(buffer_->memory_->GetSize(), capacity_);
}
HardwareHeapFactory::HardwareHeapFactory()
{
std::string rootDir = "/dev/dma_heap/";
DIR *dir = opendir(rootDir.c_str());
if (dir == nullptr) {
return;
}
struct dirent *ptr;
std::string heapName = "";
while ((ptr = readdir(dir)) != nullptr) {
std::string fileName = ptr->d_name;
std::string::size_type idx = fileName.find("system");
if (idx != std::string::npos) {
heapName = fileName;
break;
}
}
closedir(dir);
dmaHeapFd_ = DmabufHeapOpen(heapName.c_str());
}
HardwareHeapFactory::~HardwareHeapFactory()
{
DmabufHeapClose(dmaHeapFd_);
}
HardwareHeapFactory &HardwareHeapFactory::GetInstance()
{
static HardwareHeapFactory hwHeapInstance;
return hwHeapInstance;
}
int32_t HardwareHeapFactory::GetHardwareHeapFd() const
{
return dmaHeapFd_;
}
void AVBufferFrameworkUnitTest::SetUpTestCase(void) {}
void AVBufferFrameworkUnitTest::TearDownTestCase(void) {}
void AVBufferFrameworkUnitTest::SetUp(void)
{
std::cout << "[SetUp]: SetUp!!!" << std::endl;
const ::testing::TestInfo *testInfo_ = ::testing::UnitTest::GetInstance()->current_test_info();
std::string testName = testInfo_->name();
std::cout << testName << std::endl;
buffer_ = AVBufferMockFactory::CreateAVBuffer(MEMSIZE);
EXPECT_NE(nullptr, buffer_);
}
void AVBufferFrameworkUnitTest::TearDown(void)
{
std::cout << "[TearDown]: over!!!" << std::endl;
}
} // namespace AVBufferUT
} // namespace Media
} // namespace OHOS