• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2021 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 #ifndef HISTREAMER_PLUGIN_CORE_WRAPPER_H
17 #define HISTREAMER_PLUGIN_CORE_WRAPPER_H
18 
19 #include "demuxer.h"
20 #include "output_sink.h"
21 #include "interface/demuxer_plugin.h"
22 #include "interface/muxer_plugin.h"
23 #include "interface/plugin_base.h"
24 #include "muxer.h"
25 
26 namespace OHOS {
27 namespace Media {
28 namespace Plugin {
29 struct DataSourceWrapper : DataSource {
DataSourceWrapperDataSourceWrapper30     DataSourceWrapper(uint32_t pkgVersion, std::shared_ptr<DataSourceHelper> dataSource)
31         : version(pkgVersion), helper(std::move(dataSource))
32     {
33     }
34 
35     ~DataSourceWrapper() override = default;
36 
ReadAtDataSourceWrapper37     Status ReadAt(int64_t offset, std::shared_ptr<Buffer>& buffer, size_t expectedLen) override
38     {
39         return helper->ReadAt(offset, buffer, expectedLen);
40     }
41 
GetSizeDataSourceWrapper42     Status GetSize(size_t& size) override
43     {
44         return helper->GetSize(size);
45     }
46 
GetSeekableDataSourceWrapper47     Seekable GetSeekable() override
48     {
49         return helper->GetSeekable();
50     }
51 
52 private:
53     MEDIA_UNUSED uint32_t version;
54     std::shared_ptr<DataSourceHelper> helper;
55 };
56 
57 struct DataSinkWrapper : DataSink {
DataSinkWrapperDataSinkWrapper58     DataSinkWrapper(uint32_t pkgVersion, std::shared_ptr<DataSinkHelper> dataSink)
59         : version_(pkgVersion), helper_(std::move(dataSink)) {}
60     ~DataSinkWrapper() override = default;
61 
WriteAtDataSinkWrapper62     Status WriteAt(int64_t offset, const std::shared_ptr<Buffer>& buffer) override
63     {
64         return helper_->WriteAt(offset, buffer);
65     }
66 private:
67     MEDIA_UNUSED uint32_t version_;
68     std::shared_ptr<DataSinkHelper> helper_;
69 };
70 
71 struct AllocatorHelperWrapper : AllocatorHelper {
AllocatorHelperWrapperAllocatorHelperWrapper72     AllocatorHelperWrapper(uint32_t pkgVersion, std::shared_ptr<Allocator> alloc)
73         : version_(pkgVersion), allocator_(std::move(alloc)) {}
74 
75     ~AllocatorHelperWrapper() override = default;
76 
AllocAllocatorHelperWrapper77     void* Alloc(size_t size) override
78     {
79         return allocator_->Alloc(size);
80     }
81 
FreeAllocatorHelperWrapper82     void Free(void* ptr) override // NOLINT: void*
83     {
84         allocator_->Free(ptr);
85     }
86 
87 private:
88     MEDIA_UNUSED uint32_t version_;
89     std::shared_ptr<Allocator> allocator_;
90 };
91 
92 void ConvertToMediaInfoHelper(uint32_t pkgVersion, const MediaInfo& src, MediaInfoHelper& dest);
93 } // namespace Plugin
94 } // namespace Media
95 } // namespace OHOS
96 #endif // HISTREAMER_PLUGIN_CORE_WRAPPER_H
97