1049e185fSopenharmony_ci/* 2049e185fSopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 3049e185fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4049e185fSopenharmony_ci * you may not use this file except in compliance with the License. 5049e185fSopenharmony_ci * You may obtain a copy of the License at 6049e185fSopenharmony_ci * 7049e185fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8049e185fSopenharmony_ci * 9049e185fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10049e185fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11049e185fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12049e185fSopenharmony_ci * See the License for the specific language governing permissions and 13049e185fSopenharmony_ci * limitations under the License. 14049e185fSopenharmony_ci */ 15049e185fSopenharmony_ci 16049e185fSopenharmony_ci#include "avdatasrcmemory.h" 17049e185fSopenharmony_ci#include "media_errors.h" 18049e185fSopenharmony_ci#include "media_log.h" 19049e185fSopenharmony_ci 20049e185fSopenharmony_cinamespace { 21049e185fSopenharmony_ci constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, LOG_DOMAIN_PLAYER, "AVDataSrcMemory"}; 22049e185fSopenharmony_ci} 23049e185fSopenharmony_ci 24049e185fSopenharmony_cinamespace OHOS { 25049e185fSopenharmony_cinamespace Media { 26049e185fSopenharmony_cistruct AVSharedMemoryBaseImpl : public AVDataSrcMemory { 27049e185fSopenharmony_cipublic: 28049e185fSopenharmony_ci AVSharedMemoryBaseImpl(int32_t fd, int32_t size, uint32_t flags, const std::string &name) 29049e185fSopenharmony_ci : AVDataSrcMemory(fd, size, flags, name) {} 30049e185fSopenharmony_ci}; 31049e185fSopenharmony_ci 32049e185fSopenharmony_cistd::shared_ptr<AVSharedMemory> AVDataSrcMemory::CreateFromLocal( 33049e185fSopenharmony_ci int32_t size, uint32_t flags, const std::string &name) 34049e185fSopenharmony_ci{ 35049e185fSopenharmony_ci std::shared_ptr<AVDataSrcMemory> memory = std::make_shared<AVDataSrcMemory>(size, flags, name); 36049e185fSopenharmony_ci int32_t ret = memory->Init(); 37049e185fSopenharmony_ci CHECK_AND_RETURN_RET_LOG(ret == MSERR_OK, nullptr, "Create avsharedmemory failed, ret = %{public}d", ret); 38049e185fSopenharmony_ci 39049e185fSopenharmony_ci return memory; 40049e185fSopenharmony_ci} 41049e185fSopenharmony_ci 42049e185fSopenharmony_cistd::shared_ptr<AVSharedMemory> AVDataSrcMemory::CreateFromRemote( 43049e185fSopenharmony_ci int32_t fd, int32_t size, uint32_t flags, const std::string &name) 44049e185fSopenharmony_ci{ 45049e185fSopenharmony_ci std::shared_ptr<AVDataSrcMemory> memory = std::make_shared<AVSharedMemoryBaseImpl>(fd, size, flags, name); 46049e185fSopenharmony_ci int32_t ret = memory->Init(); 47049e185fSopenharmony_ci if (ret != MSERR_OK) { 48049e185fSopenharmony_ci MEDIA_LOGE("Create avsharedmemory failed, ret = %{public}d", ret); 49049e185fSopenharmony_ci return nullptr; 50049e185fSopenharmony_ci } 51049e185fSopenharmony_ci 52049e185fSopenharmony_ci return memory; 53049e185fSopenharmony_ci} 54049e185fSopenharmony_ci 55049e185fSopenharmony_ciAVDataSrcMemory::AVDataSrcMemory(int32_t size, uint32_t flags, const std::string &name) 56049e185fSopenharmony_ci : AVSharedMemoryBase(size, flags, name) 57049e185fSopenharmony_ci{ 58049e185fSopenharmony_ci MEDIA_LOGD("enter ctor, instance: 0x%{public}06" PRIXPTR ", name = %{public}s", 59049e185fSopenharmony_ci FAKE_POINTER(this), name.c_str()); 60049e185fSopenharmony_ci offset_ = 0; 61049e185fSopenharmony_ci} 62049e185fSopenharmony_ci 63049e185fSopenharmony_ciAVDataSrcMemory::AVDataSrcMemory(int32_t fd, int32_t size, uint32_t flags, const std::string &name) 64049e185fSopenharmony_ci : AVSharedMemoryBase(fd, size, flags, name) 65049e185fSopenharmony_ci{ 66049e185fSopenharmony_ci MEDIA_LOGD("enter ctor, instance: 0x%{public}06" PRIXPTR ", name = %{public}s", 67049e185fSopenharmony_ci FAKE_POINTER(this), name.c_str()); 68049e185fSopenharmony_ci offset_ = 0; 69049e185fSopenharmony_ci} 70049e185fSopenharmony_ci 71049e185fSopenharmony_ciAVDataSrcMemory::~AVDataSrcMemory() 72049e185fSopenharmony_ci{ 73049e185fSopenharmony_ci MEDIA_LOGD("enter dtor, instance: 0x%{public}06" PRIXPTR ", name = %{public}s", 74049e185fSopenharmony_ci FAKE_POINTER(this), GetName().c_str()); 75049e185fSopenharmony_ci} 76049e185fSopenharmony_ci} // namespace Media 77049e185fSopenharmony_ci} // namespace OHOS 78