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 #include "buffer_queue_consumer.h"
17
18 namespace OHOS {
BufferQueueConsumer(sptr<BufferQueue> & bufferQueue)19 BufferQueueConsumer::BufferQueueConsumer(sptr<BufferQueue>& bufferQueue)
20 {
21 bufferQueue_ = bufferQueue;
22 if (bufferQueue_ != nullptr) {
23 bufferQueue_->GetName(name_);
24 }
25 }
26
~BufferQueueConsumer()27 BufferQueueConsumer::~BufferQueueConsumer()
28 {
29 }
30
AcquireBuffer(sptr<SurfaceBuffer> & buffer,sptr<SyncFence> & fence,int64_t & timestamp,Rect & damage)31 GSError BufferQueueConsumer::AcquireBuffer(sptr<SurfaceBuffer>& buffer, sptr<SyncFence>& fence,
32 int64_t ×tamp, Rect &damage)
33 {
34 if (bufferQueue_ == nullptr) {
35 return GSERROR_INVALID_ARGUMENTS;
36 }
37 return bufferQueue_->AcquireBuffer(buffer, fence, timestamp, damage);
38 }
39
ReleaseBuffer(sptr<SurfaceBuffer> & buffer,const sptr<SyncFence> & fence)40 GSError BufferQueueConsumer::ReleaseBuffer(sptr<SurfaceBuffer>& buffer, const sptr<SyncFence>& fence)
41 {
42 if (bufferQueue_ == nullptr) {
43 return GSERROR_INVALID_ARGUMENTS;
44 }
45 return bufferQueue_->ReleaseBuffer(buffer, fence);
46 }
47
AttachBuffer(sptr<SurfaceBuffer> & buffer)48 GSError BufferQueueConsumer::AttachBuffer(sptr<SurfaceBuffer>& buffer)
49 {
50 if (bufferQueue_ == nullptr) {
51 return GSERROR_INVALID_ARGUMENTS;
52 }
53 return bufferQueue_->AttachBuffer(buffer);
54 }
55
DetachBuffer(sptr<SurfaceBuffer> & buffer)56 GSError BufferQueueConsumer::DetachBuffer(sptr<SurfaceBuffer>& buffer)
57 {
58 if (bufferQueue_ == nullptr) {
59 return GSERROR_INVALID_ARGUMENTS;
60 }
61 return bufferQueue_->DetachBuffer(buffer);
62 }
63
RegisterConsumerListener(sptr<IBufferConsumerListener> & listener)64 GSError BufferQueueConsumer::RegisterConsumerListener(sptr<IBufferConsumerListener>& listener)
65 {
66 if (bufferQueue_ == nullptr) {
67 return GSERROR_INVALID_ARGUMENTS;
68 }
69 return bufferQueue_->RegisterConsumerListener(listener);
70 }
71
RegisterConsumerListener(IBufferConsumerListenerClazz * listener)72 GSError BufferQueueConsumer::RegisterConsumerListener(IBufferConsumerListenerClazz *listener)
73 {
74 if (bufferQueue_ == nullptr) {
75 return GSERROR_INVALID_ARGUMENTS;
76 }
77 return bufferQueue_->RegisterConsumerListener(listener);
78 }
79
RegisterReleaseListener(OnReleaseFunc func)80 GSError BufferQueueConsumer::RegisterReleaseListener(OnReleaseFunc func)
81 {
82 if (bufferQueue_ == nullptr) {
83 return GSERROR_INVALID_ARGUMENTS;
84 }
85 return bufferQueue_->RegisterReleaseListener(func);
86 }
87
RegisterDeleteBufferListener(OnDeleteBufferFunc func)88 GSError BufferQueueConsumer::RegisterDeleteBufferListener(OnDeleteBufferFunc func)
89 {
90 if (bufferQueue_ == nullptr) {
91 return GSERROR_INVALID_ARGUMENTS;
92 }
93 return bufferQueue_->RegisterDeleteBufferListener(func);
94 }
95
UnregisterConsumerListener()96 GSError BufferQueueConsumer::UnregisterConsumerListener()
97 {
98 if (bufferQueue_ == nullptr) {
99 return GSERROR_INVALID_ARGUMENTS;
100 }
101 return bufferQueue_->UnregisterConsumerListener();
102 }
103
SetDefaultWidthAndHeight(int32_t width,int32_t height)104 GSError BufferQueueConsumer::SetDefaultWidthAndHeight(int32_t width, int32_t height)
105 {
106 if (bufferQueue_ == nullptr) {
107 return GSERROR_INVALID_ARGUMENTS;
108 }
109 return bufferQueue_->SetDefaultWidthAndHeight(width, height);
110 }
111
SetDefaultUsage(uint32_t usage)112 GSError BufferQueueConsumer::SetDefaultUsage(uint32_t usage)
113 {
114 if (bufferQueue_ == nullptr) {
115 return GSERROR_INVALID_ARGUMENTS;
116 }
117 return bufferQueue_->SetDefaultUsage(usage);
118 }
119
Dump(std::string & result) const120 void BufferQueueConsumer::Dump(std::string &result) const
121 {
122 if (bufferQueue_ == nullptr) {
123 return;
124 }
125 return bufferQueue_->Dump(result);
126 }
127
GetTransform() const128 GraphicTransformType BufferQueueConsumer::GetTransform() const
129 {
130 if (bufferQueue_ == nullptr) {
131 return GraphicTransformType::GRAPHIC_ROTATE_BUTT;
132 }
133 return bufferQueue_->GetTransform();
134 }
135
GetScalingMode(uint32_t sequence,ScalingMode & scalingMode) const136 GSError BufferQueueConsumer::GetScalingMode(uint32_t sequence, ScalingMode &scalingMode) const
137 {
138 if (bufferQueue_ == nullptr) {
139 return GSERROR_INVALID_ARGUMENTS;
140 }
141 return bufferQueue_->GetScalingMode(sequence, scalingMode);
142 }
143
QueryMetaDataType(uint32_t sequence,HDRMetaDataType & type) const144 GSError BufferQueueConsumer::QueryMetaDataType(uint32_t sequence, HDRMetaDataType &type) const
145 {
146 if (bufferQueue_ == nullptr) {
147 return GSERROR_INVALID_ARGUMENTS;
148 }
149 return bufferQueue_->QueryMetaDataType(sequence, type);
150 }
151
GetMetaData(uint32_t sequence,std::vector<GraphicHDRMetaData> & metaData) const152 GSError BufferQueueConsumer::GetMetaData(uint32_t sequence, std::vector<GraphicHDRMetaData> &metaData) const
153 {
154 if (bufferQueue_ == nullptr) {
155 return GSERROR_INVALID_ARGUMENTS;
156 }
157 return bufferQueue_->GetMetaData(sequence, metaData);
158 }
159
GetMetaDataSet(uint32_t sequence,GraphicHDRMetadataKey & key,std::vector<uint8_t> & metaData) const160 GSError BufferQueueConsumer::GetMetaDataSet(uint32_t sequence, GraphicHDRMetadataKey &key,
161 std::vector<uint8_t> &metaData) const
162 {
163 if (bufferQueue_ == nullptr) {
164 return GSERROR_INVALID_ARGUMENTS;
165 }
166 return bufferQueue_->GetMetaDataSet(sequence, key, metaData);
167 }
168
GetTunnelHandle() const169 sptr<SurfaceTunnelHandle> BufferQueueConsumer::GetTunnelHandle() const
170 {
171 if (bufferQueue_ == nullptr) {
172 return nullptr;
173 }
174 return bufferQueue_->GetTunnelHandle();
175 }
176
SetPresentTimestamp(uint32_t sequence,const GraphicPresentTimestamp & timestamp)177 GSError BufferQueueConsumer::SetPresentTimestamp(uint32_t sequence, const GraphicPresentTimestamp ×tamp)
178 {
179 if (bufferQueue_ == nullptr) {
180 return GSERROR_INVALID_ARGUMENTS;
181 }
182 return bufferQueue_->SetPresentTimestamp(sequence, timestamp);
183 }
184
GetStatus() const185 bool BufferQueueConsumer::GetStatus() const
186 {
187 return bufferQueue_->GetStatus();
188 }
189
SetStatus(bool status)190 void BufferQueueConsumer::SetStatus(bool status)
191 {
192 bufferQueue_->SetStatus(status);
193 }
194
OnConsumerDied()195 GSError BufferQueueConsumer::OnConsumerDied()
196 {
197 if (bufferQueue_ == nullptr) {
198 return GSERROR_INVALID_ARGUMENTS;
199 }
200 return bufferQueue_->OnConsumerDied();
201 }
202
GoBackground()203 GSError BufferQueueConsumer::GoBackground()
204 {
205 if (bufferQueue_ == nullptr) {
206 return GSERROR_INVALID_ARGUMENTS;
207 }
208 return bufferQueue_->GoBackground();
209 }
210 } // namespace OHOS
211