1 /*
2 * Copyright (C) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "avdatasrcmemory.h"
17 #include "media_errors.h"
18 #include "media_log.h"
19
20 namespace {
21 constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, LOG_DOMAIN_PLAYER, "AVDataSrcMemory"};
22 }
23
24 namespace OHOS {
25 namespace Media {
26 struct AVSharedMemoryBaseImpl : public AVDataSrcMemory {
27 public:
AVSharedMemoryBaseImplOHOS::Media::AVSharedMemoryBaseImpl28 AVSharedMemoryBaseImpl(int32_t fd, int32_t size, uint32_t flags, const std::string &name)
29 : AVDataSrcMemory(fd, size, flags, name) {}
30 };
31
CreateFromLocal(int32_t size,uint32_t flags,const std::string & name)32 std::shared_ptr<AVSharedMemory> AVDataSrcMemory::CreateFromLocal(
33 int32_t size, uint32_t flags, const std::string &name)
34 {
35 std::shared_ptr<AVDataSrcMemory> memory = std::make_shared<AVDataSrcMemory>(size, flags, name);
36 int32_t ret = memory->Init();
37 CHECK_AND_RETURN_RET_LOG(ret == MSERR_OK, nullptr, "Create avsharedmemory failed, ret = %{public}d", ret);
38
39 return memory;
40 }
41
CreateFromRemote(int32_t fd,int32_t size,uint32_t flags,const std::string & name)42 std::shared_ptr<AVSharedMemory> AVDataSrcMemory::CreateFromRemote(
43 int32_t fd, int32_t size, uint32_t flags, const std::string &name)
44 {
45 std::shared_ptr<AVDataSrcMemory> memory = std::make_shared<AVSharedMemoryBaseImpl>(fd, size, flags, name);
46 int32_t ret = memory->Init();
47 if (ret != MSERR_OK) {
48 MEDIA_LOGE("Create avsharedmemory failed, ret = %{public}d", ret);
49 return nullptr;
50 }
51
52 return memory;
53 }
54
AVDataSrcMemory(int32_t size,uint32_t flags,const std::string & name)55 AVDataSrcMemory::AVDataSrcMemory(int32_t size, uint32_t flags, const std::string &name)
56 : AVSharedMemoryBase(size, flags, name)
57 {
58 MEDIA_LOGD("enter ctor, instance: 0x%{public}06" PRIXPTR ", name = %{public}s",
59 FAKE_POINTER(this), name.c_str());
60 offset_ = 0;
61 }
62
AVDataSrcMemory(int32_t fd,int32_t size,uint32_t flags,const std::string & name)63 AVDataSrcMemory::AVDataSrcMemory(int32_t fd, int32_t size, uint32_t flags, const std::string &name)
64 : AVSharedMemoryBase(fd, size, flags, name)
65 {
66 MEDIA_LOGD("enter ctor, instance: 0x%{public}06" PRIXPTR ", name = %{public}s",
67 FAKE_POINTER(this), name.c_str());
68 offset_ = 0;
69 }
70
~AVDataSrcMemory()71 AVDataSrcMemory::~AVDataSrcMemory()
72 {
73 MEDIA_LOGD("enter dtor, instance: 0x%{public}06" PRIXPTR ", name = %{public}s",
74 FAKE_POINTER(this), GetName().c_str());
75 }
76 } // namespace Media
77 } // namespace OHOS
78