• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 INTERFACES_INNERKITS_SURFACE_ICONSUMER_SURFACE_H
17 #define INTERFACES_INNERKITS_SURFACE_ICONSUMER_SURFACE_H
18 
19 #include <refbase.h>
20 
21 #include "ibuffer_consumer_listener.h"
22 #include "ibuffer_producer.h"
23 #include "surface.h"
24 #include "surface_buffer.h"
25 #include "surface_type.h"
26 #include "surface_tunnel_handle.h"
27 
28 namespace OHOS {
29 class IConsumerSurface : public Surface {
30 public:
31     using AcquireBufferReturnValue = struct {
32         sptr<SurfaceBuffer> buffer;
33         sptr<SyncFence> fence;
34         int64_t timestamp;
35         std::vector<Rect> damages;
36         int64_t desiredPresentTimestamp;
37         int64_t requestTimeNs;
38         int64_t flushTimeNs;
39         bool isAutoTimestamp;
40     };
41 
42     static sptr<IConsumerSurface> Create(std::string name = "noname");
43 
44     virtual ~IConsumerSurface() = default;
45 
IsConsumer()46     virtual bool IsConsumer() const
47     {
48         return true;
49     }
GetProducer()50     virtual sptr<IBufferProducer> GetProducer() const
51     {
52         return nullptr;
53     }
AcquireBuffer(sptr<SurfaceBuffer> & buffer,int32_t & fence,int64_t & timestamp,Rect & damage)54     virtual GSError AcquireBuffer(sptr<SurfaceBuffer>& buffer, int32_t &fence,
55                                   int64_t &timestamp, Rect &damage)
56     {
57         (void)buffer;
58         (void)fence;
59         (void)timestamp;
60         (void)damage;
61         return SURFACE_ERROR_NOT_SUPPORT;
62     }
ReleaseBuffer(sptr<SurfaceBuffer> & buffer,int32_t fence)63     virtual GSError ReleaseBuffer(sptr<SurfaceBuffer>& buffer, int32_t fence)
64     {
65         (void)buffer;
66         (void)fence;
67         return SURFACE_ERROR_NOT_SUPPORT;
68     }
AcquireBuffer(sptr<SurfaceBuffer> & buffer,sptr<SyncFence> & fence,int64_t & timestamp,Rect & damage)69     virtual GSError AcquireBuffer(sptr<SurfaceBuffer>& buffer, sptr<SyncFence>& fence,
70                                   int64_t &timestamp, Rect &damage)
71     {
72         (void)buffer;
73         (void)fence;
74         (void)timestamp;
75         (void)damage;
76         return SURFACE_ERROR_NOT_SUPPORT;
77     }
ReleaseBuffer(sptr<SurfaceBuffer> & buffer,const sptr<SyncFence> & fence)78     virtual GSError ReleaseBuffer(sptr<SurfaceBuffer>& buffer, const sptr<SyncFence>& fence)
79     {
80         (void)buffer;
81         (void)fence;
82         return SURFACE_ERROR_NOT_SUPPORT;
83     }
AttachBuffer(sptr<SurfaceBuffer> & buffer)84     virtual GSError AttachBuffer(sptr<SurfaceBuffer>& buffer)
85     {
86         (void)buffer;
87         return SURFACE_ERROR_NOT_SUPPORT;
88     }
DetachBuffer(sptr<SurfaceBuffer> & buffer)89     virtual GSError DetachBuffer(sptr<SurfaceBuffer>& buffer)
90     {
91         (void)buffer;
92         return SURFACE_ERROR_NOT_SUPPORT;
93     }
GetQueueSize()94     virtual uint32_t GetQueueSize()
95     {
96         return 0;
97     }
SetQueueSize(uint32_t queueSize)98     virtual GSError SetQueueSize(uint32_t queueSize)
99     {
100         (void)queueSize;
101         return SURFACE_ERROR_NOT_SUPPORT;
102     }
SetDefaultWidthAndHeight(int32_t width,int32_t height)103     virtual GSError SetDefaultWidthAndHeight(int32_t width, int32_t height)
104     {
105         (void)width;
106         (void)height;
107         return SURFACE_ERROR_NOT_SUPPORT;
108     }
GetDefaultWidth()109     virtual int32_t GetDefaultWidth()
110     {
111         return 0;
112     }
GetDefaultHeight()113     virtual int32_t GetDefaultHeight()
114     {
115         return 0;
116     }
SetDefaultUsage(uint64_t usage)117     virtual GSError SetDefaultUsage(uint64_t usage)
118     {
119         (void)usage;
120         return SURFACE_ERROR_NOT_SUPPORT;
121     }
GetDefaultUsage()122     virtual uint64_t GetDefaultUsage()
123     {
124         return 0;
125     }
SetUserData(const std::string & key,const std::string & val)126     virtual GSError SetUserData(const std::string &key, const std::string &val)
127     {
128         (void)key;
129         (void)val;
130         return SURFACE_ERROR_NOT_SUPPORT;
131     }
GetUserData(const std::string & key)132     virtual std::string GetUserData(const std::string &key)
133     {
134         (void)key;
135         return "";
136     }
137     virtual const std::string& GetName() = 0;
GetUniqueId()138     virtual uint64_t GetUniqueId() const
139     {
140         return 0;
141     }
RegisterConsumerListener(sptr<IBufferConsumerListener> & listener)142     virtual GSError RegisterConsumerListener(sptr<IBufferConsumerListener>& listener)
143     {
144         (void)listener;
145         return SURFACE_ERROR_NOT_SUPPORT;
146     }
RegisterConsumerListener(IBufferConsumerListenerClazz * listener)147     virtual GSError RegisterConsumerListener(IBufferConsumerListenerClazz *listener)
148     {
149         (void)listener;
150         return SURFACE_ERROR_NOT_SUPPORT;
151     }
UnregisterConsumerListener()152     virtual GSError UnregisterConsumerListener()
153     {
154         return SURFACE_ERROR_NOT_SUPPORT;
155     }
GoBackground()156     virtual GSError GoBackground()
157     {
158         return SURFACE_ERROR_NOT_SUPPORT;
159     }
SetTransform(GraphicTransformType transform)160     virtual GSError SetTransform(GraphicTransformType transform)
161     {
162         (void)transform;
163         return SURFACE_ERROR_NOT_SUPPORT;
164     }
GetTransform()165     virtual GraphicTransformType GetTransform() const
166     {
167         return GraphicTransformType::GRAPHIC_ROTATE_NONE;
168     }
SetScalingMode(uint32_t sequence,ScalingMode scalingMode)169     virtual GSError SetScalingMode(uint32_t sequence, ScalingMode scalingMode)
170     {
171         (void)sequence;
172         (void)scalingMode;
173         return SURFACE_ERROR_NOT_SUPPORT;
174     }
GetScalingMode(uint32_t sequence,ScalingMode & scalingMode)175     virtual GSError GetScalingMode(uint32_t sequence, ScalingMode &scalingMode)
176     {
177         (void)sequence;
178         (void)scalingMode;
179         return SURFACE_ERROR_NOT_SUPPORT;
180     }
SetMetaData(uint32_t sequence,const std::vector<GraphicHDRMetaData> & metaData)181     virtual GSError SetMetaData(uint32_t sequence, const std::vector<GraphicHDRMetaData> &metaData)
182     {
183         (void)sequence;
184         (void)metaData;
185         return SURFACE_ERROR_NOT_SUPPORT;
186     }
SetMetaDataSet(uint32_t sequence,GraphicHDRMetadataKey key,const std::vector<uint8_t> & metaData)187     virtual GSError SetMetaDataSet(uint32_t sequence, GraphicHDRMetadataKey key,
188                                    const std::vector<uint8_t> &metaData)
189     {
190         (void)sequence;
191         (void)key;
192         (void)metaData;
193         return SURFACE_ERROR_NOT_SUPPORT;
194     }
QueryMetaDataType(uint32_t sequence,HDRMetaDataType & type)195     virtual GSError QueryMetaDataType(uint32_t sequence, HDRMetaDataType &type) const
196     {
197         (void)sequence;
198         (void)type;
199         return SURFACE_ERROR_NOT_SUPPORT;
200     }
GetMetaData(uint32_t sequence,std::vector<GraphicHDRMetaData> & metaData)201     virtual GSError GetMetaData(uint32_t sequence, std::vector<GraphicHDRMetaData> &metaData) const
202     {
203         (void)sequence;
204         (void)metaData;
205         return SURFACE_ERROR_NOT_SUPPORT;
206     }
GetMetaDataSet(uint32_t sequence,GraphicHDRMetadataKey & key,std::vector<uint8_t> & metaData)207     virtual GSError GetMetaDataSet(uint32_t sequence, GraphicHDRMetadataKey &key,
208                                    std::vector<uint8_t> &metaData) const
209     {
210         (void)sequence;
211         (void)key;
212         (void)metaData;
213         return SURFACE_ERROR_NOT_SUPPORT;
214     }
SetTunnelHandle(const GraphicExtDataHandle * handle)215     virtual GSError SetTunnelHandle(const GraphicExtDataHandle *handle)
216     {
217         (void)handle;
218         return SURFACE_ERROR_NOT_SUPPORT;
219     }
GetTunnelHandle()220     virtual sptr<SurfaceTunnelHandle> GetTunnelHandle() const
221     {
222         return nullptr;
223     }
SetPresentTimestamp(uint32_t sequence,const GraphicPresentTimestamp & timestamp)224     virtual GSError SetPresentTimestamp(uint32_t sequence, const GraphicPresentTimestamp &timestamp)
225     {
226         (void)sequence;
227         (void)timestamp;
228         return SURFACE_ERROR_NOT_SUPPORT;
229     }
Dump(std::string & result)230     virtual void Dump(std::string &result) const
231     {
232         (void)result;
233         return;
234     }
DumpCurrentFrameLayer()235     virtual void DumpCurrentFrameLayer() const
236     {
237         return;
238     }
239     virtual GSError AcquireBuffer(sptr<SurfaceBuffer>& buffer, sptr<SyncFence>& fence,
240                                   int64_t &timestamp, std::vector<Rect> &damages, bool isLppMode = false)
241     {
242         (void)buffer;
243         (void)fence;
244         (void)timestamp;
245         (void)damages;
246         (void)isLppMode;
247         return SURFACE_ERROR_NOT_SUPPORT;
248     }
AcquireBuffer(AcquireBufferReturnValue & returnValue,int64_t expectPresentTimestamp,bool isUsingAutoTimestamp)249     virtual GSError AcquireBuffer(AcquireBufferReturnValue &returnValue, int64_t expectPresentTimestamp,
250                                   bool isUsingAutoTimestamp)
251     {
252         (void)returnValue;
253         (void)expectPresentTimestamp;
254         (void)isUsingAutoTimestamp;
255         return SURFACE_ERROR_NOT_SUPPORT;
256     }
AttachBuffer(sptr<SurfaceBuffer> & buffer,int32_t timeOut)257     virtual GSError AttachBuffer(sptr<SurfaceBuffer>& buffer, int32_t timeOut)
258     {
259         (void)buffer;
260         (void)timeOut;
261         return SURFACE_ERROR_NOT_SUPPORT;
262     }
RegisterSurfaceDelegator(sptr<IRemoteObject> client)263     virtual GSError RegisterSurfaceDelegator(sptr<IRemoteObject> client)
264     {
265         (void)client;
266         return SURFACE_ERROR_NOT_SUPPORT;
267     }
ConsumerRequestCpuAccess(bool on)268     virtual void ConsumerRequestCpuAccess(bool on)
269     {
270         (void)on;
271     }
AttachBufferToQueue(sptr<SurfaceBuffer> buffer)272     virtual GSError AttachBufferToQueue(sptr<SurfaceBuffer> buffer)
273     {
274         (void)buffer;
275         return SURFACE_ERROR_NOT_SUPPORT;
276     }
277     virtual GSError DetachBufferFromQueue(sptr<SurfaceBuffer> buffer, bool isReserveSlot = false)
278     {
279         (void)buffer;
280         (void)isReserveSlot;
281         return SURFACE_ERROR_NOT_SUPPORT;
282     }
IsBufferHold()283     virtual bool IsBufferHold()
284     {
285         return false;
286     }
SetScalingMode(ScalingMode scalingMode)287     virtual GSError SetScalingMode(ScalingMode scalingMode)
288     {
289         (void)scalingMode;
290         return SURFACE_ERROR_NOT_SUPPORT;
291     }
GetHdrWhitePointBrightness()292     virtual float GetHdrWhitePointBrightness() const
293     {
294         return 0;
295     }
GetSdrWhitePointBrightness()296     virtual float GetSdrWhitePointBrightness() const
297     {
298         return 0;
299     }
GetSurfaceBufferTransformType(sptr<SurfaceBuffer> buffer,GraphicTransformType * transformType)300     virtual GSError GetSurfaceBufferTransformType(sptr<SurfaceBuffer> buffer, GraphicTransformType *transformType)
301     {
302         (void)buffer;
303         (void)transformType;
304         return SURFACE_ERROR_NOT_SUPPORT;
305     }
IsSurfaceBufferInCache(uint32_t seqNum,bool & isInCache)306     virtual GSError IsSurfaceBufferInCache(uint32_t seqNum, bool &isInCache)
307     {
308         (void)seqNum;
309         (void)isInCache;
310         return SURFACE_ERROR_NOT_SUPPORT;
311     }
GetGlobalAlpha(int32_t & alpha)312     virtual GSError GetGlobalAlpha(int32_t &alpha)
313     {
314         (void)alpha;
315         return SURFACE_ERROR_NOT_SUPPORT;
316     }
GetAvailableBufferCount()317     virtual uint32_t GetAvailableBufferCount() const
318     {
319         return SURFACE_ERROR_NOT_SUPPORT;
320     }
GetLastFlushedDesiredPresentTimeStamp(int64_t & lastFlushedDesiredPresentTimeStamp)321     virtual GSError GetLastFlushedDesiredPresentTimeStamp(
322         [[maybe_unused]] int64_t &lastFlushedDesiredPresentTimeStamp) const
323     {
324         return SURFACE_ERROR_NOT_SUPPORT;
325     }
GetBufferSupportFastCompose(bool & bufferSupportFastCompose)326     virtual GSError GetBufferSupportFastCompose([[maybe_unused]] bool &bufferSupportFastCompose)
327     {
328         return SURFACE_ERROR_NOT_SUPPORT;
329     }
SetBufferName(const std::string & name)330     virtual GSError SetBufferName(const std::string &name)
331     {
332         (void)name;
333         return GSERROR_NOT_SUPPORT;
334     }
PreAllocBuffers(const BufferRequestConfig & config,uint32_t allocBufferCount)335     virtual GSError PreAllocBuffers(const BufferRequestConfig &config, uint32_t allocBufferCount)
336     {
337         (void)config;
338         (void)allocBufferCount;
339         return SURFACE_ERROR_NOT_SUPPORT;
340     }
GetLastConsumeTime(int64_t & lastConsumeTime)341     virtual GSError GetLastConsumeTime(int64_t &lastConsumeTime) const
342     {
343         (void)lastConsumeTime;
344         return GSERROR_NOT_SUPPORT;
345     }
SetMaxQueueSize(uint32_t queueSize)346     virtual GSError SetMaxQueueSize(uint32_t queueSize)
347     {
348         (void)queueSize;
349         return SURFACE_ERROR_NOT_SUPPORT;
350     }
GetMaxQueueSize(uint32_t & queueSize)351     virtual GSError GetMaxQueueSize(uint32_t &queueSize) const
352     {
353         (void)queueSize;
354         return SURFACE_ERROR_NOT_SUPPORT;
355     }
GetFrontDesiredPresentTimeStamp(int64_t & desiredPresentTimeStamp,bool & isAutoTimeStamp)356     virtual GSError GetFrontDesiredPresentTimeStamp(
357         int64_t &desiredPresentTimeStamp, bool &isAutoTimeStamp) const
358     {
359         (void)desiredPresentTimeStamp;
360         (void)isAutoTimeStamp;
361         return SURFACE_ERROR_NOT_SUPPORT;
362     }
AcquireBuffer(AcquireBufferReturnValue & returnValue)363     virtual GSError AcquireBuffer(AcquireBufferReturnValue &returnValue)
364     {
365         (void)returnValue;
366         return SURFACE_ERROR_NOT_SUPPORT;
367     }
ReleaseBuffer(uint32_t sequence,const sptr<SyncFence> & fence)368     virtual GSError ReleaseBuffer(uint32_t sequence, const sptr<SyncFence>& fence)
369     {
370         (void)sequence;
371         (void)fence;
372         return SURFACE_ERROR_NOT_SUPPORT;
373     }
SetIsActiveGame(bool isActiveGame)374     virtual GSError SetIsActiveGame(bool isActiveGame)
375     {
376         (void)isActiveGame;
377         return SURFACE_ERROR_NOT_SUPPORT;
378     }
SetLppDrawSource(bool isShbSource,bool isRsSource)379     virtual GSError SetLppDrawSource(bool isShbSource, bool isRsSource)
380     {
381         (void)isShbSource;
382         (void)isRsSource;
383         return SURFACE_ERROR_NOT_SUPPORT;
384     }
SetIsPriorityAlloc(bool isPriorityAlloc)385     virtual GSError SetIsPriorityAlloc(bool isPriorityAlloc)
386     {
387         (void)isPriorityAlloc;
388         return SURFACE_ERROR_NOT_SUPPORT;
389     }
390 protected:
391     IConsumerSurface() = default;
392 };
393 } // namespace OHOS
394 
395 #endif // INTERFACES_INNERKITS_SURFACE_SURFACE_H
396