• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 OHOS_NATIVE_BUFFER_ADAPTER_H
17 #define OHOS_NATIVE_BUFFER_ADAPTER_H
18 
19 #include <string>
20 #include <memory>
21 
22 namespace OHOS::NWeb {
23 class NativeBufferConfigAdapter {
24 public:
25     NativeBufferConfigAdapter() = default;
26 
27     virtual ~NativeBufferConfigAdapter() = default;
28 
29     virtual int GetBufferWidth() = 0;
30 
31     virtual int GetBufferHeight() = 0;
32 
33     virtual int GetBufferFormat() = 0;
34 
35     virtual int GetBufferUsage() = 0;
36 
37     virtual int GetBufferStride() = 0;
38 
39     virtual void SetBufferWidth(int width) = 0;
40 
41     virtual void SetBufferHeight(int height) = 0;
42 
43     virtual void SetBufferFormat(int format) = 0;
44 
45     virtual void SetBufferUsage(int usage) = 0;
46 
47     virtual void SetBufferStride(int stride) = 0;
48 };
49 
50 class OhosNativeBufferAdapter {
51 public:
52     OhosNativeBufferAdapter() = default;
53 
54     virtual ~OhosNativeBufferAdapter() = default;
55 
56     virtual void AcquireBuffer(void* buffer) = 0;
57 
58     virtual void Release(void* buffer) = 0;
59 
60     virtual int GetEGLBuffer(void* buffer, void** eglBuffer) = 0;
61 
62     virtual int FreeEGLBuffer(void* eglBuffer) = 0;
63 
64     virtual int NativeBufferFromNativeWindowBuffer(void* nativeWindowBuffer, void** nativeBuffer) = 0;
65 
66     virtual uint32_t GetSeqNum(void* nativeBuffer) = 0;
67 
68     virtual void Allocate(const std::shared_ptr<NativeBufferConfigAdapter> bufferConfig, void** outBuffer) = 0;
69 
70     virtual void Describe(std::shared_ptr<NativeBufferConfigAdapter> bufferConfig, void* buffer) = 0;
71 
72     virtual int Lock(void* buffer,
73         uint64_t usage, int32_t fence, void** out_virtual_address) = 0;
74 
75     virtual int RecvHandleFromUnixSocket(int socketFd, void** outBuffer) = 0;
76 
77     virtual int SendHandleToUnixSocket(const void* buffer, int socketFd) = 0;
78 
79     virtual int Unlock(void* buffer, int32_t* fence) = 0;
80 
81     virtual int FreeNativeBuffer(void* nativeBuffer) = 0;
82 };
83 
84 } // namespace OHOS::NWeb
85 
86 #endif // OHOS_NATIVE_BUFFER_ADAPTER_H
87